🧠 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 em EIBRESP.
 

🚨 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:

EXEC CICS HANDLE CONDITION ERROR(ROT-ERRO-GERAL)
END-EXEC.

Esse comando cobre todas as condições não tratadas individualmente.

📘 Exemplo completo

EXEC CICS HANDLE CONDITION
     NOTFND(CLIENTE-NAO-ENCONTRADO)
     ERROR(TRATAMENTO-GERAL)
END-EXEC.

EXEC CICS READ(DATASET) RIDFLD(CODCLI) INTO(AREA-CLI)
END-EXEC.
CLIENTE-NAO-ENCONTRADO.
    DISPLAY "Cliente não encontrado."
    GO TO FIM.

TRATAMENTO-GERAL.
    DISPLAY "Erro inesperado."
    GO TO FIM.
 

💡 Dicas

  • Sempre trate condições previsíveis, como NOTFND, DUPREC, NOTOPEN e IOERR.

  • Use ERROR(...) como fallback para evitar ABENDs inesperados.

  • Verifique o campo EIBRESP após a execução de comandos ignorados com IGNORE 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.