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
Relation_with_References
(Relation)


Vytvořeno: 12-08-1995 18:43:20
Poslední změna: 12-10-2002 09:16:47

Outputs a list of all elements or diagrams the specified relation is referenced by.

Modul

Module: Relation

Zdrojový kód:

PROCEDURE Relation_with_References(Name$,Area$)
BEGIN
/*
  list references to relation
*/

  FOR Relation WHERE Name=Name$ DO
    PRINT {BOLD,"ARIAL",10} CONV$(Boxname),NL;
  
    //Relation in REL
    FOREACH Relnode WHERE Relnode.Relation=Relation.Name
                      AND Area<>Area$ ORDER BY Area DO
      FOR Relarea WHERE Relarea.Name=Relnode.Area DO
        found%=1;
        PRINT {"ARIAL",8} TAB(4),"Relační model:", TAB(18);
        PRINT {"ARIAL",ITALIC,8} CONV$(Relarea.Boxname),NL;
      END
    END
  
    // TSD
    FOREACH Typestructure ORDER BY Name DO
      referenced% = 0;
      // Relationsreferenz?
      FOREACH Relationpart WHERE Relation=Relation.Name
                         AND Typestructure = Typestructure.Name DO
        referenced% = 1;
        BREAK;
      END
      // Attribute reference?
      FOREACH Tfield WHERE Relation=Relation.Name
                     AND Typestructure = Typestructure.Name DO
        referenced% = referenced% + 2;
        // if referenced: print!
        IF referenced% > 0 THEN
          found%=1;
          PRINT {"ARIAL",8} TAB(4),"Typová struktura:";
          PRINT {"ARIAL",ITALIC,8} TAB(18), CONV$(Typestructure.Boxname),NL;
          PRINT {"ARIAL",8} TAB(18), "Typ: ";
          PRINT {"ARIAL",ITALIC,8} CONV$(Tfield.Boxname), TAB(36);
          IF referenced% = 1 THEN
            PRINT {"ARIAL",8} "(relace)";
          ELSIF referenced% = 2 THEN
            PRINT {"ARIAL",8} "(atribut relace)";
          ELSIF referenced% = 3 THEN
            PRINT {"ARIAL",8} "(relace a atribute";
          END
          PRINT {"ARIAL",8} NL;
        END
        BREAK;
      END
    END
  
    //Entity Types
    FOREACH Entity WHERE Entity.Name=Relation.Entity ORDER BY Name DO
      PRINT {"ARIAL",8} TAB(4),"ER model:", TAB(18);
      FOREACH Enode WHERE Entity=Entity.Name DO
        FOR Erarea WHERE Name=Enode.Area DO
          PRINT {"ARIAL",ITALIC,8} CONV$(Boxname);
        END
        BREAK;
      END
      found%=1;
      PRINT {"ARIAL",8} TAB(36),"(entita ";
      PRINT {"ARIAL",8,ITALIC} CONV$(Boxname);
      PRINT {"ARIAL",8} ")",NL;
    END
    
    //Attributeconnection
    Ent$ = "";
    FOREACH Attributeconnection WHERE Relation = Relation.Name ORDER BY Attributeconnection.Entity DO
      IF Ent$ <> Attributeconnection.Entity THEN
        FOR Entity WHERE Entity.Name=Attributeconnection.Entity DO
          PRINT {"ARIAL",8} TAB(4),"ER-model:", TAB(18);
          FOREACH Enode WHERE Entity=Entity.Name DO
            FOR Erarea WHERE Name=Enode.Area DO
              PRINT {"ARIAL",ITALIC,8} CONV$(Boxname);
            END
            BREAK;
          END
          found%=1;
          PRINT {"ARIAL",8} TAB(36),"(entita ";
          PRINT {"ARIAL",8,ITALIC} CONV$(Boxname), ", reference na atribut";
          PRINT {"ARIAL",8} ")",NL;
        END
        Ent$ = Entity;
      END
    END
    
    //RShips
    FOREACH Rship WHERE Rship.Id=Relation.Rship ORDER BY Name DO
      PRINT {"ARIAL",8} TAB(4),"ER model:", TAB(18);
      FOREACH Rnode WHERE rship=Rship.Id DO
        FOR Erarea WHERE Name=Rnode.Area DO
          PRINT {"ARIAL",ITALIC,8} CONV$(Boxname);
        END
        BREAK;
      END
      found%=1;
      PRINT {"ARIAL",8} TAB(36),"(relační vztah";
      IF NOT Rship.name="" THEN
        PRINT {"ARIAL",8,ITALIC} " ",CONV$(Rship.Name);
      END
      PRINT {"ARIAL",8} ")",NL;
    END
  
    //Relationref in MOD
    FOREACH Module ORDER BY Name DO
      FOREACH Relationref WHERE Module = Module.Name
                         AND Relation = Relation.Name DO
        PRINT {"ARIAL",8} TAB(4),"Modulová struktura:", TAB(18);
        PRINT {"ARIAL",ITALIC,8} CONV$(Module.Boxname);
        PRINT {"ARIAL",8} TAB(36),"(relace ";
        PRINT {"ARIAL",8,ITALIC} CONV$(Boxname);
        PRINT {"ARIAL",8} ")",NL;
        found%=1;
      END
    END
  
    // Widgetattribute
    lastfuncdef%=0;
    FOREACH Widgetattribute WHERE Relation=Relation.Name ORDER BY Funcdefno DO
      IF lastfuncdefno%<>Funcdefno THEN
        FOR Widget WHERE Name=Widgetattribute.Resource
                     AND Module=Widgetattribute.Module DO
          FOR Funcdef WHERE Funcdefno=Widgetattribute.Funcdefno
                        AND Module=Widget.Module DO
            found%=1;
            PRINT {"ARIAL",8} TAB(4),"Modulová struktura:";
            FOR Module WHERE Name=Funcdef.Module DO
              PRINT {"ARIAL",8,ITALIC} TAB(18),CONV$(Boxname);
            END
            PRINT {"ARIAL",8} TAB(36),"(dialogová funkce: ";
            PRINT {"ARIAL",8,ITALIC} CONV$(Funcdef.Boxname);
            PRINT {"ARIAL",8} ")",NL;
          END
        END
      END
      lastfuncdefno%=Funcdefno;
    END
  
    FOREACH Databaserelation WHERE Relation = Relation.Name
            ORDER BY Database DO
      PRINT {"Arial", 8} TAB(4),"Databáze:", TAB(18);
      PRINT {"Arial", 8, ITALIC} Database, NL;
      found%=1;
    END

    IF found%=0 THEN
      PRINT {"ARIAL",10,ITALIC} TAB(4),"Neexistuje žádný odkaz na relaci.",NL;
    END
    PRINT NL;
  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\20795.htm (C) microTOOL GmbH 2002