Limitations of task-related user exits during CICS shutdown

When a task-related user exit (TRUE) is called during shutdown, the capabilities of the exit program are limited.

The nature of CICS® abends and operator cancels are such that CICS might not be able to call your exit program at system termination, even if you have specified SHUTDOWN.

The limitations on what your program can do, if called, depend on the type of termination:
Orderly shutdown (UERTCORD)
Your exit program must follow the rules for programs that run during the first quiesce stage of CICS shutdown, when all CICS services are available but programs must not start any new tasks.
Immediate shutdown (UERTCIMM)
Your exit program must do the minimum that is required and return control, so that shutdown can proceed.
CICS abend, retry possible, TCBs dispatchable (UERTCABY)
MVS™ has flagged the failure as being eligible for retry. Your exit program must follow the MVS rules for this type of failure, documented in the z/OS MVS Programming: Authorized Assembler Services Guide.

Subtasks in the region (that is, task control blocks (TCBs) in addition to the CICS job-step TCB) are still dispatchable, and your exit program can run code under them.

You must not use any CICS services.

CICS abend, retry not possible, TCBs dispatchable (UERTCABN)
MVS has flagged the failure as not eligible for retry. Your exit program must follow the MVS rules for this type of failure. Your exit program is called from code in the CICS extended subtask abend exit (ESTAE). MVS imposes more restrictions on ESTAE code than on non-ESTAE code.

Subtasks in the region are still dispatchable, and your exit program can run code under them.

You must not use any CICS services.

CICS abend, retry not possible, TCBs not dispatchable (UERTOPCA)
As for UERTCABN, except that subtasks in the region are not dispatchable; your exit program must not try to run code under any TCBs that it might have attached.

Important

In the abend invocations (UERTCABY through UERTOPCA), your exit program must not use any CICS services, including the DFHEIENT call, which performs a CICS GETMAIN. To prevent a DFHEIENT call being issued automatically on each invocation of your program, specify the NOPROLOG translator option; but include in the program source your own DFHEIENT call to be issued on non-abend invocations only. An example of how to code a task-related user exit program to be called at CICS termination is given in Figure 1. For further information about coding a DFHEIENT call, see DFHECALL macro.