DCL: MATH1: Summary: FORTRAN77 Standard
Multi-dimensional arrays (of up to 7-D) can be defined in FORTRAN77. However, the actual memory system does not have a multi-dimensional structure, and it is managed one-dimensionally. The order for unfolding a multi-dimensional array into a 1-D array is defined in the FORTRAN77 standard, and so it is possible to combine multi-dimensional arrays to 1-D arrays (to give a 1-D name to multi-dimensional arrays.) For example, in the case of
REAL X(6), Y(2,3) COMPLEX Z(3) EQUIVALENCE (X,Y,Z)
the variables x, y, z all are arrays with 6 words (48 bytes), and they occupy the same memory area according to the EQUIVALENCE statement. The variables are aligned in the following order.
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)) |
The 2-D array y is unfolded into a 1-D array in a way so that the
left subscript changes first. Complex number data z is unfolded as a
sequence of 2 floating-point numbers. Therefore, the value of X(3) will be
exactly the same as Y(1,2), Re(Z(2)).
This rule is actively used in many programs to treat multi-dimensional arrays
as 1-D arrays or to treat complex-number data as floating-point-number data. This rule is
close to the hardware of computers, so it may appear machine-dependent, but
this is "standard language" defined in FORTRAN77 standard.