ГОСТ Р И С 0 10303-11 — 2009
Если оба операнда являются пакетами и некоторый элемент
е
присутствует в одном пакете
m
раз,
а в другом пакете —
п
раз (где
m
меньше или равно
п),
то результат должен
m
раз содержать элемент
е.
Если какой-либо из операндов имеет неопределенное (?) значение, то результат будет также иметь неопре
деленное (?) значение.
Т а б л и ц а 16 — Оператор пересечения: типы данных операндов и результата
Первый
операнд
Второй
операнд
Результат
BAG
BAG
BAG
BAG
SET
SET
SET
SET
SET
SET
BAG
SET
12.6.3 Оператор объединения
Оператор объединения (♦) принимает два операнда, один из которых должен быть агрегированной
структурой, и выдает результат агрегированного типа данных. Допустимые типы данных операндов и соот
ветствующие им типы данных результата приведены в таблице 17. Результатоператора объединения опре
деляется по первому выполненному из следующих условий:
a) Если левый операнд является пакетом, а правый операнд — пакетом, списком или набором, эле
менты которого совместимы с базисным типом данных левого операнда, то результатом является левый
операнд плюс все элементы правого операнда.
b
) Если левый операнд является набором, а правый операнд — пакетом, списком или набором, эле
менты которого совместимы с базисным типом данных левого операнда, то результат формируется следу
ющим образом: сначала результату присваивается значение левого операнда, затем по очереди рассмат
риваются элементы правого операнда и, если очередного элемента нет в результирующем наборе, то
данный элемент добавляется в результирующий набор.
c) Если оба операнда являются совместимыми списками, то результирующий список представляет
собой левый операнд сдобавленным к его концу правым операндом.
П р и м е ч а н и е — Результирующий список может содержать повторяющиеся элементы даже если оба
операнда были объявлены как LIST OF UNIQUE.
d) Если тип данных одного из операндов
(Е)
совместим с базисным типом данных другого операнда
(А),
то операнд
Е
добавляется к
А
следующим образом:
- если
А
является набором, то результирующим набором является
А.
к которомудобавлен набор
Е,
если только
Е
уже не содержится в
А;
- если
А
является списком, то результирующим списком является
А
со списком
Е.
вставленным на
позицию 1, если
Е
был левым операндом, или на позицию
SIZEOF(A+1).
если
Е
был правым операндом.
П р и м е ч а н и е — Результирующий список может содержать повторяющиеся элементы, даже если
операнд, являющийся списком, был объявлен как LIST OF UNIQUE:
- если
А
является пакетом, то результат будет пакетом, содержащим
А
и
Е.
e) Если какой-либо из операндов имеет неопределенное (?) значение, то результат будет также иметь
неопределенное (?) значение.
Т а б л и ц а 17 — Оператор объединения: типы данных операндов и результата
Первый
операнд
Второй
операнд
Результат
BAG
BAG
BAG
BAG
Элемент
BAG
Элемент
BAG
BAG
BAG
SET
BAG
82