Navigation

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;