Kontrollstrukturen
ForEachItem()
Diese Funktion bildet ein Schleifenkonstrukt nach, das über alle Elemente in einem Array läuft. Dieses Array stellt auch den Rückgabewert dar, ggf. mit in der Schleife modifizierten Werten.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Array | Array, über dessen Elemente iteriert werden soll |
2 | (variabel) | Makroausdruck, der für jedes Element in dem Array ausgeführt wird Der Wert des aktuellen Elements und dessen Positionsnummer werden in diesem Ausdruck über die Variablen |
Beispiele
Das folgende Makro erhöht beispielsweise für jeder der 3 Array-Elemente den Wert um 1:
ForEach([1, 2, 3], @Value = @Value + 1)
Als Gesamtergebnis wird in diesem Fall das modifizierte Array [2, 3, 4] zurückgeliefert.
Die Operation muss sich nicht zwingend auf die Array-Elemente selbst auswirken, sondern kann auch ein anderes Feld modifizieren. Wenn das "Zielfeld" den Anfangswert 0 hat, ist dieser Wert nach der Makroausführung auf 6 erhöht, doch das Array bleibt unverändert:
ForEach([1, 2, 3], @Zielfeld = @Zielfeld + @Value)
If()
Diese Funktion bildet eine If-Then-Kontrollstruktur nach. Eine Bedingung wird zunächst ausgewertet und abhängig vom Ergebnis dieser Bedingung wird ein angegebener Makroausdruck ausgeführt oder nicht. Der Rückgabetyp variiert in Abhängigkeit vom Ergebnis des ausgeführten Makroausdrucks.
Bei Nichtausführung des Ausdrucks wird kein Rückgabewert geliefert. Ein Zielfeld bekommt somit keinen Ergebniswert zurückgeliefert, sondern behält den aktuellen Wert.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Bool | Makroausdruck, der die Bedingung darstellt |
2 | (variabel) | Makroausdruck, der bei gültiger Bedingung ausgeführt wird |
Beispiele
If(TRUE, "OK") ergibt "OK".
If(FALSE, "OK") liefert keinen Wert zurück.
If(TRUE, @Test = "OK") setzt den Wert des Feldes Test auf "OK".
If(FALSE, @Test = "OK") ändert das Feld Test nicht.
IfElse()
Diese Funktion bildet eine If-Then-Else-Kontrollstruktur nach. Eine Bedingung wird ausgewertet und abhängig vom Ergebnis der Bedingung wird einer von 2 angegebenen Makroausdrücken ausgeführt.
Der Rückgabetyp variiert in Abhängigkeit vom Ergebnis der Makroausdrücke.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Bool | Makroausdruck, der die Bedingung darstellt |
2 | (variabel) | Makroausdruck, der bei gültiger Bedingung ausgeführt wird |
3 | (variabel) | Makroausdruck, der bei ungültiger Bedingung ausgeführt wird |
Beispiele
IfElse(FALSE, "OK", "NotOK") ergibt "NotOK".
IfElse(TRUE, @OK = TRUE, @NotOK = TRUE) setzt den Wert des Feldes OK auf TRUE.
Switch()
Diese Funktion bildet eine Switch-Case-Kontrollstruktur nach. Die Parameterliste ist variabel lang und besteht abwechselnd aus einer auszuwertenden Bedingung und einem zugehörigen Makroausdruck. Der Makroausdruck wird nur bei gültiger Bedingung ausgeführt und danach wird die Makroausführung beendet, ansonsten wird die nächste Bedingung ausgewertet.
Der Rückgabetyp variiert in Abhängigkeit vom Ergebnis der Makroausdrücke.
Wenn keine der Bedingungen gültig ist, wird kein Rückgabewert geliefert. Somit wird dem Zielfeld kein Ergebniswert zugewiesen, sondern behält den aktuellen Wert.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Bool | erster Makroausdruck, der eine Bedingung darstellt |
2 | (variabel) | Makroausdruck, der bei Gültigkeit der vorigen Bedingung ausgeführt wird |
… | ||
n-1 | Bool | letzter Makroausdruck, der eine Bedingung darstellt |
n | (variabel) | Makroausdruck, der bei Gültigkeit der vorigen Bedingung ausgeführt wird |
Beispiele
Switch(FALSE, "Case1", TRUE, "Case2") ergibt "Case2".
Switch(FALSE, "Case1", FALSE, "Case2") liefert keinen Wert zurück.
Switch(FALSE, @Test = "Case1", TRUE, @Test = "Case2") setzt den Wert des Feldes Test auf "Case2".
Switch(FALSE, @Test = "Case1", FALSE, @Test = "Case2") ändert das Feld Test nicht.