{"id":19844826,"url":"https://github.com/lucasrmagalhaes/learning-cobol","last_synced_at":"2025-10-08T07:13:18.631Z","repository":{"id":55076530,"uuid":"312685048","full_name":"lucasrmagalhaes/learning-COBOL","owner":"lucasrmagalhaes","description":"Meus primeiros passos no COBOL. :hourglass_flowing_sand:","archived":false,"fork":false,"pushed_at":"2021-01-12T15:56:24.000Z","size":2906,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-01T20:37:32.763Z","etag":null,"topics":["alura","cbl","cob","cobol","xcode","youtube"],"latest_commit_sha":null,"homepage":"","language":"COBOL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucasrmagalhaes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-13T21:13:19.000Z","updated_at":"2025-02-19T02:24:38.000Z","dependencies_parsed_at":"2022-08-14T11:20:21.945Z","dependency_job_id":null,"html_url":"https://github.com/lucasrmagalhaes/learning-COBOL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lucasrmagalhaes/learning-COBOL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Flearning-COBOL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Flearning-COBOL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Flearning-COBOL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Flearning-COBOL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucasrmagalhaes","download_url":"https://codeload.github.com/lucasrmagalhaes/learning-COBOL/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucasrmagalhaes%2Flearning-COBOL/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270385016,"owners_count":24574537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alura","cbl","cob","cobol","xcode","youtube"],"created_at":"2024-11-12T13:05:41.635Z","updated_at":"2025-10-08T07:13:13.576Z","avatar_url":"https://github.com/lucasrmagalhaes.png","language":"COBOL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/lucasrmagalhaes/learning-COBOL/blob/main/img/COBOL.jpg\" alt=\"COBOL\" width=300 height=150\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eCO\u003c/strong\u003emmon \u003cstrong\u003eB\u003c/strong\u003eusiness \u003cstrong\u003eO\u003c/strong\u003eriented \u003cstrong\u003eL\u003c/strong\u003eanguage\n\u003c/p\u003e\n\n\u003e Linguagem comum orientada a negócios é uma das linguagens de programação mais antigas, pertecendo à segunda geração das linguagens de programação. É muito utilizada em aplicações voltadas para o mundo financeiro, devido à sua precisão e rapidez na aritmética de ponto flutuante.\n\n\u003e Grace Murray Hopper foi almirante e, Analista de Sistemas da Marinha dos Estados Unidos nas décadas de 1940 e 1950, criadora da linguagem de programação de alto nível Flow-Matic — base para a criação do COBOL — e uma das primeiras programadoras do computador Harvard Mark I em 1944.\n\n\u003cdetails\u003e\n    \u003csummary\u003eCobol: Primeiros Passos\u003c/summary\u003e\n  \n## Estrutura da Linguagem\n\n### Apresentação  \n- [Documentação Oficial do Cobol](https://gnucobol.sourceforge.io/guides/GNUCobol2.pdf \"Documentação Oficial do Cobol\")\n- [Conhecendo Melhor Grace Hopper](https://youtu.be/eAlIiKFRryw \"Conhecendo melhor Grace Hopper\")\n\n### IDE\n- OpenCobolIDE\n\n### Estrutura do Curso\n- Níveis de Variáveis\n- Comandos de Decisão\n- Comandos de Repetição\n- Aproveitamento de Código\n- Padrões de Mercado\n\n### [Glot](https://glot.io \"Glot\")\n- Ambiente para trabalhar online.\n- Diversas linguagens disponíveis.\n\n### [Jdoodle](https://www.jdoodle.com \"Jdoodle\")\n- Ambiente para trabalhar online.\n- Permite salvar projetos e ter galerias por linguagem.\n\n### [Paiza](https://paiza.io/en \"Paiza\")\n- Ambiente para trabalhar online.\n\n### [OpenCobolIDE](https://pypi.org/project/OpenCobolIDE/#files \"OpenCobolIDE\")\n- [Versão - Windows e Debian](https://launchpad.net/cobcide/+download \"Windows e Debian\") \n- [Visual Studio: Extensão - Rech Cobol](https://marketplace.visualstudio.com/items?itemName=rechinformatica.rech-editor-cobol \"Rech Cobol\")\n\n### Maneira rápida de compilar no Linux\n\n- Instalações\n\n\u003cpre\u003e\n# apt-get install open-cobol\n# apt-get install gedit\n\u003c/pre\u003e\n\n- Testando\n\n\u003cpre\u003e\n# mkdir cobol\n# cd cobol\n# touch exemplo.cbl\n# gedit exemplo.cbl\n\u003c/pre\u003e\n\n- Rodando\n\n\u003cpre\u003e\ncobc -x -o exemplo.exe exemplo.cbl\n./exemplo.exe\n\n-x --\u003e Suporte para criar um executável.\n-o --\u003e É para especificar a saída do nome de arquivo.\n\u003c/pre\u003e\n\n### Configurando o Ambiente\n- Preferences, atalho: F2\n- Font Size: Alterado para 14.\n- Output Directory: Alterado para o diretório de preferência.\n\n### Hierarquia de um programa COBOL\n\n\u003cpre\u003e\n1. PROGRAMA COBOL\n    1.1 DIVISION\n        1.1.1 SECTION\n            1.1.1.1 PARAGRAPH\n                1.1.1.1.1 SENTENCE\n                    1.1.1.1.1 STATEMENT\n\u003c/pre\u003e\n\n### A escrita do COBOL \n- Deve obedecer algumas regras de posicionamento:\n\n....|....1....|....2....|....3....|....4....|....5....|....6....|....7....|....80\n\n### O que é permitido em cada coluna\n\n#### Colunas de 1 a 6\n- Área livre - Remarks\n\n#### Coluna 7\n- Área de indicação\n- comentário = *\n- continuação de linha = -\n\n#### Colunas de 8 a 11\n- Área A\n- divisões, seções, parágrafos e declaração de variáveis\n\n#### Colunas de 12 a 72\n- Área B\n- Comandos\n\n#### Colunas de 73 a 80\n- Numeração interna do COBOL\n\n### Divisões\n\n#### Possui 4 divisões\n\n- Identification Division -\u003e Básico\n- Enviroment Division -\u003e Exemplo: Separador decimal não é o ponto e sim a vírgula.\n- Data Division -\u003e Variáveis\n- Procedure Division\n- Difícilmente um programa nao irá ter as 4.\n\n\u003cpre\u003e\nIDENTIFICATION DIVISION.\n    PROGRAM-ID.     nome-programa.\n    AUTHOR.     autor.\n\u003c/pre\u003e\n\n- Nome do programa é obrigatório.\n- Geralmente o nome da fonte é o nome do programa.\n\n\u003cpre\u003e\nENVIROMENT DIVISION.\n\nCONFIGURATION SECTION.\nSPECIAL-NAMES.\n    DECIMAL POINT IS COMMA.\nINPUT-OUTPUT SECTION.\nFILE-CONTROL.\n\u003c/pre\u003e\n\n- COMMA = Virgula\n- Seção diz que o ponto decimal é vírgula no lugar do ponto que é o padrão.\n- Segunda seção é responsável pela entrada e saída de arquivos.\n\n\u003cpre\u003e\nDATA DIVISION.\n\nFILE SECTION.\nWORKING-STORAGE SECTION.\nLINKAGE SECTION.\n\u003c/pre\u003e\n\n- Divisao dos dados.\n- 3 seções.\n- Primeira: Variáveis que vão se relacionar com arquivos.\n- Segunda: Variáveis abertas/públicas/locais.\n- Terceira: Variáveis usadas para trocar entre programas, um programa chama o outro e na hora que chama passa um valor.\n\n\u003cpre\u003e\nPROCEDURE DIVISION.\n\n100-PARÁGRAFO-A.\n    comando\n    comando\n    comando.\n    200-PARAGRAFO-E.\n        comandos.\n300-PARÁGRAFO-I.\n    comandos\n    comandos.\n400-PARÁGRAFO-O.\n    comando\n    comando\n    comando.\n    comandos\n    comandos.\n\u003c/pre\u003e\n\n- O que o programa deve fazer.\n- Lógica vai estar aqui.\n- Seção que dá vida ao programa.\n\nEssas 4 divisões compoem as divisões básicas do COBOL.\n\n### Executando um Programa COBOL\n- Atualmente, existem dois ambientes onde podemos executar programas escritos em Cobol: Alta plataforma (Mainframe) e Plataforma Open (Windows, Linux).\n- No Mainframe, além do programa fonte, o que mais precisamos para compilar/executar rotinas em Cobol em modo Batch ?\n\n***Resposta***\n- Rotinas JCL\n\n***Explicação***\n- No mainframe, existem dois modos de trabalho: Batch e Online. No Batch, o usuário precisa solicitar (executar) as rotinas, seja em Cobol ou qualquer outra linguagem. Cada execução tem seu controle de acesso, tempo feito pelo JCL.\n\n### Regras de um Programa COBOL\n- Na construção de um programa Cobol, quais das regras abaixo precisamos respeitar para executar sem erros?\n\n***Resposta***\n- Remarks são utilizados para documentar alterações no código fonte.\n- Divisões, Seções e Parágrafos devem iniciar na Área A (colunas 8 a 11).\n\n***Explicação***\n- O Cobol não utiliza as colunas 1 a 6, portanto as aproveitamos para fazer marcações de alteração. É uma prática comum de mercado.\n- O Cobol tem duas áreas: A (8 a 11) para identificar divisões, seções, parágrafos e B (12 a 72) para comandos.\n\n## Comandos Básicos e Variáveis\u003c/summary\u003e\n\n### Criando o primeiro programa\n\n#### PROGCOB01\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB01.\n      *****************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR = LUCAS  LRM\n      * DATA   = XX/XX/XXXX\n      * OBJETIVO: MOSTRAR A STRING HELLO ALURA\n      *****************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       PROCEDURE DIVISION.\n          DISPLAY 'HELLO ALURA'.\n          STOP RUN.\n\u003c/pre\u003e\n\n- DISPLAY - Mostrar o texto.\n- STOP RUN - Terminar o programa.\n\n### Variável Nível 77\n\n#### PROGCOB02\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB02.\n      *****************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR = LUCAS  LRM\n      * DATA   = XX/XX/XXXX\n      * OBJETIVO: RECEBER E IMPRIMIR UMA STRING\n      *****************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOME     PIC X(20)  VALUE SPACES. -\u003e Cria. Define o nome e tamanho da variável.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NOME FROM CONSOLE. -\u003e Recebe. Recebe o nome do usuário.\n          DISPLAY 'NOME: ' WRK-NOME(1:3). -\u003e Mostra. Mostra na tela.\n          STOP RUN. -\u003e Termina o programa.\n\u003c/pre\u003e\n\n- WORKING-STORAGE SECTION -\u003e Declaração das variáveis. Nesse exemplo uma váriavel local.\n- PIC ou PICTURA -\u003e Definir a máscara/tipo que a variável irá ter.\n- WRK -\u003e Padrão que geralmente as empresas utilizam.\n- PIC X(20) -\u003e Tamanho da variável.\n- VALUE SPACES -\u003e Boa prática.\n- ZEROS ou 0 -\u003e Mais utilizado é ZEROS.\n- ACCEPT exemplo FROM CONSOLE -\u003e Nome recebido do Output. FROM CONSOLE é opcional.\n- WRK-NOME(1:3) -\u003e Primeira palavra vai pegar 3 letras/posições.\n- Tipo A: Conteúdo Alfábetico - somente letras. - não aceita.\n- Tipo X: Alfanumérico. Aceita letras, números e símbolos. É o mais indicado.\n- Tipo 9: Números - Geralmente operações matemáticas.\n\n### Variável Nível 01\n\n#### PROGCOB03\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB03.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR = LUCAS  LRM\n      * DATA   = XX/XX/XXXX\n      * OBJETIVO: RECEBER E IMPRIMIR A DATA DO SISTEMA\n      * UTILIZAR VARIAVEIS NIVEL 01.02... (ESTRUTURADA)\n      **************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       01 WRK-DATA.\n           02 WRK-ANO PIC 9(04)  VALUE ZEROS.\n           02 WRK-MES PIC 9(02)  VALUE ZEROS.\n           02 WRK-DIA PIC 9(02)  VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-DATA FROM DATE YYYYMMDD.\n          DISPLAY 'DATA ' WRK-DIA ' DE ' WRK-MES ' DE ' WRK-ANO.\n          STOP RUN.\n\u003c/pre\u003e\n\n### Vírgula e Máscara de Edição\n\n#### PROGCOB04\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB04.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR = LUCAS  LRM\n      * DATA   = 16/11/2020\n      * OBJETIVO: RECEBER NOME E SALÁRIO\n      * IMPRIMIR FORMATADO - USO DA VÍRGULA\n      **************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n      * Definindo o ponto como vírgula.\n           SPECIAL-NAMES.\n           DECIMAL-POINT IS COMMA. \n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOME           PIC X(20) VALUE SPACES.\n      * V99\n      * V = Vírgula\n      * 99 quantidades de casas. = 02 casas. EX.: 000000,00\n       77 WRK-SALARIO        PIC 9(06)V99 VALUE ZEROS.\n      * Contém os 9 porque caso o número seja 0 é necessário mostrar.\n      * 9 irá listar 0. Z irá omitir os zeros.\n       77 WRK-SALARIO-ED     PIC $ZZZ.ZZ9,99 VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NOME    FROM CONSOLE.\n          ACCEPT WRK-SALARIO FROM CONSOLE.\n      ************ MOSTRA DADOS\n          DISPLAY 'NOME: ' WRK-NOME.\n      * Movendo o valor de uma váriavel para outra variável.\n          MOVE WRK-SALARIO TO WRK-SALARIO-ED.\n          DISPLAY 'SALARIO: ' WRK-SALARIO-ED.\n          STOP RUN.\n\u003c/pre\u003e\n\n- Z -\u003e Máscara Z serve para omitir valores zerados.\n\n### Trabalhando com Variáveis\n- Em Cobol, as variáveis devem ser iniciadas com um número de nível associado, determinando que o nível superior será responsável (pai) pelo nível inferior. No exemplo abaixo, quais níveis poderiam ser utilizados para criação de um grupo de variáveis?\n\na) __ wrk-data.\n\nb) __ wrk-ano  pic x(04).  \nb) __ wrk-mes  pic x(02).  \nb) __ wrk-dia  pic x(02).  \n\n***Resposta***\n- Nivel 01 / b) Nivel 02\n\n***Explicação da Alternativa Correta***\n- Nível 01 é o menor nível aceito pelo Cobol. Quando for utilizado como variável de grupo, deverá conter abaixo outras variáveis começando pelo nível 02 até 49 . \n- Se a variável for iniciada com nível 01 e não contiver outras variáveis , torna-se variável simples de um elemento.\n\n***Explicação das Alternativas Incorretas***\na) Nivel 77 / b) Nivel 88\n- Nível 77 é utilizado no Cobol para declarar variáveis de um elemento (conteúdo) apenas. \n- Nível 88 é utilizado para valores lógicos. Deve ser associado a uma variável de grupo.\n\na) Nivel 99 / b) Nivel 100\n- Não existe nível 99 em Cobol. Máximo até 88.\n\n### Máscaras de Edição\n\nZ\t\n- This character can be used in the place of 9, whenever you want to display the value to spool/report. It replace all leading zeros with spaces while printing to output. \n- Example: PIC ZZ999.\n\n$\t\n- One $ character code can appear on leftmost position of a picture clause. \n- Example: PIC $99999.\n\n`*`\t\n- This character is similar to code character Z. This character will replace leading zeros with character *. \n- Example: PIC ****99.\n\n`-`\t\n- Only one - character can be used in one picture clause. This character can appear either at the leftmost or rightmost position of a picture clause. If value is negative, it will display the — sign. If the value is positive, it will display the space in the place of — sign. \n- Example: PIC -9999. PIC 9999-.\n\n`+`\t\n- This character has the same meaning of — sign. Only difference is it will display the + sign when the value is positive. Note that it will display — sign, when the value is negative. \n- Example: PIC +9999. PIC 9999+.\n\n. (period)\t\n- This character is used to represent decimal position in a numeric value. \n- Example: PIC 9(4).9(2).\n\n, (comma)\t\n- This character code is used to display amount values. \n- Example: PIC ZZZ9,99,99.\n\n### CPF\n\n#### PROGCOBCPF\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOBCPF.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR = LUCAS  LRM\n      * DATA   = 16/11/2020\n      * OBJETIVO: RECEBER O CPF\n      * IMPRIMIR O CPF FORMATADO\n      **************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n           DECIMAL-POINT IS COMMA. \n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-CPF     PIC X(11) VALUE ZEROS.\n       77 WRK-CPF-ED  PIC ZZZ.ZZZ.ZZ9/99.\n       PROCEDURE DIVISION.\n       MAIN-PROCEDURE.\n          ACCEPT WRK-CPF.\n          MOVE WRK-CPF TO WRK-CPF-ED.\n          DISPLAY 'CPF: ' WRK-CPF-ED.\n\u003c/pre\u003e\n\n## Operadores Aritméticos\n\n### Testando os Operadores Aritméticos\n\n#### PROGCOB05\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB05.\n      *********************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS LRM\n      * DATA: 16/11/2020\n      * OBJETIVO: TESTAR OS OPERADORES ARITMETICOS\n      *********************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NUM1  PIC 9(02)  VALUE ZEROS.\n       77 WRK-NUM2  PIC 9(02)  VALUE ZEROS.\n       77 WRK-RESUL PIC 9(04)  VALUE ZEROS.\n       77 WRK-RESTO PIC 9(02)  VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NUM1 FROM CONSOLE.\n          ACCEPT WRK-NUM2 FROM CONSOLE.\n          DISPLAY '=============================='\n          DISPLAY 'NUMERO 1: ' WRK-NUM1.\n          DISPLAY '=============================='\n          DISPLAY 'NUMERO 2: ' WRK-NUM2.\n          DISPLAY '=============================='\n      *************** SOMA \n          ADD WRK-NUM1 WRK-NUM2 TO WRK-RESUL.\n           DISPLAY 'SOMA: ' WRK-RESUL.\n           DISPLAY '=============================='\n      *************** SUBTRACAO\n          SUBTRACT WRK-NUM1 FROM WRK-NUM2 GIVING WRK-RESUL.\n           DISPLAY 'SUBTRACAO: ' WRK-RESUL.\n           DISPLAY '=============================='\n      *************** DIVISAO\n          DIVIDE WRK-NUM1 BY WRK-NUM2 GIVING WRK-RESUL\n      *************** RESTO\n      \t  REMAINDER WRK-RESTO.\n           DISPLAY 'DIVISAO: ' WRK-RESUL.\n           DISPLAY 'RESTO: ' WRK-RESTO.\n           DISPLAY '=============================='\n      *************** MULTIPLICACAO\n          MULTIPLY WRK-NUM1 BY WRK-NUM2 GIVING WRK-RESUL.\n           DISPLAY 'MULTIPLICACAO: ' WRK-RESUL.\n           DISPLAY '=============================='\n      *************** MEDIA\n          COMPUTE WRK-RESUL = (WRK-NUM1 + WRK-NUM2) / 2.\n           DISPLAY 'MEDIA: ' WRK-RESUL.\n           DISPLAY '=============================='\n          STOP RUN.\n\u003c/pre\u003e\n\n### Cálculo de Média Aritmética\n- Considerando as variáveis N1, N2, N3 e N4 como notas do aluno nos quatro bimestres escolares, qual a sequência correta para calcular sua média na variável Resultado?\n\n***Resposta***\n\u003cpre\u003e\nADD N1 N2 N3 N4 TO Resultado\nDIVIDE Resultado BY 4 GIVING Resultado\n\u003c/pre\u003e\n\n***Explicação da Alternativa Correta***\n- Correto! Primeiro, faremos a soma das quatro variáveis, acumulando o valor na variável Resultado. \n- Na sequência, dividiremos Resultado por 4, retornando o valor para a própria variável Resultado.\n\n### Valores Positivos e Negativos\n\n#### PROGCOB06\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB06.\n      *********************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS LRM\n      * DATA: 18/11/2020\n      * OBJETIVO: USO DO SINAL - e +\n      *********************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NUM1  \tPIC 9(02)  VALUE ZEROS.\n       77 WRK-NUM2  \tPIC 9(02)  VALUE ZEROS.\n      *************** SINAL = S\n       77 WRK-RESUL \tPIC S9(03) VALUE ZEROS.\n      *************** FORMATACAO\n       77 WRK-RESUL-ED  PIC -ZZ9   VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NUM1 FROM CONSOLE.\n          ACCEPT WRK-NUM2 FROM CONSOLE.\n          DISPLAY '=============================='\n          DISPLAY 'NUMERO 1: ' WRK-NUM1.\n          DISPLAY '=============================='\n          DISPLAY 'NUMERO 2: ' WRK-NUM2.\n          DISPLAY '=============================='\n      *************** SUBTRACAO - PARA FUNCIONAR INVERTER AS VARIAVEIS\n          SUBTRACT WRK-NUM2 FROM WRK-NUM1 GIVING WRK-RESUL.\n           MOVE WRK-RESUL TO WRK-RESUL-ED.\n           DISPLAY 'SUBTRACAO: ' WRK-RESUL.\n           DISPLAY 'SUBTRACAO: ' WRK-RESUL-ED.\n           DISPLAY '=============================='\n          STOP RUN.\n\u003c/pre\u003e\n\n## Tomando Decisões e Operadores Relacionais\n\n### Comando IF/ELSE/END-IF\n\n#### PROGCOB07\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB07.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 18/11/2020\n      * OBJETIVO: RECEBER 02 NOTAS, MEDIA E IMPRIMIR\n      * UTILIZAR OS COMANDOS IF/ELSE/ENDIF\n      **************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOTA1 PIC 9(02) VALUE ZEROS.\n       77 WRK-NOTA2 PIC 9(02) VALUE ZEROS.\n       77 WRK-MEDIA PIC 9(02) VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NOTA1.\n          ACCEPT WRK-NOTA2.\n           COMPUTE WRK-MEDIA = (WRK-NOTA1 + WRK-NOTA2) / 2.\n             DISPLAY 'NOTA 1: ' WRK-NOTA1\n             DISPLAY 'NOTA 2: ' WRK-NOTA2\n             DISPLAY 'MEDIA: ' WRK-MEDIA.\n               IF WRK-MEDIA \u003e= 7\n          \t     DISPLAY 'SITUACAO: APROVADO'\n          \tELSE\n          \t      IF WRK-MEDIA \u003e= 2\n          \t      \t  DISPLAY 'SITUACAO: RECUPERACAO'\n          \t      ELSE \n          \t       DISPLAY 'SITUACAO: REPROVADO'\n               END-IF.\n          DISPLAY 'MEDIA: ' WRK-MEDIA.\n          STOP RUN.\n\u003c/pre\u003e\n\n### Aplicando um Desconto\n- Considerando as variáveis Valor (valor do produto) e Bandeira (operadora do cartão), quais rotinas são corretas para aplicarmos desconto de 10% quando o valor for maior ou igual a R$1000,00 e bandeira igual a VISA?\n\n***Resposta***\n\u003cpre\u003e\nIF Valor \u003e= 1000 \n    IF Bandeira = “VISA”\n     COMPUTE Desconto = Valor * 0,10\n\u003c/pre\u003e\n\n\u003cpre\u003e\nIF Valor \u003e= 1000 AND Bandeira = “VISA”\n     COMPUTE Desconto = Valor * 0,10\n\u003c/pre\u003e\n\n***Explicação da Alternativa Correta***\n- Podemos fazer o teste das condições em dois IFs separados, porém com dependência entre eles.\n- Com o uso do operador AND, as duas condições precisam ser verdadeiras para aplicação do desconto.\n\n### Comando EVALUETE\n\n#### PROGCOB08\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB08.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 18/11/2020\n      * OBJETIVO: RECEBER 02 NOTAS, MEDIA E IMPRIMIR\n      * UTILIZAR OS COMANDOS IF/ELSE/ENDIF\n      **************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOTA1 PIC 9(02) VALUE ZEROS.\n       77 WRK-NOTA2 PIC 9(02) VALUE ZEROS.\n       77 WRK-MEDIA PIC 9(02) VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NOTA1.\n          ACCEPT WRK-NOTA2.\n           COMPUTE WRK-MEDIA = (WRK-NOTA1 + WRK-NOTA2) / 2.\n             DISPLAY 'MEDIA: ' WRK-MEDIA.\n      ************* EVALUETE - IF PESADO\n              EVALUATE WRK-MEDIA\n              \tWHEN 10\n              \t   DISPLAY 'APROVADO + BONUS'\n              \tWHEN 7 THRU 10\n              \t\tDISPLAY 'SITUACAO: APROVADO'\n              \tWHEN 2 THRU 6\n              \t\tDISPLAY 'RECUPERACAO'\n              \tWHEN OTHER\n              \t\tDISPLAY 'REPROVADO'    \n              END-EVALUATE.\n          DISPLAY 'MEDIA: ' WRK-MEDIA.\n          STOP RUN.\n\u003c/pre\u003e\n\n### Comparando Valores\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB08.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 18/11/2020\n      * OBJETIVO: RECEBER 02 NOTAS, MEDIA E IMPRIMIR\n      * UTILIZAR OS COMANDOS IF/ELSE/ENDIF\n      **************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n       \t   DECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOTA1 PIC 9(02) VALUE ZEROS.\n       77 WRK-NOTA2 PIC 9(02) VALUE ZEROS.\n       77 WRK-MEDIA PIC 9(02)V9 VALUE ZEROS.\n       PROCEDURE DIVISION.\n          ACCEPT WRK-NOTA1.\n          ACCEPT WRK-NOTA2.\n           COMPUTE WRK-MEDIA = (WRK-NOTA1 + WRK-NOTA2) / 2.\n             DISPLAY 'MEDIA: ' WRK-MEDIA.\n      ************* EVALUETE - IF PESADO\n              EVALUATE WRK-MEDIA\n              \tWHEN 10\n              \t   DISPLAY 'APROVADO + BONUS'\n              \tWHEN 6 THRU 9,9\n              \t\tDISPLAY 'SITUACAO: APROVADO'\n              \tWHEN 2 THRU 5,9\n              \t\tDISPLAY 'RECUPERACAO'\n              \tWHEN OTHER\n              \t\tDISPLAY 'REPROVADO'    \n              END-EVALUATE.\n          STOP RUN.\n\u003c/pre\u003e\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB09.\n      *******************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 27/11/2020\n      * OBJETIVO: RECEBER PRODUTO, VALOR E CALCULAR O FRETE\n      * UTILIZAR COMANDO EVALUATE\n      *******************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n              DECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-PRODUTO  PIC X(20)       VALUE SPACES.\n       77 WRK-UF       PIC X(02)       VALUE SPACES.\n       77 WRK-VALOR    PIC 9(06)V99    VALUE ZEROS.\n       77 WRK-FRETE    PIC 9(04)V99    VALUE ZEROS.\n       PROCEDURE DIVISION.\n           DISPLAY 'PRODUTO: '\n           ACCEPT WRK-PRODUTO.\n\n           DISPLAY 'VALOR: '\n           ACCEPT WRK-VALOR.\n\n           DISPLAY 'ESTADO A ENTREGAR: '\n           ACCEPT WRK-UF.\n\n           EVALUATE WRK-UF\n             WHEN 'SP'\n               COMPUTE WRK-FRETE = WRK-VALOR * 1,05\n             WHEN 'RJ'\n               COMPUTE WRK-FRETE = WRK-VALOR * 1,10\n             WHEN 'MG'\n               COMPUTE WRK-FRETE = WRK-VALOR * 1,15\n             WHEN OTHER\n               DISPLAY 'NAO PODEMOS ENTREGAR '\n             END-EVALUATE.\n\n             DISPLAY '==================='.\n               IF WRK-FRETE NOT EQUAL 0\n\n                   DISPLAY 'VALOR DO FRETE COM PRODUTO ' WRK-FRETE\n               END-IF.\n               STOP RUN.\n\u003c/pre\u003e\n\n### Variável Nível 88 - Lógica\n\n#### PROGCOB10\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB10.\n      *******************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 27/11/2020\n      * OBJETIVO: RECEBER USUARIO E NIVEL\n      * UTILIZAR: VARIAVEL NIVEL 88 - LOGICA\n      *******************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n              DECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-USUARIO      PIC X(20)   VALUE SPACES.\n       77 WRK-NIVEL        PIC 9(02)   VALUE ZEROS.\n           88 ADM      VALUE 01.\n           88 USER     VALUE 02.\n       PROCEDURE DIVISION.\n           DISPLAY 'USUARIO: '\n           ACCEPT WRK-USUARIO.\n\n           DISPLAY 'NIVEL: '\n           ACCEPT WRK-NIVEL.\n           \n           IF ADM\n               DISPLAY 'NIVEL - ADMINISTRADOR'\n           ELSE\n               IF USER\n                   DISPLAY 'NIVEL - USUARIO'\n               ELSE\n                   DISPLAY 'USUARIO NAO AUTORIZADO'\n               END-IF\n           END-IF.\n           STOP RUN.\n\u003c/pre\u003e\n\n### Operadores Relacionais\n\n#### PROGCOB11\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB11.\n      *******************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 27/11/2020\n      * OBJETIVO 1: RECEBER LARGURA E COMPRIMENTO\n      * OBJETIVO 2: CALCULAR AREA\n      *******************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n              DECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-LARGURA      PIC 9(03)V99   VALUE ZEROS.\n       77 WRK-COMPRIMENTO  PIC 9(03)V99   VALUE ZEROS.\n       77 WRK-AREA         PIC 9(03)V99   VALUE ZEROS.\n       PROCEDURE DIVISION.\n           DISPLAY 'LARGURA: '\n           ACCEPT WRK-LARGURA.\n\n           DISPLAY 'COMPRIMENTO: '\n           ACCEPT WRK-COMPRIMENTO.\n           \n           IF WRK-LARGURA \u003e 0 AND WRK-COMPRIMENTO \u003e 0\n               COMPUTE WRK-AREA = (WRK-LARGURA * WRK-COMPRIMENTO)\n               DISPLAY '---------------'\n               DISPLAY 'AREA: ' WRK-AREA\n           ELSE\n               DISPLAY 'FALTA INFORMAR ALGO'\n           END-IF.\n\n           STOP RUN.\n\u003c/pre\u003e\n\n### Aumento Salarial\n\n#### PROGCOBAUMENTOSALARIAL\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOBAUMENTOSALARIAL.\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n           DECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOME           PIC X(30)      VALUE SPACES.\n       77 WRK-ANOENTRADA     PIC 9(04)      VALUE ZEROS.\n       77 WRK-SALARIO        PIC 9(06)V99   VALUE ZEROS.\n       77 WRK-AUMENTO        PIC 9(03)V99   VALUE ZEROS.\n       77 WRK-TEMPOCASA      PIC 9(02)      VALUE ZEROS.\n       \n       01 WRK-DATASISTEMA.\n           02 WRK-DATAANO PIC 9(04).\n           02 WRK-DATAMES PIC 9(02).\n           02 WRK-DATADIA PIC 9(02).\n\n       PROCEDURE DIVISION.\n           ACCEPT WRK-DATASISTEMA FROM DATE YYYYMMDD.\n\n           DISPLAY 'NOME DO FUNCIONARIO '.\n               ACCEPT WRK-NOME.\n           DISPLAY 'ANO DE ENTRADA NA EMPRESA '.\n               ACCEPT WRK-ANOENTRADA.\n           DISPLAY 'SALARIO ATUAL '\n               ACCEPT WRK-SALARIO.\n\n           COMPUTE WRK-TEMPOCASA = WRK-DATAANO - WRK-ANOENTRADA.\n           DISPLAY 'TEMPO DE CASA ' WRK-TEMPOCASA ' ANO(S)'.\n\n           EVALUATE WRK-TEMPOCASA\n               WHEN 0 THRU 1 \n                   COMPUTE WRK-AUMENTO = 0\n               WHEN 2 THRU 5\n                   COMPUTE WRK-AUMENTO = WRK-SALARIO * 0,05\n               WHEN 6 THRU 15\n                   COMPUTE WRK-AUMENTO = WRK-SALARIO * 0,10    \n               WHEN OTHER\n                   COMPUTE WRK-AUMENTO = WRK-SALARIO * 0,15      \n           END-EVALUATE.\n               DISPLAY 'AUMENTO SALARIO DE  ' WRK-AUMENTO.\n               STOP RUN.\n\u003c/pre\u003e\n\n## Lógica Estruturada e Uso de Parágrafos\n\n### Parágrafos e Lógica Estruturada\n\n#### PROGCOB12\n\n\u003cpre\u003e\n        IDENTIFICATION DIVISION.\n      \tPROGRAM-ID. PROGCOB12.\n      **************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 28/11/2020\n      * OBJETIVO: Parágrafos e Lógica Estruturada\n      **************************************************\n      \tENVIRONMENT DIVISION.\n      \tDATA DIVISION.\n      \tWORKING-STORAGE SECTION.\n      \t77 WRK-NOTA1     PIC 9(02)      VALUE ZEROS.\n      \t77 WRK-NOTA2     PIC 9(02)      VALUE ZEROS.\n      \t77 WRK-MEDIA     PIC 9(02)V9    VALUE ZEROS.\n      \t\n      \tPROCEDURE DIVISION.\n      \t0001-PRINCIPAL.\n      \t\tPERFORM 0100-INICIALIZAR.\n      \t\tIF WRK-NOTA1 \u003e 0 AND WRK-NOTA2 \u003e 0\n      \t\t\tPERFORM 0200-PROCESSAR\n      \t\tEND-IF.\n      \t\tPERFORM 0300-FINALIZAR. \n               \n           \tSTOP RUN.\n           \t\n      \t0100-INICIALIZAR.\n           ACCEPT WRK-NOTA1.\n           ACCEPT WRK-NOTA2.\n           \n      \t0200-PROCESSAR.\n           COMPUTE WRK-MEDIA = (WRK-NOTA1 + WRK-NOTA2) / 2.\n           DISPLAY 'MEDIA ' WRK-MEDIA.\n           \tIF WRK-MEDIA \u003e= 6\n           \t\tDISPLAY 'APROVADO'\n           \tELSE\n           \t\tIF WRK-MEDIA \u003e= 2\n           \t\t\tDISPLAY 'RECUPERACAO'\n           \t\tELSE \n           \t\t\tDISPLAY 'REPROVADO'\n           \t\tEND-IF\n           END-IF.\n           \n      \t0300-FINALIZAR.\n           DISPLAY '-----------------------'.\n           DISPLAY 'FINAL DE PROCESSAMENTO'.\n\u003c/pre\u003e\n\n### Aplicando um Desconto\n- Aprendemos que a codificação usando lógica estruturada é uma exigência nas empresas em geral.\n- Quais das opções abaixo não representa uma vantagem em codificarmos de maneira estruturada ?\n\n***Resposta***\n- Velocidade de execução do programa.\n\n***Explicação da Alternativa Correta***\n- Não há ganho de performance entre a escrita de um programa sem ou com o uso da lógica estrutura, pelo fato do cobol pré-compilar todo o código antes de rodar.\n\n### Tempo de Casa Estruturado\n\n#### PROGCOBTEMPODECASAESTRUTURADO\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOBTEMPODECASAESTRUTURADO.\n      *******************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 28/11/2020\n      *******************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n              DECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NOME           PIC X(30)      VALUE SPACES.\n       77 WRK-ANOENTRADA     PIC 9(04)      VALUE ZEROS.\n       77 WRK-SALARIO        PIC 9(06)V99   VALUE ZEROS.\n       77 WRK-AUMENTO        PIC 9(03)V99   VALUE ZEROS.\n       77 WRK-TEMPOCASA      PIC 9(02)      VALUE ZEROS.\n       01 WRK-DATASISTEMA.\n       \t\t02 WRK-ANO PIC 9(04)  VALUE ZEROS.\n         \t02 WRK-MES PIC 9(02)  VALUE ZEROS.\n           \t02 WRK-DIA PIC 9(02)  VALUE ZEROS.\n       \n       PROCEDURE DIVISION.\n       0000-PRINCIPAL.\n       \t\tPERFORM 0100-INICIAR.\n        \tPERFORM 0200-PROCESSAR.\n        \tPERFORM 0300-FINALIZAR.\n        \tSTOP RUN.\n\n       0100-INICIAR.\n       \t\tACCEPT WRK-DATASISTEMA FROM DATE YYYYMMDD.\n          \tDISPLAY '=========================================='\n          \tDISPLAY 'DATA ATUAL: ' WRK-DIA'/'WRK-MES'/'WRK-ANO.\n                DISPLAY '=========================================='\n       \t\tDISPLAY 'NOME DO FUNCIONARIO: '. ACCEPT WRK-NOME.\n        \tDISPLAY 'ANO DE ENTRADA NA EMPRESA '.\n        \t\tACCEPT WRK-ANOENTRADA.\n       \t\tDISPLAY 'SALARIO ATUAL '\n        \t\tACCEPT WRK-SALARIO.\n\n       0200-PROCESSAR.\n       \t\tCOMPUTE WRK-TEMPOCASA = WRK-ANO - WRK-ANOENTRADA.\n       \t\tEVALUATE WRK-TEMPOCASA\n        \t\tWHEN 0 THRU 1 \n        \t\t\tCOMPUTE WRK-AUMENTO = 0\n        \t\tWHEN 2 THRU 5\n       \t\t\t\tCOMPUTE WRK-AUMENTO = WRK-SALARIO * 0,05\n        \t\tWHEN 6 THRU 15\n       \t\t\t\tCOMPUTE WRK-AUMENTO = WRK-SALARIO * 0,10\n       \t\t\tWHEN OTHER\n       \t\t\t\tCOMPUTE WRK-AUMENTO = WRK-SALARIO * 0,15\n       \t\tEND-EVALUATE.\n\n       0300-FINALIZAR.\n       \t\tDISPLAY '=========================================='\n       \t\tDISPLAY 'TEMPO DE CASA ' WRK-TEMPOCASA ' ANO(S)'.\n        \tDISPLAY 'AUMENTO DE SALARIO DE ' WRK-AUMENTO.\n\u003c/pre\u003e\n\n## Repetições e Aproveitamento de Código\n\n### Perform TIMES\n\n#### PROGCOB13\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB13.\n      **********************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 29/11/2020\n      * OBJETIVO: RECEBER UM NUMERO E GERAR A TABUADA DE 1 A 10\n      * UTILIZAR O PERFORM\n      **********************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NUMERO\tPIC 9(02)\tVALUE ZEROS.\n       77 WRK-CONTADOR\tPIC 9(02)\tVALUE 1.\n       77 WRK-RESUL\tPIC 9(02)\tVALUE ZEROS.\n       \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL.\n       \t\tPERFORM 0100-INICIALIZAR.\n       \t\tIF WRK-NUMERO \u003e 0 \n        \t\tPERFORM 0200-PROCESSAR\n        \tEND-IF.\n        \tPERFORM 0300-FINALIZAR.\n        \t\n        \tSTOP RUN.\n       \n       0100-INICIALIZAR.\n       \t       DISPLAY 'DIGITE UM NUMERO PARA REALIZAR A TABUADA: '. \n       \t       ACCEPT WRK-NUMERO.\n       \n       0200-PROCESSAR.\n               PERFORM 10 TIMES\n     \t\t\tCOMPUTE WRK-RESUL = WRK-NUMERO * WRK-CONTADOR\n               \tDISPLAY WRK-NUMERO ' x ' WRK-CONTADOR ' = ' WRK-RESUL\n               \tADD 1 TO WRK-CONTADOR\n               \n               END-PERFORM.\n       \n       0300-FINALIZAR.\n       \t\tDISPLAY '=========================================='\n       \t\tDISPLAY 'FINAL DE PROCESSAMENTO'.\n\u003c/pre\u003e\n\n### Perform VARYING\n\n#### PROGCOB14\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB14.\n      **********************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 29/11/2020\n      * OBJETIVO: RECEBER UM NUMERO E GERAR A TABUADA DE 1 A 10\n      * UTILIZAR O PERFORM - VARYING\n      **********************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-NUMERO\tPIC 9(02)\tVALUE ZEROS.\n       77 WRK-CONTADOR\tPIC 9(02)\tVALUE 1.\n       77 WRK-RESUL\tPIC 9(02)\tVALUE ZEROS.\n       \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL.\n       \t\tPERFORM 0100-INICIALIZAR.\n       \t\tIF WRK-NUMERO \u003e 0 \n        \t\tPERFORM 0200-PROCESSAR\n        \tEND-IF.\n        \tPERFORM 0300-FINALIZAR.\n        \t\n        \tSTOP RUN.\n       \n       0100-INICIALIZAR.\n       \t       DISPLAY 'DIGITE UM NUMERO PARA REALIZAR A TABUADA: '. \n       \t       ACCEPT WRK-NUMERO.\n       \n       0200-PROCESSAR.\n      ******************** FROM = COMECA | BY = INCREMENTO | UNTIL = ATE QUANDO\n               PERFORM VARYING WRK-CONTADOR FROM 1 BY 1\n               \t\tUNTIL WRK-CONTADOR \u003e 10\n     \t\tCOMPUTE WRK-RESUL = WRK-NUMERO * WRK-CONTADOR\n               \tDISPLAY WRK-NUMERO ' x ' WRK-CONTADOR\n               END-PERFORM.\n       \n       0300-FINALIZAR.\n       \t\tDISPLAY '=========================================='\n       \t\tDISPLAY 'FINAL DE PROCESSAMENTO'.\n\u003c/pre\u003e\n\n### Perform UNTIL\n\n#### PROGCOB15\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB15.\n      **********************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 29/11/2020\n      * OBJETIVO: RECEBER UM NUMERO E GERAR A TABUADA DE 1 A 10\n      * UTILIZAR O PERFORM - UNTIL\n      **********************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-VENDAS\tPIC 9(06)V99\tVALUE ZEROS.\n       77 WRK-QT\tPIC 9(03)\tVALUE 0.\n       77 WRK-ACUM\tPIC 9(08)V99\tVALUE ZEROS.\n       \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL.\n       \t\tPERFORM 0100-INICIALIZAR.\n       \t\tIF WRK-VENDAS \u003e 0 \n        \t\tPERFORM 0200-PROCESSAR UNTIL WRK-VENDAS = 0\n        \tEND-IF.\n        \tPERFORM 0300-FINALIZAR\n        \t\n        \tSTOP RUN.\n       \n       0100-INICIALIZAR.\n       \t       DISPLAY 'QUANTIDADE DE VENDAS NO DIA: '. \n       \t       ACCEPT WRK-VENDAS.\n       \n       0200-PROCESSAR.\n               ADD 1 TO WRK-QT.\n               ADD WRK-VENDAS TO WRK-ACUM.\n               PERFORM 0100-INICIALIZAR.\n               \n       \n       0300-FINALIZAR.\n       \t\tDISPLAY '=========================================='\n       \t\tDISPLAY 'TOTAL: ' WRK-ACUM.\n       \t\tDISPLAY 'QUANTIDADE DE REGISTROS: ' WRK-QT.\n       \t\tDISPLAY 'FINAL DE PROCESSAMENTO'.\n\u003c/pre\u003e\n\n##### PROGCOB15 - Output\n\n\u003cpre\u003e\nQUANTIDADE DE VENDAS NO DIA: \n5\nQUANTIDADE DE VENDAS NO DIA: \n6\nQUANTIDADE DE VENDAS NO DIA: \n10\nQUANTIDADE DE VENDAS NO DIA: \n20\nQUANTIDADE DE VENDAS NO DIA: \n36\nQUANTIDADE DE VENDAS NO DIA: \n40\nQUANTIDADE DE VENDAS NO DIA: \n0\n==========================================\nTOTAL: 00000117.00\nQUANTIDADE DE REGISTROS: 006\n\u003c/pre\u003e\n\n### COPY\n\n#### PROGCOB15\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB15.\n      **********************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 30/11/2020\n      * OBJETIVO: RECEBER AS VARIAVEIS DO ARQUIVO BOOK.cob\n      * UTILIZANDO O COPY\n      **********************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n      ************************** COPY geralmente utilizado para padronização das variáveis.\n      ************************** Importando o conteúdo das variáveis do arquivo \"BOOK.cob\" - Include.\n       \t\tCOPY 'BOOK.cob'.\n       \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL.\n       \t\tPERFORM 0100-INICIALIZAR.\n       \t\tIF WRK-VENDAS \u003e 0 \n        \t\tPERFORM 0200-PROCESSAR UNTIL WRK-VENDAS = 0\n        \tEND-IF.\n        \tPERFORM 0300-FINALIZAR\n        \t\n        \tSTOP RUN.\n       \n       0100-INICIALIZAR.\n       \t       DISPLAY 'QUANTIDADE DE VENDAS NO DIA: '. \n       \t       ACCEPT WRK-VENDAS.\n       \n       0200-PROCESSAR.\n               ADD 1 TO WRK-QT.\n               ADD WRK-VENDAS TO WRK-ACUM.\n               PERFORM 0100-INICIALIZAR.\n               \n       \n       0300-FINALIZAR.\n       \t\tDISPLAY '=========================================='\n       \t\tDISPLAY 'TOTAL: ' WRK-ACUM.\n       \t\tDISPLAY 'QUANTIDADE DE REGISTROS: ' WRK-QT.\n       \t\tDISPLAY 'FINAL DE PROCESSAMENTO'.\n\u003c/pre\u003e\n\n### Repetindo Código com Laços\n- Quais são as principais formas de uso do comando PERFORM? \n- E quais destas podemos utilizar para ler N valores da console até que o valor digitado seja 99?\n\n***Resposta***\n- TIMES, VARYING e UNTIL. Podemos utilizar o UNTIL.\n\n***Explicação da Alternativa Correta***\n- TIMES (n vezes), VARYING (N vezes com variável contador) e UNTIL (até que o valor seja igual) são as principais forma de uso do PERFORM. \n- Para ler infinitamente da console até o valor ser 99 usamos o UNTIL (por exemplo: UNTIL variável = 99).\n\n### Investimento Financeiro\n\n#### PROGCOBINVESTIMENTOFINANCEIRO\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOBINVESTIMENTOFINANCEIRO.\n      **********************************************************************\n      * AREA DE COMENTARIOS - REMARKS\n      * AUTHOR: LUCAS  LRM\n      * DATA: 30/11/2020\n      * OBJETIVO: MONTAR UM PROGRAMA QUE SIMULE UM INVESTIMENTO FINANCEIRO\n      * DESCRICAO: VALOR INICIAL DE INVESTIMENTO, PERIODO (NUMERO DE MESES) \n      * E TAXAS DE CORRECAO MENSAL. AO FINAL, RECEBEREMOS O VALOR CORRIGIDO\n      * EM TELA.\n      **********************************************************************\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n       \t\tDECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-VALOR      PIC 9(06)V99       VALUE ZEROS.\n       77 WRK-MESES      PIC 9(03)          VALUE ZEROS.\n       77 WRK-TAXA-MES   PIC 9(02)          VALUE ZEROS.\n       77 WRK-VALOR-ED   PIC ZZZ.ZZ9,99     VALUE ZEROS.\n       \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL.\n       \t\tPERFORM 0100-INICIAR.\n       \t\tPERFORM 0200-PROCESSAR.\n       \t\tPERFORM 0300-FINALIZAR.\n       \n       0100-INICIAR.\n       DISPLAY 'VALOR INVESTIDO '.\n       \t\tACCEPT WRK-VALOR.\n       DISPLAY  'MESES DE APLICACAO '\n       \t\tACCEPT WRK-MESES.\n       DISPLAY 'TAXA MENSAL '\n       \t\tACCEPT WRK-TAXA-MES.\n       \n       0200-PROCESSAR.\n       PERFORM WRK-MESES TIMES\n       \t\tCOMPUTE WRK-VALOR = WRK-VALOR * (WRK-TAXA-MES / 100 + 1)               \n       END-PERFORM.\n       \n       0300-FINALIZAR.\n       MOVE WRK-VALOR TO WRK-VALOR-ED\n       DISPLAY 'VALOR CORRIGIDO ' WRK-VALOR-ED.\n\n       STOP RUN.\n\u003c/pre\u003e\n\n### STRING\n\n- STRING é um comando que serve para concatenar dois ou mais itens em um único, ou alterar o conteúdo de um item.\n- A estrutura do comando, é:\n\n\u003cpre\u003e\nSTRING item-1\n       item-2\n       DELIMITED BY (SIZE ou SPACE)\n       INTO variável-destino\nEND-STRING.\n\u003c/pre\u003e\n\n### DELIMITED BY delimitador, ou SIZE, ou SPACE\n- SIZE, todo o conteúdo será considerado.\n- SPACE será considerado somente o conteúdo até o primeiro espaço encontrado.\n\n#### PROGCOBSTRING\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOBSTRING.\n      **********************************************************************\n      * AUTOR: LUCAS  LRM\n      * DATA: 30/11/2020\n      **********************************************************************\n      * DESCRICAO: TESTANDO STRING e DELIMITED BY\n      **********************************************************************\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 FIB1 PIC 999.\n       77 FIB2 PIC 999.\n       77 FIB3 PIC 999.\n       77 I PIC 99.\n       77 FIBST PIC XXX.\n       77 RES PIC X(64).\n\n       PROCEDURE DIVISION.\n       MOVE 0 TO I \n       MOVE 0 TO FIB1\n       MOVE 1 TO FIB2\n       MOVE SPACES TO RES\n       PERFORM UNTIL I GREATER THAN 15\n       \tADD FIB1 TO FIB2 GIVING FIB3\n       \t\tMOVE FIB2 TO FIB1\n       \t\tMOVE FIB3 TO FIB2\n       \t\tMOVE FIB1 TO FIBST\n       \tSTRING RES DELIMITED BY SPACE\n       \t\tFIBST DELIMITED BY SIZE\n       \t\t\",\"   DELIMITED BY SIZE INTO RES\n       \t\tADD 1 TO I\n       END-PERFORM.\n       DISPLAY RES \"...\"\n       STOP RUN.\n\u003c/pre\u003e\n\n##### PROGCOBSTRING - Output\n\n\u003cpre\u003e\n001,001,002,003,005,008,013,021,034,055,089,144,233,377,610,987,...\n\u003c/pre\u003e\n\n## Trabalhando com Variáveis de Índice\n    \n### Tabela\n- MATRIZ | ARRAY | INDICE | TABELA = Todos significam a mesma coisa.\n\n### Criando Variável com Índice\n\n#### PROGCOB16\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB16.\n      **************************************************\n      * AUTOR: LUCAS LRM\n      * DATA: 30/11/2020\n      **************************************************\n      * OBJETIVO: RECEBER E IMPRIMIR A DATA DO SISTEMA\n      * UTILIZAR: VARIAVEL TIPO TABELA - OCCURS\n      **************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       01 WRK-MESES.\n           03 WRK-MES \tPIC X(09)  OCCURS 12 TIMES.\n       01 WRK-DATASYS.\n           02 ANOSYS \tPIC 9(04)  VALUE ZEROS.\n           02 MESSYS \tPIC 9(02)  VALUE ZEROS.\n           02 DIASYS \tPIC 9(02)  VALUE ZEROS.\n           \n       PROCEDURE DIVISION.\n          ACCEPT WRK-DATASYS FROM DATE YYYYMMDD.\n          \tPERFORM 0400-MONTAMES.\n          DISPLAY 'DATA ' DIASYS ' DE ' WRK-MES(MESSYS) 'DE ' ANOSYS.\n          \n          STOP RUN.\n          \n       0400-MONTAMES.\n       \t  MOVE 'JANEIRO\t' \tTO WRK-MES(01).\n       \t  MOVE 'FEVEIRO\t' \tTO WRK-MES(02).\n       \t  MOVE 'MARCO\t' \tTO WRK-MES(03).\n       \t  MOVE 'ABRIL\t' \tTO WRK-MES(04).\n       \t  MOVE 'MAIO\t' \tTO WRK-MES(05).\n       \t  MOVE 'JUNHO\t' \tTO WRK-MES(06).\n       \t  MOVE 'JULHO\t' \tTO WRK-MES(07).\n       \t  MOVE 'AGOSTO\t' \tTO WRK-MES(08).\n       \t  MOVE 'SETEMBRO' \tTO WRK-MES(09).\n       \t  MOVE 'OUTUBRO\t' \tTO WRK-MES(10).\n       \t  MOVE 'NOVEMBRO' \tTO WRK-MES(11).\n       \t  MOVE 'DEZEMBRO' \tTO WRK-MES(12).\n          \nOutput:\nDATA 30 DE NOVEMBRO DE 2020\n\u003c/pre\u003e\n\n### Redefinindo uma Variável com Índice\n\n#### PROGCOB17\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOB17.\n      ******************************************************\n      * AUTOR: LUCAS LRM\n      * DATA: 01/12/2020\n      ******************************************************\n      * OBJETIVO: RECEBER E IMPRIMIR A DATA DO SISTEMA\n      * UTILIZAR: VARIAVEL TIPO TABELA - REDEFINES\n      ******************************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       \n       01 WRK-MESES-EXTENSO.\n           03 FILLER \tPIC X(03)  VALUE 'JAN'.\n           03 FILLER \tPIC X(03)  VALUE 'FEV'.\n           03 FILLER \tPIC X(03)  VALUE 'MAR'.\n           03 FILLER \tPIC X(03)  VALUE 'ABR'.\n           03 FILLER \tPIC X(03)  VALUE 'MAI'.\n           03 FILLER \tPIC X(03)  VALUE 'JUN'.\n           03 FILLER \tPIC X(03)  VALUE 'JUL'.\n           03 FILLER \tPIC X(03)  VALUE 'AGO'.\n           03 FILLER \tPIC X(03)  VALUE 'SET'.\n           03 FILLER \tPIC X(03)  VALUE 'OUT'.\n           03 FILLER \tPIC X(03)  VALUE 'NOV'.\n           03 FILLER \tPIC X(03)  VALUE 'DEZ'.\n           \n       01 WRK-MESES REDEFINES WRK-MESES-EXTENSO.\n       \t   02 WRK-MES PIC X(3) OCCURS 12 TIMES.\n       \n       01 WRK-DATASYS.\n           02 ANOSYS \tPIC 9(04)  VALUE ZEROS.\n           02 MESSYS \tPIC 9(02)  VALUE ZEROS.\n           02 DIASYS \tPIC 9(02)  VALUE ZEROS.\n           \n       PROCEDURE DIVISION.\n          ACCEPT WRK-DATASYS FROM DATE YYYYMMDD.\n          DISPLAY 'DATA ' DIASYS ' DE ' WRK-MES(MESSYS) ' DE ' ANOSYS.\n          \n          STOP RUN.\n          \nOutput:\nDATA 01 DE DEZ DE 2020\n\u003c/pre\u003e\n\n### Pergunta - Leitura de Variável Indexada\n\n**Considerando que usaremos a variável N-MES para auxiliar no LOOP dos meses, quais das opções abaixo será capaz de:**\n- ler os valores de todos os meses do ano (armazenados na variável indexada MES),\n- verificar se existe algum valor e, caso afirmativo imprimir?\n\n**Resposta:**\n\u003cpre\u003e\nPERFORM VARYING N-MES FROM 1 BY 1 UNTIL N-MES \u003e 12\n\n    IF MES(N-MES) \u003e 0 \n             DISPLAY ‘ VALOR DO MES ‘ N-MES ‘ = ‘  MES(N-MES)\n    END-IF\nEND-PERFORM\n\u003c/pre\u003e\n\n**Explicação:**\n- A instrução VARYING inicia (FROM) a variável N-MES como 1, incrementando (BY) por 1 até que chegue a 12.\n\n### Juntando Conceitos\n- Lógica Estruturada,\n- Perform,\n- Variáveis de grupo,\n- Indexadas,\n- Operadores aritméticos...\n\n#### A proposta\n- Criarmos um programa que receba valores de vendas feitas em meses do ano. \n- Serão aceitas várias vendas por mês, acumulando o valor por mês.\n- O final do programa acontece quando o mês digitado for igual a 99 (não será nesse caso necessário digitar o valor).\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. PROGCOBVENDASFEITASMESESANO.\n       ENVIRONMENT DIVISION.\n       CONFIGURATION SECTION.\n       SPECIAL-NAMES.\n       \t\tDECIMAL-POINT IS COMMA.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       01 WRK-MESES.\n       \t\t02 WRK-MES \tPIC 9(6)V99        OCCURS 12 TIMES.\n       77 WRK-MESVENDA  \tPIC 9(2)           VALUE ZEROS.\n       77 WRK-VALOR     \tPIC 9(06)V99       VALUE ZEROS.\n       \n       PROCEDURE DIVISION.\n       0000-PRINCIPAL.\n       \t\tPERFORM 0100-INICIAR.\n       \t\tPERFORM 0200-PROCESSAR.\n       \t\tPERFORM 0300-FINALIZAR.\n       \t\tSTOP RUN.\n       \n       0100-INICIAR.\n       \t\tDISPLAY 'MES DA VENDA  '\n       \t\t\tACCEPT WRK-MESVENDA.\n       \t\tIF WRK-MESVENDA NOT EQUAL 99\n       \t\tDISPLAY 'VALOR DA VENDA '\n       \t\t\tACCEPT WRK-VALOR\n         \t\tADD WRK-VALOR TO WRK-MES(WRK-MESVENDA)\n       \t\tEND-IF.\n       \t\t\n       0200-PROCESSAR.\n       PERFORM 0100-INICIAR.\n       \n       0300-FINALIZAR.\n       \t\tPERFORM VARYING WRK-MESVENDA FROM 1 BY 1\n                \tUNTIL WRK-MESVENDA \u003e 12\n       \t\tDISPLAY 'VALOR MES ' WRK-MESVENDA ' = '\n                \t\t     WRK-MES(WRK-MESVENDA)\n       \t\tEND-PERFORM.\n          \nOutput:\nMES DA VENDA  \n09\nVALOR DA VENDA \n200\nMES DA VENDA  \n10\nVALOR DA VENDA \n100\nVALOR MES 01 = 000000,00\nVALOR MES 02 = 000000,00\nVALOR MES 03 = 000000,00\nVALOR MES 04 = 000000,00\nVALOR MES 05 = 000000,00\nVALOR MES 06 = 000000,00\nVALOR MES 07 = 000000,00\nVALOR MES 08 = 000000,00\nVALOR MES 09 = 000200,00\nVALOR MES 10 = 000100,00\nVALOR MES 11 = 000000,00\nVALOR MES 12 = 000000,00\n\u003c/pre\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003eCobol parte 2: Manipulando Arquivos de Dados\u003c/summary\u003e\n\n\u003ch1 align=\"center\"\u003eIniciando o projeto - Telas\u003c/h1\u003e\n\n### Formas de Acesso\n- Sequential Access\n- Random Access\n\n### Projeto\n- CREATE (Criar) C\n- READ (LER) R\n- UPDATE (ATUALIZAR) U\n- DELETE (DELETAR) D\n\n### External Terminal\n- OpenCobol - Preferences - Run - Run in external terminal [x]\n\n### Construção de Menu 01\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO PIC X(1).\n       \n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n      ************************** LIMPAR A TELA      \n               10 BLANK SCREEN.\n      ************************** POSICIONA NA LINHA 1 E COLUNA 1        \n      ************************** END OF LINE (EOL)\n               10 LINE 01 COLUMN 01 ERASE EOL\n      ************************** PASSANDO A COR POR NUMERO\n      ************************** CORES:\n      ************************** 1 - AZUL \n      ************************** 2 - VERDE\n      ************************** 3 - AZUL CLARO\n      ************************** 4 - VERMELHO\n      ************************** 5 - ROXO\n      ************************** 6 - DOURADO\n      ************************** 7 - CINZA\n                   BACKGROUND-COLOR 1.\n       \n       PROCEDURE DIVISION.\n           DISPLAY TELA.\n           ACCEPT WRK-OPCAO.\n           STOP RUN.\n\u003c/pre\u003e\n\n### Construção de Menu 02\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO PIC X(1).\n       77 WRK-TITULO PIC X(20).\n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n      ************************** LIMPAR A TELA\n               10 BLANK SCREEN.\n      ************************** POSICIONA NA LINHA 1 E COLUNA 1\n      ************************** END OF LINE (EOL)\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n      ************************** PASSANDO A COR POR NUMERO\n      ************************** CORES:\n      ************************** 1 - AZUL\n      ************************** 2 - VERDE\n      ************************** 3 - AZUL CLARO\n      ************************** 4 - VERMELHO\n      ************************** 5 - ROXO\n      ************************** 6 - DOURADO\n      ************************** 7 - CINZA\n                   BACKGROUND-COLOR 2 FROM WRK-TITULO.\n        \n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n \n       PROCEDURE DIVISION.\n           MOVE '- MENU - ' TO WRK-TITULO.\n           DISPLAY TELA.\n           ACCEPT MENU.\n           STOP RUN.\n\u003c/pre\u003e\n\n### Construção de telas\n\n**Pergunta:**\n- A tela baseada no padrão ANSI (American National Standards Institute) possui dimensões de 24 linhas por 80 colunas. \n- Se posicionarmos algo na linha 27, pela Screen Section, o que irá acontecer?\n\n**Dica:**\n- Altere o código desta aula modificando as duas últimas linhas do MENU, conforme exemplo abaixo:\n\n\u003cpre\u003e\n01 MENU.\n05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n05 LINE 27 COLUMN 15 VALUE 'OPCAO......: ' .\n05 LINE 27 COLUMN 28 PIC 999 USING WRK-OPCAO.\n\u003c/pre\u003e\n\n**Resposta:**\n- A informação da linha 27 será mostrada logo após o último display (linha 12 - X - SAIDA).\n\n**Explicação:**\n- Como não existe mais de 24 linhas, o COBOL entende que a informação não tem posição definida. Portanto, irá para o último item impresso.\n\n### Validando a Escolha do Menu\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO    PIC X(1).\n       77 WRK-MODULO   PIC X(25).\n       77 WRK-TECLA    PIC X(1).\n\n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n      ********************* FOREGROUND-COLOR DEFINE A COR DA FONTE\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR.\n           PERFORM 2000-PROCESSAR.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n           DISPLAY TELA.\n           ACCEPT MENU.\n\n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n\n       3000-FINALIZAR.\n           CONTINUE.\n\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n           ACCEPT WRK-TECLA AT 1620.\n\u003c/pre\u003e\n\n### Criando um sub-menu\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       DATA DIVISION.\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO  PIC X(1).\n       77 WRK-MODULO PIC X(25).\n       77 WRK-TECLA PIC X(1).\n       77 WRK-OPCAO-RELATO PIC X(1).\n\n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n      ********************* FOREGROUND-COLOR DEFINE A COR DA FONTE\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU-RELATO.\n           05 LINE 12 COLUMN 55 VALUE '1 - EM TELA'.\n           05 LINE 13 COLUMN 55 VALUE '2 - EM DISCO'.\n           05 LINE 14 COLUMN 55 VALUE 'OPCAO......: ' .\n           05 LINE 14 COLUMN 68 USING WRK-OPCAO-RELATO.\n\n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR.\n           PERFORM 2000-PROCESSAR.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n           DISPLAY TELA.\n           ACCEPT MENU-RELATO.\n\n       2000-PROCESSAR.\n            EVALUATE WRK-OPCAO\n              WHEN 1\n               PERFORM 5000-RELATORIO-TELA\n              WHEN 2\n                CONTINUE\n              WHEN 3\n                CONTINUE\n              WHEN 4\n                CONTINUE\n              WHEN 5\n                ACCEPT MENU-RELATO\n                IF WRK-OPCAO-RELATO EQUAL 1\n                    PERFORM 5000-RELATORIO-TELA\n                END-IF\n                IF WRK-OPCAO-RELATO EQUAL 2\n                    PERFORM 5010-RELATORIO-DISCO\n                END-IF\n              WHEN OTHER\n                IF WRK-OPCAO NOT EQUAL 'X'\n                    DISPLAY 'ENTRE COM OPCAO CORRETA'\n                END-IF    \n            END-EVALUATE.\n\n       3000-FINALIZAR.\n           CONTINUE.\n\n       5000-RELATORIO-TELA.\n           CONTINUE.\n       5010-RELATORIO-DISCO.\n           CONTINUE.\n\u003c/pre\u003e\n\n### Personalizando Cores\n\n| Número |           Cor               |     Constante COBOL     |                           \n|:---:|:---------------:|:--------------------------------:|\n|  0  | Preto | COB-COLOR-BLACK |\n|  1  | Verde | COB-COLOR-GREEN |\n|  2  | Azul | COB-COLOR-BLUE |\n|  3  | Turquesa | COB-COLOR-CYAN |\n|  4  | Vermelho | COB-COLOR-RED |\n|  5  | Magenta | COB-COLOR-MAGENTA |\n|  6  | Amarelo | COB-COLOR-YELLOW |\n|  7  | Branco | COB-COLOR-WHITE |\n\n### Opções para Entrada de Dados\n\n**REVERSE-VIDEO:**\n- Inverte as cores de background e foreground (ex: letra preta, fundo branco)\n- EX.: 05 LINE 13 COLUMN 28 USING WRK-OPCAO REVERSE-VIDEO\n\n**SECURE:**\n- Cria uma máscara de entrada com asterisco (*) no lugar do texto digitado. Ideal para digitação de dados tipo senha.\n- EX.: 05 LINE 13 COLUMN 28 USING WRK-OPCAO SECURE\n\n\u003ch1 align=\"center\"\u003eIncluindo Registros\u003c/h1\u003e\n\n### Abertura de Arquivos:\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTS-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO    PIC X(1).\n       77 WRK-MODULO   PIC X(25).\n       77 WRK-TECLA    PIC X(1).\n       77 CLIENTES-STATUS   PIC 9(02).\n\n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n      ********************* FOREGROUND-COLOR DEFINE A COR DA FONTE\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR.\n           PERFORM 2000-PROCESSAR.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n      ***************** INPUT E OUTPUT\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n           DISPLAY TELA.\n           ACCEPT MENU.\n\n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n\n       3000-FINALIZAR.\n      ******************** FORCANDO O FECHAMENTO\n           CLOSE CLIENTES.\n\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n           ACCEPT WRK-TECLA AT 1620.\n\u003c/pre\u003e\n\n### Arquivo Sequencial e Indexado\n\n**Pergunta:**\n- Qual das opções abaixo são vantagens no manuseio de arquivos indexados ao invés de sequenciais?\n\n**Resposta:**\n- Acesso direto ao registro através de uma chave\n- Inclusão de apenas um registro por chave, evitando duplicidade\n\n**Explicação:**\n- Acessar diretamente o registro por chave evita a leitura inteira do arquivo para localizar uma chave específica (registro).\n- Dados duplicados podem comprometer o resultado da análise de um arquivo. O mesmo registro pode acabar sendo processado mais de uma vez, gerando inconsistência.\n\n### Inclusão de Dados\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID.  INCLUSAODADOS.\n      *********************************\n      * OBJETIVO:  INCLUSAO DE DADOS\n      * AUTHOR  :  LUCAS\n      *********************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO 'E:\\COBOL\\CLIENTES.DAT'\n             ORGANIZATION IS INDEXED\n             ACCESS MODE IS RANDOM\n             FILE STATUS IS CLIENTES-STATUS\n             RECORD KEY IS  CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n            05 CLIENTES-CHAVE.\n                10 CLIENTES-FONE PIC 9(09).\n            05 CLIENTES-NOME     PIC X(30).\n            05 CLIENTES-EMAIL    PIC X(40).\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO  PIC X(1).\n       77 WRK-MODULO PIC X(25).\n       77 WRK-TECLA PIC X(1).\n       77 CLIENTES-STATUS PIC 9(02).\n\n       SCREEN SECTION.\n       01 TELA.\n            05 LIMPA-TELA.\n                10 BLANK SCREEN.\n                10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n                10 LINE 01 COLUMN 25 PIC X(20)\n                   BACKGROUND-COLOR 3  FOREGROUND-COLOR 0\n                              FROM 'SISTEMA DE CLIENTES '.\n                10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n       01 MENU.\n            05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n            05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n            05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n            05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n            05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n            05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n            05 LINE 14 COLUMN 15 VALUE 'OPCAO......: ' .\n            05 LINE 14 COLUMN 28 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n            05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n            05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOME.... '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL... '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n            PERFORM 1000-INICIAR.\n            PERFORM 2000-PROCESSAR.\n            PERFORM 3000-FINALIZAR.\n            STOP RUN.\n\n       1000-INICIAR.\n            OPEN I-O CLIENTES\n              IF CLIENTES-STATUS = 35 THEN\n                  OPEN OUTPUT CLIENTES\n                  CLOSE CLIENTES\n                  OPEN I-O CLIENTES\n               END-IF.\n\n            DISPLAY TELA.\n            ACCEPT MENU.\n\n       2000-PROCESSAR.\n            EVALUATE WRK-OPCAO\n              WHEN 1\n               PERFORM 5000-INCLUIR\n              WHEN 2\n                CONTINUE\n              WHEN 3\n                CONTINUE\n              WHEN 4\n                CONTINUE\n              WHEN 5\n                CONTINUE\n              WHEN OTHER\n                IF WRK-OPCAO NOT EQUAL 'X'\n                    DISPLAY 'ENTRE COM OPCAO CORRETA'\n                END-IF\n            END-EVALUATE.\n\n       3000-FINALIZAR.\n             CLOSE CLIENTES.\n\n       5000-INCLUIR.\n             MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n             DISPLAY TELA.\n              ACCEPT TELA-REGISTRO.\n                WRITE CLIENTES-REG.\n                  DISPLAY TELA.\n            ACCEPT MENU.\n\u003c/pre\u003e\n\n### Testar Registro\n\n- Testando se o registro a ser inserido já existe no arquivo.\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO    PIC X(1).\n       77 WRK-MODULO   PIC X(25).\n       77 WRK-TECLA    PIC X(1).\n       77 CLIENTES-STATUS   PIC 9(02).\n\n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n      ********************* FOREGROUND-COLOR DEFINE A COR DA FONTE\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n           05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n           05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOMES: '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL: '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR.\n           PERFORM 2000-PROCESSAR.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n      ***************** INPUT E OUTPUT\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n\n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n\n       3000-FINALIZAR.\n      ******************** FORCANDO O FECHAMENTO\n           CLOSE CLIENTES.\n\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n               ACCEPT TELA-REGISTRO.\n                   WRITE CLIENTES-REG.\n                       IF CLIENTES-STATUS = 22\n                           DISPLAY 'REGISTRO JA EXISTE'\n                               ACCEPT WRK-OPCAO\n                       END-IF.\n                   DISPLAY TELA.\n           ACCEPT MENU.\n\u003c/pre\u003e\n\n-  No parágrafo 5000-INCLUIR, logo após o WRITE CLIENTES-REG, vamos testar o file status da operação.\n- Caso o valor retornado seja igual a 22, será enviada para a tela uma mensagem de aviso ao usuário e um ACCEPT para segurar o processamento.\n\n### FILE-STATUS\n\n- Valores possíveis de FILE-STATUS em arquivos COBOL.\n\n| Código |                     Status                          |                           \n|:---:|:------------------------------------------------------:|\n|  00  | Conclusão bem-sucedida. |\n|  02  | Apenas arquivos indexados. Causas possíveis: Para uma instrução READ, o valor da chave para a chave atual é igual ao valor da mesma chave no próximo registro na chave de referência atual. Para uma instrução WRITE ou REWRITE, o registro recém-criado criou um valor de chave duplicado para pelo menos uma chave de registro alternativa para a qual duplicatas são permitidas. |\n|  04  | O comprimento do registro que está sendo processado não está de acordo com os atributos de arquivo fixos para esse arquivo. |\n|  05  | O arquivo opcional referenciado não está presente no momento em que a instrução OPEN é executada. |\n|  06  | Tentativa de gravar em um arquivo que foi aberto para entrada. |\n|  07  | Apenas arquivos sequenciais. Para uma instrução OPEN ou CLOSE com a frase REEL / UNIT, o arquivo referenciado é um meio sem bobina / unidade. |\n|  08  | Tentativa de ler de um arquivo aberto para saída. |\n|  09  | Nenhuma sala no diretório ou diretório não existe. |\n|  10  | Nenhum registro lógico seguinte existe. Você chegou ao final do arquivo.|\n|  12  | Tentou abrir um arquivo que já está aberto. |\n|  13  | Arquivo não encontrado. Além disso, verifique se o caminho para o arquivo em questão existe (Micro Focus). |\n|  14  | Apenas arquivos relativos. O número de dígitos significativos no número de registro relativo é maior que o tamanho do item de dados de chave relativo descrito para esse arquivo. Muitos arquivos são abertos simultaneamente ( Micro Focus ). |\n|  15  | Muitos arquivos indexados são abertos ( Micro Focus ). |\n|  16  | Muitos arquivos de dispositivos estão abertos ( Micro Focus ). |\n|  17  | Erro de registro: provavelmente comprimento zero ( Micro Focus ). |\n|  18  | Erro de registro de parte de leitura: EOF antes de EOR ou arquivo aberto no modo errado ( Micro Focus ). |\n|  19  | Reescreva o erro: abra o modo ou o modo de acesso errado ( Micro Focus ). |\n|  20  | Dispositivo ou recurso ocupado ( Micro Focus ). |\n|  21  | Apenas arquivos acessados sequencialmente. Indica um erro de sequência. Os requisitos de chave ascendente de valores de chave de registro sucessivos foram violados ou o valor da chave de registro principal foi alterado por um programa COBOL entre a execução bem-sucedida de uma instrução READ e a execução da próxima instrução REWRITE para esse arquivo. |\n|  22  | Apenas arquivos indexados e relativos. Indica uma condição de chave duplicada. Foi feita uma tentativa de armazenar um registro que criaria uma chave duplicada no arquivo indexado ou relativo OU uma chave de registro alternativa duplicada que não permite duplicatas. |\n|  23  | Indica que nenhum registro foi encontrado. Foi feita uma tentativa de acessar um registro, identificado por uma chave, e esse registro não existe no arquivo.Alternativamente, uma operação START ou READ foi tentada em um arquivo de entrada opcional que não está presente. |\n|  24  | Somente arquivos relativos e indexados. Indica uma violação de limite. Possíveis causas: Tentativa de gravar além dos limites definidos externamente de um arquivo. A tentativa de uma operação WRITE sequencial foi tentada em um arquivo relativo, mas o número de dígitos significativos no número de registro relativo é maior que o tamanho do item de dados de chave relativo descrito para o arquivo. |\n|  30  | A instrução de E / S foi executada sem êxito como resultado de uma violação de limite para um arquivo seqüencial ou como resultado de um erro de E / S, como um erro de paridade de verificação de dados ou um erro de transmissão. |\n|  32  | Muitos arquivos indexados abertos. Isso também pode acontecer quando um arquivo sequencial é aberto para entrada e é feita uma tentativa de abrir o mesmo arquivo para saída ( mensagem RTS ( Run Time System) da Micro Focus ). |\n|  34  | A instrução de E / S falhou devido a uma violação de limite. Essa condição indica que foi feita uma tentativa de gravar além dos limites definidos externamente de um arquivo sequencial. |\n|  35  | Uma operação OPEN com as frases IO, INPUT ou EXTEND foi tentada em um arquivo não OPCIONAL que não está presente. Tentando abrir um arquivo que não existe. Pode ser necessário mapear o nome do arquivo COBOL para o nome do arquivo físico. (Micro Focus, consulte a diretiva ASSIGN (EXTERNAL)). |\n|  37  | Uma operação OPEN foi tentada em um arquivo que não suporta o modo aberto especificado na instrução OPEN. |\n|  38  | Uma operação OPEN foi tentada em um arquivo previamente fechado com um bloqueio. |\n|  39  | Um conflito foi detectado entre os atributos de arquivo reais e os atributos especificados para o arquivo no programa. Isso geralmente é causado por um conflito com comprimento de registro, comprimento de chave, posição de chave ou organização de arquivo. Outras causas possíveis são: 1. Índices alternativos são definidos incorretamente (comprimento ou posição da chave, duplicatas ou parâmetros esparsos) . 2. O Modo de Gravação é Variável ou Fixo ou não definido como quando o arquivo foi criado. 3. Para arquivos com registros de comprimento variável, os comprimentos de registro mínimo e máximo para o arquivo real podem não corresponder aos comprimentos de registro mínimo e máximo usados pelo programa. |\n|  41  | Uma operação OPEN foi tentada no arquivo já aberto. |\n|  42  | Uma operação CLOSE foi tentada no arquivo já fechado. |\n|  43  | Arquivos no modo de acesso seqüencial. A última declaração de E / S executada para o arquivo, antes da execução de uma instrução DELETE ou REWRITE, não era uma instrução READ. |\n|  44  | Existe uma violação de limite. Possíveis causas: Tentativa de WRITE ou REWRITE um registro maior que o maior ou menor que o menor registro permitido pela cláusula RECORD IS VARYING do arquivo associado. Tentativa de REESCREVA um registro em um arquivo e o registro não tem o mesmo tamanho do registro que está sendo substituído. |\n|  45  | Foi feita uma tentativa de REESCREVA um registro em um arquivo e o registro não é do mesmo tamanho que o registro que está sendo substituído. (Micro Focus) Para arquivos sequenciais de linha, isso se refere ao tamanho físico do registro, ou seja, após a remoção de espaço, compactação de tabulação e inserção nula. Nesse caso, o tamanho físico do novo registro pode ser menor que o do registro que está sendo substituído. |\n|  46  | Uma operação READ sequencial foi tentada em um arquivo aberto no modo INPUT ou IO, mas nenhum próximo registro válido foi estabelecido. |\n|  47  | Uma operação READ ou START foi tentada em um arquivo não aberto INPUT ou IO. |\n|  48  | Uma operação WRITE foi tentada em um arquivo não aberto no modo OUTPUT, IO ou EXTEND ou em um arquivo aberto IO no modo de acesso seqüencial. |\n|  49  | Uma operação DELETE ou REWRITE foi tentada em um arquivo que não é aberto IO. |\n\n\u003ch1 align=\"center\"\u003eValidação, Erros e Menu\u003c/h1\u003e\n\n### Validando Chave Existente\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO        PIC X(1).\n       77 WRK-MODULO       PIC X(25).\n       77 WRK-TECLA        PIC X(1).\n       77 CLIENTES-STATUS  PIC 9(02).\n       77 WRK-MSGERRO      PIC X(30).\n       \n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n      ********************* FOREGROUND-COLOR DEFINE A COR DA FONTE\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n           05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n           05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOMES: '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL: '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       01 MOSTRA-ERRO.\n           02 MSG-ERRO.\n               10 LINE 16 COLUMN 10 PIC X(40) USING WRK-MSGERRO.\n               10 COLUMN PLUS 2 PIC X(01) USING WRK-TECLA.\n               \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR.\n           PERFORM 2000-PROCESSAR.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n      ***************** INPUT E OUTPUT\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n\n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n\n       3000-FINALIZAR.\n      ******************** FORCANDO O FECHAMENTO\n           CLOSE CLIENTES.\n\n      ******************** PARAGRAFO\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n               ACCEPT TELA-REGISTRO.\n                   WRITE CLIENTES-REG\n                       INVALID KEY\n                           MOVE 'JA EXISTE ' TO WRK-MSGERRO\n                           ACCEPT MOSTRA-ERRO\n                   END-WRITE.\n                       DISPLAY TELA.\n           ACCEPT MENU.\n\u003c/pre\u003e\n\n### Teste de FILE ESTATUS\n\n**Pergunta:**\n- Em uma operação de gravação de registro, além do teste de FILE ESTATUS = 22, qual é a outra forma de testarmos se o registro a ser gravado já existe no arquivo (chave duplicada)?\n\n**Resposta:**\n- INVALID KEY após o comando WRITE\n\n**Explicação:**\n- O comando WRITE devolve TRUE para INVALID KEY quando a chave já existir no arquivo.\n\n### Exibindo Erros\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO        PIC X(1).\n       77 WRK-MODULO       PIC X(25).\n       77 WRK-TECLA        PIC X(1).\n       77 CLIENTES-STATUS  PIC 9(02).\n       77 WRK-MSGERRO      PIC X(30).\n       \n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n      ********************* FOREGROUND-COLOR DEFINE A COR DA FONTE\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n           05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n           05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOMES: '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL: '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       01 MOSTRA-ERRO.\n           02 MSG-ERRO.\n               10 LINE 16 COLUMN 01 ERASE EOL\n                           BACKGROUND-COLOR 3.\n               10 LINE 16 COLUMN 10 PIC X(30) \n                           BACKGROUND-COLOR 3 \n                           FROM WRK-MSGERRO.\n               10 COLUMN PLUS 2 PIC X(01)\n                           BACKGROUND-COLOR 3\n                           USING WRK-TECLA.\n               \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR.\n           PERFORM 2000-PROCESSAR.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n      ***************** INPUT E OUTPUT\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n\n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n\n       3000-FINALIZAR.\n      ******************** FORCANDO O FECHAMENTO\n           CLOSE CLIENTES.\n\n      ******************** PARAGRAFO\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n               ACCEPT TELA-REGISTRO.\n                   WRITE CLIENTES-REG\n                       INVALID KEY\n                           MOVE 'JA EXISTE ' TO WRK-MSGERRO\n                           ACCEPT MOSTRA-ERRO\n                   END-WRITE.\n                       DISPLAY TELA.\n           ACCEPT MENU.\n\u003c/pre\u003e\n\n### Encerrando o Menu\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO        PIC X(1).\n       77 WRK-MODULO       PIC X(25).\n       77 WRK-TECLA        PIC X(1).\n       77 CLIENTES-STATUS  PIC 9(02).\n       77 WRK-MSGERRO      PIC X(30).\n       \n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n           05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n           05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOMES: '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL: '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       01 MOSTRA-ERRO.\n           02 MSG-ERRO.\n               10 LINE 16 COLUMN 01 ERASE EOL\n                           BACKGROUND-COLOR 3.\n               10 LINE 16 COLUMN 10 PIC X(30) \n                           BACKGROUND-COLOR 3 \n                           FROM WRK-MSGERRO.\n               10 COLUMN PLUS 2 PIC X(01)\n                           BACKGROUND-COLOR 3\n                           USING WRK-TECLA.\n               \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR THRU 1100-MONTATELA.\n           PERFORM 2000-PROCESSAR UNTIL WRK-OPCAO = 'X'.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n\n       1100-MONTATELA.\n           DISPLAY TELA.\n           ACCEPT MENU.\n       \n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n               PERFORM 1100-MONTATELA.\n\n       3000-FINALIZAR.\n           CLOSE CLIENTES.\n\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n               ACCEPT TELA-REGISTRO.\n                   WRITE CLIENTES-REG\n                       INVALID KEY\n                           MOVE 'JA EXISTE ' TO WRK-MSGERRO\n                           ACCEPT MOSTRA-ERRO\n                   END-WRITE.\n\u003c/pre\u003e\n\n### Gravação de nova chave\n\n- Na inclusão de um registro, quando houver duplicidade vamos oferecer ao usuário a opção de inserir um registro com nova chave, mantendo os dados NOME e EMAIL na tela.\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO        PIC X(1).\n       77 WRK-MODULO       PIC X(25).\n       77 WRK-TECLA        PIC X(1).\n       77 CLIENTES-STATUS  PIC 9(02).\n       77 WRK-MSGERRO      PIC X(30).\n       \n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n           05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n           05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOMES: '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL: '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       01 MOSTRA-ERRO.\n           02 MSG-ERRO.\n               10 LINE 16 COLUMN 01 ERASE EOL\n                           BACKGROUND-COLOR 3.\n               10 LINE 16 COLUMN 10 PIC X(30) \n                           BACKGROUND-COLOR 3 \n                           FROM WRK-MSGERRO.\n               10 COLUMN PLUS 2 PIC X(01)\n                           BACKGROUND-COLOR 3\n                           USING WRK-TECLA.\n               \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR THRU 1100-MONTATELA.\n           PERFORM 2000-PROCESSAR UNTIL WRK-OPCAO = 'X'.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n\n       1100-MONTATELA.\n           DISPLAY TELA.\n           ACCEPT MENU.\n       \n       2000-PROCESSAR.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   CONTINUE\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n               PERFORM 1100-MONTATELA.\n\n       3000-FINALIZAR.\n           CLOSE CLIENTES.\n\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n               ACCEPT TELA-REGISTRO.\n                   WRITE CLIENTES-REG\n                       INVALID KEY \n                           MOVE 'JA EXISTE! (N)OVO REGISTRO ?' TO \n                           WRK-MSGERRO\n                               ACCEPT MOSTRA-ERRO\n                       IF WRK-TECLA = 'N' OR WRK-TECLA = 'n'\n                           MOVE ZEROS TO CLIENTES-FONE\n                           PERFORM 5000-INCLUIR\n                       END-IF.\n\u003c/pre\u003e\n\n- 5000-INCLUIR, logo após o INVALID KEY, movemos a frase ’JA EXISTE ! (N)OVO REGISTRO ?’ para o display de erro, oferecendo ao(à) usuário(a) a opção de informar um (N)OVO REGISTRO. \n- Se informado N, voltamos ao início do parágrafo 5000-INCLUIR. Caso contrário, o fluxo irá levar ao menu principal.\n- Agora oferecemos aos(às) usuários(as) a opção de editar a inserção, sem ter de voltar ao menu principal.\n\n\u003ch1 align=\"center\"\u003eManutenção de Registros\u003c/h1\u003e\n\n### Consultando Registros\n\n\u003cpre\u003e\n       IDENTIFICATION DIVISION.\n       PROGRAM-ID. CLIENTES.\n      ******************************************\n      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES\n      * AUTOR: LUCAS\n      ******************************************\n       ENVIRONMENT DIVISION.\n       INPUT-OUTPUT SECTION.\n       FILE-CONTROL.\n           SELECT CLIENTES ASSIGN TO\n           'C:\\Users\\Lucas\\Desktop\\Workspace\\learning-COBOL\\cobol\\CLIENT\n      -    'ES.DAT'\n               ORGANIZATION IS INDEXED\n               ACCESS MODE IS RANDOM\n               FILE STATUS IS CLIENTES-STATUS\n               RECORD KEY  IS CLIENTES-CHAVE.\n       DATA DIVISION.\n       FILE SECTION.\n       FD CLIENTES.\n       01 CLIENTES-REG.\n           05 CLIENTES-CHAVE.\n               10 CLIENTES-FONE PIC 9(09).\n           05 CLIENTES-NOME     PIC X(30).\n           05 CLIENTES-EMAIL    PIC X(40).\n\n\n       WORKING-STORAGE SECTION.\n       77 WRK-OPCAO        PIC X(1).\n       77 WRK-MODULO       PIC X(25).\n       77 WRK-TECLA        PIC X(1).\n       77 CLIENTES-STATUS  PIC 9(02).\n       77 WRK-MSGERRO      PIC X(30).\n       \n       SCREEN SECTION.\n       01 TELA.\n           05 LIMPA-TELA.\n               10 BLANK SCREEN.\n               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL\n                   BACKGROUND-COLOR 3.\n               10 LINE 01 COLUMN 25 PIC X(20)\n                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0\n                  FROM 'SISTEMA DE CLIENTES'.\n               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL\n                   BACKGROUND-COLOR 1 FROM WRK-MODULO.\n\n       01 MENU.\n           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.\n           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTAR'.\n           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.\n           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.\n           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.\n           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.\n           05 LINE 14 COLUMN 15 VALUE 'OPCAO: '.\n           05 LINE 14 COLUMN 23 USING WRK-OPCAO.\n\n       01 TELA-REGISTRO.\n           05 CHAVE FOREGROUND-COLOR 2.\n               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.\n               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE\n                   BLANK WHEN ZEROS.\n           05 SS-DADOS.\n               10 LINE 11 COLUMN 10 VALUE 'NOMES: '.\n               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.\n               10 LINE 12 COLUMN 10 VALUE 'EMAIL: '.\n               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.\n\n       01 MOSTRA-ERRO.\n           02 MSG-ERRO.\n               10 LINE 16 COLUMN 01 ERASE EOL\n                           BACKGROUND-COLOR 3.\n               10 LINE 16 COLUMN 10 PIC X(30) \n                           BACKGROUND-COLOR 3 \n                           FROM WRK-MSGERRO.\n               10 COLUMN PLUS 2 PIC X(01)\n                           BACKGROUND-COLOR 3\n                           USING WRK-TECLA.\n               \n       PROCEDURE DIVISION.\n       0001-PRINCIPAL SECTION.\n           PERFORM 1000-INICIAR THRU 1100-MONTATELA.\n           PERFORM 2000-PROCESSAR UNTIL WRK-OPCAO = 'X'.\n           PERFORM 3000-FINALIZAR.\n           STOP RUN.\n\n       1000-INICIAR.\n           OPEN I-O CLIENTES\n               IF CLIENTES-STATUS = 35 THEN\n                   OPEN OUTPUT CLIENTES\n                   CLOSE CLIENTES\n                   OPEN I-O CLIENTES\n               END-IF.\n\n       1100-MONTATELA.\n           DISPLAY TELA.\n           ACCEPT MENU.\n       \n       2000-PROCESSAR.\n           MOVE SPACES TO WRK-MSGERRO.\n           EVALUATE WRK-OPCAO\n               WHEN 1\n                   PERFORM 5000-INCLUIR\n               WHEN 2\n                   PERFORM 6000-CONSULTAR\n               WHEN 3\n                   CONTINUE\n               WHEN 4\n                   CONTINUE\n               WHEN 5\n                   CONTINUE\n               WHEN OTHER\n                   IF WRK-OPCAO NOT EQUAL 'X'\n                       DISPLAY 'ENTRE COM A OPCAO CORRETA'\n                   END-IF\n           END-EVALUATE.\n               PERFORM 1100-MONTATELA.\n\n       3000-FINALIZAR.\n           CLOSE CLIENTES.\n\n       5000-INCLUIR.\n           MOVE 'MODULO - INCLUSAO ' TO WRK-MODULO.\n           DISPLAY TELA.\n               ACCEPT TELA-REGISTRO.\n                   WRITE CLIENTES-REG\n                       INVALID KEY\n                           MOVE 'JA EXISTE ' TO WRK-MSGERRO\n         ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasrmagalhaes%2Flearning-cobol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucasrmagalhaes%2Flearning-cobol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucasrmagalhaes%2Flearning-cobol/lists"}