Skip to main content

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_SEC

Details über die Syntax der Definitionstypen sind im Kapitel Syntax der Moduldeklaration beschrieben.

. Spezifikation:
  • Macro_Module: Wenn diese Sektion definiert ist, darf innerhalb der gesamten Moduldeklaration keine weitere Sektion außer der Sektion MetaData vorhanden sein. Jede Moduldeklaration mit dieser Sektion ist eindeutig als Makro-Modul-Typ gekennzeichnet. Es darf auch keine weitere Sektion MacroModule innerhalb 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 Submodule oder Root verwendet, 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 MacroParameter als neue Parameter-ID für den Makro-Modul-Parameter verwendet. Der Parameter des angegebenen Submoduls (oder Root) wird dann über die Definition Local_ParameterID angegeben. Zusätzlich können über die Definitionen New_Name und New_Desc Textlisten-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 MacroParameter innerhalb 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 Submodule oder Root verwendet 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 MacroIO als neue IO-ID für den Makro-Modul-IO verwendet. Der IO des angegebenen Submoduls (oder Root) wird dann über die Definition Local_IOID angegeben. Zusätzlich können über die Definitionen New_Name und New_Desc Textlisteneinträ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 MacroIO innerhalb 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 Submodule oder Root verwendet, 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 MacroSlot als neue SlotID für den Makro-Modul-Slot verwendet. Der Steckplatz des angegebenen Submoduls (oder Root) wird dann über die Definition Local_SlotID angegeben. Zusätzlich kann über die Definitionen New_Role ein 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 MacroSlot innerhalb 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 Rootmodule oder Submodule der umgebenden Sektion MacroModule entspricht. Diese Definition existiert nur innerhalb der Sektion Submodule. Sie definiert die Vater-Modul-Instanz unterhalb derer das durch die jeweilige Sektion Submodule beschriebene Submodul des Makro-Modul-Typen „eingefügt“ werden soll. Dazu ist die Definition Parent_Slot zusätzlich zwingend erforderlich.

  • Parent_Slot: Gibt eine ID an, die der ID eines Steckplatzes entspricht, die unterhalb des durch Parent_Module identifizierten Submodul-Typs zu finden ist. Unter diesem Steckplatz wird das durch die Sektion Submodule beschriebene Submodul des Makro-Modul-Typen eingefügt.

  • Default_Allocation: Ist identisch zur gleichnamigen Sektion unterhalb der Slot-Deklarationen (Slot und 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_Allocation unterhalb einer Sektion Rootmodule kein Instance_Name angegeben werden kann, dagegen unterhalb von Sektionen Submodule schon. 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_Instance unter dem Steckplatz Parent_Slot erzeugt, wobei das Submodul Referenced_Instance referenziert wird. Diese referenzierte Instanz muss so wie die Parent_Instance aus der Menge der Submodule- oder Rootmodule-Instanzen unterhalb der selben Sektion Makro_Module stammen.

. Die Moduldeklaration eines Makro-Modul-Typen muss folgende Bedingungen erfüllen:
  • Sie darf weder IMPLEMENTED_BY noch IMPORTS in ihrer Moduldeklaration verwenden.

  • Sie muss die Sektion MetaData und MacroModule enthalten. Ansonsten dürfen keine weiteren Sektionen vorhanden sein.

  • Unterhalb der Sektion Macro_Modul muss mindestens eine Sektion Rootmodule vorhanden sein. Es darf zudem keine zweite Sektion Rootmodule existieren.

  • Für jedes Submodule muss innerhalb von MacroModule sowohl die Parent_Instance als auch der Parent_Slot definiert sein. Dieser muss dann als Local_SlotID innerhalb von MacroSlot der Parent_Instance definiert sein.