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_Conditions
(Data Structure/Event/Material)


Vytvořeno: 12-11-1995 12:59:48
Poslední změna: 12-04-2002 10:08:15

Checks the specified data structure for formal correctness of the condition boxes in the diagram.

Modul

Module: Data Structure/Event/Material

Zdrojový kód:

PROCEDURE Check_Conditions FOR DATASTRUCTURE
BEGIN
/*
  check conditions; print name of parent nodes under which unclear
  combinations of conditions are arranged
*/

  PRINT {"ARIAL",12,BOLD} "Test podmínek v datové struktuře ";
  PRINT {"ARIAL",12,BOLD,ITALIC} CONV$(Datastructure.Boxname),NL(2);

  found%=0;
  
  // inclusive condition
  first%=0;
  FOREACH Dcond AS C1 WHERE C1.Datastructure=Datastructure.Name AND
                           C1.Ppage<>0 AND
                           C1.Condition="in" ORDER BY Page,Boxname DO
    CALL TestDSDCond(C1.Datastructure,C1.Condition,C1.Ppage,
                     C1.Pfieldno,C1.Pcondno,C1.Dcondno,C1.X,erg%);
    IF erg%=1 THEN
      // missing condition

      found%=1;
      IF first%=0 THEN
        PRINT {BOLD,"ARIAL",10} "osamocená inklusivní podmínka:",NL;
      END
      IF C1.Pfieldno<>0 THEN
        FOR Field WHERE Field.Fieldno=C1.Pfieldno AND
                        Field.Datastructure=C1.Datastructure AND
                        Field.Page=C1.Ppage DO
          PRINT {"ARIAL",10} TAB(4),"položka pod ní ";
          PRINT {"ARIAL",10,ITALIC} CONV$(Field.Boxname);
        END
      ELSIF C1.Pcondno<>0 THEN
        FOR Dcond WHERE Dcond.Dcondno=C1.Pcondno AND
                        Dcond.Datastructure=C1.Datastructure AND
                        Dcond.Page=C1.Ppage DO
          PRINT {"ARIAL",10} TAB(4),"podmínka pod ní ";
          PRINT {"ARIAL",10,ITALIC} CONV$(Dcond.Boxname);
        END
      END
      PRINT {"ARIAL",10} ": ",CONV$(C1.Boxname),NL;
      first%=1;
    END
  END
  IF first%=1 THEN
    PRINT NL;
  END

  // exclusive condition
  first%=0;
  FOREACH Dcond AS C1 WHERE C1.Datastructure=Datastructure.Name AND
                           C1.Ppage<>0 AND
                           C1.Condition="ex" ORDER BY Page,Boxname DO
    CALL TestDSDCond(C1.Datastructure,C1.Condition,C1.Ppage,
                     C1.Pfieldno,C1.Pcondno,C1.Dcondno,C1.X,erg%);
    IF erg%=1 THEN
      // einsame Bedingung
      found%=1;
      IF first%=0 THEN
        PRINT {BOLD,"ARIAL",10} "osamocená exclusivní podmínka:",NL;
      END
      IF C1.Pfieldno<>0 THEN
        FOR Field WHERE Field.Fieldno=C1.Pfieldno AND
                        Field.Datastructure=C1.Datastructure AND
                        Field.Page=C1.Ppage DO
          PRINT {"ARIAL",10} TAB(4),"položka pod ní ";
          PRINT {"ARIAL",10,ITALIC} CONV$(Field.Boxname);
        END
      ELSIF C1.Pcondno<>0 THEN
        FOR Dcond WHERE Dcond.Dcondno=C1.Pcondno AND
                        Dcond.Datastructure=C1.Datastructure AND
                        Dcond.Page=C1.Ppage DO
          PRINT {"ARIAL",10} TAB(4),"podmínka pod ní ";
          PRINT {"ARIAL",10,ITALIC} CONV$(Dcond.Boxname);
        END
      END
      PRINT {"ARIAL",10} ": ",CONV$(C1.Boxname),NL;
      First%=1;
    END
  END
  IF first%=1 THEN
    PRINT NL;
  END

  // missing child elements underneath condition
  first%=0;
  FOREACH Dcond AS C1 WHERE C1.Datastructure=Datastructure.Name
                      AND C1.Condition <> "em" ORDER BY Page,Boxname DO
    kinder%=0;
    FOREACH Entitypart WHERE Entitypart.Pcondno=C1.Dcondno DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    FOREACH Dpart WHERE Dpart.Pcondno=C1.Dcondno AND
                        Dpart.Datastructure=C1.Datastructure AND
                        Dpart.Ppage=C1.Page DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    FOREACH Field WHERE Field.Pcondno=C1.Dcondno AND
                        Field.Datastructure=C1.Datastructure AND
                        Field.Ppage=C1.Page DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    FOREACH Dcond WHERE Dcond.Pcondno=C1.Dcondno AND
                        Dcond.Datastructure=C1.Datastructure AND
                        Dcond.Ppage=C1.Page DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    
    IF kinder%=0 THEN
      IF first%=0 THEN
        PRINT {BOLD,"ARIAL",10} "Podmínky bez pod ně řazených prvků:",NL;
        first%=1;
        found%=1;
      END
      PRINT {"ARIAL",10} TAB(4),CONV$(C1.Boxname),NL;
    END
  END
  
  IF first%=1 THEN
    PRINT NL;
  END

  // conditions without connection to parent element
  first%=0;
  FOREACH Dcond AS C1 WHERE C1.Datastructure=Datastructure.Name AND
                            C1.Ppage=0 DO
    IF first%=0 THEN
      PRINT {"ARIAL",10,BOLD} "Nepřipojené podmínky:",NL;
      first%=1;
      found%=1;
    END
    PRINT {"ARIAL",10} TAB(4),CONV$(C1.Boxname),NL;
  END

  IF found%=0 THEN
    PRINT {"ARIAL",10} TAB(4),"Nebyly nalezeny žádné formální chyby podmínek.",NL;
  END
  PRINT NL(2);
 
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\19618.htm (C) microTOOL GmbH 2002