Bei der indirekten Operandenangabe werden alle Operanden, die man bei der betreffenden EDT-Anweisung angeben möchte, vor der Ausführung der EDT-Anweisung in einer Zeichenfolgevariablen (#S00..#S20
) abgelegt. In der EDT-Anweisung selbst wird dann die indirekte Operandenangabe durch das Zeichen &
eingeleitet, welches dem Anweisungsnamen, getrennt durch ein oder mehrere Leerzeichen, folgt. Direkt nach dem Zeichen &
muss dann der Name der Zeichenfolgevariablen folgen, welche die Operanden der EDT-Anweisung enthält. Weitere Zeichen (außer Leerzeichen) darf die Anweisung nicht enthalten.
Nach Erkennen des Anweisungsnamens wird der Anweisungsrest (Zeichen &
sowie der nachfolgende Name der Zeichenfolgevariablen) durch den Inhalt der angegebenen Zeichenfolgevariablen ersetzt und die darin enthaltenen Operanden ausgewertet.
Ist die Protokollierung eingeschaltet (z.B. @LOG ALL oder @LOG COMMANDS), wird zusätzlich zur Originaleingabe auch die durch Ersetzung erzeugte Anweisung ausgegeben. Bei Ausgabe der verursachenden Zeile vor einer Fehlermeldung, wird nur die Originaleingabe ausgegeben.
Wenn die Länge von Anweisungsname und der Ersetzung der Zeichenfolgevariablen größer als 32768 ist, wird die Abarbeitung der Anweisung mit der Fehlermeldung EDT5485
abgewiesen.
Bei den Anweisungen @+, @-, @IF (Format 1) und @SET (Format 6) kann der Operand text
selbst wieder eine EDT-Anweisung sein. Auch bei diesen, im Operanden text
angegebenen EDT-Anweisungen funktioniert die indirekte Operandenangabe.
Bei den Anweisungen @: (Umdefinieren des EDT-Anweisungssymbols), @+, @- und bei Wertzuweisungen zu EDT-Variablen mit der @SET-Anweisung, wobei der Anweisungsname @SET weggelassen wird, ist keine indirekte Operandenangabe erlaubt. Dies gilt auch für die Anweisung @PARAMS, da bei dieser Anweisung alle Operanden mit dem Zeichen &
beginnen.
Achtung
Bei den Anweisungen @IF und @SET (Format 6) sind bei einer indirekten Operandenangabe Endlosschleifen im EDT möglich, wenn der Operand text
in diesen Anweisungen selbst wieder eine der Anweisungen @IF oder @SET (Format 6) ist, z.B.:
1. @SET #S1='1: @SET &#S1' -------------------------------------- (1)
2. @SET &#S1 ---------------------------------------------------- (2)
oder:
1. @SET #S1='1: @IF &#S2' --------------------------------------- (1)
2. @SET #S2='NO ERRORS: @SET &#S1' ------------------------------ (1)
3. @SET &#S1 ---------------------------------------------------- (2)
(1) Die Zeichenfolgevariablen #S1
bzw. #S2
werden für eine indirekte Operandenangabe mit einem geeigneten Inhalt gefüllt.
(2) Nach Eingabe dieser Anweisung mit indirekten Operanden gerät der EDT in eine Endlosschleife.
Unter Verwendung von noch mehr verschiedenen Zeichenfolgevariablen lassen sich nahezu beliebig komplexe Anweisungsfolgen konstruieren, die zu einer Endlosschleife im EDT führen.