: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:

  1. Ersetzen von als Escape-String dargestellten Und-Zeichen (&&) durch ein einzelnes Und-Zeichen

  2. 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