Jedes (neue) Makro hat seinen eigenen Namensraum bzw. Kontext., um die Portierbarkeit von Makros zu ermöglichen. Das bedeutet, dass innerhalb des Makros Namen beliebig vergeben werden können, unabhängig davon, ob derselbe Name in der Schaltung bereits vergeben wurde oder nicht. Auch das mehrfache Einfügen desselben Makros in eine Schaltung ist möglich.
Da es dadurch vorkommen kann, dass z. B. ein Bauteil mit dem Namen "Drossel_1" sowohl in der Hauptschaltung als auch in einem Makro1 und in einem Makro2 vorkommen kann, muss bei der Verwendung dieses Namens in einem EbsScript klar sein, welches Objekt nun gemeint ist. Dies geschieht mit Hilfe des Kontexts.
Sobald ein Makro in die Schaltung eingefügt wird, wird ein neuer Kontext angelegt, der den Namen des Makros trägt. Im EbsScript-Editor kann in der EbsScript-Kontextleiste (Kombobox "Kontext öffnen") eingestellt werden, auf welchen Kontext sich die verwendeten Bauteil- und Leitungsnamen beziehen. Die Zeile
Drossel_1.DP12RN:=0;
setzt also den Druckverlust der "Drossel_1" in der Hauptschaltung auf 0, wenn der Kontext auf "Oberste Ebene" steht (Standard-Einstellung).
Um mit diesem Befehl den Druckverlust der "Drossel_1" im Makro1 auf 0 zu setzen, muss vor der Kompilierung der Kontext auf "Makro1" umgestellt werden.
Alternativ besteht auch die Möglichkeit, den Kontext durch die Variable selbst mit anzugeben:
Makro1::Drossel_1.DP12RN:=0;
setzt den Druckverlust der "Drossel_1" im Makro1 auf 0, auch wenn der Kontext auf "Oberste Ebene" (global) steht.
Umgekehrt greift ein vorgestelltes "::" auf einen Namen im globalen Kontext zu, auch wenn der Kontext nicht auf "Oberste Ebene" eingestellt ist:
::Drossel_1.DP12RN:=0;
Da innerhalb eines Makros wiederum Makros verwendet werden können, ist auch eine Verkettung von Kontexten möglich. Der Ausdruck
Kondensierung::ExterneKühlung::Elektro_3.Q
verweist auf die elektrische Leistung auf der Leitung Elektro_3 innerhalb eines Makros "ExterneKühlung", das wiederum in einem Makro "Kondensierung" enthalten ist.
In EbsScript kann man "..." verwenden, um in den übergeordneten Kontext zu springen, z.B. ::ActContext::..::component.spec. Damit ist es insbesondere einfache möglich, von einem Makro aus an die angeschlossenen Komponenten zu kommen.
Für die Umstellung des Kontextes (um zum Beispiel beim Kompilieren in einen Makro-Kontext zu springen) gibt es die folgende Direktive:
{$CTC(„Text“)}: setzt den Compile-Kontext auf text.
Der Kontext kann gewechselt werden, indem Sie mit der Kombobox "Kontext öffnen" aus der Profil-Werkzeugleiste einen anderen Kontext auswählen. Dann wird ein neues Fenster geöffnet, das die Objekte dieses Kontextes anzeigt.
Beim Editieren eines EbsScripts eines (neuen) Makros aus dem Eigenschaften-Dialog des Makros heraus (EbsScript zur Ausführung vor der Rechnung, EbsScript zum Ausführen nach der Rechnung, EbsScript zur Übernahme der Nominalwerte) zeigt die Kombobox "Aktiver Kontext" den Kontext dieses Makros. Dieser Kontext kann hier nicht geändert werden.
Die "Kontext öffnen" Kombobox in der Werkzeugleiste "Profil" und die "Aktiver Kontext" Kombobox in der Werkzeugleiste "EbsScript-Kontext" des EbsScript Editors sind unabhängig voneinander.
Um den Kontext während der Laufzeit eines EbsScriptes zu ändern können die EbsScript-Funktionen setContext, getContext, resetContext, setGlobalContext (siehe EbsScript Funktionen-->Berechnungsfunktionen) genutzt werden.