Specifying where the module is to be loaded (LOAD macro)
When a program in supervisor state uses
the LOAD macro to bring a copy of the load module into virtual storage,
it can use one of three parameters to specify where the control program
is to load the module:
- Use the ADDR parameter to load a module in an APF-authorized library at a specified address. You must first allocate storage for the module in your key.
- Use the ADRNAPF parameter to load a module in an unauthorized library at a specified address. You must first allocate storage for the module in your key.
- Use the GLOBAL parameter on LOAD to load the module into either
fixed or pageable CSA.
- GLOBAL=(YES,P) or GLOBAL=YES requests storage in the pageable CSA.
- GLOBAL=(YES,F) requests storage in fixed CSA.
When you use GLOBAL=YES, you can use the EOM parameter to specify when the control program is to delete the module. EOM=NO (the default) requests deletion at task termination. EOM=YES requests deletion at address space termination.
Note: If you determine the amount of storage required to
hold a loaded module using the module length returned from the BLDL
macro in the PDS2 data area field PDS2STOR, this will no longer work
for program objects exceeding 16 megabytes. The PDS2STOR field is
only 3 bytes in length, and it cannot denote any program length greater
than 16 megabytes. You can determine if a program object exceeds
16 megabytes by inspecting the PDS2BIG bit of the PDS2 data area.
If the PDS2BIG bit is set on, the program object is greater than
16 megabytes, and the 4-byte PDS2VTSR field contains the amount of
storage required to hold a loaded program object greater than 16 megabytes.
If the PDS2BIG bit is set off, use the PDS2STOR field to determine
the size of storage required.
If you do not use ADDR, ADRNAPF, or GLOBAL=YES (that is, you use
GLOBAL=NO or take the default), the control program loads the module
in subpool 244 or subpool 251, unless the following three conditions
are true:
- The module is reentrant
- The library is authorized
- You are not running under TSO/E test
In this case, the control program places the module in subpool
252. When choosing between subpools 244 and 251. the control program
uses:
- Subpool 244 only when within a task that was created by ATTACHX with the KEY=NINE parameter
- Subpool 251in all other cases
Subpool 244 is not fetch protected and has a storage key equal to your PSW key. Subpool 251 is fetch protected and has a storage key equal to your PSW key. Subpool 252 is not fetch protected and has storage key 0.
When a program is in problem state, the control program brings the copy of the load module in subpool 251, with one exception. If the module is reentrant, the library is authorized, and you are not running under TSO TEST, the control program places the module in subpool 252.