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 e INVALID 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 modo INPUT ou I-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 ou INVALID KEY.

  • Arquivos em modo dinâmico permitem READ NEXT e também READ 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.