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

CEE0813S Insufficient storage was available


IBM Mainframe Forums -> COBOL Programming
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
kishpra

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Mon Nov 09, 2015 8:37 pm
Reply with quote

Hi All,


While running my cobol program, I am getting a below error:

CEE0813S Insufficient storage was available to satisfy a get storage (CEECZST) request. The traceback information could not be determined.

My program has the below OCCURS DEPENDING ON Clause:

Code:
01 XS-RESULTS-TABLE.
  03 XS-TABLE-ROW                 OCCURS 1 TO,150000,
                                  DEPENDING ON XS-TOTAL-NO-ROWS.
    05 XS-CCQREF                  PIC X(3).
    05 XS-DUPT-CD                 PIC X(4).
    05 XS-UID                  PIC X(8).
    05 XS-LASTNO.
      07 XS-LASTNO-TYPE           PIC X(1).
      07 XS-LASTNO-NBR            PIC 9(8).
    05 XS-TYPE                    PIC 9(4).
    05 XS-DESC                    PIC X(30).
    05 XS-ITT-CR                  PIC X(1).
    05 XS-VALUE                   PIC S9(12)V99.
    05 XS-AMT                  PIC S9(12)V99.

Please advise. It is getting compiled properly.

Code'd
Back to top
View user's profile Send private message
RahulG31

Active User


Joined: 20 Dec 2014
Posts: 446
Location: USA

PostPosted: Mon Nov 09, 2015 9:26 pm
Reply with quote

Did you read this:
http://www.ibmmainframes.com/about64194.html

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

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Mon Nov 09, 2015 9:33 pm
Reply with quote

I have used the REGION para with 0M and 256M, still getting the same error.
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: Mon Nov 09, 2015 9:35 pm
Reply with quote

Talk to your site support group. Depending upon the site options chosen at IPL time, your specifying a region size may have NO impact at all. Only someone working AT YOUR SITE can tell you this.
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 3048
Location: NYC,USA

PostPosted: Mon Nov 09, 2015 9:36 pm
Reply with quote

Code:
03 XS-TABLE-ROW OCCURS 1 TO,150000,


Use a code tag and please provide us accurate information. The error is all about the violation of the size that means potentially you have crossed the limit.
www-01.ibm.com/support/knowledgecenter/#!/SS6SG3_3.4.0/com.ibm.entcobol.doc_3.4/rllim.htm
ibmmainframes.com/about38168.html
Back to top
View user's profile Send private message
kishpra

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Mon Nov 09, 2015 9:39 pm
Reply with quote

The code is
03 XS-TABLE-ROW OCCURS 1 TO 150000

And the size of the array is 13 MB which is below 16MB
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


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

PostPosted: Mon Nov 09, 2015 9:46 pm
Reply with quote

Quote:
And the size of the array is 13 MB which is below 16MB


... and what about the size of the program, the size of any buffers for datasets &c &c... It all adds up, you know.

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

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Mon Nov 09, 2015 9:49 pm
Reply with quote

Yes all that if added should be more than 16 MB. Now my query is how can I run my program so that it runs above 16 MB and utilise the maximum storage available.

Thank you.
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 3048
Location: NYC,USA

PostPosted: Mon Nov 09, 2015 9:50 pm
Reply with quote

Why do you need 150K records btw?

Quote:
Yes all that if added should be more than 16 MB. Now my query is how can I run my program so that it runs above 16 MB and utilise the maximum storage available.


Look for AMODE,RMODE
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


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

PostPosted: Mon Nov 09, 2015 9:55 pm
Reply with quote

Quote:
Yes all that if added should be more than 16 MB. Now my query is how can I run my program so that it runs above 16 MB and utilise the maximum storage available.


Check the AMODE/RMODE of your program. If it's AMODE(31) it is capable of addressing up to 2GB. If it's RMODE(ANY) it can be loaded to run 'above the line'.

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

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Mon Nov 09, 2015 10:00 pm
Reply with quote

My program's compile listing as below:

PROCESSING OPTIONS:

ALIASES NO
ALIGN2 NO
AMODE UNSPECIFIED

SAVE MODULE ATTRIBUTES:

AC 000
AMODE 31
COMPRESSION NONE
DC NO
EDITABLE YES
EXCEEDS 16MB NO

Please let me know how to make sure it is using AMODE 31 to run above 16 MB line
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: Mon Nov 09, 2015 10:03 pm
Reply with quote

The CEECZST Callable Service routine performs acquiring additional storage for an already existing piece of storage that was acquired by the Callable Service routine CEEGTST.

Think of CEECZST as the change size (CZ) storage service and CEEGTST as the get storage (GT) storage service.

Have you tried CEEGTST first to see if you can acquire the storage?

If this is an OCCURS DEPENDING ON in LINKAGE (and it should be), obtain the value of XS-TOTAL-NO-ROWS beforehand, so you can calculate the proper GETMAIN size, which (most likely) doesn't have to be the maximum-occurs as it appears this is the reason for the ODO definition.

HTH....
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 3048
Location: NYC,USA

PostPosted: Mon Nov 09, 2015 10:09 pm
Reply with quote

Quote:
Please let me know how to make sure it is using AMODE 31 to run above 16 MB line


Talk to your support staff for whatever version control is in use they should tell you the set up.

You still did not answer, why do you need 150k records in an array?
Back to top
View user's profile Send private message
kishpra

New User


Joined: 24 May 2010
Posts: 92
Location: Pune

PostPosted: Mon Nov 09, 2015 10:18 pm
Reply with quote

My support staff says that you are exceeding the maximum allowable limits. The records are extracted from the table using a CURSOR and then moved into an array. Any other solution to overcome this?

Thank you.
Back to top
View user's profile Send private message
RahulG31

Active User


Joined: 20 Dec 2014
Posts: 446
Location: USA

PostPosted: Mon Nov 09, 2015 10:50 pm
Reply with quote

Quote:
The records are extracted from the table using a CURSOR and then moved into an array. Any other solution to overcome this?

It depends on what you are trying to do after moving them into the Array.

What is the need to move all the rows into the array?

And please read what Bill had said:
Quote:
If this is an OCCURS DEPENDING ON in LINKAGE (and it should be), obtain the value of XS-TOTAL-NO-ROWS beforehand, so you can calculate the proper GETMAIN size, which (most likely) doesn't have to be the maximum-occurs as it appears this is the reason for the ODO definition.


Remember it has to be in a Linkage Section

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

Active User


Joined: 20 Dec 2014
Posts: 446
Location: USA

PostPosted: Mon Nov 09, 2015 11:05 pm
Reply with quote

Just to clarify when I say it 'has' to be in a Linkage Section, I mean, If you want to use ODO. There won't be any compilation issues if it is present in Working Storage Section but then, in that case, it will use the maximum storage.

If you put it in Linkage Section, it won't occupy memory space. Dynamic memory will be allocated using CEEGTST and memory can be resized using CEECZST and ultimately be freed using CEEFRST.

.
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator


Joined: 21 Sep 2010
Posts: 3048
Location: NYC,USA

PostPosted: Mon Nov 09, 2015 11:07 pm
Reply with quote

Quote:
The records are extracted from the table using a CURSOR and then moved into an array. Any other solution to overcome this?


1. Why would you like to extract 150K in a program?
2. If at all you need it then please use a utility to unload them first in a file and then supply that file to the program( instead of cursor) and then move further ( one at a time sequentially)
3.It is a bad design at first place to have a 150k of rows fetched from the a cursor.
4. Last one if you tell us the reason why you want to populate 150k (possibly) in one shot instead of processing each row one by one?
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: Mon Nov 09, 2015 11:29 pm
Reply with quote

What compiler are you using? Compile options? Where is this data-definition?

Why do you think the problem is there?
Back to top
View user's profile Send private message
don.leahy

Active Member


Joined: 06 Jul 2010
Posts: 765
Location: Whitby, ON, Canada

PostPosted: Tue Nov 10, 2015 8:11 pm
Reply with quote

Did you check the obvious? i.e. what Region size is your job using?

Code:
 CEE0813S  Insufficient storage was available to satisfy a get storage     
           (CEECZST) request.                                               
                                                                           
 Explanation:  There was not enough free storage available to satisfy a get
 storage call to CEEGTST or reallocate request call to CEECZST.             
                                                                           
 Programmer Response:  Ensure that the REGION size is sufficient to run the
 application. Ensure that the size parameter in the get storage request is 
 not an unusually large number. Verify that the storage sizes specified in 
 the HEAP and STACK run-time options are reasonable, given the region size 
 allocated to the application.  Verify that you are using storage options   
 that get your storage from above the line, if you can, since you can run   
 out of storage below the line much more easily.                           
                                                                           
 System Action:  No storage is allocated. The value of the address         
 parameter is undefined.                                                   
                                                                           
 Symbolic feedback code:  CEE0PD                                           
                                                                           
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 -> COBOL Programming

 


Similar Topics
Topic Forum Replies
No new posts CLIST - Virtual storage allocation error CLIST & REXX 5
No new posts CICS vs LE: STORAGE option CICS 0
No new posts Insufficient Storage ABENDS & Debugging 7
No new posts Interviewers are surprised with my an... Mainframe Interview Questions 6
No new posts is there an API to use cloud storage ... All Other Mainframe Topics 2
Search our Forums:

Back to Top