using_representations

EXPRESS specification:

FUNCTION using_representations
(* Modified for LPM/6 *)(item : founded_item_select) : SET OF representation; LOCAL results : SET OF representation; result_bag : BAG OF representation; intermediate_items : SET OF founded_item_select; END_LOCAL; (* Find the representations in which the item is used and add to the results set. *) results := []; result_bag := USEDIN(item,'STRUCTURAL_FRAME_SCHEMA.REPRESENTATION.ITEMS'); IF SIZEOF(result_bag) > 0 THEN REPEAT i := 1 TO HIINDEX(result_bag); results := results + result_bag[i]; END_REPEAT; END_IF; (* Find all representation_items or founded_items by which item is referenced directly or indirectly. *) intermediate_items := using_items(item,[]); (* If the set of intermediate items is not empty; *) IF SIZEOF(intermediate_items) > 0 THEN (* For each element in the set, add the representations of that element. *) REPEAT i := 1 TO HIINDEX(intermediate_items); result_bag := USEDIN(intermediate_items[i], 'STRUCTURAL_FRAME_SCHEMA.REPRESENTATION.ITEMS'); IF SIZEOF(result_bag) > 0 THEN REPEAT j := 1 TO HIINDEX(result_bag); results := results + result_bag[j]; END_REPEAT; END_IF; END_REPEAT; END_IF; (* Return the set of representation in which the input item is used directly and indirectly (through intervening representation_items or founded items). *) RETURN (results);
END_FUNCTION;