🧠 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
eREPEATABLE
.
🧾 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
ouRESETBR
. -
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 oTOKEN
deve ser informado. -
KEYLENGTH
define o tamanho da chave e pode reposicionar a navegação. -
Comandos
READNEXT
comUPDATE
adquirem bloqueios exclusivos. -
O token obtido só é válido até o próximo comando de navegação ou até
REWRITE
,DELETE
ouENDBR
. -
READNEXT
pode ser reposicionado ao alterarRIDFLD
, desde que oKEYLENGTH
corresponda. -
Não se pode usar
RBA
,RRN
ouXRBA
sem que tenham sido usados noSTARTBR
.
💡 Dicas
-
Sempre verifique
EIBRESP
após oREADNEXT
para tratar condições comoENDFILE
,LOCKED
ouRECORDBUSY
. -
Prefira
CHANNEL
/CONTAINER
se a estrutura de dados for complexa —READNEXT
trabalha comCOMMAREA
ouINTO
. -
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.