An array is an indexed collection of component variables, called the elements of the array. The indexes are the values of an ordinal type, called the index type of the array. The elements all have the same size and the same type, called the element type of the array.
There are two kinds of array types, fixed and open. The length of a fixed array is determined at compile time. The length of an open array type is determined at runtime, when it is allocated or bound. The length cannot be changed thereafter.
The shape of a multi-dimensional array is the sequence of its lengths in each dimension. More precisely, the shape of an array is its length followed by the shape of any of its elements; the shape of a non-array is the empty sequence.
Arrays are assignable if they have the same element type and shape. If either the source or target of the assignment is an open array, a runtime shape check is required.
A fixed array type declaration has the form:
TYPE T = ARRAY Index OF Elementwhere
Index
is an ordinal type and Element
is any type other
than an open array type. The values of type T
are arrays whose element
type is Element
and whose length is the number of elements of the type
Index
. If Element
is an empty type, then so is T
.
If a
has type T
, then a[i]
designates the element of
a
whose position corresponds to the position of i
in
Index
. For example, consider the declarations:
VAR a := ARRAY [1..3] OF REAL {1.0, 2.0, 3.0}; VAR b: ARRAY [-1..1] OF REAL := a;Now
a = b
is TRUE
; yet a[1] = 1.0
while
b[1] = 3.0
. The interpretation of indexes is determined by an array's
type, not its value; the assignment b := a
changes b
's value,
not its type. (This example uses variable initialization, and array
constructors.)
An expression of the form:
ARRAY Index_1, ..., Index_n OF Elementis shorthand for:
ARRAY Index_1 OF ... OF ARRAY Index_n OF ElementThis shorthand is eliminated from the expanded type definition used to define structural equivalence. An expression of the form
a[i_1, ..., i_n]
is
shorthand for a[i_1]...[i_n]
.
An open array type declaration has the form:
TYPE T = ARRAY OF Elementwhere
Element
is any type. The values of T
are arrays whose
element type is Element
and whose length is arbitrary. The index type
of an open array is the integer subrange [0..n-1]
, where n
is
the length of the array. If Element
is an empty type, then so
is T
.
An open array type can be used only as the type of a formal parameter, the referent of a reference type, the element type of another open array type, or as the type in an array constructor.
Examples of array types:
TYPE Transform = ARRAY [1..3], [1..3] OF REAL; Vector = ARRAY OF REAL; SkipTable = ARRAY CHAR OF INTEGER
m3-support@elego.de