:RESOLVE
Verwenden Sie die Script-Anweisung :RESOLVE, um die in einem String enthaltenen Variablen aufzulösen. Diese Script-Anweisung funktioniert wie eine Kombination aus einer :SET-Anweisung und der Funktion RESOLVE_VAR. Das System versucht, jeden Typ von Variablen aufzulösen:
- PromptSet-Variablen
- Systemvariablen
- Script-Variablen
- VARA-Objekte
Syntax
: RESOLVE Script-Variable = String
-
:RESOLVE
Versucht, alle im String enthaltenen Variablen aufzulösen -
Script-Variable
Script-Variable, die auf den aufgelösten Wert gesetzt wird -
String
Script-String
Der String kann beliebig viele Variablen beliebigen Typs enthalten.
Format: Script-Literal
Hinweis: Wenn das System eine Variable nicht auflösen kann, bleibt die Variable unverändert. Der resultierende Wert wird der Variablen zugewiesen.
Funktionsweise der Variablenauflösung
:RESOLVE kann mehrere Runden mit variabler Auflösung ausführen:
-
Ersetzen von als Escape-String dargestellten Und-Zeichen (&&) durch ein einzelnes Und-Zeichen
-
Auflösen von Variablen in einem beliebigen String mit einem kaufmännischen Und-Zeichen, gefolgt von:
- Mindestens einem Zeichen, das Teil eines Variablennamens sein kann
- Mindestens einen Zeichen, das nicht Teil eines Variablennamens sein darf
Diese Schritte werden wiederholt, bis keine als Escape-Strings dargestellten Und-Zeichen und keine ungelösten Variablen mehr übrig sind.
Nicht definierte Variablen führen zu einem Laufzeitfehler. Variablen ohne Wert werden in ein einzelnes Leerzeichen aufgelöst (' ').
Auflösungstiefe
:RESOLVE kann bis zu zwei Schachtelungsebenen auflösen. Um weitere Ebenen verschachtelter Variablen zu lösen, fügen Sie zusätzliche :RESOLVE-Befehle zum Auflösen der Inhalte der Variablen hinzu. Zum Beispiel:
:SET &Env# = "EXP"
:SET &SysName_EXP# = "AE_EXP"
:SET &CompanyName_AE_EXP# = "MyCompany_AE_EXP"
:RESOLVE &System# = "&&&&CompanyName_&&SysName_&Env###"
:RESOLVE &System# = "&System#"
:PRINT "System: &System#"
Der erste :RESOLVE-Befehl löst die inneren zwei Variablen auf, &ENV# und dann &SysName_EXP#. Der zweite :RESOLVE-Befehl löst dann die äußerste Variable &CompanyName_AE_EXP# auf. Das Ergebnis sieht wie folgt aus:
U00020408 System: MyCompany_AE_EXP
Beispiele
Angenommen, ein SQLI VARA-Objekt (VARA.SQLI_TEST) enthält SQL, das Versions- und Build-Nummern zurückgibt. Das folgende Script löst das SQLI VARA-Objekt in einen String auf. Das Script weist den resultierenden Text als Wert einer Script-Variablen namens &ret# zu.
: RESOLVE &ret# = "Dies ist Version {VARA.SQLI_TEST}"
: PRINT &ret#
Die zweite Script-Zeile druckt den Wert der Script-Variablen im Aktivierungsreport aus:
2014-11-18 11:50:22 - U00020408 Dies ist Version 11.0.0+build.2751
Das folgende Beispiel löst ein statisches VARA-Objekt namens VARA_RESOLVE auf und gibt den Wert im Aktivierungsreport aus. Die Parameter in der :RESOLVE-Anweisung geben den Schlüssel und den Wert im VARA-Objekt an. Der in im VARA-Objekt gespeicherte Wert ist eine Phrase (dies ist der Hauptschlüssel).
: RESOLVE &var# = "{VARA_RESOLVE,key1,1}"
: PRINT &var#
Das Script gibt folgende Zeilen im Aktivierungsreport aus:
2014-11-18 17:50:32 - U00020408 {VARA_RESOLVE,key1,1}
2014-11-18 17:50:32 - U00020408 Dies ist der Hauptschlüssel