ストレージ クラス

変数の記憶域をいつからいつまで割り当てるかは、変数のストレージ クラスで決まります。変数の値はこの記憶域に格納されるため、変数のストレージ クラスに応じて変数の値を保持する期間が異なります。

Open PL/I 言語では、次の 6 つのストレージ クラスを使用できます。これらの詳細については、「ストレージ クラス」のセクションを参照してください。

別途宣言されていない限り、変数のストレージ クラスは AUTOMATIC になります。この場合、プロシージャの呼び出しや BEGIN 文の実行で変数の範囲がアクティブになるたびにすぐに記憶域が割り当てられ、プロシージャや BEGIN ブロックの終了によって範囲が終了すると解放されます。したがって、AUTOMATIC の変数の値は、その変数を含むブロックが無効化された後は保持されません。

変数を含むプロシージャの他の呼び出しで変数の値を保持する必要がある場合は、STATIC ストレージ クラスとして宣言する必要があります。次に例を示します。

DECLARE K FIXED BINARY STATIC;
DECLARE TABLE(4) CHARACTER(5)
      STATIC INITIAL('A','B','C','D');

この例では、配列 TABLE の各要素に初期値を指定しています。

STATIC 変数の記憶域は、プログラムの実行前にコンパイラおよびリンカーによって割り当てられます。したがって、各 STATIC 変数の長さ (精度) はコンパイル時に一定でなければなりません。