Exit XPCHAIR

Exit XPCHAIR is invoked before a HANDLE ABEND LABEL routine is given control.

This situation occurs only when a program abend causes a branch to an internal abend routine. When the HANDLE ABEND request specifies PROGRAM, exit XPCFTCH is invoked (see Exit XPCFTCH). You can use the XPCHAIR exit to supply an alternative handle abend address. If the exit sets a return code of zero, or an alternative address of zero, CICS passes control to the specified internal routine of the application program

This exit is never invoked for a C or C++ program that is compiled with the XPLINK option, or for an AMODE(64) program.

If a modified entry address is supplied:
  • The code that is invoked receives control in the execution key that the internal abend routine would have received control in; that is, the key in force when the EXEC CICS HANDLE ABEND LABEL command was issued.
  • The resume address is placed in register 14 for a COBOL application or register 15 for an Assembler application. If your application runs in a mixed environment, your exit program might need to set up its own base register. For example, you could use the following code to set up addressability:
    BASSM 15,0
    USING *,15
When invoked
Before a HANDLE ABEND routine is given control.
Exit-specific parameters
UEPPCDS
Address of a storage area that contains program and terminal related information, and that can be mapped using the DSECT DFHPCUE. When XPCHAIR is invoked, the following DFHPCUE fields are significant:
PCUE_CONTROL_BITS
1-byte flag field. A setting of PCUECBTE indicates that the transaction is linked to a terminal.
PCUE_TASK_NUMBER
3-character packed decimal field that contains the task number.
PCUE_TRANSACTION_ID
4-character field that contains the transaction ID.
PCUE_TERMINAL_ID
4-character field that contains the terminal ID (if any).
PCUE_PROGRAM_NAME
8-character field that contains the name of the program that issued the HANDLE ABEND LABEL command.
PCUE_LOGICAL_LEVEL
Fullword that contains the program logical level.
PCUE_BRANCH_ADDRESS
Fullword. Use this field to supply the address of an alternate abend routine. Set the top bit to specify that the alternate abend routine is to run AMODE (31).
UEPTACB
Address of the transaction abend control block (TACB) for the abend. If the abend occurred because of a program check, the information in the TACB includes:
  • The program status word (PSW).
  • The registers at the time of the abend.
  • Details of the subspace, access registers, and vector registers current at the time of the abend.
  • The Breaking Event Address Register (BEAR).
  • The Translation Exception Address (TEA)
You can map the TACB using the DFHTACB TYPE=DSECT macro.
Return codes
UERCNORM
Continue processing.
UERCPURG
Task purged during XPI call.
UERCMEA
The address of an alternate abend routine is supplied.
XPI calls
All can be used.