A instrução READ
no COBOL é usada para acessar registros de arquivos. Ela pode recuperar dados sequencialmente (próximo registro lógico) ou aleatoriamente (registro com chave ou posição específica), dependendo da organização e modo de acesso do arquivo.
📌 Para que serve
-
Ler registros de arquivos sequenciais, relativos ou indexados.
-
Controlar o fluxo de leitura com condições como
AT END
eINVALID KEY
. -
Carregar registros diretamente em campos definidos com a cláusula
INTO
.
🧾 Sintaxe básica
✅ Acesso sequencial
READ nome-arquivo
[NEXT RECORD]
[INTO identificador]
[AT END instruções]
END-READ.
✅ Acesso aleatório (chave específica)
READ nome-arquivo
[RECORD]
[KEY IS chave]
[INTO identificador]
[INVALID KEY instruções]
END-READ.
✅ Exemplo prático
🟩 Acesso sequencial
READ ARQ-CLIENTES
AT END
DISPLAY "Fim do arquivo alcançado."
END-READ.
🟦 Acesso aleatório com chave
READ ARQ-CLIENTES
KEY IS CODIGO-CLIENTE
INVALID KEY
DISPLAY "Cliente não encontrado."
END-READ.
⚙️ Modos de acesso
Modo de Acesso | Uso | Observações |
---|---|---|
Sequencial | READ NEXT RECORD |
Padrão em arquivos sequenciais |
Aleatório | READ ... KEY IS ... |
Requer chave (indexado) ou posição (relativo) |
Dinâmico | READ NEXT ou READ ... KEY |
Pode alternar entre sequencial e aleatório |
⚠️ Regras importantes
-
O arquivo deve estar
OPEN
no modoINPUT
ouI-O
. -
Para
READ ... INTO
, a área destino deve ter tamanho compatível com o registro lido. -
Se o
READ
falhar (fim de arquivo ou chave inválida), o conteúdo da área de registro é indefinido. -
Com múltiplos registros associados ao arquivo, apenas o registro atual será sobrescrito.
-
Em arquivos com chave alternativa (
ALTERNATE KEY
), registros com duplicatas são retornados na ordem de gravação.
🔄 Diferença entre AT END
e INVALID KEY
Situação | AT END |
INVALID KEY |
---|---|---|
Fim do arquivo | ✅ Aplicável | ❌ Não aplicável |
Chave inexistente | ❌ Não aplicável | ✅ Aplicável (arquivos indexados) |
Arquivo relativo inexistente | ❌ Não aplicável | ✅ Aplicável |
🧠 Dicas práticas
-
Utilize
READ ... INTO
para transferir os dados diretamente para uma estrutura de dados do programa. -
Para evitar erros, sempre trate as condições
AT END
ouINVALID KEY
. -
Arquivos em modo dinâmico permitem
READ NEXT
e tambémREAD KEY IS
, o que dá flexibilidade de acesso.
✅ Conclusão
A instrução READ
é central na manipulação de arquivos no COBOL, sendo responsável pela recuperação de registros. Seja em leitura sequencial ou aleatória, o uso adequado dessa instrução garante controle preciso sobre os dados, aumentando a eficiência e segurança dos programas.