Although
users requested WORKING-STORAGE and parameter lists above the 16-MB line with
the DATA(31) compiler option, there were cases in which storage was acquired
from below the 16-MB line under Language Environment for
OS/390, Version 2 Release 8 or earlier. If these programs dynamically call
AMODE 24 programs, then moving from Language Environment for
OS/390, Version 2 Release 8 or earlier to Language Environment for
OS/390, Version 2 Release 9 or later will now result in runtime error message
IGZ0033S.
Under
Language Environment for OS/390, Version
2 Release 8, or earlier, WORKING-STORAGE for
COBOL programs
compiled with DATA(31) was acquired from a HEAP segment that was allocated
from BELOW storage. Under
Language Environment for
OS/390, Version 2 Release 9 or later, WORKING-STORAGE for
COBOL programs
compiled with DATA(31) is acquired from a HEAP segment that is allocated from
ANYWHERE storage (which can be above or below the 16-MB line). Consider the
following examples where this change will impact an application:
- A previous HEAP request in an enclave must specifically request HEAP storage
below the 16-MB line. For example, a DATA(24) COBOL program
that requested this type of HEAP storage caused the Language Environment heap
manager to allocate a HEAP segment from BELOW storage.
- A subsequent DATA(31) COBOL program
must request HEAP storage that can be satisfied in a HEAP segment allocated
from BELOW storage. In order for this to occur, the WORKING-STORAGE can not
be very large.
When a DATA(31) COBOL program runs under Language Environment for
OS/390, Version 2 Release 8 or earlier, the HEAP is acquired from BELOW storage.
When the same program runs under Language Environment for
OS/390, Version 2 Release 9 or later, the HEAP is acquired from ANYWHERE storage.
If a call is made to
an AMODE 24 program, the following considerations apply under
Language Environment for
OS/390, Version 2 Release 9 or later:
- If the call is a COBOL dynamic
call to an AMODE 24 program, runtime error message IGZ0033S will occur.
- If the call to the AMODE 24 program is called using any method other than
a COBOL dynamic
call, an addressing exception can occur when the program attempts to access
the data passed.