ALLOCATE 文
ALLOCATE 文は、動的記憶域を割り当てる。
一般形式
構文規則
data-name-1 は、連絡節で定義された 01 レベルまたは 77 レベルの項目でなければならない。
data-name-1 を次にすることはできない。
部分参照
無制限の表を含む集団項目
integer-1 は、24 または 31 の値を持つ符号なし整数とする。
data-name-2 は、USAGE IS POINTER として定義する必要がある。
data-name-2 は修飾または添え字付けすることができる。
arithmetic-expression-1 が整数と等しくない場合、結果は次の整数に切り上げられる。
arithmetic-expression-1 がゼロまたは負の値に等しい場合、data-name-2 は定義済みのアドレス NULL に設定される。
一般規則
data-name-1 を指定した場合:
割り当てられる記憶域の量は、data-name-1 を保持するために必要なバイト数になる。data-name-1 のデータ記述項に OCCURS DEPENDING ON 句を含む下位項目が含まれている場合、レコードの最大長が割り当てられる。
データ項目のアドレスは取得された記憶域のアドレスに設定される。これは、
SET ADDRESS OF data-name-1 TO address
と同じ効果になる。
RETURNING 指定は省略できるが、指定した場合、data-name-2 にそのアドレスが格納される。
arithmetic-expression-1 CHARACTERS を指定した場合:
arithmetic-expression-1 は、割り当てる記憶域のバイト数を指定する。
RETURNING data-item-2 を指定する必要があり、このアドレスは取得された記憶域のアドレスに設定される。
LOC 指定は、AMODE 指令が設定されている場合に ALLOCATE 文によって返されるメモリ アドレスのタイプを制御する。
LOC 24 - メモリ アドレスは 24 ビット形式で格納される。この形式は、メインフレーム上の「境界の下位」の記憶域と互換性がある。
LOC 31 - メモリ アドレスは 31 ビット形式で格納される。この形式は、メインフレーム上の「境界の上位」の記憶域と互換性がある。
LOC を指定しない場合は次のようになる。
AMODE"24" が有効な場合は常に LOC 24 を指定したと見なされる。
AMODE"31" が有効な場合は常に LOC 31 を指定したと見なされる。
INITIALIZED 指定を記述した場合、割り当てられる記憶域が初期化される。省略した場合、割り当てられる記憶域の内容は不定となる。
arithmetic-expression-1 と INITIALIZED 指定の両方を記述した場合は、記憶域のすべてのバイトがバイナリのゼロに初期化される。
data-name-1 と INITIALIZED 指定の両方を記述した場合は、記憶域は次の場合と同様に初期化される。
INITIALIZE data-name-1 WITH FILLER ALL TO VALUE THEN TO DEFAULT
指定した量の記憶域を割り当てに使用できる場合:
RETURNING 指定を記述した場合、data-name-2 で参照されるデータ項目はその記憶域のアドレスに設定される。
data-name-1 を指定した場合、data-name-1 で参照される 01 または 77 LINKAGE SECTION データ項目のアドレスはその記憶域のアドレスに設定される。これは、次と同じ効果になる。
SET ADDRESS OF data-name-1 TO address-of-obtained-storage
指定した量の記憶域を割り当てに使用できない場合:
RETURNING 指定を記述した場合、data-name-2 で参照されるデータ項目は定義済みのアドレス NULL に設定される。
data-name-1 を指定した場合、data-name-1 で参照される 01 または 77 LINKAGE SECTION データ項目のアドレスは定義済みのアドレス NULL に設定される。
割り当てられた記憶域は、FREE 文を使用して明示的に解放するか、実行ユニットが終了するか、いずれかが発生するまで維持される。
上位ヘルプ:
文
関連項目
FREE 文