iSUB 定義を使用すると、基本配列の指定したエレメント からなる定義済み配列を作成できます。 定義済み配列と基本配列はスカラー配列でなければならず、 任意のデータ・タイプで構成でき、同一の属性を持っている必要が あります (次元属性を除く)。
定義済み変数には、次元属性が必要です。定義済み配列の宣言の中で、 基本配列には添え字を付ける必要があり、添え字の位置をアスタリスクとして 指定することはできません。
iSUB 変数は、基本配列の添え字リスト内での、 定義済み配列の次元に対する参照です。 基本配列の添え字リストにある少なくとも 1 つの添え字は、 iSUB 式でなければなりません。この式は、評価時に基本配列に 必要な添え字を指定します。i の値は、n を定義済み配列の次元数 として、1 から n までの範囲です。 基本配列の添え字の数は、基本配列の次元数と等しくなければなりません。
定義済み配列への参照が添え字式を指定していない場合、 添え字の評価は、参照を含む式または割り当ての評価時に行われます。
i の値は整数として指定されます。 iSUB 式の中で、iSUB 変数は REAL FIXED BINARY(31,0) 変数として 扱われます。
定義済み変数への参照にある添え字は、基本変数の添え字リストに 対応する iSUB がない場合でも評価されます。
iSUB 定義済み変数は、GET DATA または PUT DATA ステートメント のデータ・リストに入れることはできません。
例:
DCL A(10,10) FIXED BIN
X(10) FIXED BIN DEF( A(1SUB,1SUB) );
X は、A の対角線で構成される 1 次元配列です。 X(i) は、A(i,i) と同じストレージを参照します。
DCL B(5,10) FIXED BIN
Y(10,5) FIXED BIN DEF( A(2SUB,1SUB) );
Y は、境界を転置した B のエレメントで構成される 2 次元配列です。 Y(i,j) と X(j,i) は同じストレージを参照します。