FUNCTION using_representations
(item : founded_item_select) : SET [0:?] 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,'REPRESENTATION_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], 'REPRESENTATION_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; -- using_representations
|