🧠 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
STARTBR
e terminar comENDBR
. -
READPREV
só aceita chaves completas noRIDFLD
— não aceita chaves genéricas. -
READPREV
não pode ser usado em navegações iniciadas com a opçãoGENERIC
. -
UPDATE
só pode ser usado em arquivos com acesso RLS e exigeTOKEN
. -
TOKEN
permite posteriores comandosREWRITE
,DELETE
ouUNLOCK
. -
READPREV
pode ser combinado comREADNEXT
, mas pode reposicionar a navegação. -
Integridade de leitura pode ser especificada:
UNCOMMITTED
,CONSISTENT
ouREPEATABLE
.
💡 Dicas
-
Verifique
EIBRESP
para tratar condições comoENDFILE
,NOTFND
,LOCKED
ouRECORDBUSY
. -
Sempre inicialize
RIDFLD
com uma chave válida ao usarREADPREV
logo apósSTARTBR
. -
Em arquivos RLS, evite
UPDATE
se não for necessário, para não manter bloqueios desnecessários. -
Use
NOSUSPEND
para 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.