Informační tok Funkční structura Datová struktura ER model Modulová struktura Typová struktura Relační model Dokumentace


[Celkový datový model] [Funkce] [Externí rohraní] [Stavové diagramy] [Datové elementy] [Entity] [Relace]
[Databáze] [Události] [Materiály] [Generovací funkce] [Vyhodnocovací funkce] [Konfigurace] [Uživatelé] [Projekt] [Home]



Vyhodnocovací funkce
Check_Refinements
(Data Structure/Event/Material)


Vytvořeno: 11-27-1996 10:50:10
Poslední změna: 12-10-2002 13:43:33

Outputs a list of all elements whose refinements are formally incorrect. The list is grouped by element types field, conditions, and structure elements.

Modul

Module: Data Structure/Event/Material

Zdrojový kód:

PROCEDURE Check_Refinements FOR DATASTRUCTURE
BEGIN
/*
  check refinements; print name of elements with only one child element
*/

  PRINT {"ARIAL",12,BOLD} "Test větvení datové struktury ";
  PRINT {"ARIAL",12,BOLD,ITALIC} CONV$(Datastructure.Boxname),NL(2);

  first%=0;
  found%=0;
  // Fields
  FOREACH Field WHERE Field.Datastructure=Datastructure.Name DO
    children%=0;
    FOREACH Field AS F WHERE F.Pfieldno=Field.Fieldno
                       AND F.Ppage=Field.Page
                       AND F.Datastructure=Field.Datastructure DO
      children%=children%+count();
      BREAK;
    END
    FOREACH Dpart AS P WHERE P.Pfieldno=Field.Fieldno
                       AND P.Ppage=Field.Page
                       AND P.Datastructure=Field.Datastructure DO
      children%=children%+count();
      BREAK;
    END
    FOREACH Entitypart AS E WHERE E.Pfieldno=Field.Fieldno
                            AND E.Ppage=Field.Page
                            AND E.Datastructure=Field.Datastructure DO
      children%=children%+count();
      BREAK;
    END
    FOREACH Dcond AS C WHERE C.Pfieldno=Field.Fieldno
                       AND C.Ppage=Field.Page
                       AND C.Datastructure=Field.Datastructure DO
      children%=children%+count();
      IF Condition="lo" OR Condition="st" THEN
        children%=children%+1;
      END
      BREAK;
    END
    
    IF children% = 1 THEN
      found%=1;
      IF first%=0 THEN
        PRINT {BOLD,"ARIAL",10} "Neúplné větvení:",NL;
        first%=1;
      END
      PRINT {"ARIAL",10} TAB(4),CONV$(Field.Boxname),NL;
    END

  END

  // conditions without children
  first%=0;
  FOREACH Dcond AS C1 WHERE C1.Datastructure=Datastructure.Name
                      AND C1.Condition <> "em" ORDER BY Page,Boxname DO
    children%=0;
    FOREACH Entitypart WHERE Entitypart.Pcondno=C1.Dcondno DO
      children%=children%+COUNT();
      BREAK;
    END
    FOREACH Dpart WHERE Dpart.Pcondno=C1.Dcondno AND
                        Dpart.Datastructure=C1.Datastructure AND
                        Dpart.Ppage=C1.Page DO
      children%=children%+COUNT();
      BREAK;
    END
    FOREACH Field WHERE Field.Pcondno=C1.Dcondno AND
                        Field.Datastructure=C1.Datastructure AND
                        Field.Ppage=C1.Page DO
      children%=children%+COUNT();
      BREAK;
    END
    FOREACH Dcond WHERE Dcond.Pcondno=C1.Dcondno AND
                        Dcond.Datastructure=C1.Datastructure AND
                        Dcond.Ppage=C1.Page DO
      children%=children%+1;
      IF Condition="lo" OR Condition="st" THEN
        children%=children%+1;
      END
    END
    
    IF children% = 0 THEN
      found%=1;
      IF first%=0 THEN
        PRINT {BOLD,"ARIAL",10} "Neúplné větvení:",NL;
        first%=1;
      END
      PRINT {"ARIAL",10} TAB(4),CONV$(C1.Boxname),NL;
    END
  END
  
  // structure elements without child elements
  first%=0;
  FOREACH Dcond AS C1 WHERE C1.Datastructure=Datastructure.Name
                      AND C1.Condition = "em" ORDER BY Page,Boxname DO
    children%=0;
    FOREACH Entitypart WHERE Entitypart.Pcondno=C1.Dcondno DO
      children%=children%+COUNT();
      BREAK;
    END
    FOREACH Dpart WHERE Dpart.Pcondno=C1.Dcondno AND
                        Dpart.Datastructure=C1.Datastructure AND
                        Dpart.Ppage=C1.Page DO
      children%=children%+COUNT();
      BREAK;
    END
    FOREACH Field WHERE Field.Pcondno=C1.Dcondno AND
                        Field.Datastructure=C1.Datastructure AND
                        Field.Ppage=C1.Page DO
      children%=children%+COUNT();
      BREAK;
    END
    FOREACH Dcond WHERE Dcond.Pcondno=C1.Dcondno AND
                        Dcond.Datastructure=C1.Datastructure AND
                        Dcond.Ppage=C1.Page DO
      children%=children%+COUNT();
      BREAK;
    END
    
    IF children%=0 THEN
      found%=1;
      IF first%=0 THEN
          PRINT {BOLD,"ARIAL",10} "Strukturní elementy bez větvení.",NL;
          first%=1;
      END
    END
  END

  IF found%=0 THEN
    PRINT {"ARIAL",10} TAB(4),"Bez chyb větvení.",NL;
  END
  PRINT NL;

END


Generováno: 16.10.2003 7:41 Systém: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\Projekt03.csf Generováno systémem case/4/0
Vygeneroval: Administrator Soubor: C:\Documents and Settings\hajsman\Dokumenty\Vyuka\Irs2\Projekt case40\html\3094.htm (C) microTOOL GmbH 2002