Professional Documents
Culture Documents
Russ Evans
russevans@evansgroupconsulting.com
The Evans Group, Inc.
Session 1068
Objectives
• Why
• What is Available
• Controlling Dump and Trace
• AEI0 Abend
• ASRA Abend
D : The task was initiated to process a distributed programming link (DPL) command that did not
specify the SYNCONRETURN option. (The task is not allowed to issue syncpoints.)
DS: The task was initiated to process a distributed programming link (DPL) command containing the
SYNCONRETURN option. (The task is allowed to issue syncpoints).
QD: CICS initiated the task to process a transient data queue that had reached trigger level.
S: Another task initiated this one, using a START command that did not pass data in the FROM option.
The START command may or may not have passed a channel.
SD: Another task initiated this one, using a START command that passed data in the FROM option.
SZ: The task was initiated with a FEPI START command (see the CICS Front End Programming
Interface User's Guide for further information).
TO: The task was initiated to process unsolicited input from a terminal (or another system), and the
transaction to be executed was determined from the input.
TP: The task was initiated to process unsolicited input or in response to a RETURN IMMEDIATE
command in another task. In either case, the transaction to be executed was preset (in the
RETURN command or in the associated TERMINAL definition) without reference to input.
U: CICS created the task internally.
(From the CICS Systems Programming Reference manual)
Copyright (c) 2009 The Evans Group, Inc.
Looking at the Dump (continued)
About EIBDATE
0108010F
EIBDATE is in format 0 C YY DDD F where:
• 0 is a place holder
• C indicates century:
– “1” indicates century 20
– “0” indicates century 19
• YY DDD is the Julian date
• F makes it a positive packed number
When viewing the trace table, look first at EIP ENTRY/EXIT pairs
LINK04
PROGRAM STORAGE ADDRESS 08BFD000 TO 08BFDD8F LENGTH 00000D90
000 C4C6C8E8 C3F5F3F0 58F0021C 58F0F0D0 58F0F014 58F0F00C 58FF000C 07FF0000 *DFHYC530.0...00..00..00.........* 08BFD000
020 47F0F070 23C3E2C5 C3E3F0F4 4040C3F2 40F14BF4 4BF040F0 F761F0F9 61F0F140 *.00..CSECT04 C2 1.4.0 07/09/01 * 08BFD020
040 F0F54BF5 F54BF3F8 08BFD074 E0E87C0C 08002000 10800008 00000000 00000000 *05.55.38.....Y..................* 08BFD040
I DUMP
STATUS: RESULTS - OVERTYPE TO MODIFY
Dum Cur(A) Ope
If no control
statements are
needed, use
//SYSIN DD DUMMY
Another good place to look for the cause of AEI* abends is the
trace table:
• Shows command that failed
• Provides detail on the failure
• Provides the R14 value to the program,
identifying the failing line of code
CLER D224
CICSD224
Language Environment Region Level Run-time Options
The RET value shown in the EIP ENTRY trace is the address of the
instruction that follows the call to CICS for this command. We can
use it to find the COBOL source statement that issued the EXEC
CICS LINK.
Note that not all commands are issued by your program! LE clutters
the trace table with its own commands. The RET value for these
commands will point to an LE program.
Copyright (c) 2009 The Evans Group, Inc.
Identifying the EXEC CICS Statement That Failed
A. Subtract the RET value from the load point to get the offset into the
load module
B. In the compile/link output, find the link map
C. Find the first “class offset” that is greater than the value derived in
(A).
D. The PRIOR entry is the CSECT in question.
E. Write down the offset of this CSECT.
C) COBOL
sequence
number
Remember, all EXEC CICS statements are converted into
COBOL CALLs by the CICS translator
001600 DISPLAY
COBOL 004B7A 5820 905C L 2,92(0,9)
statement 004B7E 58F0 202C L 15,44(0,2)
number
004B82 5830 C054 L 3,84(0,12)
004B86 4110 3A1A LA 1,2586(0,3)
004B8A 05EF BALR 14,15
001601 ADD
004B8C 5840 913C L 4,316(0,9)
004B90 FA33 4337 433B AP 823(4,4),827(4,4)
004B96 F833 4337 4337 ZAP 823(4,4),823(4,4)
Offset
of 001602 DISPLAY
failure 004B9C 58F0 202C L 15,44(0,2)
004BA0 4110 3A04 LA 1,2564(0,3)
004BA4 05EF BALR 14,15
004BA6 5850 D184 L 5,388(0,13)
004BAA 07F5 BCR 15,5
1595 001252*------------------------------------------------------------
1596 001253* Generate a S0C7 abend where the input data has an invali
1597 001254* digit.
1598 001255*------------------------------------------------------------
1599 001256 PA4-Abend-Asra-BadDigit section.
1600 001257 display MyProgramId ',PA4-Abend-Asra-BadDigit entry.'
1601 001258 add BadDigit1 to GoodField
1602 001259 display MyProgramId ',PA4-Abend-Asra-BadDigit exit.'
1603 001260 .
1604 001261*------------------------------------------------------------
Statement number
from step (6) in
previous slide
05 ASRA-S0C7-AbendData.
10 GoodField pic s9(7) comp-3 value 0.
* Define a field with bad digits.
10 BadDigit1C.
15 BadDigit1C-Part1 pic x(3) value 'Bad'.
15 BadDigit1C-Part2 pic x(1) value x'0F'.
10 BadDigit1 redefines BadDigit1C pic s9(7) comp-3.
To do so, we have to determine the type of data mapped by the field, the
length of the data mapped by the field, and the current value of the data at
the time of the abend.
1. Working Storage
• Comes in one contagious block of storage
• Allocated and (optionally) initialized before the program is
given control
• Addressed by BLW cells (Base Locater for Working
storage)
2. Linkage section
• Storage passed via USING parm on CALL statement
• Storage acquired by program (ex., GETMAIN, READ
SET.)
• Addressed by BLL cells (Base Locater for Linkage
• Not in contiguous storage – each 01 level starts a new
storage block
Copyright (c) 2009 The Evans Group, Inc.
Determine the Value of Working Storage Fields
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129B80
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129BA0
00000000 00000000 00000000 00000000 F3E3C7E3 00000000 06000000 68030260 *................3TGT...........-* 17129BC0
171297D0 000607FC 1712DEF0 00000000 01014588 00000000 00000000 18100030 *..p........0.......h............* 17129BE0
00000000 00000000 17127BC8 00004368 00000000 00000000 00000000 00000001 *...........H....................* 17129C00
Note literal
“3TGT” at
Register
+x’48’ into
9 at time
Start of TGT
of
TGT interrupt
Copyright (c) 2009 The Evans Group, Inc.
Determine the Value of Working Storage Fields
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129B80
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129BA0
00000000 00000000 00000000 00000000 F3E3C7E3 00000000 06000000 68030260 *................3TGT...........-* 17129BC0
171297D0 000607FC 1712DEF0 00000000 01014588 00000000 00000000 18100030 *..p........0.......h............* 17129BE0
00000000 00000000 17127BC8 00004368 00000000 00000000 00000000 00000001 *...........H....................* 17129C00
Register
13 at
Register 13 time of
Start of +x’5C’
TGT interrupt
Step 3: Find the address of the start of the BLW cell from
Step (2)
*** TGT MEMORY MAP *** 000110 POINTER TO FIRST FCB CELL
TGTLOC 000114 WORKING-STORAGE ADDRESS
Step 3: Find the address of the start of the BLW cell from Step
(2)
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129B80
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129BA0
00000000 00000000 00000000 00000000 F3E3C7E3 00000000 06000000 68030260 *................3TGT...........-* 17129BC0
171297D0 000607FC 1712DEF0 00000000 01014588 00000000 00000000 18100030 *..p........0.......h............* 17129BE0
00000000 00000000 17127BC8 00004368 00000000 00000000 00000000 00000001 *...........H....................* 17129C00
E2E8E2D6 E4E34040 C9C7E9E2 D9E3C3C4 00000000 00000000 00000000 00000000 *SYSOUT IGZSRTCD................* 17129C20
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17129C40
00000000 00000000 00000000 00000000 174F25AC 00000000 1712DEDC 17129AA8 *...............................y* 17129C60
174F43E6 00000000 174F24B0 174F2724 1712DE98 174F2604 00000000 181000C0 *...W...............q............* 17129C80
00000000 00000000 00000000 1712AB88 1712BB88 1712CB88 1712DB88 181060C0 *...............h...h...h...h..-.* 17129CA0
18100040 181000C0 181010C0 181020C0 181030C0 181040C0 181050C0 181060C0 *... .................. .......-.* 17129CC0
181070C0 181080C0 181090C0 1810A0C0 1810B0C0 1810C0C0 1810D0C0 1810E0C0 *................................* 17129CE0
1810F0C0 181100C0 181110C0 181120C0 181130C0 181140C0 181150C0 181160C0 *..0................... .......-.* 17129D00
Step 3: Find the address of the start of the BLW cell from Step
(2)
C. Add the offset you found in Step (2) (C) to the BLW
address from step (3) (B)
C1C2C5D5 C4D5D940 C3C9C3E2 404040C5 E2D7E8C3 E3D34000 00000000 00000000 *ABENDNR CICS ESPYCTL .........* 181003A0
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 181003C0
00000000 00000000 00000000 00000000 00000000 00000000 00000CC2 81840F01 *...........................Bad..* 181003E0
2345EF01 234562C4 94F10FC5 E2D7E8C4 C5D4F1C4 94F20FC4 94F30F11 22334455 *.......Dm1.ESPYDEM1Dm2.Dm3......* 18100400
66778899 11223344 55667788 99AABBCC DDEE4040 D3C2E6A2 60D38995 9260F5E6 *..hr.......hr..... LBWs-Link-5W* 18100420
Step 3: Find the address of the start of the BLL cell from
Step (2)
*** TGT MEMORY MAP *** 000110 POINTER TO FIRST FCB CELL
TGTLOC 000114 WORKING-STORAGE ADDRESS
Step 3: Find the address of the start of the BLL cell from Step
(2)
190FF0C0 191000C0 191010C0 191020C0 191030C0 191040C0 191050C0 191060C0 *..0................... .......-.* 1712DCC0
191070C0 191080C0 191090C0 1910A0C0 1910B0C0 1910C0C0 1910D0C0 1910E0C0 *................................* 1712DCE0
1910F0C0 191100C0 191110C0 191120C0 191130C0 191140C0 00000000 001000D0 *..0................... .........* 1712DD00
17123868 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 1712DD20
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 1712DD40
Step 3: Find the address of the start of the BLW cell from Step
(2)
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17123800
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 *................................* 17123820
00000000 00000000 00000000 00000000 00000000 00000000 E4F0F0F0 F0F0F4F9 *........................U0000049* 17123840
E4F0F0F0 F0F3F0F2 C5E2C4D4 00000000 00000000 00000000 E4F0F0F0 F0F3F0F2 *U0000049ESDM............U0000049* 17123860
ESPYDEM7
TGT
WORKING-STORAGE
LINKAGE TGT
WORKING-STORAGE
LINKAGE
PESA +x’F6’
3. Use the address from 2(A) to fill out a Cheat Sheet for
the previous PESA.
4. Use the address from 2(C) to use with the Locate Field
Value Cheat Sheet.
5. Use the address from 2(D) to use with the Return
Address to Program Offset Cheat Sheet.
3. Use the address from 2(A) to fill out a Cheat Sheet for
the previous PESA.
4. Use the address from 2(C) to use with the Locate Field
Value Cheat Sheet.
5. Use the address from 2(D) to use with the Return
Address to Program Offset Cheat Sheet.