Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Cobol 2 - Aula 1- Programa não grava

Olá, bom dia.

Reproduzi o código da aula 1, porém, o programa não grava o registro e nem apresenta erro. Um arquivo é gerado, mas não contém o conteúdo digitado no terminal, e após pressionar ENTER não volta para o menu principal.

Aliás, baixei o arquivo fonte do Github e também não ocorre a gravação.

Segue código:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CLIENTES. 
      ******************************************
      * OBJETIVO: SISTEMA DE GESTAO DE CLIENTES
      * AUTHOR: ERICK
      * DATA: 16.10.2019
      ******************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT CLIENTES ASSIGN TO 'D:\COBOL2\CLIENTES.DAT'
               ORGANIZATION IS INDEXED
               ACCESS MODE IS RANDOM
               FILE STATUS IS CLIENTES-STATUS
               RECORD KEY IS CLIENTES-CHAVE.
       DATA DIVISION.
       FILE SECTION.
       FD CLIENTES.
       01 CLIENTES-REG.
           05 CLIENTES-CHAVE.
                   10 CLIENTES-FONE PIC 9(09).
           05 CLIENTES-NOME         PIC X(30).
           05 CLIENTES-EMAIL        PIC X(40).


       WORKING-STORAGE SECTION.
       77 WRK-OPCAO PIC X(1).
       77 WRK-MODULO PIC X(25).
       77 WRK-TECLA PIC X(1).
       77 CLIENTES-STATUS PIC 9(02).

       SCREEN SECTION.
       01 TELA.
           05 LIMPA-TELA.
               10 BLANK SCREEN.
               10 LINE 01 COLUMN 01 PIC X(20) ERASE EOL 
                  BACKGROUND-COLOR 3.
               10 LINE 01 COLUMN 25 PIC X(20) 
                  BACKGROUND-COLOR 3 FOREGROUND-COLOR 0
                       FROM 'SISTEMA DE CLIENTES'.
               10 LINE 02 COLUMN 01 PIC X(25) ERASE EOL
                   BACKGROUND-COLOR 1 FROM WRK-MODULO.

       01 MENU.
           05 LINE 07 COLUMN 15 VALUE '1 - INCLUIR'.
           05 LINE 08 COLUMN 15 VALUE '2 - CONSULTA'.
           05 LINE 09 COLUMN 15 VALUE '3 - ALTERAR'.
           05 LINE 10 COLUMN 15 VALUE '4 - EXCLUIR'.
           05 LINE 11 COLUMN 15 VALUE '5 - RELATORIO'.
           05 LINE 12 COLUMN 15 VALUE 'X - SAIDA'.
           05 LINE 13 COLUMN 15 VALUE 'OPCAO......: ' . 
           05 LINE 13 COLUMN 28 USING WRK-OPCAO.

       01 TELA-REGISTRO.
           05 CHAVE FOREGROUND-COLOR 2.
               10 LINE 10 COLUMN 10 VALUE 'TELEONE '.
               10 COLUMN PLUS 2 PIC 9(09) USING CLIENTES-FONE
                   BLANK WHEN ZEROS.
           05 SS-DADOS.
               10 LINE 11 COLUMN 10 VALUE 'NOME.... '.
               10 COLUMN PLUS 2 PIC X(30) USING CLIENTES-NOME.
               10 LINE 12 COLUMN 10 VALUE 'EMAIL... '.
               10 COLUMN PLUS 2 PIC X(40) USING CLIENTES-EMAIL.


       PROCEDURE DIVISION.
       0001-PRINCIPAL SECTION.
           PERFORM 1000-INICIAR.
           PERFORM 2000-PROCESSAR.
           PERFORM 3000-FINALIZAR.
           STOP RUN.

       1000-INICIAR.
           OPEN I-O CLIENTES
               IF CLIENTES-STATUS = 35 THEN
                   OPEN OUTPUT CLIENTES
                   CLOSE CLIENTES
                   OPEN I-O CLIENTES
               END-IF.

           DISPLAY TELA.
           ACCEPT MENU.          

       2000-PROCESSAR.
           EVALUATE WRK-OPCAO
               WHEN 1
                   PERFORM 5000-INCLUIR
               WHEN 2
                   CONTINUE
               WHEN 3
                   CONTINUE
               WHEN 4
                   CONTINUE
               WHEN 5
                   CONTINUE
               WHEN OTHER
                   IF WRK-OPCAO NOT EQUAL 'X'
                       DISPLAY 'ENTRE COM OPCAO CORRETA'
                   END-IF
           END-EVALUATE.

       3000-FINALIZAR.
           CLOSE CLIENTES.

       5000-INCLUIR.
           MOVE ' - MODULO - INCLUSAO - ' TO WRK-MODULO.
           DISPLAY TELA.
               ACCEPT TELA-REGISTRO.
                   WRITE CLIENTES-REG.
                       DISPLAY TELA.
           ACCEPT MENU.

2 respostas
solução!

Erick, tudo bem ?

Para não haver duvida, copiei seu codigo, rodei e tudo certo. Gravou e retorna ao menu.

Talvez o fato de apos o ENTER ele não voltar ao menu principal, é que exista algum erro no acesso ao disco/pasta d:\cobol2 Sugiro mudar o path (caminho) de gravacao.

Detalhe: Quando for abrir o arquivo, por ser um indexado, o conteudo estara nas colunas finais (avance até as ultimas colunas)

Tks Ivan

Oi Ivan, bom dia. Obrigado pelo retorno. Após seu comentário rodei a IDE como adm, e por consequência o programa operou como o esperado. Obrigado.