Областью определения типа данных ARRAY являются индексированные совокупности подобных элементов фиксированного размера. Нижняя и верхняя границы, задаваемые выражениями, имеющими целочисленные значения, определяют диапазон значений индекса и, следовательно, размер массива. В определении типа данных ARRAY может факультативно устанавливаться, что в массиве не могут присутствовать одинаковые элементы. Кроме того, может быть установлено, что элементы массива могут не присутствовать на всех индексированных позициях.
Синтаксис: |
Пусть является нижней границей, а - верхней, тогда в массиве имеется ровно элементов. Эти элементы проиндексированы подстрочными индексами от до включительно (см. 12.6.1).
Примечание - Границы массива могут быть положительными, отрицательными или равными нулю, но не могут быть неопределенными (?) (см. 14.2).
Правила и ограничения:
a) Оба выражения в спецификации границ (bound_1 и bound_2) должны иметь целочисленные значения. Ни одно из них не должно иметь неопределенного (?) значения.
b) Выражение bound_1 задает нижнюю границу массива. Оно задает наименьшее значение индекса, допустимое для элементов массива этого типа данных.
c) Выражение bound_2 задает верхнюю границу массива. Оно задает наибольшее значение индекса, допустимое для элементов массива этого типа данных.
d) Значение выражения bound_1 должно быть меньше или равно значению выражения bound_2.
e) Если указано ключевое слово OPTIONAL, то массив этого типа данных может иметь неопределенное (?) значение в одной или нескольких индексированных позициях.
f) Если ключевое слово OPTIONAL не указано, то массив этого типа данных не должен содержать неопределенных (?) значений ни в одной индексированной позиции.
g) Если указано ключевое слово UNIQUE, то каждый элемент массива этого типа данных должен отличаться (то есть не быть эквивалентным экземпляром) от любого другого элемента того же массива.
Примечание - Оба ключевых слова OPTIONAL и UNIQUE могут использоваться в одном и том же определении типа данных ARRAY. Это не исключает многократного появления неопределенных (?) значений элементов массива, поскольку сравнение неопределенных (?) значений дает результат UNKNOWN и, следовательно, условие уникальности не нарушается.
Пример - Данный пример показывает, как объявляется многомерный массив.
sectors : | ARRAY [ 1 : 10 ] OF -- первое измерение | |||
ARRAY [ 11 : 14 ] OF -- второе измерение | ||||
UNIQUE something; |
Первый массив содержит 10 элементов типа данных ARRAY [11:14] OF UNIQUE something. Атрибут с именем sectors содержит всего 40 элементов типа данных something. В каждом из массивов ARRAY [11:14] не может быть повторяющихся элементов. Однако один и тот же экземпляр объекта something может присутствовать в двух разных массивах ARRAY [11:14] одного экземпляра атрибута sectors.