MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

How to read SYSSNAP dump for an EZT abend

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming
View previous topic :: View next topic  
Author Message
Deepthi
Beginner


Joined: 20 Aug 2005
Posts: 27
Topics: 6
Location: MN

PostPosted: Mon Mar 23, 2009 2:16 am    Post subject: How to read SYSSNAP dump for an EZT abend Reply with quote

I am testing few easytrives for the new R11 upgrade and encountered a S0C4 in one of them. I am unable to make out much from the dump. Can someone help please?
I am providing first few lines of the dump

PSW AT ENTRY TO SNAP 078D1000 A2601136 ILC 02 INTC 0033
PSW LOAD MODULE ADDRESS = 0052B180 OFFSET = 00000066
NAME=EPTKUT1
_________________
Thanks,
Deepthi.

Our lives begin to end the day we become silent about things that matter.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12378
Topics: 75
Location: San Jose

PostPosted: Mon Mar 23, 2009 10:40 am    Post subject: Reply with quote

Deepthi,

S0C4 may be due to

Code:

Bad Subscript/index
Protection Exception (programs running in 31 AMODE with 24-bit dependency)
Missing parameters on called subprogram
Read/Write to unopened file


In your JESMSGLG you would get a bit more details along with the reason code
Code:

ABEND=S0C4 U0000 REASON=00000010  712 


I don't know if this is still valid. There used to be a parm in easytrieve which would keep track of statements executed prior to the abend. DEBUG (STATE FLOW). STATE saves the statement number of the statement currently being executed. The statement number is then printed in the associated abnormal termination messages.
Code:

PARM LINK(EPTKUT1 R) DEBUG (STATE FLOW)   


add that statement and see if you can debug your program abend

Kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Deepthi
Beginner


Joined: 20 Aug 2005
Posts: 27
Topics: 6
Location: MN

PostPosted: Wed Mar 25, 2009 2:28 am    Post subject: Reply with quote

Thanks Kolusu. I tried the Debug parm, it did guide me to few errors but not the one I was originally encountering. We checked with systems engineer and found that we were supposed to include a new loadlib for macros.

After including the new loadlib, the job failed for out of bounds issue.

EZABX009 An index or subscript is out of range.
EZABX008 The error occurred at program statement number 32.

This is the code around line 32
Code:

30   SUB1          = 0           
31    DO WHILE SUB1 < 241       
32       IF INPUT-BYTE < ' '     
33          INPUT-BYTE = ' '     
34       END-IF                 
35       DISPLAY 'SUB1' SUB1     
36       SUB1 = SUB1 + 1         
37    END-DO                     

and the array declaration is as below.
Code:

FILE INPUT1                                           
F1               1  2   B                               
F2               3  4   B                               
F3               7  4   B                               
CTR            11 2   B                               
DESC          13 240 A                               
  INPUT-BYTE      DESC   1   A INDEX SUB1 

Input file is 252 bytes FB.

I do not see anything wrong in the declaration as well as the do-while logic using index. However the jobs failing with out of bounds error.

Weird thing was that I tried the following declaration and the job worked. Shocked
Code:

FILE INPUT1                                           
F1               1  2   B                               
F2               3  4   B                               
F3               7  4   B                               
CTR            11 2   B                               
DESC          13 240 A                               
  INPUT-BYTE      DESC   1   A INDEX SUB1 
DUMMY-VAR 253 1 A

Any ideas?
_________________
Thanks,
Deepthi.

Our lives begin to end the day we become silent about things that matter.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12378
Topics: 75
Location: San Jose

PostPosted: Wed Mar 25, 2009 12:08 pm    Post subject: Reply with quote

Deepthi wrote:

I do not see anything wrong in the declaration as well as the do-while logic using index. However the jobs failing with out of bounds error.


Deepthi,

Your declaration itself is wrong. You re-defined the DESC a length of 240 with just 1 byte bonk . You forgot the important OCCURS part. I highly doubt if you got the right results with that code.

The second declaration is just telling that the DUMMY VAR starts from pos 15 for 253 bytes. Easytrieve does not complain about mis match lRECL like cobol , that is the reason you got away with that declaration even though your input LRECL is only 252 bytes.

Ideally this is how your code should be

Code:

FILE INPUT1                                           
     F1          01   002   B                               
     F2          03   004   B                               
     F3          07   004   B                               
     CTR         11   002   B                               
     DESC        13   240   A                               
     INPUT-BYTE  DESC 001   A OCCURS 240 INDEX SUB1


30    SUB1          = 1           
31    DO UNTIL SUB1 > 240       
32       IF INPUT-BYTE(SUB1) < ' '     
33          INPUT-BYTE(SUB1) = ' '     
34       END-IF                 
35       DISPLAY 'SUB1' SUB1     
36       SUB1 = SUB1 + 1         
37    END-DO                     


_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Deepthi
Beginner


Joined: 20 Aug 2005
Posts: 27
Topics: 6
Location: MN

PostPosted: Thu Mar 26, 2009 12:27 am    Post subject: Reply with quote

Hi Kolusu,

I am sorry I should have mentioned earlier that my first try when the job failed, was to use the occurs clause and see if it was the problem. But it had failed even with the use of occurs clause. I am really sorry I did not mention it earlier.

Code:
Code:

FILE INPUT1                                           
F1               1  2   B                               
F2               3  4   B                               
F3               7  4   B                               
CTR            11 2   B                               
DESC          13 240 A                               
  INPUT-BYTE      DESC   1   A OCCURS 240 INDEX SUB1 

and the error was
Code:

EZABX009 An index or subscript is out of range.             
EZABX008 The error occurred at program statement number 32. 


Program statement number 32 is provided in my previous post.

Also, the code without the occurs clause works in R6.4 (old release)
Code fails in R11 (new release, which I am testing) with or without the use of occurs clause & the reason is same.

I also found that my code works without the dummy variable if I reduce my check limit to 240 instead of 241 in the do-while loop. But I feel, this way I will never check the last byte.

Moreover, I noticed that you have used do-until > 240 and my code works with do-while < 240. So was the "241" set as limit in my original code, the real problem?

I am really confused!! Rolling Eyes
_________________
Thanks,
Deepthi.

Our lives begin to end the day we become silent about things that matter.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12378
Topics: 75
Location: San Jose

PostPosted: Thu Mar 26, 2009 10:29 pm    Post subject: Reply with quote

Deepthi,

It does NOT matter whether you use DO WHILE or DO UNTIL , but I guess the real problem is NOT Qualifying the array. Pay attention to the code I posted.

Kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Deepthi
Beginner


Joined: 20 Aug 2005
Posts: 27
Topics: 6
Location: MN

PostPosted: Fri Mar 27, 2009 4:58 am    Post subject: Reply with quote

Hi Kolusu,

I tried with subscripts and it worked fine. Thank you Very Happy

Here is my next question -

My job has 11 EZT's (similar) and only this one was failing.
I am posting the code from a different EZT in the prev step of the failed one.

Code
Code:

FILE INPUT1                                           
F1               1  2   B                               
F2               3  4   B                               
F3               7  2   B                               
CTR            9  2   B                               
DESC          11 240 A                               
  INPUT-BYTE    INSTL_DESC   1   A INDEX SUB1   
AVAIL_FLG      251 1   A   


Input file is 251 bytes FB.

Looping is same as I have provided above for the failed one, but this one did not fail.

The arrays are not qualified in any of these 11 EZT's. I found only one difference in the one that failed & rest of the 10. For the failed EZT, array declaration was the last declaration in the file structure definition whereas for the other 10 EZT's it wasn't. The other 10 EZT's had atleast one or more file variable declaration after array declaration. This difference actually led me to introduce that dummy variable, I have mentioned in my earlier post & which worked too. Rolling Eyes
_________________
Thanks,
Deepthi.

Our lives begin to end the day we become silent about things that matter.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12378
Topics: 75
Location: San Jose

PostPosted: Fri Mar 27, 2009 10:50 am    Post subject: Reply with quote

Deepthi wrote:
I found only one difference in the one that failed & rest of the 10. For the failed EZT, array declaration was the last declaration in the file structure definition whereas for the other 10 EZT's it wasn't. The other 10 EZT's had atleast one or more file variable declaration after array declaration. This difference actually led me to introduce that dummy variable, I have mentioned in my earlier post & which worked too. Rolling Eyes


Deepthi,

It is a poor coding practice and had EZT behaved like COBOL about mismatched LRECL's and Subscripts out of range , the programs would have failed.

IMHO you really don't need 11 different EZT programs to perform a similar task. A single program could do it all

By introducing a dummy variable you are just trying to patch a hole , thats all

Kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Deepthi
Beginner


Joined: 20 Aug 2005
Posts: 27
Topics: 6
Location: MN

PostPosted: Fri Mar 27, 2009 11:54 pm    Post subject: Reply with quote

Thats true!! I am just testing already existing EZT's in production for the upcoming R11 upgrade to verify if they will run without issues after the upgrade. We found a couple of issues and this particular one was weird. Along with the R11 changes, we are also identifying and proposing to change repetitive EZT's to a single EZT. This one will change into a single EZT job & will incude the occurs clause for array declaration.

Thanks much for your help!!
_________________
Thanks,
Deepthi.

Our lives begin to end the day we become silent about things that matter.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Application Programming All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group