ГОСТ Р ИСО 10303-41—2022
26.4Определения функций схемы support_resource_schema
26.4.1 Функция bag_to_set
Функция bag_to_set преобразует агрегатный тип BAG в агрегатный тип SET.
Пример — Данная функция может быть использована для преобразования данных типа BAG,
возвращаемого функцией USEDIN (где используется), в данные типа SET, соответствующие опреде
лению переменных, имеющих тип SET.
EXPRESS-спеииФикаиия:
*)
FUNCTION
GENERIC;
bag_to_set (the_bag :BAG[0:?] OF GENERIC) :SET[0:?] OF
LOCAL
the_set : SET OF GENERIC:intype ;= [];
END_LOCAL;
IF SIZEOF(the_bag) > 0 THEN
REPEAT i := 1 TO HIINDEX(the_bag);
the_set := the_set + the_bag[i];
END_REPEAT;
END_IF;
RETURN (the_set);
END_FUNCTION;
(*
Определение параметра:
the_bag — (входной) тип BAG, подлежащий преобразованию в тип SET.
26.4.2Функция type_check_function
Функция type_check_function сравнивает наименования объектных типов данных, экземпляром
которых является объект, играющий роль параметра the_type, с набором наименований объектных
типов данных, задаваемым параметром sub_names.
В зависимости от значения параметра criterion функция возвращает значение TRUE (истина),
если:
- случай 0: пересечение двух агрегатов не пустое.
Примечание — Если агрегат, играющий роль параметра sub_names, содержит наименования всех под
типов некоторого объектного типа данных, следует убедиться, что экземпляр объекта, играющий роль параметра
the_type, не является экземпляром супертип;
- случай 1: пересечение двух агрегатов пустое.
Примечание — Если агрегат, играющий роль параметра sub_names, содержит наименования подти
пов некоторого объектного типа данных, следует убедиться, что экземпляр объекта, играющий роль параметра
the_type, не является экземпляром какого-либо из этих подтипов;
- случай 2: пересечение двух агрегатов содержит строго одно наименование.
Примечания
1 Если агрегат, играющий роль параметра sub_names, содержит наименования всех подтипов некоторого
объектного типа данных, следует убедиться, что экземпляр объекта, играющий роль параметра the_type, не явля
ется экземпляром сложного объектного типа данных и является только экземпляром одного из его подтипов.
2 Определение концепции сложного (т. е. составного, использующего множественную классификацию дан
ных) экземпляра объекта приведено в ИСО 10303-11;
- случай 3: пересечение двух агрегатов содержит не более одного наименования.
Примечание — Если агрегат, играющий роль параметра sub_names, содержит наименования всех под
типов некоторого объектного типа данных, следует убедиться, что экземпляр объекта, играющий роль параметра
the_type, не является экземпляром сложного объектного типа данных.
EXPRESS-спеииФикация:
*)
FUNCTION
SET[0:?]
type_check_function (the_type :GENERIC; sub_names :
OF STRING; criterion : INTEGER) :LOGICAL; IF ((NOT
270