The COBOL program did not have a storage problem when compiled with COBOL for OS390 version 2.
This problem started happening with Enterprise COBOL for z/OS version 3 compiler.
Some string functions such as FUNCTION UPPER-CASE or LOWER-CASE now require a work area in the stack storage.
Resolving the problem
First check the obvious errors as documented in the Language Environment Run-Time Messages book.
If that does not help, then compile your program twice.
- Once with COBOL for OS390 version 2
- Again with Enterprise COBOL for z/OS version 4.
In both cases, use the compile options MAP and LIST.
Now compare this line under the DSA MEMORY MAP:
DSA WILL BE ALLOCATED FOR nnnnnnnn BYTES
Do you see a large difference? The design has changed.
Some of the string FUNCTIONs such as UPPER-CASE or LOWER-CASE now use the stack.
The LOCAL-STORAGE SECTION also uses the stack.
You may need to reprogram or change the LE run time option STACK to allow larger areas.
If the problem is with below the line storage and you are using runtime options ALL31(OFF),STACK(,,BELOW)' , changing to ALL31(ON),STACK(,,ANYWHERE)'
(if possible) with appropriate size parameters should help.
If using ALL31(ON) is not a reasonable solution, here is a workaround that does not use stack storage. Instead of FUNCTION UPPER-CASE, use this statement:
01 MY-DATA PICTURE X(50000).
The INSPECT may also execute much faster in some cases.
The INSPECT can translate accented letters such é to É.