ALLOCATE ステートメントは、プロシージャー・ブロックの境界とは関係なく、 基底付き変数にストレージを割り振り、その記憶位置を示すために使用される ロケーター変数をセットします。
省略形: ALLOC
基底付き変数と被制御変数の両方を、同一の ALLOCATE ステートメントで 割り振ることができます。 被制御変数の構文については、被制御変数のための ALLOCATE ステートメントを参照してください。
IN オプションを指定したときや、SET オプションでオフセット変数を指定した ときは、区域内でストレージが割り振られます。 これらのオプションの指定順序は任意です。 区域内での割り振りの場合は、次のことに注意してください。
区域を使用しない場合は、ロケーター変数はポインター変数でなければなりません。 基底付き変数のためのストレージが使用可能でない場合、STORAGE 条件が起こります。
基底付き変数が REFER を使用している場合、そのサイズは実行時に計算されます。 計算の結果、値が大きすぎて FIXED BIN(31) 変数に適合しない場合、プログラムはエラーとなり、訂正する必要があります。 この状態では、STORAGE 条件は起こりません。その代わり、 ONCODE=3809 が設定された ERROR 条件が以下のいずれかの場合に起こります。
これらの条件のどちらも該当しない場合、予測不能な結果が生じます。
基底付き変数に割り振られるストレージの大きさは、その変数の属性に左右されるほか、その変数の次元、長さ、またはサイズが割り振り時に指定されるときは、それらにも左右されます。 これらの属性は、基底付き変数の宣言から判別されます。
基底付きの構造体や共用体には、調整可能な配列境界、ストリングの長さ、 または区域のサイズを含むことができます (REFER オプション (自己定義データ)を参照)。 基底付き変数の場合、エクステントとしてアスタリスクを表記することはできません。