Program authorization

Your program's authorization determines what subpools you can use. For the GETMAIN, FREEMAIN, STORAGE, and CPOOL macros, your program is authorized if it has at least one of the following types of authorization:

Otherwise, the program is unauthorized. Unauthorized programs can request storage only from private storage subpools 0-127, 131, and 132. Authorized programs can obtain storage from additional private storage subpools as well as from common storage subpools.

Obtaining and releasing storage from subpool 0 yields different results depending on whether a program is running in supervisor state and PSW key 0. If a program is running in supervisor state and PSW key 0, the system translates the subpool 0 storage request to a subpool 252 storage request. In all other cases, the system handles subpool 0 storage requests as such. To obtain or free subpool 0 storage while running in supervisor state and PSW key 0, a program must specify subpool 240 or 250 on the storage request. Subpool 240 and 250 requests, which are limited to authorized callers, are translated to subpool 0 requests. Table 1 summarizes these special cases.

Table 1. Supervisor State and PSW Key 0 Callers and Subpool 0
Subpool Specified Subpool Obtained or Freed
240, 250 0
0 252

Because of the way the system translates requests from supervisor state and PSW key 0 callers involving certain subpools, a problem such as the following could occur. A program running in supervisor state and PSW key 0 switches into another PSW key and obtains storage from subpool 0. The program then switches back to PSW key 0 and tries to free the storage. An error results because the system translates the request to free storage from subpool 0 to a request to free storage from subpool 252. To prevent this error, the program must specify subpool 240 or 250 when releasing the subpool 0 storage.