v DTB takes place only after program level abend exits (if any) have attempted
cleanup or logical recovery.
Transaction restart after DTB
For each transaction where DTB is specified, consider also specifying automatic
transaction restart. For example, for transactions that access DL/I databases (and
are subject to program isolation deadlock), automatic transaction restart is usually
specified.
Even if transaction restart is specified, a task will restart automatically only under
certain default conditions (listed under “Abnormal termination of a task” on page
93). These conditions can be changed, if absolutely necessary, by modifying the
restart program DFHREST.
Use of the program error program (DFHPEP)
Decide whether or not to include your own functions, examples of which are given
in “The CICS-supplied PEP” on page 163. (DFHPEP is invoked during abnormal
task termination as described at “Abnormal termination of a task” on page 93.)
System failures
Specify how an application is to be restarted after an emergency restart.
Depending on how far you want to automate the restart process, application and
system programming could provide the following functions:
v User exits for transaction backout processing to handle:
– Logically deleting records added to BDAM or VSAM-ESDS files (see the CICS
Customization Guide for details of the XFCLDEL global user exit point)
– Backing out file control log records (see the CICS Customization Guide for
details of the XFCBOUT global user exit point)
– File errors during transaction backout (see the CICS Customization Guide for
details of the XFCBFAIL global user exit point)
– User recovery records read from the system log during emergency restart (see
the CICS Customization Guide for details of the XRCINPT global user exit
point).
v A progress transaction to help the user discover what updates have and have
not been performed. For this purpose, application code can be written to search
existing files or databases for the latest record or segment of a particular type.
Handling abends and program level abend exits
You can write program-level abend exit code to perform different actions,
depending on the abend that occurs.
For example, you might want to perform any of the following actions, although
you are recommended to keep abend exit code to a minimum:
v Record application-dependent information relating to that task in case it
terminates abnormally.
If you want to initiate a dump, do so in the exit code at the same program level
as the abend. If you initiate the dump at a program level higher than where the
abend occurred, you may lose valuable diagnostic information.
v Attempt local recovery, and then continue running the program.
Chapter 13. Programming for recovery 151