ENTMF 

ALLOCATE 文

ALLOCATE 文は、動的記憶域を割り当てます。

一般形式

一般規則

  1. data-name-1 を指定した場合:
    • 割り当てられる記憶域の量は、data-name-1 を保持するために必要なバイト数になります。data-name-1 のデータ記述項に OCCURS DEPENDING ON 句を含む下位項目が含まれている場合、レコードの最大長が割り当てられます。
    • データ項目のアドレスは取得された記憶域のアドレスに設定されます。これは、SET ADDRESS OF data-name-1 TO address と同じ効果になります。
    • RETURNING 指定は省略できますが、指定した場合、data-name-2 にそのアドレスが格納されます。
  2. arithmetic-expression-1 CHARACTERS を指定した場合:
    • arithmetic-expression-1 は、割り当てる記憶域のバイト数を指定します。
    • RETURNING data-item-2 を指定する必要があり、このアドレスは取得された記憶域のアドレスに設定されます。
  3. INITIALIZED 指定を記述した場合、割り当てられる記憶域が初期化されます。省略した場合、割り当てられる記憶域の内容は不確定です。
  4. arithmetic-expression-1 と INITIALIZED 指定の両方を記述した場合は、記憶域のすべてのバイトがバイナリのゼロに初期化されます。
  5. data-name-1 と INITIALIZED 指定の両方を記述した場合は、記憶域は次の場合と同様に初期化されます。INITIALIZE data-name-1 WITH FILLER ALL TO VALUE THEN TO DEFAULT
  6. 指定した量の記憶域を割り当てに使用できる場合:
    • 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
  7. 指定した量の記憶域を割り当てに使用できない場合:
    • RETURNING 指定を記述した場合、data-name-2 で参照されるデータ項目は定義済みのアドレス NULL に設定されます。
    • data-name-1 を指定した場合、data-name-1 で参照される 01 または 77 LINKAGE SECTION データ項目のアドレスは定義済みのアドレス NULL に設定されます。
  8. 割り当てられた記憶域は、FREE 文を使用して明示的に解放するか、実行単位が終了するか、いずれかが発生するまで維持されます。

構文規則

  1. data-name-1 は、連絡節で定義された 01 レベルまたは 77 レベルの項目である必要があります。
  2. data-name-1 を次にすることはできません。
    • 部分参照
    • バインドされていないテーブルを含むグループ項目
  3. data-name-2 は、USAGE IS POINTER として定義する必要があります。
  4. data-name-2 は修飾または添え字付けすることができます。
  5. arithmetic-expression-1 が整数と等しくない場合、結果は次の整数に切り上げられます。
  6. arithmetic-expression-1 がゼロまたは負の値に等しい場合、data-name-2 は定義済みのアドレス NULL に設定されます。