Comandos COBOL para Manipulação de Arquivos: ACCESS MODE, FILE-CONTROL, FILE STATUS, OPEN, READ, START, WRITE, REWRITE, DELETE e CLOSE
Quando um programa COBOL trabalha com arquivos QSAM ou VSAM, existe um conjunto de comandos fundamentais que controlam toda a entrada, saída e atualização dos dados.
Esses comandos aparecem diariamente em sistemas:
bancários;
seguradoras;
cartões;
governo;
ERP;
processamento batch.
Visão Geral
FILE-CONTROL
↓
OPEN
↓
READ / START
↓
WRITE / REWRITE / DELETE
↓
CLOSE
FILE-CONTROL
Fica na:
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
Responsável por:
associar arquivos;
definir organização;
definir acesso;
definir FILE STATUS.
Exemplo
SELECT ARQCLIENTE
ASSIGN TO CLIENTE
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS CLI-ID
FILE STATUS IS WS-FS.
ACCESS MODE
Define como o programa acessará o arquivo.
SEQUENTIAL
Leitura em sequência.
ACCESS MODE IS SEQUENTIAL
Fluxo:
REG1
↓
REG2
↓
REG3
Muito usado em:
QSAM
Batch
RANDOM
Acesso direto pela chave.
ACCESS MODE IS RANDOM
Exemplo:
PROCURA CLIENTE 1000
Vai diretamente ao registro.
DYNAMIC
Mistura Sequential e Random.
ACCESS MODE IS DYNAMIC
Muito comum em VSAM.
FILE STATUS
Retorno das operações do arquivo.
Declaração
01 WS-FS PIC XX.
Associação
FILE STATUS IS WS-FS
Status comuns
| Código | Significado |
|---|---|
| 00 | Sucesso |
| 10 | EOF |
| 22 | Chave duplicada |
| 23 | Registro não encontrado |
| 35 | Arquivo inexistente |
| 39 | Definição incompatível |
| 92 | Erro lógico |
| 93 | Arquivo não aberto |
OPEN
Abre o arquivo.
INPUT
Somente leitura.
OPEN INPUT ARQCLI
OUTPUT
Cria novo arquivo.
OPEN OUTPUT ARQSAIDA
I-O
Leitura e atualização.
OPEN I-O ARQVSAM
EXTEND
Acrescenta registros.
OPEN EXTEND ARQREL
READ
Lê um registro.
QSAM
READ ARQCLI
Com EOF
READ ARQCLI
AT END
MOVE 'S' TO EOF
END-READ
READ para VSAM
READ ARQVSAM
Lê o registro corrente.
READ NEXT
Muito usado em VSAM KSDS.
Exemplo
READ ARQVSAM NEXT RECORD
Fluxo
Registro 100
↓
READ NEXT
↓
Registro 101
START
Posiciona o ponteiro em uma chave.
Funciona apenas em arquivos indexados.
Exemplo
START ARQVSAM
KEY IS >= WS-CHAVE
END-START
Fluxo
Chave procurada = 1000
↓
Posiciona no primeiro >= 1000
Muito usado para pesquisas.
WRITE
Grava novo registro.
Exemplo
WRITE REG-CLIENTE
Em arquivo sequencial
Registro gravado no final
Em VSAM
Registro incluído pela chave
Possível erro
FS = 22
Chave duplicada.
REWRITE
Atualiza registro existente.
Exemplo
REWRITE REG-CLIENTE
Fluxo
READ
↓
ALTERA DADOS
↓
REWRITE
Exemplo completo
READ ARQVSAM
MOVE 5000 TO CLI-SALDO
REWRITE REG-CLIENTE
DELETE
Remove registro.
Disponível em arquivos indexados.
Exemplo
DELETE ARQVSAM
Fluxo
READ
↓
DELETE
↓
Registro removido
Muito usado em:
VSAM KSDS
RRDS
Não funciona em QSAM
Arquivos sequenciais não suportam DELETE.
CLOSE
Fecha arquivo.
Exemplo
CLOSE ARQCLI
Sempre execute CLOSE
Evita:
perda de dados;
buffers pendentes;
inconsistências.
Exemplo Completo VSAM
OPEN I-O ARQCLI
MOVE 1000 TO WS-ID
START ARQCLI
KEY >= WS-ID
READ ARQCLI NEXT RECORD
IF WS-FS = '00'
MOVE 'NOVO NOME'
TO CLI-NOME
REWRITE REG-CLIENTE
END-IF
CLOSE ARQCLI
Ciclo de Vida de um Arquivo COBOL
FILE-CONTROL
↓
OPEN
↓
START
↓
READ
↓
WRITE
↓
REWRITE
↓
DELETE
↓
CLOSE
Resumo Rápido
| Comando | Função |
|---|---|
| FILE-CONTROL | Define arquivo |
| ACCESS MODE | Tipo de acesso |
| FILE STATUS | Retorno da operação |
| OPEN | Abre arquivo |
| READ | Lê registro |
| READ NEXT | Próximo registro |
| START | Posiciona por chave |
| WRITE | Inclui registro |
| REWRITE | Atualiza registro |
| DELETE | Remove registro |
| CLOSE | Fecha arquivo |
Dica de Programador Mainframe
Para arquivos QSAM, normalmente você verá:
OPEN INPUT
READ
WRITE
CLOSE
Para arquivos VSAM KSDS, os comandos mais comuns são:
OPEN I-O
START
READ NEXT
WRITE
REWRITE
DELETE
CLOSE
Esses são os comandos fundamentais que formam a base de praticamente todos os programas COBOL que manipulam arquivos no ambiente IBM Z.
Sem comentários:
Enviar um comentário