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_IMP
(Module Structure)


Vytvořeno: 12-11-1995 11:45:21
Poslední změna: 12-05-2002 10:16:05

Checks for the conditions of all implementation trees defined in the specified module structure for formal correctness and correct refinements.

Modul

Module: Module Structure

Zdrojový kód:

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

  PRINT {"ARIAL",12,BOLD} "Test podmínek v implementačních stromech modulu ";
  PRINT {"ARIAL",12,BOLD,ITALIC} CONV$(Module.Boxname),NL(2);

  // Condition
  first%=0;
  nofunc%=0;
  FOREACH Funcdef WHERE Funcdef.Module=Module.Name ORDER BY Boxname DO
    found%=0;
    FOR Implbox WHERE Module=Funcdef.Module AND
                      Funcdefno=Funcdef.Funcdefno AND
                      Page=1 AND
                      x=286 AND y=15 DO
      found%=1;
    END
    IF found%<>0 THEN
      found%=0;
      nofunc%=1;
      PRINT {"ARIAL",10,BOLD} "Implementační strom ";
      PRINT {"ARIAL",10,BOLD,ITALIC} CONV$(Funcdef.Boxname),NL(2);
  
      FOREACH Implbox AS C1 WHERE C1.Module=Funcdef.Module AND
                                  C1.Funcdefno=Funcdef.Funcdefno AND
                                  C1.Parentpage<>0 AND
                                 (C1.Boxtyp="in" OR
                                  C1.Boxtyp="ex" OR
                                  C1.Boxtyp="sw" OR
                                  C1.Boxtyp="pp")
                                DO
        lonely%=0;
        CALL TestIMPCond(C1.Module, C1.Funcdefno, C1.Boxtyp, C1.X, C1.Parentpage, C1.Parentno, 0, lonely%);
        IF lonely%=0 THEN
          // missing condition
          found%=1;
          IF C1.Boxtyp="in" THEN
            PRINT {"ARIAL",10} "osamocená incluzivní podmínka ";
          ELSIF C1.Boxtyp="ex" THEN
            PRINT {"ARIAL",10} "osamocená exkluzivní podmínka ";
          ELSIF C1.Boxtyp="sw" THEN
            PRINT {"ARIAL",10} "osamocené větvení case ";
          ELSIF C1.Boxtyp="pp" THEN
            PRINT {"ARIAL",10} "osamocené paralelní větvení ";
          END
          FOR Implbox WHERE Implbox.Boxno=C1.Parentno AND
                            Implbox.Page=C1.Parentpage AND
                            Implbox.Module=C1.Module AND
                            Implbox.Funcdefno=C1.Funcdefno DO
            IF Implbox.Boxtyp="em" THEN
              PRINT {"ARIAL",10} "strukturní prvek pod",NL;
            ELSE
              PRINT {"ARIAL",10} "prvek pod ";
              PRINT {"ARIAL",10,ITALIC} CONV$(Implbox.Boxname);
              PRINT {"ARIAL",10,ITALIC} ": ",CONV$(C1.Boxname),NL;
            END
          END
          First%=1;
        END
      END
      IF first%=1 THEN
        PRINT NL;
      END
      // missing child elements underneath condition
      first%=0;
      FOREACH Implbox AS C1 WHERE C1.Module=Funcdef.Module AND
                                  C1.Funcdefno=Funcdef.Funcdefno AND
                                  C1.Parentpage<>0 AND
                                 (C1.Boxtyp="in" OR
                                  C1.Boxtyp="ex" OR
                                  C1.Boxtyp="lo" OR
                                  C1.Boxtyp="sw" OR
                                  C1.Boxtyp="st" OR
                                  C1.Boxtyp="re" OR
                                  C1.Boxtyp="it" OR
                                  C1.Boxtyp="pp") DO
        children%=0;
        FOREACH Implbox WHERE Implbox.Parentno=C1.Boxno AND
                              Implbox.Page=C1.Page AND
                              Implbox.Module=C1.Module AND
                              Implbox.Funcdefno=C1.Funcdefno DO
          children%=children%+COUNT();
          BREAK;
        END
        IF children%=0 THEN
          IF first%=0 THEN
            PRINT {"ARIAL",10,BOLD} "Podmínky bez prvků pod nimi:",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 Implbox AS C1 WHERE C1.Module=Funcdef.Module AND
                                  C1.Funcdefno=Funcdef.Funcdefno AND
                                  C1.Parentpage=0 AND NOT
                                 (C1.Page=1 AND C1.X=286 AND C1.Y=15) AND
                                 (C1.Boxtyp="in" OR
                                  C1.Boxtyp="ex" OR
                                  C1.Boxtyp="lo" OR
                                  C1.Boxtyp="sw" OR
                                  C1.Boxtyp="ex" OR
                                  C1.Boxtyp="re" OR
                                  C1.Boxtyp="it" OR
                                  C1.Boxtyp="pp") DO
        IF first%=0 THEN
          PRINT {"ARIAL",10} "Nepřipojené prvky:",NL;
          first%=1;
          found%=1;
        END
        PRINT {"ARIAL",10,ITALIC} TAB(4),CONV$(c1.Boxname),NL;
      END
      
      IF found%=0 THEN
        PRINT {"ARIAL",10} TAB(4), "Bez chyby.",NL;
      END
      PRINT NL;
    END
  END
  IF nofunc%=0 THEN
    PRINT {"ARIAL",10,ITALIC} TAB(4), "V modulu nejsou žádné implementační stromy.",NL(2);
  END

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\21455.htm (C) microTOOL GmbH 2002