Comparison of GETMAIN/FREEMAIN macros with the STORAGE macro
The decision about whether to use GETMAIN or STORAGE OBTAIN to
obtain virtual storage and FREEMAIN or STORAGE RELEASE to release
the storage depends on several conditions:
- The address space control (ASC) mode of your program. If it is in AR mode, use the STORAGE macro.
- The address space that contains the storage your program wants to obtain or release. If the storage is in an address space other than the primary, use the STORAGE macro.
- Whether the program requires a branch entry or
a stacking PC entry to the macro service. Using the branch entry
on the GETMAIN or FREEMAIN macro is more difficult than using the
STORAGE macro. Therefore, you might use STORAGE OBTAIN instead of
GETMAIN for ease of coding, for example, when your program:
- Is in SRB mode
- Is in cross memory mode
- Is running with an enabled, unlocked, task mode (EUT) FRR
The branch entry (BRANCH parameter on GETMAIN or FREEMAIN) requires that your program hold certain locks. STORAGE does not have any locking requirement.
If your program runs in an environment where it can issue the FREEMAIN macro (as specified by the conditions listed above), you can use FREEMAIN to free storage that was originally obtained using STORAGE OBTAIN. You can also use STORAGE RELEASE to release storage that was originally obtained using GETMAIN.