1.5.7 多次元配列の記憶順序

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規格で定められた「標準語」である.