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


Vytvořeno: 12-08-1995 15:59:54
Poslední změna: 12-04-2002 10:19:52

Traverses a function structure until the specified level is reached. This function returns a list of records consisting of the name of each function and its hierarchy level.

Modul

Module: Function Structure

Zdrojový kód:

PROCEDURE FSD_TraverseMax(Fsd$, Page%, maxLevel%,
                          Pfuncno%, Pblockno%, Pcondno%, Ppage%,
                          level%, BYREF fList$)
BEGIN
    IF level% <= maxLevel% THEN
        indent%=4;
        x%=2;
        WHILE x%<=570 DO
        
            // Funktionen checken
            FOR Func WHERE Fsd=Fsd$ AND Page=Page%
                     AND Pfuncno=Pfuncno%
                     AND Pblockno=Pblockno%
                     AND Pcondno=Pcondno%
                     AND Ppage=Ppage%
                     AND X=x% DO
                CALL FSD_FuncListPushLast (fList$, Function, level%);
                // Ist Func auf Folgeseite verfeinert?
                p%=Page%;
                FOR Funcpage WHERE Fsd=Fsd$ AND Funcpage=Page% AND
                                   Funcno=Func.Funcno DO
                    p%=Page;
                END
                // Standardbausteine nicht weiter betrachten
                FOR Function WHERE Name=Function DO
                    IF Reusable = 0 THEN
                        CALL FSD_TraverseMax (Fsd$, p%, maxLevel%, Funcno, 0, 0, Page%,
                                           level%+1, fList$);
                    END
                END
            END
            
            // Conditions checken
            FOR Cond WHERE Fsd=Fsd$ AND Page=Page%
                     AND Pfuncno=Pfuncno%
                     AND Pblockno=Pblockno%
                     AND Pcondno=Pcondno%
                     AND Ppage=Ppage%
                     AND X=x% DO
                // PRINT TAB(level%*indent%), "C ", Cond, " ", Boxname, NL;
                CALL FSD_TraverseMax (Fsd$, Page, maxLevel%, 0, 0, Condno, Page%,
                                   level%, fList$);
            END
    
            // Blocks checken
            FOR Block WHERE Fsd=Fsd$ AND Page=Page%
                     AND Pfuncno=Pfuncno%
                     AND Pblockno=Pblockno%
                     AND Pcondno=Pcondno%
                     AND Ppage=Ppage%
                     AND X=x% DO
                // PRINT TAB(level%*indent%), "B ", Boxname, NL;
                // Ist Func auf Folgeseite verfeinert?
                p%=Page%;
                FOR Blockpage WHERE Fsd=Fsd$ AND Blockpage=Page% AND
                                   Blockno=Block.Blockno DO
                    p%=Page;
                END
                CALL FSD_TraverseMax (Fsd$, p%, maxLevel%, 0, Blockno, 0, Page%,
                                   level%, fList$);
            END
    
            // Parts checken
            FOR Part WHERE Fsd=Fsd$ AND Page=Page%
                     AND Pfuncno=Pfuncno%
                     AND Pblockno=Pblockno%
                     AND Pcondno=Pcondno%
                     AND Ppage=Ppage%
                     AND X=x% DO
                CALL FSD_FuncListPushLast (fList$, Name, level%);
                FOR Functionstructure WHERE Name=Part.Name DO
                    FOR Func WHERE Fsd=Name AND
                                   Page=1 AND Function=Name DO
                        CALL FSD_TraverseMax (Fsd, 1, maxLevel%,
                                Funcno, 0, 0, 1, level%+1, fList$);
                    END
                END
            END
            
            x%=x%+71;
        END
    END // of IF level% <= maxLevel%
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\5135.htm (C) microTOOL GmbH 2002