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, 2015
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 |
1280 |
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_VRR_ SAVED |
vector regs |
(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 (16) |
(A8) |
ADDRESS |
4 |
CICS_ERROR_G64H (16) |
(68) |
ADDRESS |
8 |
CICS_ERROR_ REGISTERS64 (16) |
64bit GPR |
(E8) |
CHARACTER |
64 |
CICS_ERROR_ACCESS_ REGST |
(E8) |
ADDRESS |
4 |
CICS_ERROR_ACCESS_ REGISTERS (16) |
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 (16) |
(190) |
ADDRESS |
4 |
SYSTEM_ERROR_ G64H (16) |
(150) |
ADDRESS |
8 |
SYSTEM_ERROR_ REGISTERS64 (16) |
64bit GPR |
(1D0) |
CHARACTER |
64 |
SYSTEM_ERROR_ACCESS_ REGST |
(1D0) |
ADDRESS |
4 |
SYSTEM_ERROR_ACCESS_ REGISTERS (16) |
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) |
UNSIGNED |
2 |
KERNEL_ERROR_PASID |
Primary sp |
(2CA) |
UNSIGNED |
2 |
KERNEL_ERROR_SASID |
Secondary sp |
(2CC) |
UNSIGNED |
2 |
KERNEL_ERROR_HASID |
Home space |
(2CE) |
CHARACTER |
2 |
* |
Reserved |
(2D0) |
CHARACTER |
48 |
* |
Reserved |
(300) |
CHARACTER |
512 |
KERNEL_ERROR_VR_REGS |
VR register values: |
(300) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_0 |
VR register 0 |
(310) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_1 |
VR register 1 |
(320) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_2 |
VR register 2 |
(330) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_3 |
VR register 3 |
(340) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_4 |
VR register 4 |
(350) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_5 |
VR register 5 |
(360) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_6 |
VR register 6 |
(370) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_7 |
VR register 7 |
(380) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_8 |
VR register 8 |
(390) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_9 |
VR register 9 |
(3A0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 10 |
VR register 10 |
(3B0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 11 |
VR register 11 |
(3C0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 12 |
VR register 12 |
(3D0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 13 |
VR register 13 |
(3E0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 14 |
VR register 14 |
(3F0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 15 |
VR register 15 |
(400) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 16 |
VR register 16 |
(410) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 17 |
VR register 17 |
(420) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 18 |
VR register 18 |
(430) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 19 |
VR register 19 |
(440) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 20 |
VR register 20 |
(450) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 21 |
VR register 21 |
(460) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 22 |
VR register 22 |
(470) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 23 |
VR register 23 |
(480) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 24 |
VR register 24 |
(490) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 25 |
VR register 25 |
(4A0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 26 |
VR register 26 |
(4B0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 27 |
VR register 27 |
(4C0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 28 |
VR register 28 |
(4D0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 29 |
VR register 29 |
(4E0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 30 |
VR register 30 |
(4F0) |
CHARACTER |
16 |
KERNEL_ERROR_VR_REG_ 31 |
VR register 31 |
(500) |
CHARACTER |
0 |
* |
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 |