Sektion: MacroModule
Die Sektion beschreibt die Parameter der Makro-Module. Diese Sektion wird automatisch angelegt, wenn Sie ein Makro-Modul erzeugen. Sie können die Sektion auch von Hand in eine Moduldeklaration einfügen oder eine automatisch erzeugte Sektion editieren.
SEC MacroModule                                              //optional: yes, modifier: None
    SEC Rootmodule : <identifier>                            //optional: no, modifier: None
            SEC MacroParameter : <identifier>                    //optional: yes, modifier: None
                    Local_ParameterID := <parameter ID>;             //optional: no, type: ID
                    New_Name := <parameter name>;                    //optional: no, type: text
                    New_Desc := <parameter description>;             //optional: no, type: text
            END_SEC
            SEC MacroIO : <identifier>                           //optional: yes, modifier: None
                    Local_IOID := <IO ID>;                           //optional: no, type: ID
                    New_Name := <IO name>;                           //optional: yes, type: text
                    New_Desc := <IO description>;                    //optional: yes, type: text
            END_SEC
            SEC MacroSlot : <identifier>                         //optional: yes, modifier: None
                    Local_SlotID := <slot ID>;                       //optional: no, type: ID
                    New_Role := <role name>;                         //optional: yes, type: text
            END_SEC
            SEC Default_Allocation                               //optional: no, modifier: None
                    Module_Name := <module name>;                    //optional: no, type: QID
                    SEC VisuEmbeddings                               //optional: yes, modifier: None
                            Empty := TRUE/FALSE;                         //optional: yes, type: BoolFlag
                            SEC Embedding : <identifier>                 //optional: yes, modifier: None
                                    VisuName := <visu ID>;                   //optional: no, type: ID
                                    ProxyVisuName := <proxy visu ID>;        //optional: no, type: ID
                                    Target := <target ID>;                   //optional: yes, type: ID
                                    LinkId := <linke ID>;                    //optional: yes, type: ID
                            END_SEC
                    END_SEC
                    SEC PageVisu                                     //optional: yes, modifier: None
                            VisuName := <visu ID>;                       //optional: yes, type: ID
                            TopLevelTab := <top level tab>;              //optional: yes, type: ID/Bool
                    END_SEC
                    SEC IOMappings : <identifier>                    //optional: no, modifier: None
                            SEC Mapping : <identifier>                   //optional: yes, modifier: None
                                    NoMapping := TRUE/FALSE;                 //optional: yes, type: BoolFlag
                                    STExpression := <ST expression>;         //optional: yes, type: ID/ST expression
                                    ModuleConnection := <module connection>; //optional: yes, type: ID/ST expression
                            END_SEC
                    END_SEC
                    SEC Parameters : <identifier>                    //optional: yes, modifier: None
                            SEC Param : <identifier>                     //optional: yes, modifier: None
                                    Value := <value ID>;                     //optional: no, type: ID
                            END_SEC
                    END_SEC
            END_SEC
    END_SEC
    SEC Submodule : <identifier>                             //optional: yes, modifier: None
            Parent_Instance := <instance ID>;                    //optional: no, type: ID
            Parent_Slot := <slot ID>;                            //optional: no, type: ID
            SEC MacroParameter : <identifier>                    //optional: yes, modifier: None
                    Local_ParameterID := <parameter ID>;             //optional: no, type: ID
                    New_Name := <parameter name>;                    //optional: yes, type: text
                    New_Desc := <parameter description>;             //optional: yes, type: text
            END_SEC
            SEC MacroIO : <identifier>                           //optional: yes, modifier: None
                    Local_IOID := <IO Id>;                           //optional: no, type: ID
                    New_Name := <IO name>;                           //optional: yes, type: text
                    New_Desc := <IO description>;                    //optional: yes, type: text
            END_SEC
            SEC MacroSlot : <identifier>                         //optional: yes, modifier: None
                    Local_SlotID := <slot ID>;                       //optional: no, type: ID
                    New_Role := <role name>;                         //optional: yes, type: text
            END_SEC
            SEC Default_Allocation                               //optional: no, modifier: None
                    Module_Name := <module name>;                    //optional: no, type: QID
                    Instance_Name := <instance name>;                //optional: no, type: ID
                    SEC VisuEmbeddings                               //optional: no, modifier: None
                            Empty := TRUE/FALSE;                         //optional: yes, type: BoolFlag
                            SEC Embedding : <identifier>                 //optional: yes, modifier: None
                                    VisuName := <visu ID>                    //optional: no, type: ID
                                    ProxyVisuName := <proxy visu ID>         //optional: no, type: ID
                                    Target := <target ID>;                   //optional: yes, type: ID
                                    LinkId := <link ID>;                     //optional: yes, type: ID
                            END_SEC
                    END_SEC
                    SEC PageVisu                                     //optional: yes, modifier: None
                            VisuName := <visu ID>;                       //optional: yes, type: ID
                            TopLevelTap := <top level tab>;              //optional: yes, type: ID/Bool
                    END_SEC
                    SEC IOMappings : <identifier>                    //optional: yes, modifier: None
                            SEC Mapping : <identifier>                   //optional: yes, modifier: None
                                    NoMapping := TRUE/FALSE                  //optional: yes, type: BoolFlag
                                    STExpression := <ST expression>          //optional: yes, type: ID/ST expression
                                    ModuleConnection := <module connection>  //optional: yes, type: ID/ST expression
                            END_SEC
                    END_SEC
                    SEC Parameters                                   //optional: yes, modifier: None
                            SEC Param : <identifier>                     //optional: yes, modifier: None
                            Value := <value>;                           //optional: no, type: ID
                            END_SEC
                    END_SEC
            END_SEC
    END_SEC
    SEC Reference : <identifier>                             //optional: yes, modifier: None
            Parent_Instance := <instance ID>;                    //optional: no, type: ID
            Parent_Slot := <slot ID>;                            //optional: no, type: ID
            Referenced_Instance := <instance ID>;                //optional: no, type: ID
    END_SEC
END_SECDetails über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.
- Macro_Module: Wenn diese Sektion definiert ist, darf innerhalb der gesamten Moduldeklaration keine weitere Sektion außer der Sektion- MetaDatavorhanden sein. Jede Moduldeklaration mit dieser Sektion ist eindeutig als Makro-Modul-Typ gekennzeichnet. Es darf auch keine weitere Sektion- MacroModuleinnerhalb einer Moduldeklaration geben.
- Rootmodule: Zeigt an, dass die folgenden Untersektionen das Wurzel-Submodul beschreiben, das die Wurzel dieses Macro-Modul-Typs sein soll und zu oberst als Vater aller anderen Submodule des Makro-Modul-Typs eingefügt werden soll.
- Submodule: Zeigt an, dass die folgenden Untersektionen ein Submodul beschreiben, das für den Makro-Modul-Typ irgendwo im Unterbaum unter dem Wurzel-Submodul eingefügt werden soll.
- MacroParameter: Wird eine solche Sektion innerhalb einer Sektion- Submoduleoder- Rootverwendet, kann angegeben werden, dass ein bestimmter Parameter des definierten Submoduls (oder Root) als Parameter des Makro-Moduls selbst auftreten soll. Dazu wird das Target der Sektion- MacroParameterals neue Parameter-ID für den Makro-Modul-Parameter verwendet. Der Parameter des angegebenen Submoduls (oder Root) wird dann über die Definition- Local_ParameterIDangegeben. Zusätzlich können über die Definitionen- New_Nameund- New_DescTextlisten-Einträge angegeben werden. Diese Einträge werden für Name und Beschreibung des neuen Makro-Modul-Parameters anstelle derjenigen des Submodul- oder Root-Parameters verwendet. Alle angegebenen Targets aller Sektionen- MacroParameterinnerhalb eines gesamten Makro-Moduls müssen eindeutig sein, so dass alle Makro-Modul-Parameter eindeutige Parameter-IDs besitzen.
- MacroIO: Wenn eine solche Sektion innerhalb der Sektion- Submoduleoder- Rootverwendet wird, kann angegeben werden, dass ein bestimmter IO des definierten Submoduls (oder Root) als IO des Makro-Moduls selbst auftreten soll. Dazu wird das Target der Sektion- MacroIOals neue IO-ID für den Makro-Modul-IO verwendet. Der IO des angegebenen Submoduls (oder Root) wird dann über die Definition- Local_IOIDangegeben. Zusätzlich können über die Definitionen- New_Nameund- New_DescTextlisteneinträge angegeben werden. Diese Einträge werden für Name und Beschreibung des neuen Makro-Modul-IOs anstelle derjenigen des Submodul- oder Root-IOss verwendet. Alle angegebenen Targets aller Sektionen- MacroIOinnerhalb eines gesamten Makro-Moduls müssen eindeutig sein, so dass alle Makro-Modul-IOs eindeutige IO-IDs besitzen.
- MacroSlot: Wird diese Sektion innerhalb der Sektion- Submoduleoder- Rootverwendet, kann angegeben werden, dass ein bestimmter Steckplatz des definierten Submoduls (oder Root) als Steckplatz des Makro-Moduls selbst auftreten soll. Somit kann unterhalb dieses Steckplatzes der Makro-Modul-Instanz weitere Modulinstanzen eingefügt werden. Dazu wird das Target der Sektion- MacroSlotals neue SlotID für den Makro-Modul-Slot verwendet. Der Steckplatz des angegebenen Submoduls (oder Root) wird dann über die Definition- Local_SlotIDangegeben. Zusätzlich kann über die Definitionen- New_Roleein Textlisteneintrag angegeben werden. Dieser Eintrag wird für die „Role“ des neuen Makro-Modul-Slots anstelle desjenigen des Submodul- oder Root-Slots verwendet. Alle angegebenen Targets aller Sektionen- MacroSlotinnerhalb eines gesamten Makro-Moduls müssen eindeutig sein, so dass alle Makro-Modul-Slots eindeutige Slot-IDs besitzen.
- Parent_Instance: Gibt eine ID an, die einer Target-ID einer Sektion- Rootmoduleoder- Submoduleder umgebenden Sektion- MacroModuleentspricht. Diese Definition existiert nur innerhalb der Sektion- Submodule. Sie definiert die Vater-Modul-Instanz unterhalb derer das durch die jeweilige Sektion- Submodulebeschriebene Submodul des Makro-Modul-Typen „eingefügt“ werden soll. Dazu ist die Definition- Parent_Slotzusätzlich zwingend erforderlich.
- Parent_Slot: Gibt eine ID an, die der ID eines Steckplatzes entspricht, die unterhalb des durch- Parent_Moduleidentifizierten Submodul-Typs zu finden ist. Unter diesem Steckplatz wird das durch die Sektion- Submodulebeschriebene Submodul des Makro-Modul-Typen eingefügt.
- Default_Allocation: Ist identisch zur gleichnamigen Sektion unterhalb der Slot-Deklarationen (- Slotund- Slot_Multi). Diese Sektion gibt sowohl für „Rootmodule“ als auch „Submodule“ an, was für ein Submodul des Makro-Modul-Typs mit welcher Instanz-Konfiguration eingefügt werden soll. Einziger Unterschied ist, dass für- Default_Allocationunterhalb einer Sektion- Rootmodulekein- Instance_Nameangegeben werden kann, dagegen unterhalb von Sektionen- Submoduleschon. Der Grund ist, dass die als „Rootmodule“ eingefügten Modul-Instanzen ihren Namen von der Makro-Modul-Instanz bekommen und deshalb nicht „default“ angegeben werden können.
- Reference: Zeigt an, dass die folgenden Untersektionen eine Modul-Referenz beschreiben. Dabei wird eine Referenz unter der Modul-Instanz- Parent_Instanceunter dem Steckplatz- Parent_Sloterzeugt, wobei das Submodul- Referenced_Instancereferenziert wird. Diese referenzierte Instanz muss so wie die- Parent_Instanceaus der Menge der Submodule- oder Rootmodule-Instanzen unterhalb der selben Sektion- Makro_Modulestammen.
- Sie darf weder - IMPLEMENTED_BYnoch- IMPORTSin ihrer Moduldeklaration verwenden.
- Sie muss die Sektion - MetaDataund- MacroModuleenthalten. Ansonsten dürfen keine weiteren Sektionen vorhanden sein.
- Unterhalb der Sektion - Macro_Modulmuss mindestens eine Sektion- Rootmodulevorhanden sein. Es darf zudem keine zweite Sektion- Rootmoduleexistieren.
- Für jedes - Submodulemuss innerhalb von- MacroModulesowohl die- Parent_Instanceals auch der- Parent_Slotdefiniert sein. Dieser muss dann als- Local_SlotIDinnerhalb von- MacroSlotder- Parent_Instancedefiniert sein.