🧠 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 com ENDBR.

  • READPREV só aceita chaves completas no RIDFLD — não aceita chaves genéricas.

  • READPREV não pode ser usado em navegações iniciadas com a opção GENERIC.

  • UPDATE só pode ser usado em arquivos com acesso RLS e exige TOKEN.

  • TOKEN permite posteriores comandos REWRITE, DELETE ou UNLOCK.

  • READPREV pode ser combinado com READNEXT, mas pode reposicionar a navegação.

  • Integridade de leitura pode ser especificada: UNCOMMITTED, CONSISTENT ou REPEATABLE.

💡 Dicas

  • Verifique EIBRESP para tratar condições como ENDFILE, NOTFND, LOCKED ou RECORDBUSY.

  • Sempre inicialize RIDFLD com uma chave válida ao usar READPREV logo após STARTBR.

  • 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.