If your program needs to address both types of memory, that is, you have a mix of some modules that use memory below the line and others that use memory above the line, you should:
- Set Max. memory below 16Mb line to the maximum amount of memory below the line that your program requires. The default is 3Mb and the maximum is 16Mb.
- Set Max. memory above 16Mb line to the maximum amount of memory above the line that your program requires. The default is 3Mb and the maximum is 2Gb.
- Set Addressing mode to AMODE (24) for each program to be loaded that uses memory below the line.
- Set Addressing mode to AMODE (31) for each program to be loaded that uses memory above the line.
- To allocate memory below the line, omit the LOC parameter from all GETMAIN and STORAGE OBTAIN macros that the module issues.
- To allocate memory above the line, set LOC=ANY in all GETMAIN and STORAGE OBTAIN macros that the module issues.
- Use the Assembler instructions BASSM or BSM to transfer control between programs that use different addressing modes.
Note:
- If a program that uses 31-bit addressing needs to manipulate 24-bit addresses, you must include code to clear the unused byte of the address before any instruction that sets a register to a new address. These instructions include LA, BAL, BALR, EDMK and TRT.
- You can only set LOC=ANY on the RU and RC formats of the GETMAIN macro. The R format of GETMAIN is restricted to memory below the line.