There is a production file which has millions of records in
it.The program that uses it ends up with an SOC7 abend.It
is sure that the abend is due to some invalid data in the
file.Is there any way to debugg the SOC7 abend with out
giving displays? I need the record which is cause for the
abend.
Answers were Sorted based on User's Feedback
Answer / prakash
We can track this S0C7 in couple of ways without issuing
display statement
* Using abend log SYSABEND. GO the abend log in the spool
and search for CURRENT RECORD . Under this heading the
abendlog will show you the current record that has caused
the abend in hexa decimal format.
* Using Disp parameter. Suppose if your applicaton program
reads the data from an input file and after processing if
it writes ouput data to another file this method could be
used. Give the disp parameter as new,catlg,catlg for the
output dataset.By doing so when ever the job abend with
S0C7 we could see the last sucessfully processed record in
the output file.With that info we can track the
corresponding record in the input file and the next record
to that is the one causing the abend
| Is This Answer Correct ? | 25 Yes | 1 No |
Answer / ramesh
Steps taken to resolve to resolve S0C7
1. Get the offet of the abend from sysout
e.g lets say the offset is 0005DA
2. Go the compile listing and locate the offset. This will
be present in the assembly listing of the program.
000067 MOVE
0005D6 4820 8018 LH 2 24(0 8) WS-COMP
0005DA 4E20 D100 CVD 2 256(0 13) TS2 0
0005DE F332 8020 D105 UNPK 32(4 8) 261(3 13) WS-DEST
0005E4 96F0 8023 OI 35(8) X'F0' WS-DEST+3
000068 DISPLAY
0005E8 5820 905C L 2 92(0 9) TGTFIXD+92
0005EC 58F0 202C L 15 44(0 2) V(IGZCDSP )
0005F0 4110 A1F6 LA 1 502(0 10) PGMLIT AT +490
0005F4 05EF BALR 14 15
000069 DISPLAY
0005F6 58F0 202C L 15 44(0 2) V(IGZCDSP )
0005FA 4110 A1E0 LA 1 480(0 10) PGMLIT AT +468
0005FE 05EF BALR 14 15
3. Get the statement number from the listing here the offet
0005DA is the expansion for the statrement number 000067.
4. Using the statement number obtain the statement.
which would be something like this:
000067 MOVE WS-COMP TO WS-DEST.
Now this is the problematic statement.
Look in to this to resolve the abend.
Hope this helps.
Regards
Rameshkumar.H.K,Belgaum Karnataka.
Infosys Technology Bangalore
| Is This Answer Correct ? | 12 Yes | 6 No |
Answer / necron
Go to the xpeditor tool and press f12 ..it will
automatically stop at the record which causes S0C7 abend..
(or) you can have a look at the program dump...you will
have an abend offset address in dump which will pinpoint
where exactly the abend occurred.
| Is This Answer Correct ? | 7 Yes | 5 No |
Answer / suresh
1.Go to sysout it showing the program which is abened with number.
Open the program in changeman listing . go to the line no.
In that line no some variables used.
Take the variable and go to CEEDUMP .find the variable.Definitely the vaiable having the invalid value.Find the group level.You can see the key.
That record causing the SOC7 Abend
| Is This Answer Correct ? | 2 Yes | 1 No |
Answer / necron
Yes , the disp can be (new,catlg,keep) or (new,keep,keep)
However its a very uncoventional method to look at the
input file and determine which record is causing it.what
i'm saying here is you can determine the input record but
not the field.You may have to again goto the debugger
xpeditor to see what happens during that record.
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / srivatsa
Pick up the offset address from the executed JCL. Go to
the compiler cross reference listing. Find the offset
address in the XREF. This would give the line number in
which the abend has occured. To identify the record which
caused abend get into the sysout where the abended record
information would be displayed depending on the
installation. Through this when we map it to the record
structure we will come to know which field is caused the
abend. From this we can fix the SOC7 abend.
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / harish
HI PRAKASH,
U ARE RIGHT..
I JUST WANT TO CONFIRM ABOUT DISP PARAMETER
I HOPE ITS DISP=(NEW,KEEP,KEEP)
SO WHY WE WANT TO WASTE I/O
IF ABNORMAL TERMINATION ITS KEEPS THE WRITTEN RECORDS TILL
POSITION OF SOCO7,SO WE CAN TRACE OUT AT WHICH RECORD IT
STOPS WRITING..
TAKE THAT RECORD PUT IN XPEDITIOR,TEST ...RESTART
pls correct me if anything wrong
HARISH POOMGAME SHIVAPPA(hassan,karnataka)
NIIT TECHNOLOGY
KOLKATA
| Is This Answer Correct ? | 0 Yes | 1 No |
Answer / hi
We can easily do it by looking into SYSABEND. There you
can find the last record and last executed statement. These
two information is enough to solve S0C7.
| Is This Answer Correct ? | 1 Yes | 4 No |
ZEROES and SPACES are _______ constants (a) Figurative (b) Numeric (c) Non-numeric (d) Alphabete
how will you define vsam file in select clause?
if a>b continue display x. dispaly y. end-if display 1 display 2. display 3. what should be my output ?
How to read the 2nd last record of a VSAM file? (The file size is huge and we don't know the key)
can u plz expain me how to declare dynamic array? what is the meaning of depending on clause in dynamic array?
how do you move only numeric data from A to B 01 A pic x(10) value 'a1b2c34d5e'. 01 B pic x(5).
if we have a 10 steps how to override the 4th step in jcl?
What is COMP SYNC?
input:- A 10 20 30 40 B 5 7 10 14 C 8 12 14 16.... output:- A = 100,B=36,C=50. Here spaces are considered between numbers. When we give input as above, the numbers should be added n displayed.So please help me out.
I am sending values a and b with pic x(10) and pic x(10) by using call statement. In linkage section, I am receiving values with pic x(10) and pic x(11). Will my program fail? will it be compile error or run time abend?
i have variable record in the 5th, i want to sort from 5th filed ? how ?
study the following code 01 A1 05 B PIC 99 05 C PIC X(4) 01 A2 05 B PIC 99V99 05 C PIC A(4) pick out the valid statement from the following a.A1 and A2 can not have sub-ordinates b.A1 and A2 can have the same sub-ordinates but must have same PIC clause c.there is nothing wrong d.A1 and A2 can have same sub-ordinates provided they are not at 01 level