Static arrays
Static arrays have a predefined and limited size.
Defining static arrays
Static arrays can store a one-, two- or three-dimensional array of variables, all of the same
type. An array member can be any type except another array (ARRAY ... OF
ARRAY
).
MAIN
DEFINE custlist ARRAY[100] OF RECORD
id INTEGER,
name VARCHAR(50)
END RECORD
LET custlist[50].id = 12456
LET custlist[50].name = "Beerlington"
END MAIN
Multi-dimentional static arrays
The multi-dimensional array syntax
(ARRAY[i[,j[,k]]]
) specifies
static arrays defined with an explicit size for all dimensions. Static arrays have a size
limit. The biggest static array size you can define is 65535.
A single array element can be referenced by specifying its coordinates in each dimension of the array.
MAIN
DEFINE a1 ARRAY[100] OF INTEGER
LET a1[50] = 12456
LET a1[5000] = 12456 -- Runtime error!
END MAIN
Element types
MAIN
DEFINE arr ARRAY[50] OF RECORD
key INTEGER,
name CHAR(10),
address VARCHAR(200),
contacts ARRAY[50] OF VARCHAR(20)
END RECORD
LET arr[1].key = 12456
LET arr[1].name = "Scott"
LET arr[1].contacts[1] = "Bryan COX"
LET arr[1].contacts[2] = "Mike FLOWER"
END MAIN
Passing static arrays to functions
Static arrays are passed by value to functions. This is not recommended, as all array members will be copied on the stack.
A static array cannot be returned from a function.
Consider using dynamic arrays if you need to pass/return a list of elements to/from functions.
Using array methods
Array methods can be used on static arrays; However these methods are designed for dynamic arrays and are not appropriate for static arrays.