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.
*----------------------------------------------------------------*