Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, Programming Guide

WRITABLE

The WRITABLE option specifies that the compiler may treat static storage as writable (and if it does, this would make the resultant code non-reentrant).

Read syntax diagramSkip visual syntax diagram   .-WRITABLE-----------------------.
>>-+-NOWRITABLE--+----------------+-+--------------------------><
                 |    .-FWS-.    |
                 '-(--+-PRV--+--)-'
 

This option has no effect on programs compiled with the RENT option.

The NORENT WRITABLE options allow the compiler to use a static pointer

So, under the NORENT WRITABLE options, a module using CONTROLLED variables or performing I/O would not be reentrant.

The NORENT NOWRITABLE options require the compiler not to use a static pointer

So, under the NORENT NOWRITABLE options, a module using CONTROLLED variables or performing I/O will be reentrant.

The FWS and PRV suboptions determine how the compiler handles CONTROLLED variables:

FWS
Upon entry to an EXTERNAL procedure, the compiler makes a library call to find storage it can use to address the CONTROLLED variables in that procedure (and any subprocedures).
PRV
The compiler will use the same pseudoregister variable mechanism used by the old OS PL/I compiler to address CONTROLLED variables.

Hence, under the NORENT NOWRITABLE(PRV) options, old and new code may share CONTROLLED variables.

However, this also means that under the NORENT NOWRITABLE(PRV) options, the use of CONTROLLED variables is subject to all the restrictions as under the old compiler.

Under the NORENT NOWRITABLE(FWS) options, an application may not perform as well as if it were compiled with the RENT or WRITABLE options if the application

The performance of an application under NORENT NOWRITABLE(FWS) may be especially bad if it uses many CONTROLLED variables in many PROCEDUREs.

Under the NOWRITABLE option, the following may not be declared in a PACKAGE outside a PROCEDURE:

Code compiled with NORENT WRITABLE cannot be mixed with code compiled with NORENT NOWRITABLE if they share any external CONTROLLED variables. In general, you should avoid mixing code compiled with WRITABLE with code compiled with NOWRITABLE.


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)