ベクトル添字とは,全体 (親) 配列の部分配列を選択する,(その次元に対して宣言された境界の範囲内に収まる) 整数値の 1 次元配列 (次元数 1 の配列) です。部分配列内の要素は特定の順序になっている必要はなく,部分配列は重複する値を含んでいてもかまいません。
たとえば,A が形状 (4,6) の次元数 2 の配列だとします。B と C は,それぞれ形状が (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/))
ベクトル添字を持つ部分配列は,以下のものであってはなりません。
内部ファイル
定義または再定義されている仮配列に結合された実引数 (INTENT 属性が宣言されている場合,INTENT(IN) でなくてはなりません)
ポインタ代入文の指示先
ベクトル添字によって宣言された列が空である場合,部分配列の大きさはゼロになります。