Областью определения типа данных BAG являются неупорядоченные совокупности подобных элементов. Необязательные нижняя и верхняя границы, задаваемые выражениями, имеющими целочисленные значения, определяют минимальное и максимальное число элементов в совокупности, определенной типом данных BAG.
Синтаксис: |
Правила и ограничения:
a) Выражение bound_1 должно иметь целочисленное значение, большее или равное нулю. Оно задает нижнюю границу, определяющую минимальное число элементов, которое может содержаться в экземпляре пакета этого типа данных. Выражение bound_1 не должно иметь неопределенного (?) значения.
b) Выражение bound_2 должно иметь целочисленное значение, большее или равное значению bound_1, либо неопределенное (?) значение. Оно задает верхнюю границу, определяющую максимальное число элементов, которое может содержаться в экземпляре пакета этого типа данных. Если значение данного выражения является неопределенным (?), то число элементов в экземпляре пакета этого типа данных не ограничено сверху.
c) Если элемент bound_spec опущен, то границы пакета определяются как [0:?].
Пример - В данном примере атрибут a_bag_of_points определен как пакет объектов point (объекты point относятся к именованному типу данных, который объявлен в другом месте).
a_bag_of_points : BAG OF point;
Экземпляр атрибута a_bag_of_points может содержать ни одного или несколько объектов point. Один и тот же экземпляр объекта point может появиться несколько раз в экземпляре a_bag_of_points.
Если требуется, чтобы экземпляр атрибута a_bag_of_points содержал, по крайней мере, один элемент, то в спецификации нижняя граница должна быть определена следующим образом:
a_bag_of_points: BAG [l:?] OF point;
Экземпляр атрибута a_bag_of_points теперь должен содержать, по крайней мере, один объект point.