1 つの配列の要素を別の配列の要素と等価にすると,EQUIVALENCE 文は,2 つの配列の他の要素間にも等価関係を設定します。このため,2 つの同じ大きさの配列の最初の要素が等価にされた場合,この 2 つの配列は同じ記憶域を共有することになります。7 つの要素を持つ配列の第 3 の要素が,別の配列の最初の要素と等価にされた場合,最初の配列の残り 5 つの要素は,第 2 の配列の最初の 5 つの要素と重なり合います。
同じ配列の 2 つまたはそれ以上の要素を,1 つまたは複数の EQUIVALENCE 文の中で互いに結合することはできません。たとえば,EQUIVALENCE 文を使って,1 つの配列の最初の要素を別の配列の最初の要素に結合し,最初の配列の第 4 の要素をもう一方の配列の第 7 の要素に結合するというようなことはできません。
次の有効な例を考えてみます。
DIMENSION TABLE (2,2), TRIPLE (2,2,2) EQUIVALENCE(TABLE(2,2), TRIPLE(1,2,2))
これらの文により,配列 TABLE 全体が,TRIPLE に割り付けられた記憶域の一部を共有することになります。次表に,これらの文が配列の位置合わせをどのように行うかを示します。
配列の記憶域の等価関係
配列 TRIPLE | 配列 TABLE | ||
配列要素 | 要素番号 | 配列要素 | 要素番号 |
TRIPLE(1,1,1) | 1 | ||
TRIPLE(2,1,1) | 2 | ||
TRIPLE(1,2,1) | 3 | ||
TRIPLE(2,2,1) | 4 | TABLE(1,1) | 1 |
TRIPLE(1,1,2) | 5 | TABLE(2,1) | 2 |
TRIPLE(2,1,2) | 6 | TABLE(1,2) | 3 |
TRIPLE(1,2,2) | 7 | TABLE(2,2) | 4 |
TRIPLE(2,2,2) | 8 |
以下に示す文も,上記の表に示したのと同じように,2 つの配列の位置合わせを行います。
EQUIVALENCE(TABLE, TRIPLE(2,2,1)) EQUIVALENCE(TRIPLE(1,1,2), TABLE(2,1))
また,1 以外の下限を使って配列の等価関係を宣言することもできます。たとえば,A(2:3,4) として定義された配列は,8 つの値の列です。A(2,2) という引用は,列内の第 3 の要素を引用します。配列 A(2:3,4) に配列 B(2:4,4) と記憶域を共有させるには,次の文を使用することができます。
EQUIVALENCE(A(3,4), B(2,4))
配列 A 全体が,配列 B に割り付けられた記憶域の一部を共有します。次表に,これらの文が配列の位置合わせをどのように行うかを示します。配列の位置合わせは以下の文を使っても行えます。
EQUIVALENCE(A, B(4,1)) EQUIVALENCE(B(3,2), A(2,2))
1 以外の下限を使った配列の等価関係
配列 A | 配列 B | ||
配列要素 | 要素番号 | 配列要素 | 要素番号 |
B(2,1) | 1 | ||
B(3,1) | 2 | ||
B(4,1) | 3 | A(2,1) | 1 |
B(2,2) | 4 | A(3,1) | 2 |
B(3,2) | 5 | A(2,2) | 3 |
B(4,2) | 6 | A(3,2) | 4 |
B(2,3) | 7 | A(2,3) | 5 |
B(3,3) | 8 | A(3,3) | 6 |
B(4,3) | 9 | A(2,4) | 7 |
B(2,4) | 10 | A(3,4) | 8 |
B(3,4) | 11 | ||
B(4,4) | 12 |
EQUIVALENCE 文中に限って,配列が多次元配列として定義されている場合でも,配列要素を 1 つの添字を使って識別することができます (線形の要素番号)。たとえば,以下の文は,上記の表に示した 2 つの配列の位置合わせを行います。
DIMENSION B(2:4,1:4), A(2:3,1:4) EQUIVALENCE(B(6), A(4))