🧠 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
-
LABELsó pode ser usado em programas COBOL, não em AMODE(64), C, C++ ou PL/I. -
PROGRAMexige 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
CANALestiver em uso, ele também será acessível no programa de saída. -
O programa definido em
PROGRAMdeve 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 ABENDno 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 HANDLEePOP HANDLEpara 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.