An array is a set of scalar elements that have the same type and
kind type parameters. Any object that is declared with an array
specification is an array. Arrays can be declared with a type
declaration statement, a DIMENSION statement, or a COMMON
statement.
An array can be referenced by element (using subscripts), by
section (using a section subscript list), or as a whole.
A section subscript list consists of subscripts, subscript
triplets, or vector subscripts. At least one subscript in the list
must be a subscript triplet or vector subscript.
When an array name without any subscripts appears in an intrinsic
operation (for example, addition), the operation applies to the
whole array (all elements in the array).
An array has the following properties:
o Data type
An array can have any intrinsic or derived type. The data type
of an array is either specified in a type declaration
statement, or implied by the first letter of its name. All
elements of the array have the same type and kind type
parameters. If a value assigned to an individual array element
is not the same as the type of the array, it is converted to
the array's type.
o Rank
The rank of an array is the number of dimensions in the array.
An array can have up to seven dimensions. A rank-one array
represents a column of data (a vector), a rank-two array
represents a table of data arranged in columns and rows (a
matrix), a rank-three array represents a table of data on
multiple pages (or planes), and so forth.
o Bounds
Arrays have a lower and upper bound in each dimension. These
bounds determine the range of values that can be used as
subscripts for the dimension. The value of either bound can be
positive, negative, or zero.
The bounds of a dimension are defined in an array
specification.
o Size
The size of an array is the total number of elements in the
array (the product of the array's extents).
The extent of a dimension is the number of elements in that
dimension. It is determined as follows: upper bound - lower
bound + 1. If the value of any of an array's extents is zero,
the array has a size of zero.
o Shape
The shape of an array is determined by its rank and extents,
and can be represented as a rank-one array (vector) where each
element is the extent of the corresponding dimension.
Two arrays with the same shape are said to be conformable. A
scalar is conformable to an array of any shape.
The name and rank of an array are constant and must be specified
when the array is declared. The extent of each dimension can be
constant, but does not need to be. The extents can vary during
program execution if the array is a dummy argument array, an
automatic array, an array pointer, or an allocatable array.
A whole array is referenced by the array name. Individual elements
in a named array are referenced by a scalar subscript or list of
scalar subscripts (if there is more than one dimension). A section
of a named array is referenced by a section subscript.
Consider the following array declaration:
INTEGER L(2:11,3)
The properties of array L are as follows:
Data type: INTEGER
Rank: 2 (two dimensions)
Bounds: First dimension: 2 to 11
Second dimension: 1 to 3
Size: 30 (the product of the extents: 10 x 3)
Shape: 10 by 3 (a vector of the extents (10,3))
The following example shows other valid ways to declare this array:
DIMENSION L(2:11,3)
INTEGER, DIMENSION(2:11,3) :: L
COMMON L(2:11,3)
The following example shows references to array elements, array
sections, and a whole array:
REAL B(10) ! Declares a rank-one array with 10 elements
INTEGER C(5,8) ! Declares a rank-two array with 5 elements
! in dimension one and 8 elements in
! dimension two
...
B(3) = 5.0 ! Reference to an array element
B(2:5) = 1.0 ! Reference to an array section consisting of
! elements: B(2), B(3), B(4), B(5)
...
C(4,8) = I ! Reference to an array element
C(1:3,3:4) = J ! Reference to an array section consisting of
! elements: C(1,3) C(1,4)
! C(2,3) C(2,4)
! C(3,3) C(3,4)
B = 99 ! Reference to a whole array consisting of
! elements: B(1), B(2), B(3), B(4), B(5),
! B(6), B(7), B(8), B(9), and B(10)
Additional Information:
explode
extract