🧠 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
💻 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:
4. Reativando uma saída de abend cancelada:
📌 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
ePOP 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.