IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

SOC7 Abend using PSW and Dump


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
rohit510

New User


Joined: 08 Jan 2008
Posts: 18
Location: delhi

PostPosted: Fri Sep 26, 2008 6:29 pm
Reply with quote

Hi All,
I do like to know how to look for the exact data that is causing the SOC7 abend with the help of PSW and Dump Master. All i have got is the spool output + listings +DumpMaster. There is no Abend Aid installed on my system. I am able to figure out the 'verb' by looking at the offset. I need to know the data which is causing this .

More over w.r.t PSW, how useful is this ? In the below code, what does '878BA996' mean ?. It is not showing me the offset even when i subtract the Instruction Length mentioned - 2.

PSW AT TIME OF ERROR 078D1000 878BA996 ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 078BA990 - 00181610 0A0D58D0 D00498EC

does ' DATA AT PSW ' mean the data at the time of failing instruction. How to look at it and which word shoud i consider ?

Looking forward for much needed advice. Thanks in advance for all your time.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Sat Sep 27, 2008 3:25 am
Reply with quote

Hello,

Quote:
I need to know the data which is causing this .
Using the offset, look at the instruction that caused the 0c7. Find the displacement of the problem field(s) by using the displacement shown in the compile list.

When you go to that place in the dump, you will see the data that causes the 0c7.

I'd suggest you talk to one of your peers or some support person about Dump Master specifics.
Back to top
View user's profile Send private message
CICS Guy

Senior Member


Joined: 18 Jul 2007
Posts: 2146
Location: At my coffee table

PostPosted: Sat Sep 27, 2008 4:32 am
Reply with quote

Do you know assembler?
What does "w.r.t" mean?
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6250
Location: Mumbai, India

PostPosted: Sat Sep 27, 2008 5:14 am
Reply with quote

CICS Guy wrote:
What does "w.r.t" mean?
With Respect To.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Sat Sep 27, 2008 5:22 am
Reply with quote

I don't know Dump Master so can't help you there, but you might want to find and peruse SG24-6988, ABC's of z/OS Systems Programming Volume 8. It has a lot about dumps and analyzing them (albeit with IPCS).
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6250
Location: Mumbai, India

PostPosted: Sun Sep 28, 2008 1:27 am
Reply with quote

Hi rohit510,

Check this link, this wil help you..

www.ibmmainframes.com/viewtopic.php?t=10853&highlight=s0c7
Back to top
View user's profile Send private message
rohit510

New User


Joined: 08 Jan 2008
Posts: 18
Location: delhi

PostPosted: Mon Sep 29, 2008 1:00 pm
Reply with quote

Hi Dick scherrer,
Thank you for the reply...As i have already mentioned , i am able to locate the verb with the help of offset. However where do i look for the dispacement ,especially when i do not have abend aid to assist me ?. Is there a way where i can see the data causing the abend would be present in the Dump ?

Thank you.
Back to top
View user's profile Send private message
Anuj Dhawan

Superior Member


Joined: 22 Apr 2006
Posts: 6250
Location: Mumbai, India

PostPosted: Mon Sep 29, 2008 1:23 pm
Reply with quote

Hello,

S0C7 is a data exception. This most commonly means that a numeric value has had something done to it that results in it being placed in an alphanumeric field. So start with your numeric fields. Pic 9(nn) fields are very forgiving, so start your research with your COMP fields (COMP, COMP-3, etc.).

Because you got a S0C7, I can safely assume this is a batch job and you are dealing with standard input files. Input files have copybook layouts. Look at the copybook. Find the "packed" (COMP) fields. Using the layout positions, use File-Aid to scan the file for non-numeric data in these fields.

File-Aid option 8 from the main menu allows you to get a file layout from copybook. This tells you what position the particular field starts in and how long it is. Here is an example:
Code:
                 09 DL-VAR-NUM01-05           PIC S9(05)V COMP-3. ...
                 09 DL-VAR-NUM02-04           PIC S9(04)V COMP-3. ...
                 09 DL-VAR-NUM03-03           PIC S9(03)V COMP-3. ...
                 09 DL-VAR-CH01-01                    PIC X(01).  ...
                 09 DL-VAR-CH02-18                    PIC X(18).  ...

Here are three packed fields. I go to File-Aid F.8 to get the copybook layout and find where these fields are in the actual file:
Code:
File-AID ---------------------- VIEW LAYOUT ------------ Row 24 to 44 of 1,850
COMMAND ===>                                                  SCROLL ===> CSR 
Layout: MVD.ENVA.PANVALET(DLVAR512)                                           
                                                 FIELD                         
--------- FIELD LEVEL/NAME ---------- -PICTURE- -NUMBER START     END  LENGTH 
      9 DL-VAR-DT05                   X(10)         20     53      62      10 
      9 DL-VAR-NUM01-05               S9(5)         21     63      65       3 
      9 DL-VAR-NUM02-04               S9(4)         22     66      68       3 
      9 DL-VAR-NUM03-03               S999          23     69      70       2 
      9 DL-VAR-CH01-01                X             24     71      71       1 

This tells me that I am looking for my first packed field to start in column 63 for a physical length of 3, ending in column 65. (63, 64, 65 makes three physical columns).

Then, again using File-Aid, I would look for nonnumeric values in these columns. Remember that characters are less than numbers in the mainframe world, so I can search any or all of these columns for data less than zero (for the purpose of this example, I took the liberty of using a different file):
Code:
File-AID -------------  Unformatted Selection Criteria  ------ Row 1 to 1 of 1
COMMAND ===>                                                  SCROLL ===> CSR 
                                                                               
Use END to continue, CANCEL to return to main screen.                         
                                                                               
    AND                                                                       
Cmd /OR Position Length RO                      Data Value                     
--- --- -------- ------ -- ----------------------------------------------------
___      9       3      LT T'0'                                               
************************** END OF SELECTION CRITERIA **************************

And this gives me my offending record (or records, as the case may be).
Code:
File-AID - Edit - MV603.NON.NUMERIC -----------------------------------------------------------------------------------------------
COMMAND ===>                                                                                                      SCROLL ===> CSR 
       ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0-
****** ******************************************************* TOP OF DATA ****************
- - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 31 RECORD(S) NOT SELECTED
000001 D5013290ABC531074057839092061C          E3C                                                                                 
- - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 44 RECORD(S) NOT SELECTED
****** ****************************************************** BOTTOM OF DATA *********


PS. Courtesy Socer_dad
Back to top
View user's profile Send private message
rohit510

New User


Joined: 08 Jan 2008
Posts: 18
Location: delhi

PostPosted: Mon Sep 29, 2008 3:22 pm
Reply with quote

Hi Anuj,
Thank you for the quick turn around. I have seen the site suggested by You. Usually i try to figure out the SOC7 in the way dealt. However i like to see the offending data in the spool itself with the help of Dump Master. Is there a way rround it.....

In the program i tried to move a s9(3) comp-3 value into a 9(3) and x(3) variables simultaneously .....has this got to do something to do with this ?

Thank you.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Tue Sep 30, 2008 12:32 am
Reply with quote

Hello,

Quote:
In the program i tried to move a s9(3) comp-3 value into a 9(3) and x(3) variables simultaneously .....has this got to do something to do with this ?
Your problem in a nutshell is that somewhere you are trying to use a field that is defined as numeric and that field has invalid content. There is no problem with multiple receiving fields in a cobol move because the generated code actually contains a separate move for each target field.

Quote:
However where do i look for the dispacement
The displacement of the variables is available in the compile listing. Look on the right side of the line where the variable is defined and the displacement should be there.

Quote:
However i like to see the offending data in the spool itself with the help of Dump Master
Keep in mind that many/most of us who offer trouble shooting help had to debug dumps before there were such products as abendaid and dump master. . . Look at the underlying generated assembler instructions. From the instructions, you can see many things. It will take some time to learn how to do this - it is not an overnight learning. . .
Back to top
View user's profile Send private message
rohit510

New User


Joined: 08 Jan 2008
Posts: 18
Location: delhi

PostPosted: Tue Sep 30, 2008 4:43 pm
Reply with quote

Hi Dick,
Your experience is really paying off...I get to know new things from it. You have mentioned that the displcement is on the right side of the line number where i have identified the offset. The below is as follows-
BLW=00000+010,0000010 3C. Now is the displacement 00000010(8 -digits). Should i be looking for this value in the Ceedump ?

My question might look silly. But thank you for all the time.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Wed Oct 01, 2008 2:24 am
Reply with quote

Hello,

Quote:
My question might look silly. But thank you for all the time.
Not silly at all icon_smile.gif

Maybe this tiny example will help.

Code:
 WORKING-STORAGE SECTION.                                   
 77  EYE-CATCH1        PIC X(10) VALUE 'WS BEGINS '.         
 01  SOME-STUFF.                                             
     05 A-COMP3-FLD    PIC S9(9) COMP-3 VALUE 4.             
     05 AN-X-FLD REDEFINES A-COMP3-FLD PIC X(5).             
                                                           
 01  FILLER  PIC X(2000) VALUE ALL 'DFGH'.                   
 01  A-COUNTER         PIC S9(9) COMP-3 VALUE 9.         
*                                                     
 PROCEDURE DIVISION.                                   
 0000-MAINLINE.                                       
     COMPUTE A-COUNTER = A-COUNTER + A-COMP3-FLD.     
     MOVE 'KKKKK' TO AN-X-FLD.                         
     COMPUTE A-COUNTER = A-COUNTER + A-COMP3-FLD.     
     GOBACK.         


The second COMPUTE will abend with an 0c7.

The WorkingStorage compiles as:
Code:
19   77 EYE-CATCH1. . . . . . . . . . . . . . . . . . BLW=00000  000 
20   1  SOME-STUFF. . . . . . . . . . . . . . . . . . BLW=00000  010 
21     2  A-COMP3-FLD . . . . . . . . . . . . . . . . BLW=00000  010 
22     2  AN-X-FLD. . . . . . . . . . . . . . . . . . BLW=00000  010 
23   1  FILLER. . . . . . . . . . . . . . . . . . . . BLW=00000  018 
24   1  A-COUNTER . . . . . . . . . . . . . . . . . . BLW=00000  7E8 


From the CEE dump:
Code:
  WORKING-STORAGE for DSCHCBX3                                       
  BLW-0: 0004C0B8                                                     
    +000000 0004C0B8  E6E240C2 C5C7C9D5 E2400000 00000000  D2D2D2D2 D2
    +000020 0004C0D8  C4C6C7C8 C4C6C7C8 C4C6C7C8 C4C6C7C8  C4C6C7C8 C4
    +000040 0004C0F8 - +0007DF 0004C897             same as above     
    +0007E0 0004C898  C4C6C7C8 C4C6C7C8 00000001 3C000000  00000000 00

Notice that a-counter (displ x7E8) contains +13 (the result of the first compute). Notice that a-comp3-fld (displ x010) contains an invalid packed decimal value (the result of the move 'kkkkk'). When the second compute is executed, the 0c7 is raised.

When you find the displacement(s) in the compile, you can follow them to the fields in the dump.
Back to top
View user's profile Send private message
rohit510

New User


Joined: 08 Jan 2008
Posts: 18
Location: delhi

PostPosted: Wed Oct 01, 2008 4:36 pm
Reply with quote

Hi Dick,
Thank you for all the efforts....Iam more or less at the goal post.
I hope to implement these in future abends.

Thanks once again for all who have poured in their suggestions.....
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Wed Oct 01, 2008 7:20 pm
Reply with quote

You're welcome icon_smile.gif

Someone will be here if there questions on some future abend.

d
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> COBOL Programming

 


Similar Topics
Topic Forum Replies
No new posts ISAM and abend S03B JCL & VSAM 10
No new posts Abend S0C4 11 (Page Translation Excep... PL/I & Assembler 16
No new posts WER999A - UNSUCCESSFUL SORT 8ED U Ab... SYNCSORT 5
No new posts the system or user abend SF0F R=NULL COBOL Programming 0
No new posts Need to get an DLI abend like U0200 IMS DB/DC 2
Search our Forums:

Back to Top