🧠 Explicação
Cada comando EXEC CICS
pode retornar condições específicas de erro ou situação, que indicam o resultado da operação. Essas condições são chamadas de condições de retorno e devem ser tratadas no programa para evitar terminação anormal (ABEND).
O tratamento dessas condições é feito por meio dos comandos:
-
HANDLE CONDITION
– para tratar condições específicas -
IGNORE CONDITION
– para ignorar determinadas condições -
HANDLE CONDITION ERROR(...)
– para capturar qualquer erro não tratado
🛠️ Usos mais comuns
-
Tratar o retorno de comandos
READ
,WRITE
,SEND
,LINK
etc. -
Direcionar o fluxo do programa a parágrafos de tratamento apropriados
-
Evitar que o programa abende quando uma condição previsível ocorrer
-
Ignorar erros que não impactam a lógica da aplicação
🧾 Sintaxe dos comandos
▶ HANDLE CONDITION
EXEC CICS HANDLE CONDITION
condição1(parágrafo1)
condição2(parágrafo2)
END-EXEC.
▶ IGNORE CONDITION
EXEC CICS IGNORE CONDITION condição
END-EXEC.
💻 Exemplo prático
Exemplo de comando com possíveis retornos:
EXEC CICS READ(DATASET) RIDFLD(CODCLI) INTO(AREA-CLI) END-EXEC.
Possíveis condições de retorno:
Erro | Código |
---|---|
Registro não encontrado | NOTFND |
Arquivo não está aberto | NOTOPEN |
Erro de leitura | IOERR |
Arquivo não encontrado | FILENOTFOUND |
Tratamento usando HANDLE CONDITION:
EXEC CICS HANDLE CONDITION
NOTFND(EMITIR-ERRO-NAO-EXISTE)
NOTOPEN(ABRIR-ARQUIVO)
IOERR(ERRO-LEITURA)
FILENOTFOUND(ARQUIVO-NAO-EXISTE)
END-EXEC.
Se alguma das condições ocorrer, o CICS desviará a execução diretamente para o parágrafo indicado.
📋 Regras importantes
-
Se nenhuma condição for tratada, o CICS provoca um ABEND ao ocorrer erro.
-
O
HANDLE CONDITION
permanece ativo até outro comando semelhante sobrescrevê-lo.
- É possível "remover" um tratamento omitindo o nome do parágrafo:
EXEC CICS HANDLE CONDITION NOTFND END-EXEC.
- O comando
IGNORE CONDITION
evita o ABEND, mas não desvia o programa — a condição será registrada emEIBRESP
.
🚨 Tratamento genérico com ERROR
O HANDLE CONDITION
permite também capturar qualquer erro não tratado com o uso da condição especial ERROR
:
Esse comando cobre todas as condições não tratadas individualmente.
📘 Exemplo completo
💡 Dicas
-
Sempre trate condições previsíveis, como
NOTFND
,DUPREC
,NOTOPEN
eIOERR
. -
Use
ERROR(...)
como fallback para evitar ABENDs inesperados. -
Verifique o campo
EIBRESP
após a execução de comandos ignorados comIGNORE CONDITION
. -
Evite múltiplos
HANDLE CONDITION
desnecessários: um só pode cobrir vários comandos.
✅ Conclusão
O tratamento de condições de retorno é fundamental em aplicações CICS. Usar corretamente o HANDLE CONDITION
evita falhas inesperadas e permite que o programa responda de forma controlada a erros e exceções. Ignorar esses tratamentos pode causar ABENDs e comprometer a estabilidade da aplicação.