🧠 Explicação

O comando EXEC CICS READ é utilizado para ler registros de arquivos no ambiente CICS, seja para simples consulta ou com intenção de atualização (UPDATE). Pode ser usado com arquivos locais ou remotos, acessando registros por chave, endereço relativo (RBA/XRBA) ou número relativo (RRN). O conteúdo lido pode ser armazenado diretamente em uma área de dados ou por ponteiro (SET).

🔧 Usos mais comuns

  • Ler registros de arquivos VSAM ou tabelas de dados no CICS.

  • Localizar registros por chave completa ou chave genérica (GENERIC).

  • Recuperar registros com integridade de leitura em modo RLS (CONSISTENT ou REPEATABLE).

  • Preparar registros para alteração com UPDATE.

  • Navegar em arquivos com chave maior ou igual (GTEQ).

🧾 Sintaxe

EXEC CICS READ
     FILE(nome-arquivo)
     RIDFLD(variavel-chave)
     [ INTO(variavel-dados) ]
     [ LENGTH(tamanho) ]
     [ KEYLENGTH(tam-chave) ]
     [ GENERIC ]
     [ GTEQ | EQUAL ]
     [ UPDATE ]
     [ CONSISTENT | REPEATABLE | UNCOMMITTED ]
     [ NOSUSPEND ]
     [ SET(ponteiro) ]
     [ TOKEN(variavel-token) ]
     [ RBA | XRBA | RRN ]
     [ SYSID(nome-regiao) ]
END-EXEC.

💻 Exemplo prático

1. Leitura simples por chave:

EXEC CICS READ
     INTO(AREA-DADOS)
     FILE('MASTER')
     RIDFLD(CHAVE-REG)
END-EXEC.

2. Leitura com chave genérica, GTEQ e UPDATE:

EXEC CICS READ
     INTO(AREA-REGISTRO)
     LENGTH(TAM-REG)
     FILE('CLIENTES')
     RIDFLD(CHAVE-PARTE)
     KEYLENGTH(4)
     GENERIC
     GTEQ
     UPDATE
END-EXEC.

📌 Regras

  • RIDFLD é obrigatório e deve conter a chave ou o endereço do registro.

  • Se INTO for usado, LENGTH deve ser especificado para registros de tamanho variável.

  • UPDATE bloqueia o registro para alterações futuras.

  • GENERIC exige que KEYLENGTH seja menor que o tamanho total da chave.

  • RBA, XRBA e RRN só são válidos para tipos específicos de arquivos (ESDS, RRDS etc).

  • NOSUSPEND impede espera se o registro estiver bloqueado, retornando RECORDBUSY.

  • O uso de CONSISTENT, REPEATABLE e NOSUSPEND exige que o arquivo esteja no modo RLS.

  • O uso de TOKEN implica UPDATE e vincula o READ com um futuro REWRITE ou DELETE.

💡 Dicas

  • Use GTEQ para simular leitura sequencial a partir de uma chave.

  • Combine GENERIC + GTEQ para buscas por prefixo.

  • Prefira SET(ptr-ref) para melhor performance em sistemas com muitos acessos.

  • Sempre verifique EIBRESP e EIBRESP2 para tratar exceções como NOTFND, LOCKED, RECORDBUSY ou LENGERR.

  • Evite XRBA para conjuntos de dados KSDS, pois não é suportado.

  • Em arquivos RLS, defina corretamente o nível de integridade de leitura para evitar conflitos entre tarefas.

 

Conclusão

O comando EXEC CICS READ é um recurso poderoso e flexível para recuperação de registros em sistemas CICS. Com suas diversas opções, permite desde leituras simples até acessos com controle de concorrência, bloqueios e integridade transacional. Quando bem utilizado, contribui para o desempenho e segurança no acesso aos dados em ambientes corporativos de missão crítica.