🧠 Explicação

O comando EXEC CICS HANDLE CONDITION permite interceptar condições específicas (como NOTFND, DUPREC, LENGERR, entre outras) que podem ocorrer durante a execução de comandos CICS. Ao definir esse tratamento, você evita que a tarefa termine de forma anormal e consegue redirecionar o controle do programa para uma rotina específica, chamada de rótulo.

🔧 Usos mais comuns

  • Tratar erros esperados como tentativa de inserir um registro duplicado (DUPREC) ou não encontrado (NOTFND).

  • Evitar terminação anormal da tarefa quando condições previsíveis ocorrem.

  • Encaminhar o fluxo do programa para uma rotina personalizada de erro ou validação.

  • Centralizar o tratamento de erro em um único ponto, melhorando a manutenção do código.

🧾 Sintaxe

EXEC CICS HANDLE CONDITION
     condicao1(rótulo1)
     condicao2(rótulo2)
     ...
END-EXEC.

🔹 Para desativar o tratamento de uma condição:

EXEC CICS HANDLE CONDITION
     LENGERR
END-EXEC.

💻 Exemplo prático

EXEC CICS HANDLE CONDITION
     ERROR(TRATA-ERRO)
     DUPREC(REGISTRO-DUPLICADO)
     LENGERR
END-EXEC.

EXEC CICS WRITE
     DATASET('CLIENTES')
     FROM(AREA-CLI)
     RIDFLD(CHAVE-CLI)
END-EXEC.

...

TRATA-ERRO.
    DISPLAY "Erro inesperado no CICS".
    GOBACK.

REGISTRO-DUPLICADO.
    DISPLAY "Cliente já cadastrado!".
    GOBACK.

📌 Regras

  • Você pode especificar no máximo 16 condições por comando HANDLE CONDITION.

  • Para tratar mais de 16 condições, use vários comandos separados.

  • As condições tratadas com HANDLE CONDITION não são herdadas por programas chamados com LINK.

  • Um HANDLE CONDITION permanece ativo apenas no programa atual, até ser substituído por:

    • Outro HANDLE CONDITION para a mesma condição;

    • Um IGNORE CONDITION;

    • Ou temporariamente suprimido por NOHANDLE ou RESP.

  • Se nenhuma condição for tratada, a ação padrão é executada (geralmente abend).

💡 Dicas

  • Use HANDLE CONDITION ERROR(rótulo) para tratar qualquer condição não explicitamente capturada.

  • Sempre defina o tratamento antes do comando que pode causar a condição.

  • Combine com IGNORE CONDITION quando quiser reverter um tratamento específico.

  • Para testes e depuração, é útil redirecionar condições para um rótulo que apenas exibe o erro com DISPLAY.

 

✅ Conclusão

O comando EXEC CICS HANDLE CONDITION é fundamental para tornar programas CICS mais robustos e resilientes. Ele evita abends inesperados, permite tratar erros com lógica de negócio apropriada e melhora a experiência do usuário e a estabilidade da aplicação. Use-o sempre que um comando puder gerar condições previsíveis e controláveis.