|
|
| Author |
Message |
Bharanidharan
Active User
Joined: 20 Jun 2005 Posts: 100 Location: Chennai, India
|
|
|
|
Hello,
I have encountered a S0C1 where PSW shows 078D0000 00000010. This clearly shows execution sequence has gone haywire, since my entry point shows 00007E38 (there is only one source module in the chain).
All I am having in SYSUDUMP is PSW, entry point and snap of the load module. My shop does not have utilities like abend-aid.
Is there any way by which we could narrow down the abending instruction in the source? Or am I missing some data in SYSUDUMP?
Appreciate your help. |
|
| Back to top |
|
 |
References
|
|
 |
sureshgreetsu1
New User
Joined: 14 Mar 2005 Posts: 3 Location: chennai
|
|
|
|
| search for '7E38' in compile listings of your program. then u will find the next instruction to be executed. the previous instruction to this one will be the abending instruction |
|
| Back to top |
|
 |
Bharanidharan
Active User
Joined: 20 Jun 2005 Posts: 100 Location: Chennai, India
|
|
|
|
No Suresh, 7E38 is the entry point (starting of CSECT), and in no way related to the abending instruction.
I could always force user abends, or see snaps of user area at various stages and narrow down the bombing place, but I feel that is not the right method to resolve this issue. Please let me know if a better approach exists. |
|
| Back to top |
|
 |
kalpana
New User
Joined: 19 Nov 2004 Posts: 25 Location: Banglore
|
|
|
|
1. Find for 'PSW'and take the right most bytes.
PSW AT ENTRY TO ABEND 078D2E00 8BFF90EA
2. Find for 'STARTS' -This will give you the starting address of the corresponding link card of the transaction.
3. Subtract 1-2 which will give you the difference.
4. Go to the list of linkcard and find for OFFSET . A listing similar to this can be seen.
Suppose the difference whatever we have calculated above is FDE ,then the instruction which causes abend is in PLIMAIN.
CLASS ------- SOURCE ------
OFFSET NAME TYPE LENGTH DDNAME SEQ MEMBER
0 STARTPLI CSECT 140 SYSLIB 09 STARTPL
140 CSASIZE CSECT 8 SYSLIB 09 CSA150K
148 PLISTART CSECT 80 SYSLIB 08 D900RT
14C PLICALLA LABEL
150 PLICALLB LABEL
1C8 *D900RT1 CSECT A6C SYSLIB 08 D900RT
1D0 D900RT LABEL
C38 *D900RT2 CSECT 364 SYSLIB 08 D900RT
FA0 PLIMAIN CSECT 8 SYSLIB 08 D900RT
Now to find the exact instruction,
1.Subtract the difference what we got above (1-2) with the starting address of program as seen in linklist. This will give the offset within the program.
In our example it is (FDE-FA0) = 3E.
2. Go to the listing of the corresponding program and go to offset calculated ,this gives the next instruction to be executed.
Thus the instruction above it is the cause for ABEND. |
|
| Back to top |
|
 |
Bharanidharan
Active User
Joined: 20 Jun 2005 Posts: 100 Location: Chennai, India
|
|
|
|
Unfortunately, this doesn't help my cause. When we encounter S0C1, our PSW may fail us as far as NSI (next sequential instruction) is concerned. For example, if we code "B R14" instead of "BR R14", it will result in S0C1 since R14 would be a EQU, instead of a label name (base + displacement). This would cause a wrong address to be loaded into the execution sequence. The scenario I encountered falls under this category, in which case you will never see a valid address in PSW.
Regards,
Bharani. |
|
| Back to top |
|
 |
|
|