ГОСТ Р ИСО 10303-43—2022
next_items := QUERY(z <* bag_to_set(USEDIN(item , ’’)) |
(’REPRESENTATION_SCHEMA.REPRESENTATION_ITEM’ IN TYPEOF(z)) OR
(’REPRESENTATION_SCHEMA.FOUNDED_ITEM’IN TYPEOF(z)));
-- If the set of next_items is not empty;
IF SIZEOF(next_items) > 0 THEN
-- For each element in the set, find the using_items recursively
REPEAT i := 1 TO HIINDEX(next_iterns);
-- Check for loop in data model, i.e. one of the next_items
-- occurred earlier in the set of check_items;
IF NOT(next_iterns[i] IN new_check_items) THEN
result_items := result_items + next_items[i] +
using_items(next_items[i],new_check_items);
END_IF;
END_REPEAT;
END_IF;
-- return the set of representation_items or founded_items
-- in which the input item is used directly and indirectly.
RETURN (result_items);
END_FUNCTION;
(*
Определение параметров:
item — объект representation_item, для которого определяются ссылающиеся на него экземпля
ры объектов representation_item и foundedjtem . Это — входной параметр функции;
checked_items — набор экземпляров объектов representation_item и foundedjtem , которые
уже проверены. Набор вводится для того, чтобы обеспечить завершение рекурсивной функции. Это —
входной параметр функции.
4.5.6 Функция using_representations
Функция using_representations возвращает набор представлений, в которых используется экзем
пляр объекта representationjtem.
Объект representationjtem используется в представлении, если на объект ссылается:
- атрибут items объекта representation;
- используемый в представлении объект representationjtem, или
- используемый в представлении объект foundedjtem .
Примечание — Второе итретье из условий требует проверки, допускающей, что объект representation_
item может быть использован объектом representation за счет того, что объект representationjtem входит вдере
во связанных между собой экземпляров объектов representationjtem и foundedjtem. Корнем дерева является
экземпляр объекта, для которого справедливо первое условие использования объектом representation.
Объект foundedjtem или representationjtem используется в представлении в том случае, если
на него прямо или косвенно ссылается экземпляр объекта representationjtem, входящий во множе
ство, играющее роль атрибута items рассматриваемого экземпляра объекта representation.
EXPRESS-спеииФикация:
*)
FUNCTION using_representations (item : founded_item_select) :SET[0:?] OF
:SET OF representation;
:BAG OF representation;
:SET OF founded_item_select;
representation;
LOCAL
results
result_bag
intermediate_items
END_LOCAL;
-- Find the representations in which the item is used and add to the
-- results set.
results := [];
resultJoag := USEDIN(item,
’
REPRESENTATION_SCHEMA.REPRESENTATION.ITEMS’);
IF SIZEOF(result_bag) > 0 THEN
29