KERRD - Kernel error data

      CONTROL BLOCK NAME = DFHKERRD
      MATCHING ASSEMBLER CONTROL BLOCK = DFHKERN TYPE=ERROR_DATA
      DESCRIPTIVE NAME = CICS TS Kernel Error Data
           Licensed Materials - Property of IBM
            Restricted Materials of IBM 
           5655-Y04
           (C) Copyright IBM Corp. 1988, 2012 
      FUNCTION = Kernel Error Data.
      After an MVS Abend, Program Check or Domain Requested Recovery,
      The following data is available to the task in recovery state.
      Once the recovery state is cleared or percolated, this data is
      no longer available.
      The data splits into three parts:
      1. Error Code and Interrupt information.
         The Error Code is supplied on a CICS Request Recovery Call
         and is a CICS Abend Code (as documented in CICS Messages
         and Codes).
         If the Error Code is AKEA then there has been a program
         check and the System Interrupt data will be the program
         check code ( 00CX ).
         If the Error Code is AKEB then there has been an MVS Abend
         and then System and User Interrupt data will contain the
         MVS Abend Code split up into the System and User parts.
         The Kernel will calculate the offset within your program
         that the CICS error occurred. If not in your program, this
         field is set negative.
      2. SYSTEM Error Data - PSW and Registers taken from the SDWA.
         SDWA:  PSW and Registers at time of error. 
         There are two sets of PSW and Registers, which are different
         when CICS has called an SVC (say) which then issues an
         Abend. In this case the phrase 'at time of error' indicates
         that this set of PSW and Registers will be those of the
         SVC: the PSW will be the address (in the SVC routine)
         of an Abend SVC (13).
      3. CICS Error Data - PSW and Registers taken from the SDWA.
         SDWA: "PSW and Registers of last interrupt of the RB that
                 issued this STAE/ESTAE. 
         This is a rather cryptic phrase. Remember, however, that
         the RB that issued the ESTAE is actually CICS and that,
         since CICS does not issue LINK, CICS only ever has the one
         RB EXCEPT when we issue an SVC.
         S370 hardware implements SVC's and Program Checks as
         interrupts. Thus, if CICS issues an SVC that then abends,
         the last interrupt we received WAS the SVC. So, this
         save area describes the last thing CICS did before the
         Abend.
      Notes
      1. If CICS issues an Abend (or program checks) from its
         own code, these two save areas are identical and identify
         the place where the Abend or program check happenned.
      2. In the case of requested recovery, both sets of PSW and
         Registers will identify the state at the time the request
         recovery was issued.
      3. When the Abend is issued from 'the System', the two save
         areas are used for different purposes.
         If the problem is to diagnose what VTAM/VSAM/MVS/etc. was
         doing for us at the time, the approriate Error Data is the
         SYSTEM's, since that tells us what the state was on that
         side of the SVC.
         If the problem is to diagnose an invalid request made by
         CICS, then the last thing CICS did is relevant and so the
         CICS Error Data is relevant.
      NOTES :
       DEPENDENCIES = S/370
       RESTRICTIONS = None
       MODULE TYPE = Control block definition
Table 1.
Offset Hex Type Len Name (Dim) Description
(0) STRUCTURE 720 KERNEL_ERROR_DATA
(0) CHARACTER 8 KERNEL_ERROR_CODE XXX/NNNN System & User Code
(8) UNSIGNED 1 KERNEL_ERROR_TYPE Error type, see below
(9) BIT(8) 1 KERNEL_ERROR_FLAGS MVS FLAGS
(9) 1... ....   KERNEL_ERROR_DUMP_ REQUESTED A dump was requested
(9) .111 ....   KERNEL_ERROR_ EXECUTING_RB Flags determining error RB.
(9) .1.. ....   KERNEL_ERROR_SRB_MODE Error in SRB mode
(9) ..1. ....   KERNEL_ERROR_IRB IRB on RB stack
(9) ...1 ....   KERNEL_ERROR_CICS_ RB_NOT_ACTIVE CICS RB not in control
(9) .... 1...   * Reserved
(9) .... .1..   KERNEL_ERROR_REASON_ PRESENT Abend reason code is present
(9) .... ..1.   KERNEL_ERROR_BFPR_ SAVED all fp regs
(9) .... ...1   KERNEL_ERROR_RA Reduced authority
(A) BIT(16) 2 KERNEL_ERROR_SYSTEM_ INT XXX in binary format
(C) BIT(16) 2 KERNEL_ERROR_USER_INT NNNN in binary format
(E) HALFWORD 2 * Reserved
(10) CHARACTER 8 KERNEL_ERROR_PROGRAM Name of program in error
(18) ADDRESS 8 KERNEL_ERROR_ADDRESS Address of program in error
(20) ADDRESS 4 * Reserved - 64 bit
(24) FULLWORD 4 KERNEL_ERROR_TASTRTOK Transaction token
(28) ADDRESS 8 KERNEL_ERROR_TAS_ ADDRESS Address of task in error
(30) FULLWORD 4 KERNEL_ERROR_TASRQTOK Attach token of task
(34) FULLWORD 4 KERNEL_ERROR_NUMBER Error number
(38) CHARACTER 4 KERNEL_ERROR_REASON Abend reason code
(3C) FULLWORD 4 KERNEL_ERROR_OFFSET_F Offset of program in
(3C) UNSIGNED 2 * error
(3E) UNSIGNED 2 KERNEL_ERROR_OFFSET
     For some unknown reason the compile does not like the statement
     below. DFHPGRE has about a hundred compile errors with it
     but all the other modules in mpu UAPV are happy with it
     To overcome the problem I've put KERNEL_ERROR_REASON
     in a structure
     2 PTR, Reserved - 64 bit
(40) CHARACTER 232 CICS_ERROR_DATA CICS error data
(40) BIT(128) 16 CICS_ERROR_16_PSW PSW EC Mode
(40) BIT(16) 2 * Padding
(42) BIT(8) 1 CICS_ERROR_16_BYTE3
(42) 1... ....   CICS_ERROR_AR_MODE CICS AR mode flag
(43) BIT(40) 5 * Padding
(48) ADDRESS 8 CICS_ERROR_ INSTRUCTION_ADDR PSW address
(50) CHARACTER 8 CICS_ERROR_EC_ADD Int Code, ILC from SDWAAEC2
(58) ADDRESS 4 * Reserved - 64 bit
(5C) ADDRESS 4 * Reserved - 64 bit PSW address
(60) UNSIGNED 1 CICS_ERROR_KEY PSW key in form X'n0'
(61) BIT(8) 1 CICS_ERROR_FLAG various flags
(61) 1... ....   CICS_ERROR_BIT64_GPR 64_bit GPR
(61) .111 1111   *
(62) UNSIGNED 2 * Padding
(64) ADDRESS 4 * Reserved - 64 bit
(68) CHARACTER 128 CICS_ERROR_REGST
(68) CHARACTER 128 CICS_ERROR_R32_ STORAGE
(68) ADDRESS 4 CICS_ERROR_ REGISTERS32 (4294967312:456219056)
(A8) ADDRESS 4 CICS_ERROR_ G64H (4294967312:456218840)
(68) ADDRESS 8 CICS_ERROR_ REGISTERS64 (4294967312:456215424) 64bit GPR
(E8) CHARACTER 64 CICS_ERROR_ACCESS_ REGST
(E8) ADDRESS 4 CICS_ERROR_ACCESS_ REGISTERS (4294967312:456209440) CICS Access Regs
(128) CHARACTER 232 SYSTEM_ERROR_DATA System error data
(128) BIT(128) 16 SYSTEM_ERROR_16_PSW PSW EC Mode
(128) BIT(16) 2 * Padding
(12A) BIT(8) 1 SYSTEM_ERROR_16_BYTE3
(12A) 1... ....   SYSTEM_ERROR_AR_MODE SYSTEM AR mode flag
(12B) BIT(40) 5 * Padding
(130) ADDRESS 8 SYSTEM_ERROR_ INSTRUCTION_ADDR PSW address
(138) CHARACTER 8 SYSTEM_ERROR_EC_ADD Int Code, ILC from SDWAAEC1
(140) ADDRESS 4 * Reserved - 64 bit
(144) ADDRESS 4 * Reserved - 64 bit
(148) UNSIGNED 1 SYSTEM_ERROR_KEY PSW key in form X'n0'
(149) BIT(8) 1 SYSTEM_ERROR_FLAG
(149) 1... ....   SYSTEM_ERROR_BIT64_ GPR 64bit gpr
(149) .111 1111   *
(14A) UNSIGNED 2 * Padding
(14C) ADDRESS 4 * Reserved - 64 bit
(150) CHARACTER 128 SYSTEM_ERROR_REGST
(150) CHARACTER 128 SYSTEM_ERROR_R32_ STORAGE
(150) ADDRESS 4 SYSTEM_ERROR_ REGISTERS32 (4294967312:456224208)
(190) ADDRESS 4 SYSTEM_ERROR_ G64H (4294967312:456223992)
(150) ADDRESS 8 SYSTEM_ERROR_ REGISTERS64 (4294967312:456220552) 64bit GPR
(1D0) CHARACTER 64 SYSTEM_ERROR_ACCESS_ REGST
(1D0) ADDRESS 4 SYSTEM_ERROR_ACCESS_ REGISTERS (4294967312:456209440) System access registers
(210) BIT(64) 8 KERNEL_ERROR_ TIMESTAMP Timestamp of error
(218) CHARACTER 132 KERNEL_ERROR_FP_REGS FP register values:
(218) CHARACTER 8 KERNEL_ERROR_FP_REG_0 FP register 0
(220) CHARACTER 8 * FP register 1
(228) CHARACTER 8 KERNEL_ERROR_FP_REG_2 FP register 2
(230) CHARACTER 8 * FP register 3
(238) CHARACTER 8 KERNEL_ERROR_FP_REG_4 FP register 4
(240) CHARACTER 8 * FP register 5
(248) CHARACTER 8 KERNEL_ERROR_FP_REG_6 FP register 6
(250) CHARACTER 8 * FP register 7
(258) CHARACTER 8 * FP register 8
(260) CHARACTER 8 * FP register 9
(268) CHARACTER 8 * FP register 10
(270) CHARACTER 8 * FP register 11
(278) CHARACTER 8 * FP register 12
(280) CHARACTER 8 * FP register 13
(288) CHARACTER 8 * FP register 14
(290) CHARACTER 8 * FP register 15
(298) CHARACTER 4 KERNEL_ERROR_FPC_ REGISTER FPC register
(29C) CHARACTER 4 * Reserved
         The following 2 fields are only valid if
         KERNEL_ERROR_IN_SUBSPACE is set
(2A0) CHARACTER 8 KERNEL_ERROR_STOKEN Stoken for subspace
(2A8) CHARACTER 4 KERNEL_ERROR_ALET ALET for subspace
(2AC) BIT(8) 1 KERNEL_ERROR_ SUBSPACE_FLAGS
(2AC) 1... ....   KERNEL_ERROR_IN_ SUBSPACE error while in ss
(2AC) .1.. ....   KERNEL_ACTIVE_IN_ SUBSPACE in subspace
(2AC) ..11 1111   * Reserved
(2AD) CHARACTER 3 * Reserved
(2B0) CHARACTER 8 KERNEL_ERROR_BEAR BEAR
(2B8) ADDRESS 4 KERNEL_ERROR_KTCB_ POINTER
(2BC) CHARACTER 4 KERNEL_ERROR_TRAN_ TRANNUM
(2C0) CHARACTER 8 KERNEL_ERROR_TEA Translation exception address
(2C8) CHARACTER 8 *
(2D0) CHARACTER 0 *

Constants

Table 2.
Len Type Value Name Description
     Kernel Error Type: Value Definitions.
1 DECIMAL 1 KERNEL_ERROR_PROGRAM_ CHECK
1 DECIMAL 2 KERNEL_ERROR_ABEND
1 DECIMAL 3 KERNEL_ERROR_RUNAWAY
1 DECIMAL 4 KERNEL_ERROR_REQUESTED
1 DECIMAL 5 KERNEL_ERROR_PERCOLATE
1 DECIMAL 6 KERNEL_ERROR_KERNERROR
1 DECIMAL 7 KERNEL_ERROR_DEFERRED_ ABEND
1 DECIMAL 8 KERNEL_ERROR_LINKAGE
1 DECIMAL 9 KERNEL_ERROR_ABEND_ PERCOLATE
1 DECIMAL 10 KERNEL_ERROR_ABEND_ REQUESTED
1 DECIMAL 11 KERNEL_ERROR_RUNNING_ CANCEL
1 DECIMAL 12 KERNEL_ERROR_KILL
    Kernel Error Executing RB : Test value
       - Error occurred in CICS RB if:
                not in SRB mode,
                no IRB in RB stack,
            and CICS RB was in control.
0 BIT 000 KERNEL_ERROR_CICS_RB