🧠 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,LINKetc. -
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 CONDITIONpermanece 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 CONDITIONevita 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,NOTOPENeIOERR. -
Use
ERROR(...)como fallback para evitar ABENDs inesperados. -
Verifique o campo
EIBRESPapós a execução de comandos ignorados comIGNORE CONDITION. -
Evite múltiplos
HANDLE CONDITIONdesnecessá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.