vDTB 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:

vUser 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).

vA 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:

vRecord 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.

vAttempt local recovery, and then continue running the program.

Chapter 13. Programming for recovery 151

Page 163
Image 163
IBM SC34-7012-01 manual System failures, Handling abends and program level abend exits, Transaction restart after DTB