O LER0001A é um programa COBOL responsável pela leitura de um arquivo sequencial de cadastro chamado SEQENT01.dat, carregando os registros encontrados em uma estrutura de dados para utilização posterior por outros processos.

O programa inicia abrindo o arquivo em modo de leitura e, em seguida, processa os registros sequencialmente até atingir o final do arquivo. Cada registro lido é transferido para uma área de trabalho e posteriormente armazenado no vetor COPY002A-CADUSUAR.

Durante o processamento, o programa também mantém a quantidade de registros carregados e exibe na tela o código e o nome do usuário correspondente a cada registro lido.

O arquivo contém informações cadastrais como:

  • código e nome;
  • idade e data de nascimento;
  • cargo;
  • e-mail e telefone;
  • endereço, incluindo rua, cidade, estado e CEP.

O fluxo principal é controlado pela seção 0000-PROCESSAR, responsável por abrir o arquivo, realizar a primeira leitura, continuar o processamento dos registros até o fim do arquivo e, finalmente, fechar o arquivo e encerrar a execução.

Dessa forma, o LER0001A funciona como um módulo de leitura e carga de dados, importando registros de usuários armazenados em um arquivo sequencial para uma estrutura em memória, onde poderão ser utilizados em consultas, processamento ou outras operações realizadas pelo sistema.

CODIGO FONTE:

      ******************************************************************
      * PROGRAMADOR: JOSE ROBERTO - COBOLDICAS
      * DATA: 13/02/2025
      * OBJETIVO: MODULO DE LEITURA DE ARQUIVO SEQUENCIAL
      * OBS.: 
      ******************************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. LER0001A.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT ARQUIVO-ENTRADA      ASSIGN TO "SEQENT01.dat"
           ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD  ARQUIVO-ENTRADA.
       01  WRK-COPY002A-REGISTRO.
        05  WRK-COPY002A-CADUSUAR.
         10 WRK-COPY002A-COD                PIC 9(02).
         10 WRK-COPY002A-NOME               PIC X(30).
         10 WRK-COPY002A-IDADE              PIC 9(02).
         10 WRK-COPY002A-DATA-NASC          PIC 9(08).
         10 WRK-COPY002A-CARGO              PIC X(20).    
         10 WRK-COPY002A-EMAIL              PIC X(50).
         10 WRK-COPY002A-TELEFONE           PIC 9(09).
         10 WRK-COPY002A-ENDERECO.
          15 WRK-COPY002A-RUA               PIC X(50).
          15 WRK-COPY002A-CIDADE            PIC X(30).
          15 WRK-COPY002A-ESTADO            PIC X(02).
          15 WRK-COPY002A-CEP               PIC 9(08).

       WORKING-STORAGE SECTION.
       01 FIM-ARQUIVO    PIC X VALUE "N".
       01  WRK-IND1                PIC 9(02) VALUE ZEROS.

       LINKAGE SECTION.
      * Definição da estrutura do cadastro
       COPY COPY002A.

      *================================================================*
       PROCEDURE DIVISION USING COPY002A-REGISTRO.
      *================================================================*

      *----------------------------------------------------------------*
      *    PROCESSAMENTO PRINCIPAL
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0000-processar
       0000-PROCESSAR                  SECTION.
      *----------------------------------------------------------------*

            OPEN INPUT ARQUIVO-ENTRADA.
            PERFORM 0001-LER-ARQSEQ
            MOVE COPY002A-QUANT-REG TO WRK-IND1
            PERFORM 0002-LER-REGISTRO  UNTIL FIM-ARQUIVO = "S"
            PERFORM 9999-FINALIZAR
            .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0000-end
       0000-END.                       EXIT.
      *----------------------------------------------------------------*

      *----------------------------------------------------------------*
      *    FAZER CADASTRO USUARIO
      *----------------------------------------------------------------*
       0001-LER-ARQSEQ                 SECTION.
      *----------------------------------------------------------------*
 
           READ ARQUIVO-ENTRADA INTO WRK-COPY002A-REGISTRO
               AT END MOVE "S" TO FIM-ARQUIVO
           END-READ
           .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0001-end
       0001-END.                       EXIT.
      *----------------------------------------------------------------*

      *----------------------------------------------------------------*
      *    LEITURA E MOVIMENTACAO DE REGISTROS
      *----------------------------------------------------------------*
       0002-LER-REGISTRO               SECTION.
      *----------------------------------------------------------------*

            ADD 1                      TO WRK-IND1
            MOVE WRK-COPY002A-REGISTRO TO COPY002A-CADUSUAR(WRK-IND1)

            IF FIM-ARQUIVO = "N"
               DISPLAY "ID: " COPY002A-COD(WRK-IND1)
      -                " - NOME: " COPY002A-NOME(WRK-IND1)
            END-IF

            PERFORM 0001-LER-ARQSEQ            
            .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 0002-end
       0002-END.                       EXIT.
      *----------------------------------------------------------------*


      *----------------------------------------------------------------*
      *    FINALIZAR PROGRAMA
      *----------------------------------------------------------------*
       9999-FINALIZAR                  SECTION.
      *----------------------------------------------------------------*

            MOVE WRK-IND1              TO COPY002A-QUANT-REG 
            CLOSE ARQUIVO-ENTRADA
            GOBACK
            .
      *----------------------------------------------------------------*
      *> cobol-lint CL002 9999-end
       9999-END.                       EXIT.
      *----------------------------------------------------------------*