Professional Documents
Culture Documents
Introduction
The purpose of this document is to provide you with the knowledge to locate
information in an “unformatted” AbendAid dump. It assumes that you are
already familiar with AbendAid and its use via the AbendAid ISPF panels.
Also included in this document are tips and notes for handling situations
unique to Target, and/or Mervyns.
1
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
To redirect the output of the AbendAid dump, add the following ABNLTERM
DD statement to your JCL as follows…
OR
//ABNLTERM DD DSN=UCPROD01.ABENDAID.PROD.HUGE.DUMPS,
// DISP=SHR
These DD statements are added to each STEP in the JCL and are only in
effect for the step in which they occur. Please do not direct “test jobs” to
the production dump datasets.
Also note that the AbendAid dumps directed to ABNLTERM SYSOUT, are
created in the NARROW format.
Notice this particular dump is so large that it can not be browsed using the
PROGRAM section of AbendAid ISPF panel 6.
2
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
To get around this problem… enter ‘P’ next to the job and hit enter (this will
print the core dump).
You will see the following panel for options…use NARROW for line size. Hit
enter to submit.
3
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Use the following commands in order to write the SDSF listing to your
dataset. This is important because on the Mervyns side there is some
automated process that purges large held listings.
SDSF OUTPUT DISPLAY SPCWH2FC JOB14738 DSID 102 LINE 121 COLUMNS 02-
81
COMMAND INPUT ===> PRINT ODSN LIST80 * SHR SCROLL ===> CSR
SDSF OUTPUT DISPLAY SPCWH2FC JOB14738 DSID 102 LINE 121 COLUMNS 02-
81
COMMAND INPUT ===> PRINT SCROLL ===> CSR
SDSF OUTPUT DISPLAY SPCWH2FC JOB14738 DSID 102 LINE 121 COLUMNS 02-
81
COMMAND INPUT ===> PRINT close SCROLL ===> CSR
4
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Target
• 'UCPROD01.ABENDAID.IMS.DUMPS'
• 'UCPROD01.ABENDAID.PROD.DUMPS'
• 'UCPROD01.ABENDAID.PROD.HUGE.DUMPS'
• 'UCPROD01.ABENDAID.NONPROD.DUMPS'
Mervyns
• 'TECHPRD.COMPWARE.CX.DDIO.DUMP2'
• 'TECHPRD.COMPWARE.CX.DDIO.'
*NOTE: You may want to check JCL in JMR of the abending job to see the actual
dataset used for the abend.
5
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
The compile listings only reside on the Target site. This is one reason why it is
necessary to be able to read an ‘unformatted’ core dump.
The statement numbers in the DB2 section of AbendAid are only useful with the DB2
Precompiler listing, not the Cobol compiler listing.
Steps to ensure that the compile listing matches the compile date in the AbendAid
dump as follows:
SDSF OUTPUT DISPLAY SPCWH2FC JOB14738 DSID 102 LINE 121 COLUMNS 02-
81
COMMAND INPUT ===> SCROLL ===> CSR
PP 5668-958 IBM VS COBOL II Release 4.0 09/15/92 Date
Invocation parameters:
LIB,SIZE(MAX),OPT,DATA(24)
PROCESS(CBL) statements:
00001 CBL DATA(31) 09/29/98
Options in effect:
NOADV
APOST
NOAWO
BUFSIZE(16384)
NOCMPR2
6
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
The program was compiled on 22 AUG 1996 and is 000000E0 bytes long.
The last known I/O operation or call was issued from program
T50130 at displacement 000157DE.
*IMPORTANT
The compiled date from the AbendAid core dump MUST match the date found in the
compiled listing, otherwise the location of the data in the AbendAid core dump will
NOT correlate to the offsets in the compiled listing.
7
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
*Note that the MMR routine is composed of a number of dynamically loaded modules.
8
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Both of the user abend routines as well as COBOL II’s abend routine require that
parameters are passed to them. If these parameters are incorrect in format or
length, a System abend code may be generated.
In the following example a S0C4 abend was generated by the incorrect parameters
used in conjunction with the MMR routine…
It is important to check the CALL TRACE SUMMARY portion of the AbendAid dump to
clarify the true cause of the abend. In this case, the focus should be on why the
MMR routine was called, not on the bad parameter list passed to the MMR routine.
Also be aware that other strange System abends can occur due to the same type of
problem, incorrect parameters to the user abend routines. When the MMR routine is
called, check for the value of the MMR-USER-RETURN-CODE in the MMR
communication area.
9
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
*Note: When you encounter an abend of this type be sure to notify the application
owner so the issue can be entered in ISSUE LOG and go through the project/issue
prioritization process.
10
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
There are a few abends where it is necessary to know the current instruction. They
are the S0C7 and S0CB abends. This information is found in the NEXT SEQUENTIAL
INSTRUCTION section of the core dump as follows:
COMPUWARE/VF ---------------------------------------------,Row 20 to 38 of
COMMAND INPUT ===>, ,SCROLL ===>,
**********************
* Diagnostic Section *
**********************
-------------------------------------------------------------------------------------------
'TECHPRD.COMPWARE.CX.DDIO.DUMP2' REPT.(L) 7236 T08371 J01982
*******************************************
* Next Sequential Instruction Section *
*******************************************
The program was compiled on 16 SEP 1998 and is 00006578 bytes long.
11
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
In the compiled listing find the value of ‘hexloc’ first. You should find the following
section. Within this section you will be looking for the source line # that matches
closest to displacement given in the Next Sequential Instruction of the core dump.
Remembering that hexloc must less than or equal to the displacement.
Notice that the location of the next instruction is between the ADD verb at source
line 2605 and the SET verb at source line 2606.
*Note: Also remember that a S0C7 can only occur on a ‘decimal’ instruction
(instructions that do arithmatic).
12
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
,SDSF OUTPUT DISPLAY SPCWH2FC JOB25887 DSID 102 LINE CHARS '2605'
FOUND
,COMMAND INPUT ===>, ,SCROLL ===>,
2605 1 01838 ADD WS-1 TO WS-WORK-TABLE-ENTRIES <<<<=====
2606 1 01839 SET WORK-TBL-IDX UP BY WS-1.
2607 01840
2608 01841 3000-EXIT.
2609 01842 EXIT.
Locate the BLW cell and displacement of the variable ws-work-table-entries in the
compiled listing.
,SDSF OUTPUT DISPLAY SPCWH2FC JOB25887 DSID 102 LINE 1,038 COLUMNS
33- 112
COMMAND INPUT ===>, , SCROLL ===>,CSR ,
10 WORK-TBL-2-AD-PRICE-VARIES-SW PIC X(1). PT08381V
BLW=0075+B69
10 WORK-TBL-2-COST-VARIES-SW PIC X(1). PT08381V BLW=0075+B6A
10 WORK-TBL-2-REG-RETL-FLAG PIC X(1). PT08381V BLW=0075+B6B
PT08381V
WORK-TABLE-ENTRIES PIC 9(4) VALUE ZERO. CL**3 BLW=00CD+940
IMP
LEGAL-TABLE-ENTRY-COUNT PIC 9(4) VALUE ZERO. CL**3 BLW=00CD+948
IMP
13
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Locate the BLW cell plus the displacement in the core dump.
14
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Indexes are stored as an offset or a displacement from the beginning address of the
table (the variable containing the “INDEXED BY” clause). The formula used to
calculate the value of an index is as follows:
Use the example below to locate the value of WKVO-IDX. Notice the IDX=0012…
which is the 18 th full word in TGT. (x’12’ = decimal 18).
,SDSF OUTPUT DISPLAY SPCWH2FC JOB18585 DSID 102 LINE 2,763 COLUMNS 33- 112
,COMMAND INPUT ===>, ,SCROLL ===>,CSR ,
WS-WEEK-DC-VO-TABLE. PT50130V BLW=1065+B7F
10 WS-WEEK-VO-TABLE OCCURS 52 TIMES PT50130V BLW=1065+B7F
INDEXED BY WKVO-IDX. PT50130V IDX=0012+000
15 WS-DC-VO-TABLE OCCURS 250 TIMES PT50130V BLW=1065+B7F
INDEXED BY DCV-IDX. PT50130V IDX=0013+000
17 WS-DC-VO-TABLE-DATA. PT50130V BLW=1065+B7F
20 WS-VO-DC-I PIC S9(04) COMP. PT50130V BLW=1065+B7F
20 WS-VO-VEND-I PIC S9(09) COMP. PT50130V BLW=1065+B81
20 WS-VO-VEND-OP-I PIC S9(04) COMP. PT50130V BLW=1065+B85
20 WS-VO-BULK-ORD-F PIC X(01). PT50130V BLW=1065+B87
15
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
SDSF OUTPUT DISPLAY SPCWH2FC JOB18585 DSID 102 LINE 48,134 COLUMNS
02- 81
COMMAND INPUT ===>, ,SCROLL ===>,CSR
*** TGT MEMORY MAP ***
TGTLOC
000000 72 BYTE SAVE AREA
000048 TGT IDENTIFIER
000050 TGT LEVEL INDICATOR
000051 RESERVED - 3 SINGLE BYTE FIELDS
000054 32 BIT SWITCH
000058 POINTER TO RUNCOM
00005C POINTER TO COBVEC
000060 POINTER TO PROGRAM DYNAMIC BLOCK TABLE
000064 NUMBER OF FCB'S
000068 WORKING STORAGE LENGTH
.
.
.
SDSF OUTPUT DISPLAY SPCWH2C JOB27577 DSID 124 LINE 47,963 COLUMNS 01-
COMMAND INPUT ===>, ,SCROLL ===>,
Notice the location of the index cells within the Task Global Table (TGT). 5170 is the
offset from the beginning of the TGT.
16
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Locate the Task Global Table (TGT) in the program section of the core dump and
locate the displacement.
17
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Now we need to find the address of the variable indexed by WSKVO-IDX, DCV-IDX.
Start by locating BLW CELL X’1065’ in the compiled listing which converted to decimal
is BLW CELL 4197 + the displacement of B7F in the core dump listing.
,SDSF OUTPUT DISPLAY SPCWH2FC JOB18585 DSID 102 LINE 2,763 COLUMNS 33- 112
,COMMAND INPUT ===>, ,SCROLL ===>,CSR ,
WS-WEEK-DC-VO-TABLE. PT50130V BLW=1065+B7F
10 WS-WEEK-VO-TABLE OCCURS 52 TIMES PT50130V BLW=1065+B7F
INDEXED BY WKVO-IDX. PT50130V IDX=0012+000
15 WS-DC-VO-TABLE OCCURS 250 TIMES PT50130V BLW=1065+B7F
INDEXED BY DCV-IDX. PT50130V IDX=0013+000
17 WS-DC-VO-TABLE-DATA. PT50130V BLW=1065+B7F
20 WS-VO-DC-I PIC S9(04) COMP. PT50130V BLW=1065+B7F
20 WS-VO-VEND-I PIC S9(09) COMP. PT50130V BLW=1065+B81
20 WS-VO-VEND-OP-I PIC S9(04) COMP. PT50130V BLW=1065+B85
20 WS-VO-BULK-ORD-F PIC X(01). PT50130V BLW=1065+B87
18
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
1065B7F (1065 = BLW of variable) and (B7F = the offset of the variable)
+ 47982 which is the value of the index WSKVO-IDX
+ 00000 which is the value of the index DCV-IDX
10AD501 (10AD = BLW of variable) and (501 = the offset of the variable)
Just remember to find the hex displacement of the single index (located in the TGT)
and add it to the address of the variable referenced by the indexes.
Notice: BLW cells that go beyond x’FFF’ will start over at BLW cell x’0’ again.
Working storage referenced by BLW cell 4095 (X'FFF')
Working storage referenced by BLW cell 4096 (X'0')
19
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc
How To Do Application Support
9. Abend Aid - dealing with production abends
Remember Bookmanager..
Bookshelf List
Shelves 72 to 87 of 181
Shelf Name Description,
CWAA8E OS/390: Abend-AID MVS 8.4 manuals
20
Printed: 12/23/2010 12/23/2010 ..\Abend Aid tips.doc