The following discussion helps you to obtain better storage utilization:
The relinked OS PL/I load module has a smaller size because it contains the Language Environment stubs only.
Most likely the application will be loaded above the 16M line. You can specify the Language Environment ALL31(ON) option which allows Language Environment to allocate some of its control blocks above the 16M line.
The HEAPPOOLS option applies to Enterprise PL/I (although not to PL/I for MVS and earlier PL/I code). Specifying the HEAPPOOLS(ON) option may lead to a very large amount of storage being allocated to ANYHEAP.
For PL/I, Language Environment will allocate the heap storage above the 16M line if the following is true:
Your application must be in AMODE(31). For PL/I, Language Environment will allocate the stack storage above the 16M line if your application is relinked with Language Environment and contains no edited stream I/O.
Note that specifying a smaller value is not always better: if you use a smaller value, Language Environment will allocate less storage initially, but this could result in more GETMAINs and FREEMAINs being issued over the life of the application - and GETMAINs are very expensive.
The library routines in (E)LPA do not occupy storage in your application region, so your application has more storage to use. See the recommended library routines for (E)LPA in Improving CPU Utilization.