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

Insufficient storage while running a cobol program


IBM Mainframe Forums -> ABENDS & Debugging
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 7:16 pm
Reply with quote

Hi,

We have made a few changes in an existing COBOL program and are trying to run it. The program has compiled fine, but while running the program in the job we are getting error message as:
Code:

IEW4000I FETCH FOR MODULE LNCY330  FROM DDNAME SYS00001 FAILED BECAUSE INSUFFICIENT STORAGE WAS AVAILABLE.
CSV031I LIBRARY ACCESS FAILED FOR MODULE LNCY330 , RETURN CODE 24, REASON CODE 26080021, DDNAME SYS00001 


RUN PROGRAM(LNCY330)        PLAN(LNCY330)         LIB('JSULNC.BATCH.LOADLIB')
NOT ABLE TO LINK TO PROGRAM LNCY330 IN DSNAME JSULNC.BATCH.LOADLIB           


Can somebody define why we are getting the error message.

Thanks,
Kumar
Back to top
View user's profile Send private message
expat

Global Moderator


Joined: 14 Mar 2007
Posts: 8797
Location: Welsh Wales

PostPosted: Thu Jul 10, 2008 7:27 pm
Reply with quote

What do the messages and codes books for

IEW4000I
CSV031I

tell you about the error ?
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 7:57 pm
Reply with quote

The error IEW400I is as follows:
Code:

IEW4000I FETCH FOR MODULE program-name FROM DDNAME ddname FAILED BECAUSE
       INSUFFICIENT STORAGE WAS AVAILABLE.                               
                                                                         
Explanation:  There was insufficient storage available to load the load 
module or program object.                                               
                                                                         
System Action:  An abend will occur unless the program was loaded by a   
LOAD macro with the ERRET option specified.                             
                                                                         
User Response:  Rerun the job with a larger region size specified.       


Actually we have increased working storage of the program and now are not able to run it. I have tried increasing the region parameter for the step in which the program is getting executed, but nothing is working.

Regards,
Kumar
Back to top
View user's profile Send private message
Craq Giegerich

Senior Member


Joined: 19 May 2007
Posts: 1512
Location: Virginia, USA

PostPosted: Thu Jul 10, 2008 8:00 pm
Reply with quote

Are you sure the program is in the library you have specified? Is the loadlib you have specified formatted correctly?
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 8:01 pm
Reply with quote

Yup,

I am sure of the program library and loadlib. Everything is fine

Regards,
kumar
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: Thu Jul 10, 2008 8:18 pm
Reply with quote

Quote:
Everything is fine
yet you're getting memory problems. How much memory do you have specified on the EXEC or JOB statement? Can you post the JES memory usage line from your output? How much did you increase working storage by? How much did you increase your region parameter by?
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 9:27 pm
Reply with quote

Hi Robert,

I have tried the following region parameters:
Code:

//JULNWO5  JOB (JSUBLNC,P-9),'LNCY330',CLASS=L,MSGCLASS=D,
//         REGION=1024M,NOTIFY=JULN01                     


I have changed the REGION parameter from 8M to 4096M, but none is helpful.
I also tried to used the region parameter in the procstep from some K to 2047M, but nothing is helping in the job run.

I have increased three arrays in the program from 2000 to 4000 which is declared as PIC X.

Regards,
Nirmal
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Jul 10, 2008 9:33 pm
Reply with quote

Hello,

Try using REGION=0M (zeroM).

Changing a few entries from around 2k to around 4k should not cause your problem.

Look at the total length of your linked module.

Does your program invoke some other big piece of code (like an nternal sort, or some other utility)?
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: Thu Jul 10, 2008 9:44 pm
Reply with quote

Nirmal: JOB region should override EXEC region and 4096M is a huge area; I've never run a job needing anywhere close to 4GB. You definitely need to look at the load module size from your compile output; also, post the JES message log output for the step that's failing to see how much memory is being provided. There are system exits that can be used to limit how much memory your job gets, no matter what you ask for.
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 9:46 pm
Reply with quote

Hi Dick,

I have tried using 0M, still it failed.
There is not program invoked in this program, there is a sort utility used in the second step of the job but thats optional and runs depending upon the return code of the previous step(in which the Cobol DB2 program is running).

Could you tell me how to check the length of the linked module.

Regards,
Kumar
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 9:50 pm
Reply with quote

Hi Robert,

Below are the JES messages for the particular step:
Code:

.IEF236I ALLOC. FOR JULNWO5 PLNWO501 PLNWO5   
.IEF237I 049C ALLOCATED TO STEPLIB             
.IEF237I 0405 ALLOCATED TO                     
.IEF237I 047C ALLOCATED TO SYSTSIN             
.IEF237I 0485 ALLOCATED TO LNCDU01             
.IEF237I JES2 ALLOCATED TO LNCR330A           
.IEF237I JES2 ALLOCATED TO LNCR330B           
.IEF237I JES2 ALLOCATED TO SYSTSPRT           
.IEF237I JES2 ALLOCATED TO SYSPRINT           
.IEF237I JES2 ALLOCATED TO SYSOUT             
.IEF237I JES2 ALLOCATED TO SYSOUD             
.IEF237I JES2 ALLOCATED TO SYSABOUT           
.IEF237I JES2 ALLOCATED TO SYSUDUMP           
.IEF237I 0405 ALLOCATED TO SYS00001 
IEW4000I FETCH FOR MODULE LNCY330  FROM DDNAME SYS00001 FAILED BECAUSE INSUFFICIENT STORAGE WAS AVAILABLE.
CSV031I LIBRARY ACCESS FAILED FOR MODULE LNCY330 , RETURN CODE 24, REASON CODE 26080021, DDNAME SYS00001 
.IEF285I   JSULNC.BATCH.LOADLIB                         KEPT         
.IEF285I   VOL SER NOS= TST144.                                     
.IEF142I JULNWO5 PLNWO501 PLNWO5 - STEP WAS EXECUTED - COND CODE 0008
.IEF285I   SYSDBJ.#S00.DB03.DSNLOAD                     KEPT         
.IEF285I   VOL SER NOS= MVSGA3.                                     
.IEF285I   JSULNC.BATCH.LOADLIB                         KEPT         
.IEF285I   VOL SER NOS= TST144.                                     
.IEF285I   JSULNC.DB2.RUNPARM                           KEPT         
.IEF285I   VOL SER NOS= TST26C.                                     
.IEF285I   JSULNC.LNCDU01.G1515V00                      KEPT         
.IEF285I   VOL SER NOS= TST395.                                     
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000101.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000102.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000103.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000104.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000105.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000106.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000107.?           SYSOUT       
.IEF285I   JULNBH.JULNWO5.JOB07231.D0000108.?           SYSOUT       
IEF373I STEP/PLNWO501/START 2008192.1712                         
IEF374I STEP/PLNWO501/STOP  2008192.1712 CPU    0MIN 00.03SEC SRB
         


Now could you explain how to check the load module size. Please let me know if any more information required.

Regards,
Nirmal
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 9:56 pm
Reply with quote

At the end of the step, it has the following space information:
Code:

    0MIN 00.00SEC VIRT   472K SYS   460K EXT     252K SYS   12348K


Please help,
Nirmal
Back to top
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2546
Location: Silicon Valley

PostPosted: Thu Jul 10, 2008 10:11 pm
Reply with quote

Could you be in a loop that allocates storage without freeing? A recursive routine?
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Jul 10, 2008 10:12 pm
Reply with quote

Hello,

Quote:
Could you tell me how to check the length of the linked module.
In the SYSPRINT from the link edit step, you should see something very much like this:
Code:
 MODULE SIZE (HEX)   00001E80

For your problem, the size is only an issue in the step that abends - not any of the other steps.
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Thu Jul 10, 2008 10:20 pm
Reply with quote

The link module is showing the below space:

Code:

MODULE SIZE (HEX)   00994950


Could you explain how much space it is and how to change the JCL so that to run the program successfully.

Regards,
Nirmal
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: Thu Jul 10, 2008 11:23 pm
Reply with quote

994950 hex bytes is 10,045,776 decimal bytes -- a big program. Your message indicates your program is getting 472K, thus explaining the memory error. If this program is compiled and linked as a 24-bit module, you may not have enough below-the-line storage to run the program (if this is the case, your only option will be to compile and link the code to run above the line); it's rare to have more than 9 or 10 megabytes free below the line due to system overhead. You may check with your site system programmers to see if a storage limit is imposed on your job, too. You may have to run in a different job class if there is a limit. In any case, if you're specifying 0M or some large value for REGION on the JOB or EXEC statement it doesn't appear that you're getting it.
Back to top
View user's profile Send private message
dick scherrer

Moderator Emeritus


Joined: 23 Nov 2006
Posts: 19244
Location: Inside the Matrix

PostPosted: Thu Jul 10, 2008 11:58 pm
Reply with quote

Hello,

That says your load module is 10,045,776 bytes.

Near the top of the link edit SYSPRINT will be somehting like:
Code:
  OFFSET   OFFSET  NAME                TYPE    LENGTH
                                                     
                0  YOURPGM            CSECT      122C
Please post that from your link edit.

I'm curious to see how much of the size is your code versus other components that were linked into the module.

It may be that your module was already near the limit and adding only a few k caused the problem. Either way, the amount of storage needed is far greater than was shown earlier.
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Fri Jul 11, 2008 5:19 pm
Reply with quote

Hi Dick

Below is the space data from the link edit SYSPRINT
Code:

CLASS  B_TEXT            LENGTH =   994950  ATTRIBUTES = CAT,   LOAD, RMODE= 24
                         OFFSET =        0 IN SEGMENT 001       ALIGN = DBLWORD
---------------                                                               
                                                                               
 SECTION    CLASS                                      ------- SOURCE --------
  OFFSET   OFFSET  NAME                TYPE    LENGTH  DDNAME   SEQ  MEMBER   
                                                                               
                0  LNCY330            CSECT    9935D8  SYSLIN    01  **NULL** 


From this its clear that the program module needs a huge space to run.
In the old code ( before increasing the space) the space was nearly half:
Code:

CLASS  B_TEXT            LENGTH =   4FBA38  ATTRIBUTES = CAT,   LOAD, RMODE= 24
                         OFFSET =        0 IN SEGMENT 001       ALIGN = DBLWORD
---------------                                                               
                                                                               
 SECTION    CLASS                                      ------- SOURCE --------
  OFFSET   OFFSET  NAME                TYPE    LENGTH  DDNAME   SEQ  MEMBER   
                                                                               
                0  LNCY330            CSECT    4FA6C0  SYSLIN    01  **NULL** 
 


So now as the program size is increased please help me how to run the job. I already have tried to change the CLASS in the job card, but it still failing.

Regards,
Nirmal
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Jul 11, 2008 5:29 pm
Reply with quote

the only external help You can get is a conceptual one...
make more memory available to Your program!

how to do it... that' s a different issue,
You must speak with Your system support in order to understand what customizations have been done to limit the amount of storage available
and have the issue fixed to provide what You need
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 Jul 11, 2008 5:59 pm
Reply with quote

Your program is a 24-bit module. You absolutely must talk to your systems programmer about whether or not you can run a 10-million-byte program on your system. If your systems programmer indicates that your system doesn't have 10 million bytes of storage below the line available, you have 2 options: reduce the load module size to a value the systems programmer tells you can run on your system, or change the program to run in 31-bit mode (which may be a very difficult process, depending on what the program is doing and how it does it).

Changing job class or REGION parameter will not allow this program to run if your system does not have the available storage. I suspect based on your previous posts that your systems programmer will tell you that your system does not have enough memory to allow this program to execute.
Back to top
View user's profile Send private message
enrico-sorichetti

Superior Member


Joined: 14 Mar 2007
Posts: 10872
Location: italy

PostPosted: Fri Jul 11, 2008 6:23 pm
Reply with quote

I had not noticed that the program had rmode 24...
i still think that the only way is to coordinate with the support group
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Fri Jul 11, 2008 6:42 pm
Reply with quote

Thanks all,

I am in touch with the support group but not getting any update since last two days, hopefully they will come back with some solution.

Enrico,
could you tell me what's the significance of RMODE=24.

Regards,
Nirmal
Back to top
View user's profile Send private message
kedianirmal

New User


Joined: 08 Feb 2008
Posts: 82
Location: Bangalore, India

PostPosted: Fri Jul 11, 2008 6:47 pm
Reply with quote

Robert,

Quote:
change the program to run in 31-bit mode


Do you mean we need the whole mainframe to be upgraded to 31 bit and now we are using 24 bit mainframe?

Regards,
Nirmal
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 Jul 11, 2008 6:54 pm
Reply with quote

No, all IBM computers for quite a few years support 31-bit addressing. The latest generations support 64-bit addressing, even. However, your program is specifically coded to use 24-bit addressing. The COBOL option DATA(31) along with specifying AMODE(31),RMODE(ANY) in your linkage step will convert your program to 31-bit addressing. However, if there are subroutines that require 24-bit addressing, doing this can cause them to generate S0C4 abends since you may pass an address to the subroutine that it cannot access.
Back to top
View user's profile Send private message
Bill Dennis

Active Member


Joined: 17 Aug 2007
Posts: 562
Location: Iowa, USA

PostPosted: Fri Jul 11, 2008 7:08 pm
Reply with quote

kedianirmal wrote:
could you tell me what's the significance of RMODE=24
Using 24 bit addressing, your progam MUST reside within the first 16MB of the memory range. A lot of that range is used for system code usually leaving only 9 to 10MB free for user programs. You have exceeded that limit.

You;ll need to investigate using 31-bit addressing or reduce the array sizes.
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 -> ABENDS & Debugging Goto page 1, 2  Next

 


Similar Topics
Topic Forum Replies
No new posts Replace each space in cobol string wi... COBOL Programming 3
No new posts Using API Gateway from CICS program CICS 0
No new posts Running REXX through JOB CLIST & REXX 13
No new posts COBOL -Linkage Section-Case Sensitive COBOL Programming 1
No new posts COBOL ZOS Web Enablement Toolkit HTTP... COBOL Programming 0
Search our Forums:

Back to Top