ГОСТ Р ИСО 10303-43—2022
rsl := using_representations(mi);
rs2 := [];
-- loop as long as there are elements in rsl
REPEAT WHILE SIZEOF(rsl) > 0;
REPEAT i := 1 TO HIINDEX(rs1);
-- Determine the set of representation_map that reference the parent_set
rms := bag_to_set(USEDIN(rsl[i], ’REPRESENTATION_SCHEMA.REPRESENTATION_
MAP.MAPPED__REPRESENTATION’));
IF SIZEOF(rms) > 0 THEN
REPEAT j := 1 TO HIINDEX(rms);
mis := bag_to_set(USEDIN(rms[i], ’REPRESENTATION_SCHEMA.MAPPED_ITEM.
MAPPING_SOURCE’));
IF SIZEOF(mis) > 0 THEN
REPEAT j := 1 TO HIINDEX(mis);
— check mis members for instance equal with mi. If so then
there is a cycle
IF mis[i] :=: mi THEN
RETURN (FALSE);
END_IF;
rs2 := rs2 + using_representations(mis[i]);
END_REPEAT;
END_IF;
END_REPEAT;
END_IF;
END_REPEAT;
rsl := rs2;
rs2 := [];
END_REPEAT;
RETURN (TRUE);
END_FUNCTION;
(*
Определение параметра:
mi — заданный экземпляр объекта mapped_items.
4.5.2 Функция acyclic_representation_relationship
Функция acyclic_representation_relationship определяет, не участвует ли определяющий связь
представлений объект representation_relationship в цикле по отношению к заданному набору объек
тов representation, определяющих представления.
EXPRESS-спеииФикация:
*)
FUNCTION acyclic_representation_relationship (relation :representation_
relationship, relatives :SET[1:?] OF representation, specific_relation :
STRING) :BOOLEAN;
LOCAL
x : SET OF representation_relationship;
END_LOCAL;
IF relation.rep_l IN relatives THEN
RETURN (FALSE);
END_IF;
x := QUERY(r <* bag_to_set(USEDIN(relation.rep_l, ’REPRESENTATION_SCHEMA
.’
+
’REPRESENTATION_RELATIONSHIP.’ + ’REP_2’)) Ispecific_relation IN TYPEOF(r));
REPEAT i := 1 TO HIINDEX(x);
IF NOT acyclic_representation_relationship(x[i], relatives + relation.
rep_l, specific_relation) THEN
26