RULE hull_cross_section_contains_specified_classes

(* SCHEMA ship_structures_schema; *)
  RULE hull_cross_section_contains_specified_classes FOR (
             applied_group_assignment, group, 
             applied_classification_assignment);
    LOCAL
      violation : LOGICAL := FALSE;
      cl_ass    : SET OF applied_classification_assignment := [];
      gr_ass    : SET OF applied_group_assignment := [];
      pd        : SET OF product_definition := [];
      groups    : SET OF group := [];
    END_LOCAL;
    cl_ass := QUERY ( i <* applied_classification_assignment | ((i.role.
        name = 'class membership') AND (i.assigned_class.name = 
        'hull cross section')) );
    REPEAT i := 1 TO HIINDEX(cl_ass) BY 1;
      REPEAT j := 1 TO HIINDEX(cl_ass[i].items) BY 1;
        pd := pd + cl_ass[i].items[j];
      END_REPEAT;
    END_REPEAT;
    gr_ass := QUERY ( i <* applied_group_assignment | (i.role.name = 
        'equivalence') );
    REPEAT i := 1 TO HIINDEX(gr_ass) BY 1;
      REPEAT j := 1 TO HIINDEX(gr_ass[i].items) BY 1;
        IF gr_ass[i].items[j] IN pd THEN
          groups := groups + gr_ass[i].assigned_group;
        END_IF;
      END_REPEAT;
    END_REPEAT;
    gr_ass := QUERY ( i <* applied_group_assignment | (((SIZEOF(i.items) 
        <> 0) AND (i.role.name = 'item structure')) AND (i.assigned_group 
        IN groups)) );
    REPEAT i := 1 TO HIINDEX(gr_ass) BY 1 WHILE NOT violation;
      violation := SIZEOF(QUERY ( inst <* gr_ass[i].items | ((
          'compartment' IN which_class(inst)) AND ('structural system' IN 
          which_class(inst))) )) > 0;
    END_REPEAT;
  WHERE
    wr1: NOT violation;
  END_RULE; -- hull_cross_section_contains_specified_classes

[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:17:03-04:00