ベクトル添字

ベクトル添字とは,全体 (親) 配列の部分配列を選択する,(その次元に対して宣言された境界の範囲内に収まる) 整数値の 1 次元配列 (次元数 1 の配列) です。部分配列内の要素は特定の順序になっている必要はなく,部分配列は重複する値を含んでいてもかまいません。

たとえば,A が形状 (4,6) の次元数 2 の配列だとします。BC は,それぞれ形状が (2)(3) の次元数 1 の配列で,以下の値を持つものとします。

	B = (/1,4/)		! 構文 (/.../) は配列構成子を示します。この
	C = (/2,1,1/)		! 構成子は,重複部分配列を生成します。

部分配列 A(3,B) は要素 A(3,1)A(3,4) から構成されます。部分配列 A(C,1) は要素 A(2,1)A(1,1),および A(1,1) から構成されます。部分配列 A(B,C) は以下の要素から構成されます。

	A(1,2) A(1,1) A(1,1)
	A(4,2) A(4,1) A(4,1)

同じ値の要素を 2 つ以上含んでいるベクトル添字を持つ部分配列は,重複部分配列と呼ばれます。以下に例を示します。

	REAL A(3, 3), B(4)
	INTEGER K(4)
	! ベクトル K は,反復値を持っています
	K = (/3, 1, 1, 2/)
	! A のすべての要素に 5.0 を代入します
	A = 5.0
	B = A(3, K)

部分配列 A(3,K) は,次の要素で構成されています。

	A(3,3) A(3,1) A(3,1) A(3,2)

重複部分配列は,代入文の等号の左辺で使用することはできず,READ 文の入力項目として使用することもできません。

以下に示す C への代入も,ベクトル添字の例です。

	INTEGER A(2), B(2), C(2)
	...
	B    = (/1,2/)
	C(B) = A(B)
	C    = A((/1,2/))       

ベクトル添字を持つ部分配列は,以下のものであってはなりません。

ベクトル添字によって宣言された列が空である場合,部分配列の大きさはゼロになります。