View previous topic :: View next topic
|
Author |
Message |
shankarm
Active User
Joined: 17 May 2010 Posts: 175 Location: India
|
|
|
|
Hi,
I have a S0c7 abend. In the logs it gives the offset as +00000D8E.
So, I recompiled the job with 'LIST' parameter and searched for the offset in the compilation logs. I got a match (Check below)
Code: |
000287 ADD
.
.
.
000D8A 960F D1DC OI 476(13),X'0F'
000D8E FA41 D1D8 D1D0 AP 472(5,13),464(2,13)
000D94 D204 41C5 D1D8 MVC 453(5,4),472(13)
.
.
.
|
0D8E is the offset address for AP 472(5,13),464(2,13) statement.
As we know, one cobol statement is broken down into multiple assebler statements.
The equivalent cobol statement is 'ADD' and its statement number in the program is 287.
I searched for 287 in the program and i got the below match,
Code: |
000287 1 00278 ADD RECORD-COUNT TO H-P-NBR-PER2 (RECORD-COUNT
000288 1 00279 H-P-NBR-PER4
|
I concluded that the s0c7 is in the add statement shown above.
is the above approach correct?
If I am correct, can some one tell me what is 'FA41 D1D8 D1D0' in the below statement?
Code: |
000D8E FA41 D1D8 D1D0 AP 472(5,13),464(2,13)
|
I have copied all these from the compilation job. |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
Code: |
ADD RECORD-COUNT TO H-P-NBR-PER2 (RECORD-COUNT |
the above does not make any sense, you have truncated something.
show us the code
also, data definitions of the fields involved..............
and as a guess,
if you indeed have the offending instruction,
the value of RECORD-COUNT is your culprit.
since soc7's involves a non-numeric in a source field. |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8697 Location: Dubuque, Iowa, USA
|
|
|
|
Find the Principles of Operation manual on the IBM web ste. It lists the translation of every assembler instruction, including this one on page 8.6:
AP D1(L1,B1),D2(L2,B2) is the instruction where
FA means Add Decimal (IBM's term for Add Packed)
4 length of D1 (lengths in translation are 1 less, so the 5 becomes a 4)
1 length of D2
D base register B1 (13 is D)
1D8 offset D1 (472 is 1D8 hex)
D base register B2 (13 is D)
1D0 offset D2 (464 is 1D0 hex) |
|
Back to top |
|
|
shankarm
Active User
Joined: 17 May 2010 Posts: 175 Location: India
|
|
|
|
sorry,
Code: |
ADD RECORD-COUNT TO H-P-NBR-PER2 (RECORD-COUNT)
H-P-NBR-PER4
|
is the code.
Definition,
Code: |
03 H-P-NBR-PER2 PIC 9(09) COMP-3 VALUE 0
OCCURS 250 TIMES.
03 H-P-NBR-PER4 PIC 9(09) COMP-3 VALUE 0.
77 RECORD-COUNT PIC 9(003) COMP-3 VALUE 0.
|
|
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
You have to ensure that all the compile options which affect code are the same when you did the recompile.
A short-cut to that probably being true is if the dump is pointing to the identical instruction.
Code: |
000D8E FA41 D1D8 D1D0 AP 472(5,13),464(2,13) |
There is more than that on the listing, further to the right. That is useful stuff, so please post it, even if you have to split the line.
The instruction is decimal addition. If you conver D, 1D8 and 1D0 to decimal, you'll see the relationship to the second part shown (after the AP). The 4 and 1 are also telling you something, which appears in the second part as 5 and 2.
Check out the Principles of Operation for a full understanding of the instruction, let us know if there is something there you don't understand. |
|
Back to top |
|
|
shankarm
Active User
Joined: 17 May 2010 Posts: 175 Location: India
|
|
|
|
Thanks for this wonderful info. I will check. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
Code: |
ADD RECORD-COUNT TO H-P-NBR-PER2 (RECORD-COUNT) |
Why is the "count", which is also the subscript, being added to the PER2 field? |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
what proceeds RECORD-COUNT in your data-layout?
since your system seems to be plagued with 'table overflow' problems,
a guess is that RECORD-COUNT is non-numeric.
for that to be so, it could have been overlay'd
by something. |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
RECORD-COUNT, if it is genuinely named, is a very unlikely subscript. As the 134217728th record rolls by, it's definitely going to blow, but likely much before then :-) |
|
Back to top |
|
|
|