IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

PLI program - LE error - U4088 with RC: X'7A'


IBM Mainframe Forums -> PL/I & Assembler
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Fri Nov 25, 2011 2:29 pm
Reply with quote

Hi,

One of my job in production abended with U4088 with reason code 7A while executing a Enterprise PLI program. When i look into the SYSABEND (Abendaid) dump it has the message as below .I was not able to get anything from SYMDUMP in IPCS.When i searched in the IBM PUBlib ,i could find LE abend code U4088,however there was no explanation for reason code 007A.

I gave compiler options SIZE(MAX),STORAGE.... and REGION=0M,DYNAMNBR=100 in JCL but no use.


The input file(PS,F) for the program has 532 records for same insurance policy,i know it has duplicate records and the pupose of the PLI program is to remove the duplicates .When i remove 216 records exactly ,the program executes fine and there was no 4088.

I have no idea how to use the SYMDUMP in IPCS ,but i have posted a part of SYSMDUMP below.

Error:
"During stack increment processing an invalid stack segment was found"

I`m using z/OS 01.12.00.

Any of your help on this issue would be much appreciated.Thank you!!!!


------------------------SYMPTOM DUMP------------------------------------
IEA995I SYMPTOM DUMP OUTPUT 965
USER COMPLETION CODE=4088 REASON CODE=0000007A
TIME=01.09.53 SEQ=23510 CPU=0000 ASID=0037
PSW AT TIME OF ERROR 078D1600 80008F24 ILC 2 INTC 0D
ACTIVE LOAD MODULE ADDRESS=00007160 OFFSET=00001DC4
NAME=CEEBINIT
DATA AT PSW 00008F1E - 00181610 0A0DA7F4 001C1811
AR/GR 0: 00000000/84000000 1: 00000000/84000FF8
2: 00000000/0000007A 3: 00000000/25F0CF18
4: 00000000/000D3000 5: 00000000/8000F8E8
6: 00000000/00023340 7: 00000000/000237F0
8: 00000000/80000000 9: 00000000/000253FC
A: 00000000/00000001 B: 00000000/80008E50
C: 00000000/80024B88 D: 00000000/000D3018
E: 00000000/8000F956 F: 01000002/0000007A
END OF SYMPTOM DUMP
-------------------------------------------END oF SYMPTOm DUMP--------------


------------------------------AbendAid---------------------------------------------

A Language Environment U4088 abend occurred.

*******************************************
* Analysis of Error *
*******************************************


Language Environment issued user abend 4088, reason code 0000007A.

A storage condition has occurred during processing of a storage
condition.

During stack increment processing an invalid stack segment was found.
*******************************************
* Error Location *
*******************************************

The location of the error could not be resolved to an application
program.

-------------------------End Abend Aid--------------------------------------------


-----------------------------SYMDUMP---(Analyze)-------------------------------
BLS18058I Warnings regarding STRUCTURE(Pvt) at ASID(X'0001') FFB250:
BLS18059I Located via STRUCTURE(Cvt) at ASID(X'0001') FDAE88
BLS18300I Storage not in dump
---------------------------------------------------------------------------------





[/img]
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Fri Nov 25, 2011 2:38 pm
Reply with quote

www-01.ibm.com/support/docview.wss?uid=isg1PQ83997
Back to top
View user's profile Send private message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Fri Nov 25, 2011 4:34 pm
Reply with quote

Thanks Peter.

From LE Run-Time messages manual for U4088 - X'7A' 122,
For reason codes 91–20x, probable internal malfunction or storage corruption.Use the STORAGE run-time option to get more information about the environment leading up to the out-of-storage condition or allow a user handler to get control and respond to the condition.

registers at the time of error,
R0 R2 R4
4866E83AB8000000 4865616B58000000 4280000000000000

R6
0000000000000000

It states that its a program error,I don't know how to locate the line of program that has the problem.

Can u pls let me know how to locatate the lline of code that has issue and whats needs to be done?
Back to top
View user's profile Send private message
PeterHolland

Global Moderator


Joined: 27 Oct 2009
Posts: 2481
Location: Netherlands, Amstelveen

PostPosted: Fri Nov 25, 2011 4:47 pm
Reply with quote

Quote:

*******************************************
* Error Location *
*******************************************

The location of the error could not be resolved to an application
program.


Sorry,

cant help you icon_sad.gif
Back to top
View user's profile Send private message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Fri Nov 25, 2011 5:01 pm
Reply with quote

Peter,Thanks for looking into this...

Can we do anything with the offset or addresses to locate the program.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Nov 25, 2011 5:53 pm
Reply with quote

Quote:
Can we do anything with the offset or addresses to locate the program.
Why do you want to do this? Since the system has already told you that it is SYSTEM, not APPLCIATION, related, unless you work for IBM and can get into the source for the LE run-time programs, you have no business monkeying with that address since there's nothing you can do with it, anyway.
Back to top
View user's profile Send private message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Fri Nov 25, 2011 6:15 pm
Reply with quote

Hi Robert,

So.What i need to do with these abends to resovle other than stripping off the record from the input file?
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Nov 25, 2011 6:53 pm
Reply with quote

Quote:
So.What i need to do with these abends to resovle other than stripping off the record from the input file?

fix the program so that it does not clobber storage when processing more than 216 records icon_cool.gif
isn' that obvious icon_question.gif
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Nov 25, 2011 6:58 pm
Reply with quote

I echo enrico's suggestion.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Nov 25, 2011 7:02 pm
Reply with quote

follown on...
just follow the hint given by the manual...
Quote:
Use the STORAGE run-time option to get more information about the environment leading up to the out-of-storage condition or allow a user handler to get control and respond to the condition.
Back to top
View user's profile Send private message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Fri Nov 25, 2011 7:29 pm
Reply with quote

Hi Enrico,

I ran with STORAGE compiler option from starting.Do i need to look for any particular thing?... i Just posted whatever i got and no clue for me to pursue futher.
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Fri Nov 25, 2011 7:54 pm
Reply with quote

Quote:
The input file(PS,F) for the program has 532 records for same insurance policy,i know it has duplicate records and the pupose of the PLI program is to remove the duplicates .


Just curious.... why not scrap this program and use DFSORT (or SYNCSORT) to remove those pesky duplicates?

Garry.
Back to top
View user's profile Send private message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Sat Nov 26, 2011 3:04 pm
Reply with quote

I got this fixed today,i got few arrays in the program ,i just increased the size of the array and included SIZE(MAX) process option.

Garry, it has other business functionalities other than removing duplicates.So i was not use utilities.

Thanks for evryone's help on this..... icon_smile.gif
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Sun Nov 27, 2011 3:55 am
Reply with quote

Next time compile your program with SUBSCRIPTRANGE, STRINGRANGE, SIZE and STRINGSIZE prefixes and you will get a decet messagewhen you exceed array bounds.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Sun Nov 27, 2011 5:54 am
Reply with quote

And how about fixing the code, so you only get the messages from Prino's excellent suggestion when something is screwed, not just as a matter of course when you fill a table and continue wandering on down through the program, stomping and stamping until something, sometimes, maybe, if you are lucky, goes BANG!

EDIT:

Quote:
...the pupose of the PLI program is to remove the duplicates


Quote:
Garry, it has other business functionalities other than removing duplicates.


Now that you've got me all picky, what's that all about? Which of these quotes do you regard as "wrong"? The misleading one, or the cover-up?

Further EDIT:

Quote:
I gave compiler options SIZE(MAX)


Quote:
i just increased the size of the array and included SIZE(MAX) process option.


Just picky.

I suppose since you only fixed it about 10%, you didn't think to thank enrico for pointing out the obvious. Remember, if you don't do it properly, it'll mess up again when it reaches your new table limits.
Back to top
View user's profile Send private message
Bill O'Boyle

CICS Moderator


Joined: 14 Jan 2008
Posts: 2501
Location: Atlanta, Georgia, USA

PostPosted: Sun Nov 27, 2011 6:51 am
Reply with quote

If you can somehow pass the number of records in the file to the program, along with the record-length, you can use several methods of Dynamic Storage Allocation, such as "CONTROLLED" (PL/I), Callable Service routine "CEEGTST" (LE), or STORAGE OBTAIN/MVS GETMAIN (z/OS, sub-program required).

So, you can dynamically build the array each time and you won't have to worry about not allocating enough storage.

Just another idea....

Mr. Bill
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1306
Location: Vilnius, Lithuania

PostPosted: Sun Nov 27, 2011 12:52 pm
Reply with quote

Sivanesh wrote:
... and included SIZE(MAX) process option. ...


Which has abso-fwecking-lutely nothing, zero-point-zero, zilch to do with the final load module.
Back to top
View user's profile Send private message
Sivanesh

New User


Joined: 12 May 2011
Posts: 10
Location: India

PostPosted: Tue Nov 29, 2011 10:14 am
Reply with quote

Lots of thanks to enrico and prino,

I never misleading or forget to thank anyone lol... icon_smile.gif.. you guys are doing great job

After i exhauseted ,I got created a SV dump and figured out the exact location of the program,which had the static array. Now, I changed that to dynamic one and changed the size compiler option to MAX,it worked.

Thanks Guys!!!
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> PL/I & Assembler

 


Similar Topics
Topic Forum Replies
No new posts Using API Gateway from CICS program CICS 0
No new posts Error to read log with rexx CLIST & REXX 11
No new posts Error when install DB2 DB2 2
No new posts CLIST - Virtual storage allocation error CLIST & REXX 5
No new posts DB2 Event passed to the Application P... DB2 1
Search our Forums:

Back to Top