1. 被制御変数のALLOCATEステートメント

ALLOCATEステートメントは、被制御変数にストレージを割り当てます。同時に被制御パラメータも割り当てることができます。ALLOCATEステートメントに被制御変数の配列の境界、文字列の長さを指定することができます。

figure syntax allocate controlled

配列の境界、文字列の長さは、ALLOCATEステートメントの実行時に計算されます。

  • ALLOCATEステートメントまたはDECLAREまたはDEFAULTステートメントに必要なサイズと文字列の長さが指定されている必要があります。

  • ALLOCATEステートメントにDIMENSION属性と文字列の長さが指定された場合、変数宣言に記述されている属性の代わりになります。

  • ALLOCATEステートメントに境界、文字列の長さがアスタリスク(*)で記述された場合、現行世代の情報を使用します。変数の現行世代が存在しない場合は、その情報は未定義となり、プログラムはエラーになります。

  • ALLOCATEステートメントに記述されたDIMENSION属性は、宣言された次元の数値に合わせて記述しなければなりません。すなわち、1次元の配列であれば、DIMENSION属性が1つ記述され、2次元の配列の場合は2つ、 ...、n次元の配列の場合にはnつのDIMENSION属性が記述される必要があります。

  • BIT、CHARACTE、GRAPHICの属性は、DECLAREステートメントに記述されている属性と同じである必要があります。

以下は、ALLOCATEステートメントを使用した例です。

  DCL X(M,N) CHAR(L) CTL;
  M = 10;
  N = 5;
  L = 100;
  ALLOCATE X(5,5) CHAR(200);