|
(* 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);
|
|