🧠 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,CONSISTENTeREPEATABLE.
🧾 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
STARTBRouRESETBR. -
RIDFLDsempre deve ter tamanho suficiente para conter o identificador completo do registro. -
Se
UPDATEfor especificado, o arquivo deve estar em modo RLS e oTOKENdeve ser informado. -
KEYLENGTHdefine o tamanho da chave e pode reposicionar a navegação. -
Comandos
READNEXTcomUPDATEadquirem bloqueios exclusivos. -
O token obtido só é válido até o próximo comando de navegação ou até
REWRITE,DELETEouENDBR. -
READNEXTpode ser reposicionado ao alterarRIDFLD, desde que oKEYLENGTHcorresponda. -
Não se pode usar
RBA,RRNouXRBAsem que tenham sido usados noSTARTBR.
💡 Dicas
-
Sempre verifique
EIBRESPapós oREADNEXTpara tratar condições comoENDFILE,LOCKEDouRECORDBUSY. -
Prefira
CHANNEL/CONTAINERse a estrutura de dados for complexa —READNEXTtrabalha comCOMMAREAouINTO. -
Em arquivos RLS, se não for atualizar o registro, evite
UPDATEpara minimizar bloqueios. -
Use
NOSUSPENDquando 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.