WRITABLE オプションは、 静的ストレージを書き込み可能として扱うことをコンパイラーに指定します (また、そうする場合は、 その結果のコードが再入不可になります)。
.-WRITABLE-----------------------. >>-+-NOWRITABLE--+----------------+-+-------------------------->< | .-FWS-. | '-(--+-PRV--+--)-'
このオプションは、RENT オプションを指定してコンパイルされたプログラムには効果がありません。
NORENT WRITABLE オプションを使用すると、 コンパイラーは次の目的で静的ポインターを使用できます。
したがって、NORENT WRITABLE オプションを指定すると、CONTROLLED 変数を 使用するモジュール、または入出力を実行するモジュールは再入可能にはなりません。
NORENT NOWRITABLE オプションでは、コンパイラーが静的ポインターを以下のようにすることがないこと が必要です。
したがって、NORENT NOWRITABLE オプションを指定すると、CONTROLLED 変数を 使用するモジュール、または入出力を実行するモジュールは再入可能になります。
FWS および PRV サブオプションは、以下のように、コンパイラーが CONTROLLED 変数を扱う方法を決定します。
このため、NORENT NOWRITABLE(PRV) オプションを指定すると、旧コードと新規コードで CONTROLLED 変数を共用することができます。
ただし、NORENT NOWRITABLE(PRV) オプションを指定すると、CONTROLLED 変数の使用が、旧コンパイラーにおけるすべての制約を受けることになることも意味します。
NORENT NOWRITABLE(FWS) オプションを指定すると、 アプリケーションが以下のとおりである場合に、RENT または WRITABLE オプションを指定して コンパイルされたようには実行されないことがあります。
NORENT NOWRITABLE(FWS) を指定した場合のアプリケーションのパフォーマンスは、 多くの CONTROLLED 変数を多くの PROCEDURE で使用していると特に悪くなる場合があります。
NOWRITABLE オプションを指定すると、PROCEDURE の外部の PACKAGE で、以下を宣言できない場合があります。
NORENT WRITABLE を指定してコンパイルされたコードは、 任意の外部 CONTROLLED 変数を共用する、NORENT NOWRITABLE を指定して コンパイルされたコードと混在できません。 一般に、WRITABLE でコンパイルされたコードと NOWRITABLE でコンパイルされたコードを 混在しないでください。