Portal | IBM Manuals | Downloads | Products | Refer | Info | Programs | JCLs | Forum Rules*| Site Map | Mainframe CD 
IBMMAINFRAMES.com - IBM Mainframe Support Forums Index
 
Register
 
IBMMAINFRAMES.com - IBM Mainframe Support Forums Index FAQ Search Memberlist Usergroups Profile Log in to check your private messages Log in
 
How to find abending instruction if PSW has invalid addr?

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> PL/I & ASSEMBLER
Author Message
Bharanidharan

Active User


Joined: 20 Jun 2005
Posts: 100
Location: Chennai, India

PostPosted: Wed Mar 22, 2006 5:38 pm    Post subject: How to find abending instruction if PSW has invalid addr?
Reply with quote

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
View user's profile Send private message
References
sureshgreetsu1

New User


Joined: 14 Mar 2005
Posts: 3
Location: chennai

PostPosted: Thu Mar 23, 2006 1:20 pm    Post subject: Re: How to find abending instruction if PSW has invalid addr
Reply with quote

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
View user's profile Send private message
Bharanidharan

Active User


Joined: 20 Jun 2005
Posts: 100
Location: Chennai, India

PostPosted: Fri Mar 24, 2006 9:12 am    Post subject: Re: How to find abending instruction if PSW has invalid addr
Reply with quote

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
View user's profile Send private message
kalpana

New User


Joined: 19 Nov 2004
Posts: 25
Location: Banglore

PostPosted: Mon Mar 27, 2006 3:21 pm    Post subject: Re: How to find abending instruction if PSW has invalid addr
Reply with quote

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
View user's profile Send private message
Bharanidharan

Active User


Joined: 20 Jun 2005
Posts: 100
Location: Chennai, India

PostPosted: Mon Mar 27, 2006 6:16 pm    Post subject:
Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> PL/I & ASSEMBLER All times are GMT + 6 Hours
Page 1 of 1