View previous topic :: View next topic
|
Author |
Message |
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
expat
Global Moderator
Joined: 14 Mar 2007 Posts: 8797 Location: Welsh Wales
|
|
|
|
What do the messages and codes books for
IEW4000I
CSV031I
tell you about the error ? |
|
Back to top |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
Craq Giegerich
Senior Member
Joined: 19 May 2007 Posts: 1512 Location: Virginia, USA
|
|
|
|
Are you sure the program is in the library you have specified? Is the loadlib you have specified formatted correctly? |
|
Back to top |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
Yup,
I am sure of the program library and loadlib. Everything is fine
Regards,
kumar |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
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 |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2546 Location: Silicon Valley
|
|
|
|
Could you be in a loop that allocates storage without freeing? A recursive routine? |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
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 |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10872 Location: italy
|
|
|
|
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 |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
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 |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10872 Location: italy
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 82 Location: Bangalore, India
|
|
|
|
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 |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
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 |
|
|
Bill Dennis
Active Member
Joined: 17 Aug 2007 Posts: 562 Location: Iowa, USA
|
|
|
|
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 |
|
|
|