CICS – HANDLE ABEND

La commande HANDLE CONDITION n’intercepte que les conditions anormales de l’exécution de la commande CICS tandis que HANDLE ABEND s’occupe de toute fin anormale dans le programme.

  • Utilisé pour intercepter une terminaison anormale (ABEND) dans un programme
  • Permet d’activer, d’annuler ou de réactiver une sortie pour le traitement ABEND

Syntaxe:

EXEC CICS HANDLE ABEND
       PROGRAM(nom)|LABEL(ABEND-ROUTINE)|RESET|CANCEL
END-EXEC.

PROGRAM ou LABEL est utilisé pour passer le contrôle à un programme ou un paragraphe, respectivement, pour le traitement ABEND.

CANCEL est utilisé pour annuler la demande HANDLE ABEND précédemment établie.

RESET est utilisé pour réactiver la requête HANDLE ABEND précédemment annulée.


Au cours de l’exécution du programme ci-dessous, les activités suivantes auront lieu :

  • Si un ABEND se produit, il sera intercepté par la commande HANDLE ABEND et le contrôle sera passé à ABEND-ROUTINE.
  • A la fin de la commande HANDLE ABEND/CANCEL, la demande HANDLE ABEND précédente sera annulée.
  • A la fin de la commande ABEND, la tâche se terminera avec le code utilisateur ‘9999’.

Exemple:

WORKING-STORAGE SECTION.
77 MSG-LEN           PIC S9(4) COMP.
01 MSG-DATA.
   05 MSG-DATA1      PIC X(15).
   05 MSG-DATA2      PIC X(50).
:
PROCEDURE DIVISION.
      :
      EXEC CICS HANDLE ABEND
                  LABEL(ABEND-ROUTINE)
      END-EXEC.
      :
      ABEND-ROUTINE.
      MOVE ‘ABEND OCCURED.’ TO MSG-DATA1.
      MOVE ‘TASK CANCELLED WITH ABCODE 9999.’ 
                            TO MSG-DATA2.
      MOVE  65 TO MSG-LEN.
      EXEC CICS SEND
                  FROM (MSG-DATA)
                  LENGTH(MSG-LEN)
                  NOHANDLE
      END-EXEC.
      EXEC CICS HANDLE ABEND
                 CANCEL
      END-EXEC.
      EXEC CICS ABEND
                  ABCODE(‘9999’)
      END-EXEC.

Les commandes HANDLE CONDITION et IGNORE CONDITION restent actives jusqu’à la fin du programme.