CICS Application Dump Reading Russ Evans evaru 01

  • Slides: 41
Download presentation
CICS Application Dump Reading Russ Evans evaru 01@ ca. com Computer Associates SHARE 102

CICS Application Dump Reading Russ Evans evaru 01@ ca. com Computer Associates SHARE 102 Session 1070 Copyright (c) 2003 Russell Evans 1

Objectives • • • Why What is Available Controlling Dump and Trace AEI 0

Objectives • • • Why What is Available Controlling Dump and Trace AEI 0 Abend ASRA Abend Copyright (c) 2003 Russell Evans 2

Why Read Dumps? • • • Detailed snapshot of time of failure Sometimes difficult

Why Read Dumps? • • • Detailed snapshot of time of failure Sometimes difficult to recreate problem Sometimes dangerous to recreate problem Only way to identify problem with certainty Can be faster and easier than recreating Dumps are free! Copyright (c) 2003 Russell Evans 3

What Tools Are Available? • • CICS Transaction Dump CICS Aux Trace Language Environment

What Tools Are Available? • • CICS Transaction Dump CICS Aux Trace Language Environment Dump and Messages CICS System Dump Copyright (c) 2003 Russell Evans 4

Useful Resources Before starting the debugging process, you will need: • Compile listing with

Useful Resources Before starting the debugging process, you will need: • Compile listing with the LIST option • Link map of the program load module with MAP and XREF • CICS Application Dump • Access to the CEEMSGS output Copyright (c) 2003 Russell Evans 5

Looking at the Dump The title of the dump contains identifying data: CICSAPPL ---

Looking at the Dump The title of the dump contains identifying data: CICSAPPL --- CICS TRANSACTION DUMP --- CODE=AEI 0 TRAN=APCT ID=1/0037 DATE=03/09/17 TIME=11: 52: 29 Review to ensure you have the correct dump: • VTAM APPLID of the region • Trans ID of the abending transaction • Abend Code • Date and Time Copyright (c) 2003 Russell Evans 6

Looking at the Dump REGISTERS AT LAST EXEC COMMAND REGS 0 -7 092132 EC

Looking at the Dump REGISTERS AT LAST EXEC COMMAND REGS 0 -7 092132 EC 092138 B 8 0000009 D REGS 8 -15 092134 E 1 00000083 0002 B 630 0002 C 62 F (continued) 09213 AB 6 092132 FC 09213300 092138 F 0 09205 D 08 09213820 8002 B 7 CE 0000 Do NOT rely on these registers! In this dump, they are from the last LE EXEC command issued while creating the CEEMSG dump, not from the user program…. . Copyright (c) 2003 Russell Evans 7

Looking at the Dump (continued) PSW & REGISTERS AT TIME OF INTERRUPT PSW 079

Looking at the Dump (continued) PSW & REGISTERS AT TIME OF INTERRUPT PSW 079 D 1000 88 BFD 700 00060007 0000 REGS 0 -7 0000 0921 E 1 A 0 0000 0921 EBF 8 08 BFD 5 E 4 00000000 001000 D 0 REGS 8 -15 0000 0921 EBF 0 08 BFD 620 08 BFD 6 B 4 08 BFD 610 0921 F 690 08 BFD 688 88 C 8 E 8 C 8 Registers at time of interrupt are not produced for AEIx abends PSW Points to Next Sequential Instruction R 14 may point to last Exec CICS command Other registers contain useful information Copyright (c) 2003 Russell Evans 8

Looking at the Dump (continued) The trans envrionment section displays some interesting information. .

Looking at the Dump (continued) The trans envrionment section displays some interesting information. . . Transaction environment for transaction_number(0000298) transaction_id(APCT) orig_transaction_id(APCT) initial_program(ABEND 1 ) current_program(ABEND 1 ) facility_type(TERMINAL) facility_name(CP 02) Start_code(TO) netname(SC 0 TCP 02) profile_name(DFHCICST) userid(CICSUSER) cmdsec(NO) ressec(NO) spurge(NO) dtimeout(0000000) tpurge(NO) taskdatakey(USER) taskdataloc(BELOW) twasize(00000) twaaddr( ) remote(NO) dynamic(NO) priority(001) Tclass(NO) runaway_limit(5000) indoubt_wait(YES) indoubt_wait_mins(000000) indoubt_action(BACKOUT) cics_uow_id(D 7 D 7 E 3 C 5091 A 8 D 00) confdata(NO) system_transaction(NO) restart_count(00000) restart(NO) Copyright (c) 2003 Russell Evans 9

Looking at the Dump (continued) The EIB also has interesting information EXEC INTERFACE BLOCK

Looking at the Dump (continued) The EIB also has interesting information EXEC INTERFACE BLOCK 0115228 C 0103260 F C 1 D 7 C 3 E 3 0000298 C C 3 D 7 F 0 F 2 00000009 00007 D 0 E 060100000000000000 E 3 D 5 D 7 E 7 E 74000 00000000 0000001 B 00000003 00 EIBTIME EIBDATE EIBTRNID EIBTASKN EIBTRMID EIBRSVD 1 EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE DS DS DS PL 4 CL 4 H H H CL 1 CL 2 CL 6 0115228 C 0103260 F APCT 0000298 C CN 02 0 E 06 -LOAD EIBDS EIBREQID EIBRSRCE EIBSYNC EIBFREE EIBRECV EIBSEND EIBATT EIBEOC EIBFMH DS DS DS Copyright (c) 2003 Russell Evans CL 8 TNPXXXX C C C C 10

Looking at the Dump (continued) When viewing the trace table, look first at EIP

Looking at the Dump (continued) When viewing the trace table, look first at EIP ENTRY/EXIT pairs 000298 000298 QR QR AP DD DD AP AP 00 E 1 0302 F 600 0301 0302 F 601 00 E 1 EIP DDLO TDA EIP ENTRY EXIT WRITEQ-TD LOCATE 08 A 4 DBC 0, 00059 AC 7, DCTE, CESE LOCATE/OK 08 ABE 270 , C 4 C 3 E 3 C 5 WRITE_TRANSIENT_DATA CESE, 08 AEB 2 E 0 , 00000001, YES LOCATE 08 A 4 DBC 0, 00070 BE 4, DCTE, CESE LOCATE/OK 08 ABE 270 , C 4 C 3 E 3 C 5 WRITE_TRANSIENT_DATA/OK WRITEQ-TD OK =000019= =000020= =000021= =000022= =000023= =000024= =000025= =000026= Remember, the most recent trace entry is the last Copyright (c) 2003 Russell Evans 11

Looking at the Dump (continued) The expanded trace entries have more details…. AP F

Looking at the Dump (continued) The expanded trace entries have more details…. AP F 600 TDA ENTRY - FUNCTION(WRITE_TRANSIENT_DATA) QUEUE(CESE) FROM_LIST(08 AEB 2 E 0 , 00000001) RSL_CHECK(YES) TASK-00298 KE_NUM-0014 TCB-QR /008 CFE 88 RET-88 CE 76 F 4 TIME-11: 52: 29. 0992101250 INTERVAL-00. 0000019062 =000022= 1 -0000 00500000035 00000000 BC 200000 01 AE 0103 C 3 C 5 E 2 C 5 *. &. . . CESE* 0020 08 AEB 2 E 0 00000001 00000002 08 A 83070 01004000 02201101 006800000028 *. . . . . y. . . . * 0040 0000 01000000 B 5 C 00000000 *. . {. . . * 2 -0000 40 C 3 D 7 F 0 F 2 C 1 D 7 C 3 E 340 F 2 F 0 F 0 F 3 F 0 F 9 F 1 F 7 F 1 F 1 F 5 F 2 F 2 F 9 40404040 * CP 02 APCT 20030917115229 * 0020 404 EF 0 F 040 F 0 F 9 F 2 F 0 F 6 F 7 C 2 F 840 40 F 0 F 0 F 0 F 040 F 0 F 9 F 2 F 0 F 6 F 5 * +0000 092067 B 8 0000 092065* 0040 C 2 F 040 F 0 F 9 F 2 F 0 F 6 F 8 F 3 F 840 F 8 F 9 F 5 F 1 F 5 C 5 F 4 F 2 4040 F 0 F 9 F 5 F 1 F 6 F 0 F 5 F 840 F 0 *B 0 09206838 89515 E 42 09516058 0* 0060 F 9 F 2 F 0 F 3 F 7 F 5 F 040 F 0 F 8 C 1 C 5 C 1 C 6 C 4 F 4 40 F 0 F 9 F 2 F 0 F 6 F 8 F 3 F 840404 F 4 B 4 B *9203750 08 AEAFD 4 09206838 |. . * 0080 4 B 4 B *. . * Copyright (c) 2003 Russell Evans 12

Looking at the Dump (continued) The Program Information section of the dump contains information

Looking at the Dump (continued) The Program Information section of the dump contains information related to all of the programs currently active in the transaction. If the transaction has issued EXEC CICS LINKs, then each logical link level will be displayed. This section has the most recent entries first, and is read from the last entry backward. Copyright (c) 2003 Russell Evans 13

PROGRAM INFORMATION FOR THE CURRENT TRANSACTION Number of Levels 00000004 INFORMATION FOR PROGRAM AT

PROGRAM INFORMATION FOR THE CURRENT TRANSACTION Number of Levels 00000004 INFORMATION FOR PROGRAM AT LEVEL 00000004 of 00000004 Program Name LINK 04 Invoking Program LINK 03 Load Point 08 BFD 000 Program Length 00000 D 90 Entry Point 88 BFD 020 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09217 C 70 Comoro Length 0000000 A Execution Key USER Data Location ANY Environment User application INFORMATION FOR PROGRAM AT LEVEL 00000003 of 00000004 Program Name LINK 03 Invoking Program LINK 02 Load Point 098692 A 0 Program Length 00000 C 70 Entry Point 898692 C 0 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09211650 Comoro Length 0000000 A Execution Key USER Data Location ANY Environment User application INFORMATION FOR PROGRAM AT LEVEL 00000002 of 00000004 Program Name LINK 02 Invoking Program ABEND 1 Load Point 093 FDF 70 Program Length 00000 C 70 Entry Point 893 FDF 90 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09208650 Comoro Length 00000009 Execution Key USER Data Location ANY Environment User application INFORMATION FOR PROGRAM AT LEVEL 00000001 of 00000004 Program Name ABEND 1 Invoking Program CICS Load Point 093 FC 260 Program Length 00001 C 70 Entry Point 893 FC 280 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 0000 Comoro Length 0000 Execution Key USER Data Location BELOW Environment User application Copyright (c) 2003 Russell Evans 14

Looking at the Dump (continued) PROGRAM INFORMATION FOR THE CURRENT TRANSACTION Number of Levels

Looking at the Dump (continued) PROGRAM INFORMATION FOR THE CURRENT TRANSACTION Number of Levels 00000004 INFORMATION FOR PROGRAM AT LEVEL 00000004 of 00000004 Program Name LINK 04 Invoking Program LINK 03 Load Point 08 BFD 000 Program Length 00000 D 90 Entry Point 88 BFD 020 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09217 C 70 Comoro Length 0000000 A Execution Key USER Data Location ANY Environment User application Copyright (c) 2003 Russell Evans 15

Looking at the Dump Load Point (continued) 08 BFD 000 LINK 04 PROGRAM STORAGE

Looking at the Dump Load Point (continued) 08 BFD 000 LINK 04 PROGRAM STORAGE ADDRESS 08 BFD 000 TO 08 BFDD 8 F LENGTH 00000 D 90 000 C 4 C 6 C 8 E 8 C 3 F 5 F 3 F 0 58 F 0021 C 58 F 0 F 0 D 0 58 F 0 F 014 58 F 0 F 00 C 58 FF 000 C 07 FF 0000 *DFHYC 530. 0. . . 00. . * 08 BFD 000 020 47 F 0 F 070 23 C 3 E 2 C 5 C 3 E 3 F 0 F 4 4040 C 3 F 2 40 F 14 BF 4 4 BF 040 F 0 F 761 F 0 F 9 61 F 0 F 140 *. 00. . CSECT 04 C 2 1. 4. 0 07/09/01 * 08 BFD 020 040 F 0 F 54 BF 5 F 54 BF 3 F 8 08 BFD 074 E 0 E 87 C 0 C 08002000 10800008 00000000 *05. 55. 38. . . Y. . . . * 08 BFD 040 Copyright (c) 2003 Russell Evans 16

Looking at the Dump (continued) Commarea Address 09217 C 70 CURRENT COPY OF THE

Looking at the Dump (continued) Commarea Address 09217 C 70 CURRENT COPY OF THE COMMAREA 0 PROGRAM COMMUNICATION AREA 00000 C 1 D 7 C 3 E 3 40 C 3 C 1 D 3 F 1 ADDRESS 09208650 TO 09208658 *APCT CAL 1 Copyright (c) 2003 Russell Evans LENGTH 00000009 * 09217 C 70 17

Controlling Dump and Trace //LOAD EXEC PGM=DFHDU 530, REGION=0 M //STEPLIB DD DISP=SHR, DSN=CICSTS

Controlling Dump and Trace //LOAD EXEC PGM=DFHDU 530, REGION=0 M //STEPLIB DD DISP=SHR, DSN=CICSTS 13. CICS. SDFHLOAD //DFHDMPDS DD DISP=SHR, DSN=TEST. CICS. DFHDMPA //DFHPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //DFHDUPRM DD * Copyright (c) 2003 Russell Evans 18

Controlling Dump and Trace (continued) //LOAD EXEC PGM=DFHTU 530, REGION=0 M //STEPLIB DD DISP=SHR,

Controlling Dump and Trace (continued) //LOAD EXEC PGM=DFHTU 530, REGION=0 M //STEPLIB DD DISP=SHR, DSN=CICSTS 13. CICS. SDFHLOAD //DFHAUXT DD DISP=SHR, DSN=TEST. CICS. DFHAUXT //DFHAXPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //DFHAXPRM DD * Copyright (c) 2003 Russell Evans 19

Controlling Dump and Trace (continued) Use CEMT I DUMP to switch the dump datasets

Controlling Dump and Trace (continued) Use CEMT I DUMP to switch the dump datasets prior to printing I DUMP STATUS: RESULTS - OVERTYPE TO MODIFY Dum Cur(A) Ope Copyright (c) 2003 Russell Evans 20

Controlling Dump and Trace (continued) Use CEMT I AUX to start aux trace. Trace

Controlling Dump and Trace (continued) Use CEMT I AUX to start aux trace. Trace must be stopped before printing. I AUX STATUS: RESULTS - OVERTYPE TO MODIFY Aux Cur(B) Sto Copyright (c) 2003 Russell Evans 21

Solving An AEI 0 Abend • Unhandled errors result in AEIx abend • Much

Solving An AEI 0 Abend • Unhandled errors result in AEIx abend • Much useful information in EIB fields and Trace Table • Messages and Codes provides clear description of error • Programming Guide describes conditions each command can receive Copyright (c) 2003 Russell Evans 22

Solving An AEI 0 Abend (continued) From the CICS Messages and Codes manual: Explanation:

Solving An AEI 0 Abend (continued) From the CICS Messages and Codes manual: Explanation: PGMIDERR condition not handled. This is one of a number of abends issued by the EXEC interface program. Because of their similar characteristics these abends are described as a group. See the description of abend AEIA for further details. Note that this information can also be found using the CMAC transaction. Copyright (c) 2003 Russell Evans 23

Solving An AEI 0 Abend (continued) Because an AEI* abend is the result of

Solving An AEI 0 Abend (continued) Because an AEI* abend is the result of a failure in an EXEC CICS command, the first place to look is the EIB: EXEC INTERFACE BLOCK 0115228 C 0103260 F C 1 D 7 C 3 E 3 0000298 C C 3 D 7 F 0 F 2 00000009 00007 D 0 E 060100000000000000 E 3 D 5 D 7 E 7 E 74000 00000000 0000001 B 00000003 00 EIBRSRCE = TNPXXXX EIBFN = 0 E 06 = LOAD Note: EIBFN codes are found in the Application Programmers Reference Manual Copyright (c) 2003 Russell Evans 24

Solving An AEI 0 Abend (continued) Another good place to look for the cause

Solving An AEI 0 Abend (continued) 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 R 14 value to the program, identifying the failing line of code Unfortunately, in this dump the only entries in the trace table are from LE writing its dump to CESE. Recommendation: set TERMTHDACT(QUIET) or (MSG) to keep LE from overwriting your trace table Copyright (c) 2003 Russell Evans 25

Solving An AEI 0 Abend (continued) An aux trace of the pgmiderr AP 00

Solving An AEI 0 Abend (continued) An aux trace of the pgmiderr AP 00 E 1 EIP EXIT LINK PGMIDERR PG 1102 PGLE EXIT - FUNCTION(LINK_EXEC) RESPONSE(EXCEPTION)REASON(PROGRAM_NOT_LOADABLE) Copyright (c) 2003 Russell Evans 26

Solving An AEI 0 Abend (continued) Another helpful trace item AP 00 E 1

Solving An AEI 0 Abend (continued) Another helpful trace item AP 00 E 1 EIP ENTRY LINK REQ(0004) FIELD-A(09719448. . m. ) FIELD-B(09000 E 02. . ) TASK-00632 KE_NUM-0035 TCB-QR /008 DA 728 RET-8 A 3019 FE TIME-22: 12: 33. 9754938750 The RET value shown in the EIP ENTRY trace is the return address within the application program. We can use this to identify the specific EXEC CICS command that resulted in this failure. Copyright (c) 2003 Russell Evans 27

Solving An ASRA Abend An ASRA abend is the result of an 0 Cx

Solving An ASRA Abend An ASRA abend is the result of an 0 Cx system abend in a user program. • EIB doesn’t point to the cause of the abend • Trace table doesn’t show the failing instruction • We need to look at the PSW to find the failing instruction • We need to look at the registers to find the cause of the failure Copyright (c) 2003 Russell Evans 28

Solving An ASRA Abend (continued) The PSW & REGISTERS AT TIME OF INTERRUPT PSW

Solving An ASRA Abend (continued) The PSW & REGISTERS AT TIME OF INTERRUPT PSW 079 D 1000 88 BFD 700 00060007 The NSI shows the address of the next instruction. The ILC tells us how long the failing instruction is Copyright (c) 2003 Russell Evans 0000 The program interrupt code tells us what kind of S 0 C abend this is 29

Solving An ASRA Abend (continued) Finding the Failing Instruction CICS is not always aware

Solving An ASRA Abend (continued) Finding the Failing Instruction CICS is not always aware of which program is running at the time of the abend. Scan the module index in the dump to find the failing program ------ MODULE INDEX ----LOAD PT. NAME ENTRY PT LENGTH 08 BFBFE 0 DFHCRSP 08 BFC 00000 DC 8 08 BFCDB 0 DFHCNV 08 BFCDD 8 00000130 08 BFCEE 0 TNPEXT 2 08 BFCEE 0 00000078 08 BFD 000 LINK 04 08 BFD 020 00000 D 90 08 BFDD 90 TNP 31 UP 08 BFDD 90 00000258 Copyright (c) 2003 Russell Evans 30

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the program listing

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the program listing to find the failing instruction 000191 CALL 00030 E 000312 000316 00031 A 00031 E 000322 000326 000328 00032 C 000330 000332 000336 00033 A 00033 E 000342 000346 00034 A 00034 C 000350 000354 000358 00035 C 4120 5020 9680 4110 4100 58 F 0 05 EF 50 F 0 BF 28 0420 9120 58 B 0 47 E 0 5820 58 F 0 4110 05 EF 9950 D 170 D 14 C A 000 947 F 5820 58 F 0 4110 05 EF D 15 C D 05 C 2224 A 0 B 4 D 078 D 089 D 054 C 00 C B 1 D 8 D 05 C 21 CC A 0 B 5 GN=1 LA ST OI LA LA L BALR ST ICM SPM TM L BC L L LA BALR EQU NI L L LA BALR 2, 2384(0, 9) 2, 368(0, 13) 368(13), X'80' 1, 368(0, 13) 0, 332(0, 13) 15, 0(0, 10) 14, 15 15, 120(0, 13) 2, 8, 137(13) 2, 0 84(13), X'20' 11, 12(0, 12) 14, 472(0, 11) 2, 92(0, 13) 15, 460(0, 2) 1, 181(0, 10) 14, 15 * 348(13), X'7 F' 2, 92(0, 13) 15, 548(0, 2) 1, 180(0, 10) 14, 15 DFHEIV 0 TS 2=0 CLLE@=3 V(DFHEI 1 ) TGTFIXD+120 TGTFIXD+137 TGTFIXD+84 PBL=1 GN=1(00034 C) TGTFIXD+92 V(IGZEMSG ) PGMLIT AT +169 IPCB=1 TGTFIXD+92 V(IGZETRM ) PGMLIT AT +168 Copyright (c) 2003 Russell Evans 31

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the module link

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the module link map to find the failing module *** M O D U L E -------CLASS B_TEXT DBLWORD -------- LENGTH = SECTION OFFSET CLASS OFFSET 8 8 8 0 8 8 8 M A P *** D 90 NAME ATTRIBUTES = CAT, TYPE DFHECI DFHEI 1 DLZEI 02 DLZEI 03 DLZEI 04 CSECT LABEL LABEL 20 CSECT 04 590 ABENDIT * LENGTH LOAD, RMODE=ANY ALIGN = ------- SOURCE -------DDNAME SEQ MEMBER 1 E SYSLIB 03 DFHECI CSECT 56 C SYSLIN 02 **NULL** CSECT 3 AC SYSLIB 01 ABENDIT Copyright (c) 2003 Russell Evans 32

Solving An ASRA Abend (continued) Finding the Failing Instruction Calculate the offset of the

Solving An ASRA Abend (continued) Finding the Failing Instruction Calculate the offset of the failing instruction NSI Address…… 08 BFD 700 Load point……… -08 BFD 000 Offset into module 700 Start of ABENDIT -590 Offset into ABENDIT 170 Copyright (c) 2003 Russell Evans 33

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the program listing

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the program listing to find the failing instruction 000018 COMPUTE 000164 F 284 00016 A FC 85 000170 F 897 000176 D 207 00017 C D 204 000182 4 F 20 000186 F 144 00018 C 4 F 50 000190 5 C 40 000194 1 E 52 000196 47 C 0 00019 A 5 A 40 00019 E 1222 0001 A 0 47 B 0 The NSI D 168 D 180 D 178 D 17 B D 178 C 004 8000 A 030 D 169 A 036 D 185 D 180 B 07 A C 000 GN=8 B 084 PACK MP ZAP MVC CVB MVO CVB M ALR BC A EQU LTR BC Copyright (c) 2003 Russell Evans 360(9, 13), 0(5, 8) 360(9, 13), 48(6, 10) 384(10, 13), 361(8, 13) 376(8, 13), 54(10) 379(5, 13), 389(13) 2, 376(0, 13) 379(5, 13), 384(5, 13) 5, 376(0, 13) 4, 4(0, 12) 5, 2 12, 122(0, 11) 4, 0(0, 12) * 2, 2 11, 132(0, 11) 34

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the program listing

Solving An ASRA Abend (continued) Finding the Failing Instruction Look at the program listing to find the failing instruction 02 GOOD PIC S 9(8) COMP VALUE ZERO. LINKAGE SECTION. 01 PARMS-IN. 05 BAD PIC S 9(5). 000018 COMPUTE ABEND = BAD * GOOD. Copyright (c) 2003 Russell Evans 35

Solving An ASRA Abend (continued) Using the R 14 Value R 14 usually points

Solving An ASRA Abend (continued) Using the R 14 Value R 14 usually points to where the last call returned (or would have returned) to. Sometimes this can help determine how processing arrived at the point of failure. Find the matching instruction using the process for finding the NSI. If it is a return value it should immediately follow a BASR or BALR instruction. Copyright (c) 2003 Russell Evans 36

Solving An ASRA Abend (continued) Finding Data In The Dump REGS 0 -7 REGS

Solving An ASRA Abend (continued) Finding Data In The Dump REGS 0 -7 REGS 8 -15 0000 0921 E 1 A 0 0000 0921 EBF 8 0000 0921 EBF 0 08 BFD 620 08 BFD 6 B 4 08 BFD 5 E 4 00000000 001000 D 0 08 BFD 610 0921 F 690 08 BFD 688 88 C 8 E 8 C 8 Length fields 00016 A FC 85 D 168 A 030 Register MP 360(9, 13), 48(6, 10) Displacement Copyright (c) 2003 Russell Evans 37

Solving An ASRA Abend (continued) Finding Data In The Dump Register 10 Value. .

Solving An ASRA Abend (continued) Finding Data In The Dump Register 10 Value. . . 08 BFD 620 Offset (from instruction). . 30 Actual Address. . . . 08 BFD 650 Length (from instruction) 6 0000 000 C 0000 Packed zeros Copyright (c) 2003 Russell Evans 38

Solving An ASRA Abend (continued) Finding Data In The Dump Register 13 Value. .

Solving An ASRA Abend (continued) Finding Data In The Dump Register 13 Value. . . 0921 F 690 Offset (from instruction). . 168 Actual Address. . . . 0921 F 7 F 8 Length (from instruction) 9 0000 0921 F 838 18000000 Not a valid packed number Copyright (c) 2003 Russell Evans 39

Solving An ASRA Abend (continued) Relating the dump to the program Failing command. .

Solving An ASRA Abend (continued) Relating the dump to the program Failing command. . COMPUTE ABEND = BAD * GOOD Data Definition of Good. . . PIC S 9(8) COMP VALUE ZERO. Data Definition of Bad. . . . PIC S 9(5). IGYSC 2025 -W "PARMS-IN" or one of its subordinates was referenced, but "PARMS-IN" was a "LINKAGE SECTION" item that did not have addressability. This reference will not be resolved successfully at execution. Copyright (c) 2003 Russell Evans 40

Conclusion • • Dumps and traces are valuable tools Identify the failing line of

Conclusion • • Dumps and traces are valuable tools Identify the failing line of code Help determine the actual cause of the failure “Cheat sheet” can be downloaded from www. reevans. com Copyright (c) 2003 Russell Evans 41