RULE indentured_list_method_identification_constraint

(* SCHEMA technical_data_packaging; *)
  RULE indentured_list_method_identification_constraint FOR (
             applied_document_reference);

    LOCAL
      prpc   : BAG OF product_related_product_category;
      d      : document;
      p      : product;
      dpa    : BAG OF document_product_association;
      adr    : SET OF applied_document_reference;
      pfd    : product_or_formation_or_definition;
      result : BOOLEAN := TRUE;
    END_LOCAL;
    adr := applied_document_reference;
    REPEAT i := 1 TO SIZEOF(adr) BY 1;
      IF EXISTS(adr[i]\document_reference.role) THEN
        IF (adr[i]\document_reference.role.name = 'indentured by document') 
            OR (adr[i]\document_reference.role.name = 'indentured by item') 
            OR (adr[i]\document_reference.role.name = 
            'indentured by item and document') THEN
          d := adr[i]\document_reference.assigned_document;
          dpa := USEDIN(d,'TECHNICAL_DATA_PACKAGING.' + 
              'DOCUMENT_PRODUCT_ASSOCIATION.RELATING_DOCUMENT');
          REPEAT j := 1 TO SIZEOF(dpa) BY 1;
            pfd := dpa[j].related_product;
            IF 'TECHNICAL_DATA_PACKAGING.PRODUCT' IN TYPEOF(pfd) THEN
              p := pfd;
            ELSE
              IF 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION_FORMATION' 
                  IN TYPEOF(pfd) THEN
                p := pfd\product_definition_formation.of_product;
              ELSE
                IF 'TECHNICAL_DATA_PACKAGING.PRODUCT_DEFINITION' IN 
                    TYPEOF(pfd) THEN
                  p := pfd\product_definition.formation.of_product;
                END_IF;
              END_IF;
            END_IF;
            result := FALSE;
            prpc := USEDIN(p,'TECHNICAL_DATA_PACKAGING.' + 
                'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS');
            REPEAT k := 1 TO SIZEOF(prpc) BY 1;
              IF (prpc[k].name = 'data definition exchange') OR (prpc[k].
                  name = 'indentured data list') THEN
                result := TRUE;
              END_IF;
            END_REPEAT;
          END_REPEAT;
        END_IF;
      END_IF;
    END_REPEAT;

  WHERE
    wr1: result;

  END_RULE; -- indentured_list_method_identification_constraint

[Top Level Definitions] [Exit]

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