Afin d’éviter de faire tomber le moniteur CICS lorsqu’une erreur est provoquée par une transaction, CICS émet un ordre SVC pour intercepter l’abend.
Ainsi par exemple, lors d’une opération arithmétique condensée avec des variables EBCDIC en COBOL (ce qui déclenche un program check au niveau du système d’exploitation), l’abend obtenu n’est pas le même qu’en environnement batch (qui produit un abend system S0C7 ).
Lorsque le système d’exploitation détecte le program check, il redonne le contrôle à CICS qui abandonne la tâche par un code qui lui est propre : ASRA. Tout abend ASRA signifie qu’un programme a commis une violation de type program check.
En COBOL, généralement cette erreur est due à une tentative d’opération arithmétique sur des variables qui ont des types d’images mixtes, ou qui n’ont pas été correctement initialisées.
La première étape de l’analyse consiste à trouver l’endroit où s’est produit l’abend, c’est-à-dire de relever le PSW (program status word) au moment du program check. Cette information est disponible dans un dump, ou peut être retrouvée par EDF. Ensuite, il est nécessaire de trouver dans quel programme s’est produit l’erreur, et à partir de là l’instruction fautive. En général, le coupable est le programme qui était en cours d’exécution lors de l’abend.