Portal | IBM Manuals | Downloads | Products | Refer | Info | Programs | JCLs | Forum Rules*| Site Map | Mainframe CD 
IBMMAINFRAMES.com - IBM Mainframe Support Forums Index
 
Register
 
IBMMAINFRAMES.com - IBM Mainframe Support Forums Index FAQ Search Memberlist Usergroups Profile Log in to check your private messages Log in
 
Insufficient storage while running a cobol program
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> ABENDS & Debugging
Author Message
Robert Sample

Senior Member


Joined: 06 Jun 2008
Posts: 891
Location: Atlanta, GA

PostPosted: Thu Jul 10, 2008 11:23 pm    Post subject:
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
References
dick scherrer

Global Moderator


Joined: 23 Nov 2006
Posts: 8638
Location: 221 B Baker St

PostPosted: Thu Jul 10, 2008 11:58 pm    Post subject:
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: 21
Location: Bangalore, India

PostPosted: Fri Jul 11, 2008 5:19 pm    Post subject:
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

Global Moderator


Joined: 14 Mar 2007
Posts: 3078
Location: italy

PostPosted: Fri Jul 11, 2008 5:29 pm    Post subject: Reply to: Insufficient storage while running a cobol program
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

Senior Member


Joined: 06 Jun 2008
Posts: 891
Location: Atlanta, GA

PostPosted: Fri Jul 11, 2008 5:59 pm    Post subject:
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

Global Moderator


Joined: 14 Mar 2007
Posts: 3078
Location: italy

PostPosted: Fri Jul 11, 2008 6:23 pm    Post subject: Reply to: Insufficient storage while running a cobol program
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: 21
Location: Bangalore, India

PostPosted: Fri Jul 11, 2008 6:42 pm    Post subject:
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: 21
Location: Bangalore, India

PostPosted: Fri Jul 11, 2008 6:47 pm    Post subject:
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

Senior Member


Joined: 06 Jun 2008
Posts: 891
Location: Atlanta, GA

PostPosted: Fri Jul 11, 2008 6:54 pm    Post subject:
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

Senior Member


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

PostPosted: Fri Jul 11, 2008 7:08 pm    Post subject:
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
dick scherrer

Global Moderator


Joined: 23 Nov 2006
Posts: 8638
Location: 221 B Baker St

PostPosted: Fri Jul 11, 2008 9:29 pm    Post subject:
Reply with quote

Hello,

Your module doubled in size. . . Why?

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

Possibly, i misunderstood, but i read that you added only a few k bytes. Did something else change?

Depending on just why this size increased, the approach to the solution may need to change. . . Even if you find a way to run "this" version, there may well come a time when you make it large enough that it cannot run.
Back to top
View user's profile Send private message
kedianirmal

New User


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

PostPosted: Tue Jul 15, 2008 5:43 pm    Post subject:
Reply with quote

Hi,

Previousely Robert Sample has mentioned that
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.


What can be considered as a subroutine. Perfrom section can be considered as a subroutine in a program? The section is defined in the program itself.

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

Senior Member


Joined: 20 Oct 2006
Posts: 1618
Location: germany

PostPosted: Tue Jul 15, 2008 6:04 pm    Post subject:
Reply with quote

'Pounding sand' is a phrase that comes to mind.
Back to top
View user's profile Send private message
Robert Sample

Senior Member


Joined: 06 Jun 2008
Posts: 891
Location: Atlanta, GA

PostPosted: Tue Jul 15, 2008 6:07 pm    Post subject:
Reply with quote

In this context, a subroutine is a separately compiled piece of code that is called by your program. PERFORM sections in a single COBOL program would not qualify as subroutine in this context. CALL 'ABC' USING ... would be a case of a subroutine. Basically, if the binder (linkage editor) requires an INCLUDE statement for the program name, it's a subroutine in this context.
Back to top
View user's profile Send private message
dick scherrer

Global Moderator


Joined: 23 Nov 2006
Posts: 8638
Location: 221 B Baker St

PostPosted: Tue Jul 15, 2008 9:11 pm    Post subject:
Reply with quote

Hello,

To repeat:
Quote:
Your module doubled in size. . . Why?


If you resolve this, your problem should go away. . .

If this cannot be resolved, you may need to look at a different approach.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> ABENDS & Debugging All times are GMT + 6 HoursGoto page Previous  1, 2, 3  Next
Page 2 of 3