When the system recovery program (DFHSRP) finds a match in the SRT for
an MVS/ESA abend code. For information about defining entries in the SRT,
refer to the CICS® Resource Definition Guide.
Note:
The SRT
table is only processed, and the exit driven, when an an MVS™ abend occurs
under a CICS essential TCB--that is, one of QR, RO, CO, SZ, RP, FO. For
non-essential TCB types, such as L8, J8, J9, JM, SL, SO,
or S8, the exit is not driven.
Exit-specific parameters
UEPERROR
Address of the error data structure, SRP_ERROR_DATA, which contains
the following fields:
SRP_ERROR_TYPE
The 4-character error type--always ‘ASRB’.
SRP_SYS_ABCODE
2 bytes containing the system abend code XXX in binary format (for example,
D37).
SRP_USER_ABCODE
2 bytes containing the user abend code NNNN in binary format (for example,
0999).
SRP_ERROR_TRANID
4-character field containing the ID of the abending transaction.
SRP_ERROR_STACK_NAME
8-character field containing the name of the current kernel stack entry
for the transaction at the time of the abend.
SRP_ERROR_PPT_NAME
8-character field containing the name of the current PPT entry for the
transaction, if one exists. This field contains a value only if flag SRP_PPT_ENTRY
is set.
SRP_ERROR_OFFSET
Fullword containing the offset into the program that abended, as follows:
If flag SRP_PPT_ENTRY is set, gives the offset in SRP_ERROR_PPT_NAME
Otherwise, gives the offset in SRP_ERROR_STACK_NAME.
This field contains a value only if flag SRP_VALID_OFFSET is set.
SRP_ERROR_FLAGS
1 byte containing flags:
SRP_CICS_CODE
The abend occurred while running CICS code.
SRP_USER_CODE
The abend occurred while running user application code.
SRP_PPT_ENTRY
The abend occurred while running SRP_ERROR_PPT_NAME. If this flag is
not set, the abend occurred while running SRP_ERROR_STACK_NAME.
SRP_VALID_OFFSET
A meaningful offset could be determined.
SRP_VALID_REASON
MVS has supplied a reason code for the abend.
SRP_NOT_CICS_RB
CICS RB was not in control at the time of the abend (that is, the abend
occurred in a system service invoked by CICS).
SRP_CICS_ERROR_REASON
4-character field containing the MVS abend reason code. It contains a value
only if flag SRP_VALID_REASON is set.
SRP_CICS_ERROR_DATA
An area describing the last thing that CICS did, prior to the abend. It contains
the following:
SRP_CICS_EC_PSW
8-character field containing the extended control (EC) mode program
status word (PSW)
SRP_CICS_EC_INT
8-character field containing the interrupt code and ILC
SRP_CICS_REGST
64-character field containing the contents of the general-purpose (GP)
registers
SRP_CICS_EXEC_KEY
1 byte containing the PSW key, in the form X'0n'.
SRP_SYSTEM_ERROR_DATA
An area describing the last thing "the system" did, prior to
the abend. It contains the following:
SRP_SYSTEM_EC_PSW
8-character field containing the EC mode PSW
SRP_SYSTEM_EC_INT
8-character field containing the interrupt code and ILC
SRP_SYSTEM_REGST
64-character field containing the contents of the GP registers
SRP_SYSTEM_EXEC_KEY
1 byte containing the PSW key, in the form X'0n'.
SRP_ERROR_FP_REGS
An area describing the contents of the floating point registers at the
time of the abend. It contains:
SRP_FP_REG_0
FP register 0
SRP_FP_REG_2
FP register 2
SRP_FP_REG_4
FP register 4
SRP_FP_REG_6
FP register 6.
Notes:
If flag SRP_NOT_CICS_RB is set, SRP_CICS_ERROR_DATA describes the last
thing that CICS did, prior to the abend; SRP_SYSTEM_ERROR_DATA describes the last
thing that the system service (for example, VTAM®, VSAM, or MVS) did.
The format of SRP_ERROR_DATA is shown in the CICS Data Areas manual.
Return codes
UERCNOCA
Abnormally terminate the task with abend code ‘ASRB’. Do not
cancel any program-level abend exits that are associated with this task.
UERCCANC
Abnormally terminate the task with abend code ‘ASRB’. Cancel
any program-level abend exits that are associated with this task.
UERCCICS
Abnormally terminate CICS.
XPI calls
Because CICS invokes the exit XSRAB in an error environment, you
can only use a subset of the XPI calls.
Only TRACE_PUT is available for
general use.
You can use WAIT_MVS, but only after the exit program
has determined (from the SRP_CICS_CODE and SRP_USER_CODE fields) that the
abend has occurred in user application code, and not in CICS code.
Important
Notes:
Take care when coding a program to run at the XSRAB exit point. If your
exit program causes the system recovery program to be reentered (if, for example,
a program check occurs) then CICS terminates abnormally, with a DFHSR06xx
message.
The default return code is ‘UERCNOCA’. This ensures that the task
abends if the exit is in error.
There is no ‘UERCNORM’ return code at this exit point, because
the exit is invoked after a failure.
The exit should not set the return code ‘UERCPURG’.