Processing operating system abends and program checks

There is a limit to the processing you can attempt after an operating system abend or a program check.

If the program check or abend is associated with any domain other than the application domain, you have no further part in processing the error. If the program check or abend is in the application domain, one of the following can occur:

If a program check occurs when a user task is processing, the task abends with an abend code of ASRA. If a program check occurs when a CICS system task is processing, CICS terminates.

If an operating system abend has occurred, CICS searches the system recovery table, DFHSRT. The system recovery table contains a set of operating system abend codes that you want CICS to recover from. CICS searches the table looking for the system abend code issued by the system:
  • If a match is not found, CICS is terminated.
  • If a match is found, and a CICS system task is processing, CICS is terminated.
  • If a match is found, and a user task is processing, the default action is to abend the task with an abend code of ASRB. However, you can change this action by coding a global user exit program at exit point XSRAB. The value of the return code from XSRAB determines which of the following happens next:
    • The task terminates with the ASRB abend code.
    • The task terminates with the ASRB abend code and CICS cancels any program-level abend exits that are active for the task.
    • CICS terminates.

    For programming information about the XSRAB exit point, see System recovery program exit XSRAB.

CICS supplies a sample system recovery table, DFHSRT1$, that has a default set of abend codes. You can modify the sample table to define abend codes that suit your own requirements. The source of DFHSRT1$ is supplied in the CICSTS54.CICS.SDFHSAMP library. For more information about the system recovery table, see System recovery table (SRT).

Note: Because it is possible to introduce recursions between program checks and abends, take great care when coding a global user exit program at the XSRAB exit point.