RULE profile_design_definition_has_zero_or_two_class_references

(* SCHEMA step_ship_schema; *)
-- ONLY IN AP218
RULE profile_design_definition_has_zero_or_two_class_references FOR (
             product_definition_shape, shape_aspect, group,
             applied_classification_assignment);

    LOCAL
      violation : LOGICAL := FALSE;
      t1_set    : SET OF product_definition_shape := [];
      c_a_set   : SET OF applied_classification_assignment := [];
      t2_set    : SET OF shape_aspect := [];
    END_LOCAL;
    c_a_set := QUERY ( i <* applied_classification_assignment | (i.
        assigned_class.name = 'profile design definition') );
    REPEAT i := 1 TO HIINDEX(c_a_set) BY 1;
      REPEAT j := 1 TO HIINDEX(c_a_set[i].items) BY 1;
        t1_set := t1_set + c_a_set[i].items[j];
      END_REPEAT;
    END_REPEAT;
    REPEAT i := 1 TO HIINDEX(t1_set) BY 1 WHILE NOT violation;
      t2_set := bag_to_set(USEDIN(t1_set[i],
          'STEP_SHIP_SCHEMA.SHAPE_ASPECT.OF_SHAPE'));
      violation := (NOT (SIZEOF(QUERY ( t2_inst <* t2_set | ('border' IN
          which_class(t2_inst)) )) = 0)) AND (NOT (SIZEOF(
          QUERY ( t2_inst <* t2_set | ('border' IN which_class(t2_inst)) ))
          = 2));
    END_REPEAT;

  WHERE
    wr1: (NOT violation);

END_RULE;

[Top Level Definitions] [Exit]

Generated by STEP ToolsTM EXPRESS to HTML Converter
on 2007-09-24T12:42:21-04:00