🧠 Explicação

O comando EXEC CICS HANDLE ABEND define uma rotina de tratamento para finalizações anormais (abends) em uma aplicação CICS. Quando ocorre um erro que termina a tarefa, esse comando permite redirecionar o controle do programa para um ponto definido (LABEL) ou para um programa específico (PROGRAM), evitando o término abrupto da aplicação e permitindo o tratamento controlado do erro.

🔧 Usos mais comuns

  • Redirecionar o fluxo da aplicação em caso de abend para tratamento de erro.

  • Evitar a finalização forçada da tarefa, permitindo tratamento e limpeza.

  • Executar uma lógica de encerramento controlado, como emissão de mensagens ou rollbacks.

  • Cancelar ou reativar uma rotina previamente estabelecida de tratamento de abend.

🧾 Sintaxe

EXEC CICS HANDLE ABEND
     [ LABEL(etiqueta) ]
     [ PROGRAM(nome-do-programa) ]
     [ CANCEL ]
     [ RESET ]
END-EXEC.

💻 Exemplo prático

1. Redirecionando para uma rotina de tratamento no próprio programa:

EXEC CICS HANDLE ABEND
     LABEL(TRATA-ABEND)
END-EXEC.
TRATA-ABEND.
    DISPLAY 'Erro ocorrido. Tratando abend...'.
    GOBACK.
 

2. Encaminhando o controle para outro programa de tratamento:

EXEC CICS HANDLE ABEND
     PROGRAM('PGMABEND')
END-EXEC.
 

3. Cancelando uma saída de abend definida anteriormente:

EXEC CICS HANDLE ABEND
     CANCEL
END-EXEC.

4. Reativando uma saída de abend cancelada:

EXEC CICS HANDLE ABEND
     RESET
END-EXEC.

📌 Regras

  • LABEL só pode ser usado em programas COBOL, não em AMODE(64), C, C++ ou PL/I.

  • PROGRAM exige que o programa tenha definição no CICS, ou que a instalação automática esteja ativa.

  • Se a COMMAREA foi passada para o programa que emitiu o HANDLE ABEND, ela será também passada para o programa especificado.

  • Se um CANAL estiver em uso, ele também será acessível no programa de saída.

  • O programa definido em PROGRAM deve encerrar com um abend, exceto quando o desvio ocorrer por lógica normal.

  • Não captura abends emitidos com a opção CANCEL, como ASPx ou APSJ.

💡 Dicas

  • Use HANDLE ABEND no início de programas críticos para garantir controle em caso de erro.

  • Ao usar PROGRAM, certifique-se de que ele está corretamente instalado no CICS ou habilite a instalação automática.

  • Se for usar LABEL, mantenha o ponto de entrada sempre no mesmo nível lógico onde o comando foi emitido.

  • Combine com EXEC CICS PUSH HANDLE e POP HANDLE para alterar o tratamento de abend dinamicamente durante a execução.

 

✅ Conclusão

O EXEC CICS HANDLE ABEND é um recurso essencial para garantir resiliência e controle em programas CICS. Com ele, você evita a terminação abrupta da tarefa em caso de erro, podendo tratar abends de maneira estruturada, registrar ocorrências, ou executar ações de rollback. Quando bem utilizado, ele contribui para aplicações mais estáveis e robustas no ambiente transacional.