Analysisng the value in a variable in CEEDUMP
Select messages from
# through # FAQ
[/[Print]\]

MVSFORUMS.com -> Problem Determination

#1: Analysisng the value in a variable in CEEDUMP Author: mainframemouli PostPosted: Fri Sep 23, 2005 8:50 am
    —
Before expalainig the problem let me clear the following things.

1. I have the idea of the way to solve SOC7 abend , by HEXLOC and getting the Nearest OFFSET.
2. My shop is having the ABEND-AID also , so i can get the Formatted way of error description.

My problem is not regarding solving of SOC7 but regarding the way to analyse the CEEDUMP.

But I don't know how to check the CEEDUMP.

I got the SOC7 Abend
Heres the sysout information for it.

The system detected a data exception (System Completion Code=0C7).
From compile unit XSRTPGM at entry point XSRTPGM at compile unit offset +00000878 at entry offset +00000878
at address 20400DF8.

with the Entry offset i captured the CEEDUMP information as follows

Program Unit: XSRTPGM Entry: XSRTPGM Statement: Offset: +00000878 - OFFSET
Machine State:
ILC..... 0006 Interruption Code..... 0007
PSW..... 478D1000 A0400DFE
GPR0..... 00000001 GPR1..... 20678E00 GPR2..... 2066A0B8 GPR3.....
GPR4..... 20666280 GPR5..... 20678E00 GPR6..... 00000000 GPR7.....
GPR8..... 00016A80 GPR9..... 20666100 GPR10.... 20400688 GPR11....
GPR12.... 2040067C GPR13.... 00029030 GPR14.... 8004E8F0 GPR15....
Storage dump near condition, beginning at location: 20400DE8
+000000 20400DE8 FA10D110 A0DDF321 2030D110 96F02032 FA202000 A0DDF82

20666280
00000000
20400988
20678E00

20002000 D507209E |..J...3...J.o0........8.....N...|

How to proceed from here , i want the variable which caused the problem and its last stored value.

I have searched this Forum for all the details regarding this , and checked the links given by Kolusu and some others also....

can anyone please guide me in this...

#2:  Author: Cogito-Ergo-SumLocation: Bengaluru, INDIA PostPosted: Fri Sep 23, 2005 9:09 am
    —
All you really need from CEEDUMP (or, anything else) is the abending offset. Pick it and search in your COBOL program compile listing (you would have compiled your program with LIST,NOOFFSET compile options). That will get you the problematic instruction and then the problematic statement.

PSW stands for Program Status Word that is the address of the next sequential instruction to be executed. The ILC stands fro Instruction Length Code. X'A0400DFE' - 6 = X'A0400DF8' which is the offending instruction. The storage dump shown begins with 20400DE8 whereas the PSW begins with A. You can ignore the high order bit as your program would have been running in 24-bit mode.

If you count 8 bytes from 20400DE8, you would be at X'FA202000 A0DD' The FA is instruction for Add Packed. This means, you had a S0C7 when you were adding two packed decimal numbers.

#3:  Author: SureshKumar PostPosted: Fri Sep 23, 2005 10:06 am
    —
mainframemouli,
Go to the following link. It may not solve your problem but gives a clear picture on dump handling. It deals more with CICS but the concept is the same. Thanks

http://cics.ufl.edu/trandump.html#data

#4:  Author: mainframemouli PostPosted: Mon Sep 26, 2005 8:34 am
    —
Quote:
If you count 8 bytes from 20400DE8, you would be at X'FA202000 A0DD' The FA is instruction for Add Packed


How you arrived at this Cogito-Ergo-Sum , can you explain about that...

and suresh kumar , my cobol listing doesn't have this assembler statement as like the below , is their any compiler option i need to give for that.

MVC 544(23,13),1074(10) TS2=40 PGMLIT AT +946
000C1E 4140 D220 LA 4,544(0,13) TS2=40
000C22 5040 D210 ST 4,528(0,13) TS2=24
000C26 4140 23A2 LA 4,930(0,2) WS-RECEIVE-AREA
000C2A 5040 D214 ST 4,532(0,13) TS2=28
PP 5688-197 IBM COBOL for MVS & VM 1.2.2 DCNESW00 Date 08/15/2000 Time 12:47:56 Page 42
000C2E 4140 2044 LA 4,68(0,2) WS-RECEIVE-LENGTH
000C32 5040 D218 ST 4,536(0,13) TS2=32

#5:  Author: kolusuLocation: San Jose PostPosted: Mon Sep 26, 2005 8:41 am
    —
mainframemouli,

Cogito-ergo-sum has already mentioned about the compiler options.

Quote:

(you would have compiled your program with LIST,NOOFFSET compile options).


Basically you need to add this line before ID divison and compile the pgm which will give you the assembler listing of the pgm.

Code:

CBL LIST


Hope this helps...

Cheers

Kolusu

#6:  Author: ANIL SARATHYLocation: Syracuse,New york PostPosted: Tue Sep 27, 2005 12:04 am
    —
LIST and OFFSET compiler options are mutually exclusive.

If u specify List , other will be Noffset and vice versa. If you use both, LIST will be ignored.

LIST is used to produce listing of the assembler language expansion of your code. With OFFSET, the procedure portion of the listing will contain line numbers, statement references, and the location of the first instruction generated for each statement.

In general OFFSET is used as it generate less lines or data in compiler listing.

But for abend analysis , always go with LIST , as it will give expansion.


Things to do :

1)If the sysout doesn't show offset , then u have to calculate it using
Offset= PSW - EPA
Program Status Word and Entry Point Address can be found in CEEDUMP

2) find offset from sysout
3) Give find on "HEXLOC" in compiler listing
4) Find for the VERB whose HEXLOC is equal to the offset you got in sysout and note the LINE #.
or
If there is no VERB which is having same offset, then find the verb with the next larger offset and go back one verb.

5) find on line # . Now you are on abended line.

#7:  Author: mainframemouli PostPosted: Tue Sep 27, 2005 1:43 am
    —
Anil,
As i told earlier I know the process of giving HEXLOC and getting the VERB , the problem is not with solving the SOC7. I Know the verb where it get the abend....

But about the CEEDUMP analysis.....

#8:  Author: ANIL SARATHYLocation: Syracuse,New york PostPosted: Tue Sep 27, 2005 1:53 am
    —
"its last stored value".

i don't think u can find the value in the variable which has caused the abend , by looking at the abend

#9:  Author: rony&rubyLocation: China PostPosted: Sun Oct 02, 2005 9:47 am
    —
why not use FDUMP option in your compiling.
After SC07, sysout will tell you which statement in CBL list cause data error.

#10:  Author: vak255 PostPosted: Thu Jul 05, 2007 12:51 pm
    —
I handle PL/1 programs.
Is the above procedure applies to PL/1 programs too.



MVSFORUMS.com -> Problem Determination


output generated using printer-friendly topic mod. All times are GMT - 5 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group