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
(Function Structure)


Vytvořeno: 12-11-1995 11:10:58
Poslední změna: 12-04-2002 10:11:38

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

Modul

Module: Function Structure

Zdrojový kód:

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

  PRINT {"ARIAL",12,BOLD} "Test podmínek funkční struktury ";
  PRINT {"ARIAL",12,BOLD,ITALIC} CONV$(Functionstructure.Boxname),NL(2);

  found%=0;
  
  // conditions
  first%=0;
  FOREACH Cond AS C1 WHERE C1.Fsd=Functionstructure.Name AND
                           C1.Ppage<>0 AND
                          (C1.Cond="in" OR
                           C1.Cond="ex" OR
                           C1.Cond="pp")
                           ORDER BY Page,Boxname DO
    CALL TestFSDCond(Fsd,Cond,Ppage,Pfuncno,Pblockno,Pcondno,condno,X,erg%);
    IF erg%=1 THEN
      // missing condition
      found%=1;
      IF c1.Cond="in" THEN
        PRINT {"ARIAL",10} "osamocená inkluzivní podmínka ";
      ELSIF c1.Cond="ex" THEN
        PRINT {"ARIAL",10} "osamocená excluzivní podmínka ";
      ELSIF c1.Cond="pp" THEN
        PRINT {"ARIAL",10} "osamocené paralelní větvení";
      END
      IF C1.Pfuncno<>0 THEN
        FOR Func WHERE Func.Funcno=C1.Pfuncno AND
                       Func.Fsd=C1.Fsd AND
                       Func.Page=C1.Ppage DO
          FOR Function WHERE Function.Name=Func.Function DO
            PRINT {"ARIAL",10} "funkce pod ";
            PRINT {"ARIAL",10,ITALIC} CONV$(Function.Boxname);
          END
        END
      ELSIF C1.Pblockno<>0 THEN
        FOR Block WHERE Block.Blockno=C1.Pblockno AND
                        Block.Page=C1.Ppage AND
                        Block.Fsd=C1.Fsd DO
          PRINT {"ARIAL",10} "blok pod ";
          PRINT {"ARIAL",10,ITALIC} CONV$(Block.Boxname);
        END
      ELSIF C1.Pcondno<>0 THEN
        FOR Cond WHERE Cond.Condno=C1.Pcondno AND
                       Cond.Page=C1.Ppage AND
                       Cond.Fsd=C1.Fsd DO
          PRINT {"ARIAL",10} "podmínka pod ";
          PRINT {"ARIAL",10,ITALIC} CONV$(Cond.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 Cond AS C1 WHERE C1.Fsd=Functionstructure.Name
                     AND NOT Cond="br"
                     ORDER BY Page,Boxname DO
    kinder%=0;
    FOREACH Block WHERE Block.Pcondno=C1.Condno AND
                        Block.Ppage=C1.Page AND
                        Block.Fsd=C1.Fsd DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    FOREACH Part WHERE Part.Pcondno=C1.Condno AND
                       Part.Ppage=C1.Page AND
                       Part.Fsd=C1.Fsd DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    FOREACH Func WHERE Func.Pcondno=C1.Condno AND
                       Func.Ppage=C1.Page AND
                       Func.Fsd=C1.Fsd DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    FOREACH Cond WHERE Cond.Pcondno=C1.Condno AND
                       Cond.Ppage=C1.Page AND
                       Cond.Fsd=C1.Fsd DO
      kinder%=kinder%+COUNT();
      BREAK;
    END
    IF kinder%=0 THEN
      IF first%=0 THEN
        PRINT {BOLD,"ARIAL",10} "Podmínky bez pod ně připojený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 Cond AS C1 WHERE C1.Fsd=Functionstructure.Name AND
                           C1.Ppage=0
                           ORDER BY Page,Boxname DO
    IF first%=0 THEN
      PRINT {BOLD,"ARIAL",10} "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),"Bez formálních chyb.",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\27559.htm (C) microTOOL GmbH 2002