🧠 Explicação
O comando EXEC CICS READPREV é utilizado para ler registros de forma sequencial reversa (de trás para frente) em arquivos VSAM dentro de programas CICS. A navegação reversa permite acessar os registros anteriores a partir de um ponto definido por STARTBR, e deve ser encerrada com ENDBR. Ele atualiza o RIDFLD com a posição do registro recuperado, mantendo o controle de navegação.
🔧 Usos mais comuns
-
Implementar navegação reversa em arquivos VSAM.
-
Buscar registros anteriores com base em uma chave definida.
-
Atualizar ou excluir registros durante leitura reversa (modo RLS).
-
Consultar dados ordenados de forma decrescente.
🧾 Sintaxe
EXEC CICS READPREV
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
* Iniciar navegação reversa:
EXEC CICS STARTBR
FILE('CLIENTES')
RIDFLD(CHAVE-CLIENTE)
END-EXEC.
EXEC CICS READPREV
FILE('CLIENTES')
INTO(AREA-CLIENTE)
RIDFLD(CHAVE-CLIENTE)
KEYLENGTH(5)
END-EXEC.
IF EIBRESP = DFHRESP(ENDFILE)
DISPLAY 'Início do arquivo atingido'.
END-IF.
EXEC CICS ENDBR
FILE('CLIENTES')
END-EXEC.
📌 Regras
-
A navegação deve começar com
STARTBRe terminar comENDBR. -
READPREVsó aceita chaves completas noRIDFLD— não aceita chaves genéricas. -
READPREVnão pode ser usado em navegações iniciadas com a opçãoGENERIC. -
UPDATEsó pode ser usado em arquivos com acesso RLS e exigeTOKEN. -
TOKENpermite posteriores comandosREWRITE,DELETEouUNLOCK. -
READPREVpode ser combinado comREADNEXT, mas pode reposicionar a navegação. -
Integridade de leitura pode ser especificada:
UNCOMMITTED,CONSISTENTouREPEATABLE.
💡 Dicas
-
Verifique
EIBRESPpara tratar condições comoENDFILE,NOTFND,LOCKEDouRECORDBUSY. -
Sempre inicialize
RIDFLDcom uma chave válida ao usarREADPREVlogo apósSTARTBR. -
Em arquivos RLS, evite
UPDATEse não for necessário, para não manter bloqueios desnecessários. -
Use
NOSUSPENDpara evitar que a tarefa aguarde por registros bloqueados — ideal para alta disponibilidade.
✅ Conclusão
O comando EXEC CICS READPREV é essencial para leituras reversas em arquivos VSAM no ambiente CICS. Ele permite implementar navegação decrescente com controle preciso de posição. Quando combinado com STARTBR, READNEXT e ENDBR, oferece grande flexibilidade na manipulação de arquivos, incluindo suporte a atualizações em modo RLS com controle de bloqueios.