Olá!
Para não produzir um post extenso, o assunto sobre arquivos está abordado em posts particionados conforme:
- Declarações básicas
- Código básico
- Código intermediário:
Neste post é abordado os comandos e uma lógica de processamento simples para realizar a leitura dos dados de um arquivo. Lembrando, que na parte 1 desse assunto foi apresentado as declarações básicas que devem ser feitas para executar uma rotina COBOL com arquivos.
O fluxo de processamento consiste em três passos: abrir o arquivo em modo de leitura, ler o registro do arquivo e encerrar o uso do arquivo (fechar o arquivo). De modo que o passo de ler o registro do arquivo deve estar em um laço de repetição.
1 - Abrir o arquivo em modo de leitura
Quando a abertura de um arquivo é feita modo de leitura, significa que as informações que estão contidas no arquivo serão passadas para o COBOL, ou seja, os dados do arquivo serão lidos e manipulados pelo programa COBOL.
A sintaxe do comando para abrir o arquivo em modo de leitura, é :
OPEN INPUT nome-logico-arquivo.
Exemplo: OPEN INPUT ARQUIVO-ENTRADA.
2 - Ler os dados do arquivo
Após ter feito a abertura do arquivo com OPEN INPUT, o arquivo está pronto para ser lido. E com o comando READ é que é feita a leitura dos dados do arquivo. Sintaxe:
READ nome-logico-arquivo.
Exemplo: READ ARQUIVO-ENTRADA.
3 - Encerrar o uso do arquivo
Com o fim da leitura ou processamento dos dados do arquivo, é uma boa prática executar o comando CLOSE para fechar o arquivo (encerrar a sessão). Caso, algum arquivo aberto não seja fechado com este comando, então após a execução completa do programa todos arquivos ainda abertos serão fechados. Sintaxe:
CLOSE nome-logico-arquivo.Exemplo: CLOSE ARQUIVO-ENTRADA.
- Exemplo prático de programa
Então com os comando Open Input, Read e Close, podemos criar um fluxo simples e eficaz para a leitura de um arquivo sequencial.
Considerando que o arquivo a ser lido contem as informações de pessoas e cada registro possui os dados dispostos da seguinte forma: o nome com no máximo 20 caracteres; sobrenome com no máximo 40 caracteres; data de nascimento no formato dd/mm/aaaa. Abaixo está apresentado os dados de exemplo do arquivo-entrada.txt, que contem 5 registros:
Felipe Barbosa Ferreira 19/02/1992 Ana Vieira 02/04/1988 Joao Santos 03/05/1995 Aline Silva 14/08/1985 Maira Dantas 27/12/1976
Assim o layout deste arquivo é:
* -- Descricao do arquivo de entrada
FD ARQUIVO-ENTRADA.
*
* Layout do arquivo: ARQUIVO-ENTRADA
01 ARQUIVO-ENTRADA-REG.
03 ARQ-ENTD-NM-PSS PIC X(020).
03 ARQ-ENTD-NM-PSS-SNM PIC X(040).
03 ARQ-ENTD-DT-PSS-NSC PIC X(010).
E o laço de repetição para ler os registros do arquivo:
* -- Loop para ler os registros do arquivo
PERFORM UNTIL FIM-ARQ
PERFORM 100000-LER-ARQUIVO-ENTRADA
*
* -- Mostra o conteudo lido
DISPLAY 'Registro.......: ' QT-REG-LER-ARQ-ENTD
DISPLAY 'Nome...........: ' ARQ-ENTD-NM-PSS
DISPLAY 'Sobrenome......: ' ARQ-ENTD-NM-PSS-SNM
DISPLAY 'Data nascimento: ' ARQ-ENTD-DT-PSS-NSC
DISPLAY '.'
END-PERFORM.
Neste caso quando, o programa tentar ler o sexto registro será retornado file status igual a 10, indicando fim de arquivo, pois o sexto registro não existe. Deste modo FIM-ARQ se torna verdadeiro e o laço de repetição de leitura termina. E por fim o arquivo é encerrado.
Ver o código completo do programa de exemplo
O resultado da execução da rotina, é:
Registro.......: 000000001
Nome...........: Felipe
Sobrenome......: Barbosa Ferreira
Data nascimento: 19/02/1992
.
Registro.......: 000000002
Nome...........: Ana
Sobrenome......: Vieira
Data nascimento: 02/04/1988
.
Registro.......: 000000003
Nome...........: Joao
Sobrenome......: Santos
Data nascimento: 03/05/1995
.
Registro.......: 000000004
Nome...........: Aline
Sobrenome......: Silva
Data nascimento: 14/08/1985
.
Registro.......: 000000005
Nome...........: Maira
Sobrenome......: Dantas
Data nascimento: 27/12/1976
Nome...........: Felipe
Sobrenome......: Barbosa Ferreira
Data nascimento: 19/02/1992
.
Registro.......: 000000002
Nome...........: Ana
Sobrenome......: Vieira
Data nascimento: 02/04/1988
.
Registro.......: 000000003
Nome...........: Joao
Sobrenome......: Santos
Data nascimento: 03/05/1995
.
Registro.......: 000000004
Nome...........: Aline
Sobrenome......: Silva
Data nascimento: 14/08/1985
.
Registro.......: 000000005
Nome...........: Maira
Sobrenome......: Dantas
Data nascimento: 27/12/1976
Consultar a relação de Termos e Abreviaturas acesse aqui.
FELIPE BARBOSA FERREIRA
FELIPE BARBOSA FERREIRA
Até o próximo post!
Nenhum comentário:
Postar um comentário