FORTRANのひけつ 2

多次元配列の記憶順序

FORTRAN77では多次元(7次元まで)の配列を定義できますが,実際の記憶装置が 多次元構造を持っているわけではなくて,1次元的に管理されています.多次 元配列を1次元的に展開する順序は,FORTRAN77の規格で定めてありますから, 多次元配列を1次元配列と結合することが可能です.

例えば

REAL X(6), Y(2,3)
COMPLEX Z(3)
EQUIVALENCE (X,Y,Z)

という場合,変数 X, Y, Z はどれも長さが6語の配列で, 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規格で 定められた「標準語」です.例えば,「岩波FORTRAN辞典」(西村恕彦/酒井俊 夫・高田正之 著)の「記憶列の結合」を御覧下さい.



Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:11:16 EDT 1995