はじめに

すべての変数にストレージ クラスがあります。ストレージ クラスにより、記憶域がいつどのように割り当てられるかが決まります(記憶域がコンパイル時に割り当てられるか、プログラムの実行中に動的に割り当てられるかなど)。

ストレージ クラスは、パラメーターとして使用されるものを除くすべての変数に対して、次のいずれかの属性を使用して宣言されます。

プロシージャで宣言された変数 (パラメーター変数を除く) にストレージ クラスが指定されていない場合は、デフォルトで AUTOMATIC になります。変数がソース モジュールのすべての外部プロシージャの範囲外で宣言されている場合は、デフォルトで STATIC になります。

パラメーターは、その引数と記憶域を共有します。そのため、ストレージ クラスは、最終的には関連する引数のクラスによって決定されます。便宜上、パラメーターは、別個の「パラメーター」ストレージ クラスを持つと見なすこともできます。

変数の記憶域サイズはその範囲によって決まります。文字列変数の範囲は、宣言された長さです。配列変数の範囲は、次元の数および添え字の範囲によって決まります。どちらの変数の範囲も、その変数に記憶域が割り当てられる際に評価されます。範囲に使用できる形式はストレージ クラスによって異なります。各ストレージ クラスの説明を参照してください。