3
respostas

Aula 05: Atividade 02 - Gerando relatório em tela 01

IDENTIFICATION DIVISION.
       PROGRAM-ID. CLIENTES.
      ******************************************************************
      * Objetivo:    Sistema de Gestão de Clientes
      * Autor:       LEONARDO RICARDO (LEONARDOR)
      * Data:        06/05/2020
      ******************************************************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           DECIMAL-POINT IS COMMA.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT CLIENTES ASSIGN TO 'C:\CobolS\SEGUNDO\CLIENTES.DAT'
              ORGANIZATION IS INDEXED
              ACCESS MODE IS DYNAMIC
              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  PICTURE 9(09).
           05 CLIENTES-NOME     PICTURE X(30).
           05 CLIENTES-EMAIL    PICTURE X(40).


       WORKING-STORAGE SECTION.

       77  WRK-OPCAO         PICTURE X(01).
       77  WRK-MODULO        PICTURE X(25).
       77  WRK-TECLA         PICTURE X(01).
       77  CLIENTES-STATUS   PICTURE 9(02).
       77  WRK-MGSERRO       PICTURE X(30).


       SCREEN SECTION.



       01  TELA.
           05 LIMPA-TELA.
              10 BLANK SCREEN.
              10 LINE 01 COLUMN 01 PICTURE X(20) ERASE EOL
                 BACKGROUND-COLOR 3.
              10 LINE 01 COLUMN 25 PICTURE X(20)
                 BACKGROUND-COLOR 3 FOREGROUND-COLOR 0
                 FROM 'SISTEMAS DE CLIENTES'.
              10 LINE 02 COLUMN 01 PICTURE 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 30 USING WRK-OPCAO.

       01 TELA-REGISTRO.
            05 CHAVE FOREGROUND-COLOR 2.
               10 LINE 10 COLUMN 10 VALUE 'TELEFONE '.
               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.


[codigo omitido]



9000-RELATORIO-TELA.
           MOVE 'MODULO - RELATORIO ' TO WRK-MODULO.
           DISPLAY TELA.
           MOVE 12345 TO CLIENTES-FONE.
           START CLIENTES KEY EQUAL CLIENTES-FONE.
           READ CLIENTES
               INVALID KEY
                   MOVE 'NENHUM REGISTRO ENCONTRADO' TO WRK-MGSERRO
               NOT INVALID KEY
                   DISPLAY 'RELATORIO CLIENTES'
                   DISPLAY '====================================='
                   PERFORM UNTIL CLIENTES-STATUS = 10
                       DISPLAY   CLIENTES-FONE ' '
                                 CLIENTES-NOME ' '
                                 CLIENTES-EMAIL
                       READ CLIENTES NEXT
                   END-PERFORM
           END-READ.
               ACCEPT MOSTRA-ERRO.

Olá novamente professor, tudo bem ?

Desta vez estou com erro na hora de exibir o resultado do relatório, quando ele encontra um registro ele joga o mesmo na mesma linha do nosso cabeçalho ("Sistema de Gestão de Clientes") sobrepondo o mesmo, já verifiquei ambas as linhas de código mas não consigo encontrar este erro. Poderia me ajudar ? Vou deixar o trecho de inicio e da sessão de relatório.

3 respostas

Leonardo,

Pode enviar o codigo completo por favor ?

Ivan

Professor,

O tamanho do código excedeu ao limite imposto para uma resposta, foi me sugerido criar um "Gist" com a mensagem completa então o fiz : https://gist.github.com/leonardo-ricardo/e0b2b3250ce012d8fb212a60dcf43035

Desta forma o senhor consegue ver ?

PS: Me desculpe pela demora em retornar, mas muito obrigado mesmo por responder está e a outra questão :).

Leonardo,

Troque a secao 9000-Relatorio-TELA por essa abaixo:

   9000-RELATORIO-TELA.
       MOVE 'MODULO - RELATORIO ' TO WRK-MODULO.
              DISPLAY TELA. 
           ACCEPT CHAVE.

       START CLIENTES KEY EQUAL CLIENTES-FONE.
       READ CLIENTES
           INVALID KEY
               MOVE 'NENHUM REGISTRO ENCONTRADO' TO WRK-MGSERRO
           NOT INVALID KEY
               DISPLAY TELA
               DISPLAY " "
               DISPLAY 'RELATORIO CLIENTES'
               DISPLAY '====================================='
               ADD 1 TO WRK-QTREGISTROS
               PERFORM UNTIL CLIENTES-STATUS = 10
                   DISPLAY   CLIENTES-FONE ' '
                             CLIENTES-NOME ' '
                             CLIENTES-EMAIL
                   READ CLIENTES NEXT
                       ADD 1 TO WRK-CONTALINHA
                   IF WRK-CONTALINHA > 5
                       MOVE 'PRESSIONE ALGUMA TECLA' TO WRK-MGSERRO
                       ACCEPT MOSTRA-ERRO
                       MOVE 'MODULO - RELATORIO ' TO WRK-MODULO
                       DISPLAY TELA
                       DISPLAY 'RELATORIO CLIENTES'
                       DISPLAY '==================================='
                       MOVE 0 TO WRK-CONTALINHA
                   END-IF
               END-PERFORM
       END-READ.
           MOVE 'REGISTROS LIDOS' TO WRK-MGSERRO.
           MOVE WRK-QTREGISTROS TO WRK-MGSERRO(17:05).
           ACCEPT MOSTRA-ERRO.

Veja se era isso.

Abcs Ivan

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software