🧠 Explicação

O comando EXEC CICS READNEXT é utilizado para ler registros sequenciais de um arquivo no CICS, após o início de uma navegação com STARTBR. Ele lê o próximo registro lógico baseado na posição atual armazenada em RIDFLD. Pode ser usado tanto para navegação de leitura simples quanto para leitura com intenção de atualização (em arquivos RLS), e deve ser encerrado com ENDBR.

🔧 Usos mais comuns

  • Percorrer registros de um arquivo VSAM em ordem sequencial.

  • Implementar rotinas de leitura sequencial (browse) com filtros.

  • Atualizar ou excluir registros durante a navegação (modo RLS).

  • Trabalhar com integridade de leitura: UNCOMMITTED, CONSISTENT e REPEATABLE.

🧾 Sintaxe

EXEC CICS READNEXT
     FILE(nome-arquivo)
     INTO(area-dados)
     RIDFLD(chave ou RBA/RRN)
     [ KEYLENGTH(tam-chave) ]
     [ LENGTH(tam-registro) ]
     [ SET(ponteiro) ]
     [ TOKEN(token) ]
     [ UPDATE ]
     [ REQID(identificador) ]
     [ RBA | RRN | XRBA ]
     [ SYSID(nome-sistema) ]
     [ NOSUSPEND ]
     [ CONSISTENT | REPEATABLE | UNCOMMITTED ]
END-EXEC.

💻 Exemplo prático

* Leitura sequencial simples de registros:
EXEC CICS STARTBR
     FILE('CLIENTES')
     RIDFLD(CHAVE-CLIENTE)
END-EXEC.

EXEC CICS READNEXT
     FILE('CLIENTES')
     INTO(AREA-CLIENTE)
     RIDFLD(CHAVE-CLIENTE)
     KEYLENGTH(5)
END-EXEC.

IF EIBRESP = DFHRESP(ENDFILE)
    DISPLAY 'Fim do arquivo atingido'.
END-IF.

EXEC CICS ENDBR
     FILE('CLIENTES')
END-EXEC.

📌 Regras

  • Requer navegação iniciada com STARTBR ou RESETBR.

  • RIDFLD sempre deve ter tamanho suficiente para conter o identificador completo do registro.

  • Se UPDATE for especificado, o arquivo deve estar em modo RLS e o TOKEN deve ser informado.

  • KEYLENGTH define o tamanho da chave e pode reposicionar a navegação.

  • Comandos READNEXT com UPDATE adquirem bloqueios exclusivos.

  • O token obtido só é válido até o próximo comando de navegação ou até REWRITE, DELETE ou ENDBR.

  • READNEXT pode ser reposicionado ao alterar RIDFLD, desde que o KEYLENGTH corresponda.

  • Não se pode usar RBA, RRN ou XRBA sem que tenham sido usados no STARTBR.

💡 Dicas

  • Sempre verifique EIBRESP após o READNEXT para tratar condições como ENDFILE, LOCKED ou RECORDBUSY.

  • Prefira CHANNEL/CONTAINER se a estrutura de dados for complexa — READNEXT trabalha com COMMAREA ou INTO.

  • Em arquivos RLS, se não for atualizar o registro, evite UPDATE para minimizar bloqueios.

  • Use NOSUSPEND quando quiser evitar que a transação fique aguardando liberação de registros bloqueados.

 

✅ Conclusão

O comando EXEC CICS READNEXT é essencial para leitura sequencial de arquivos no CICS, sendo parte fundamental da navegação entre registros. Permite tanto operações de leitura simples quanto atualizações controladas em ambientes RLS. Quando utilizado com planejamento, oferece flexibilidade e controle em aplicações transacionais CICS.