The limitations on what your program can do, if invoked, depend on the type of
termination:
Orderly shutdown (UERTCORD)
Your exit program must follow the rules for programs that execute during
the first quiesce stage of CICS shutdown—that is, all CICS services are
available, but programs must not start any new tasks.
Immediate shutdown (UERTCIMM)
As for orderly shutdown, except that your exit program should do the
minimum 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
OS/390 MVS 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
execute 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. Note that your exit
program is invoked from code within 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
execute 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 execute code under any TCBs that it may
have attached.
Important
In the abend invocations (UERTCABY through UERTOPCA), your exit
program must not use any CICS services. This includes 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 invoked at CICS termination is given in
Figure 9 on page 277. For further information about coding a DFHEIENT call,
see the
CICS Application Programming Reference
manual.
Sample code for a TRUE invoked at CICS termination
Note that the sample in Figure 9 on page 277 is a multipurpose program—that is, it
is coded to be invoked at many task-related user exit points. However, to avoid the
need to test for CICS abends in all of your multipurpose TRUEs, it is recommended
that you use a separate program for termination invocations.
the task-related user exit program
276
CICS TS for OS/390: CICS Customization Guide