All the following conditions must be true for CICS to invoke the transaction restart
program:
v A transaction must be terminating abnormally.
v The transaction abend which caused the transaction to be terminating abnormally
must have been detected before the commit point of the implicit syncpoint at the
end of the transaction has been reached.
v The transaction must be defined as restartable in its transaction definition.
v The transaction must be related to a principal facility.
If these conditions are satisfied, CICS invokes the transaction restart program,
which then decides whether or not to request that the transaction be restarted.
CICS can subsequently override the decision (for example, if dynamic backout
fails). Also, if the transaction restart program abends, the transaction is not
restarted.
If the above conditions are not satisfied, CICS does not invoke the transaction
restart program and the transaction is not restarted.
The DFHREST communications area
The CICS-supplied default transaction restart program is written in assembler and
contains logic to:
v Address the communications area passed to it by CICS
v Decide whether or not to request transaction restart
v Send a message to CSMT if restart is requested
v Return control to CICS using the EXEC CICS RETURN command.
The communications area is mapped by the XMRS_COMMAREA DSECT, which is
supplied in the DFHXMRSD copybook. The equivalent structures for C/370,
COBOL, VS COBOL II, and PL/1 are contained in the copybooks DFHXMRSH,
DFHXMRSO, and DFHXMRSP, respectively.
The information passed in the communications area is as follows:
XMRS_FUNCTION
Indicates, in a 1-byte field, the function code for this call to the restart program.
This is always set to 1, which equates to XMRS_TRANSACTION_RESTART, which
means that DFHREST is called to handle transaction restart.
XMRS_COMPONENT_CODE
Indicates, in a 2-byte field, the component code of the caller. This is always set
to XM, which equates to XMRS_TRANSACTION_MANAGER. The transaction manager
is the CICS component that coordinates the decision whether or not to restart a
transaction.
XMRS_READ
Indicates, in a 1-byte field, whether the transaction has issued any terminal read
requests, other than for initial input.
The equated values for this parameter are:
XMRS_READ_YES
Means a terminal read has been performed by the transaction.
XMRS_READ_NO
Means no terminal read has been performed.
the transaction restart program
412
CICS TS for OS/390: CICS Customization Guide