|
|
| Author |
Message |
Robert Sample
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
| 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 |
|
 |
References
|
|
 |
dick scherrer
Global Moderator
Joined: 23 Nov 2006 Posts: 8638 Location: 221 B Baker St
|
|
|
|
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: 21 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
Global Moderator
Joined: 14 Mar 2007 Posts: 3078 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
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
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
Global Moderator
Joined: 14 Mar 2007 Posts: 3078 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: 21 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: 21 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
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
| 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
Senior Member
Joined: 17 Aug 2007 Posts: 311 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 |
|
 |
dick scherrer
Global Moderator
Joined: 23 Nov 2006 Posts: 8638 Location: 221 B Baker St
|
|
|
|
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 |
|
 |
kedianirmal
New User
Joined: 08 Feb 2008 Posts: 21 Location: Bangalore, India
|
|
|
|
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 |
|
 |
dbzTHEdinosauer
Senior Member
Joined: 20 Oct 2006 Posts: 1618 Location: germany
|
|
|
|
| 'Pounding sand' is a phrase that comes to mind. |
|
| Back to top |
|
 |
Robert Sample
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
| 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 |
|
 |
dick scherrer
Global Moderator
Joined: 23 Nov 2006 Posts: 8638 Location: 221 B Baker St
|
|
|
|
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 |
|
 |
|
|