FORTRAN77では多次元(7次元まで)の配列を定義できるが, 実際の記憶装置は多次元構造を持っているわけではなく, 1次元的に管理されている. 多次元配列を1次元的に展開する順序は, FORTRAN77の規格で定めてあるので, 多次元配列を1次元配列と結合する (多次元配列に1次元配列の別名を与える) ことが可能である. 例えば
REAL X(6), Y(2,3) COMPLEX Z(3) EQUIVALENCE (X,Y,Z)
という場合, 変数X, Y, Zはどれも長さが6語(48バイト)の配列で, EQUIVALENCE文により同じ記憶領域を占める. この時, それぞれの変数の並び方は
X(1) | X(2) | X(3) | X(4) | X(5) | X(6) |
Y(1,1) | Y(2,1) | Y(1,2) | Y(2,2) | Y(1,3) | Y(2,3) |
Re(Z(1)) | Im(Z(1)) | Re(Z(2)) | Im(Z(2)) | Re(Z(3)) | Im(Z(3)) |
という様に, 2次元配列Yは添字の左側の数字から変るように
1次元的に展開される.
また, 複素数データZは2つの実数が並んだ形で展開される.
したがって, X(3) の数値はY(1,2), Re(Z(2)) と
全く同じになる.
この規則は多くのプログラムで積極的に使われており,
多次元配列を1次元配列として扱ったり,
複素数データを実数データを見なして処理したり
することが行われている.
この規則は, 計算機のハードウェアに近い部分の規則なので,
計算機によって異なるように思えるかもしれないが,
FORTRAN77規格で定められた「標準語」である.
Copyright (C) 2000 GFD Dennou Club. All rights reserved.