Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:openvms:dcl:symbol

Variablen tragen unter OpenVMS den Namen Symbols und können mehr als nur Zahlen und Buchstaben speichern.

Gültigkeitsbereiche

Symbols können entweder eine lokale oder globale Gültigkeit aufweisen. Ein lokales Symbol hat nur eine begrenze Gültigkeit während ein globales Symbol auch über mehrere Prozessebenen hinweg, z.B. verzweigte Batch-Jobs, gültig sein kann.

Definition

Ein Symbol wird wie folgt definiert:

$ SYMBOL_NAME OPERATOR WERT

Das folgenden Beispiel erstellt ein lokales Symbol namens FOO, das den Wert „BAR“ enthält:

$ FOO = BAR

Der Operator entscheidet über den Gültigkeitsbereich und den Datentyp des Symbols:

OperatorGültigkeitsbereichDatentyp
=lokalString/Integer
:=lokalString
==globalString/Integer
:==globalString

Einige weitere Beispiele:

$ FOO := BAR ! erstellt ein lokales Symbol FOO, das den String "BAR" enthält
$ ZAHL == 12 ! erstellt ein globales Symbol ZAHL, das die Zahl 12 speichert
$ BSP :== AB ! erstellt ein globales Symbol BSP; das den String "AB" erhält

Ausgabe

Der Inhalt von Symbole wird mithilfe des SHOW-Befehls ausgegeben.

Angenommen, die folgenden beiden Symbole wurden definiert:

$ FOO = BAR
$ ZAHL = 1337

Die Ausgabe der Symbole erfolgt nun wie folgt:

$ SHOW SYMBOL FOO
  FOO = "BAR"
$ SHOW SYMBOL ZAHL
  ZAHL = 12  Hex = 0000000C  Octal = 00000000014

Bei numerischen Symbolen wird der Wert in dezimal (10er Basis), hexadezimal (16er Basis) und oktal (8er Basis) ausgegeben.

Befehlsaliase

Wenn bereits vorhandene Kommentare oft mit bestimmten Qualifizierern ausgeführt werden, können diese in einem eigenen gleichnamigen Alias definiert werden.

Angenommen, Dateien werden immer auf der Druckerwarteschlange PRINTERD ausgedruckt - der folgende Alias (übrigens ein globales String-Symbol) verhindert, dass der Qualifizierer /QUEUE=PRINTERD jedes Mal explizit angegeben werden muss:

$ PRINT :== PRINT/QUEUE=PRINTERD

Abbreviations

In DCL werden Befehl oftmals abgekürzt - von nahezu jedem Befehl gibt es eine logische Kurzform, beispielsweise DELETE/DEL oder EDIT/EDT.

Eine solche Abbreviation wird z.B. wie folgt definiert:

$ PR*INT :== PRINT/QUEUE=PRINTERD

Der Befehlsalias PRINT führt den Befehl PRINT automatisch mit dem Qualifizierer /QUEUE=PRINTERD aus und kann auch als PR abgekürzt werden.

Arithmetische Berechnungen

Es ist auch möglich, mit Symbolen zu rechnen - hierfür stehen die üblichen 4 Operatoren zur Verfügung:

OperatorVerwendung
+Addition
-Subtraktion
*Multiplikation
/Division

DCL kennt auch runde Klammern und verwendet diese zur Definition von Berechnungsreihenfolgen.

Zwei Beispiele:

$ ZAHL = 2 * (5+5)
$ SHOW SYMBOL ZAHL
  ZAHL = 20  Hex = 00000014  Octal = 00000000024
  
$ ZAHLB = ZAHL * 2
$ SHOW SYMBOL ZAHLB
  ZAHL = 40  Hex = 00000028  Octal = 00000000050

DCL kennt leider nur Ganzzahlen - Kommazahlen werden nicht unterstützt!

String-Verkettung

Strings können mithilfe des Plus-Operators aneinander gehängt werden:

$ WORT = "WELT"
$ WORT := "HALLO " + WORT

$ SHOW SYMBOL WORT
  WORT = "HALLO WELT"

Da die Shell in aller Regel von rechts beginnt Kommandos abzuarbeiten, erhält das Symbol WORT den Wert „HALLO WELT“.

Entfernen

Symbole werden mithilfe des DELETE-Kommandos entfernt - bei globalen Symbolen wird noch der Qualifizierer /GLOBAL benötigt:

$ WORTA = "Hallo"
$ WORTB == "Welt"

$ DELETE/SYMBOL WORTA
$ DELETE/SYMBOL/GLOBAL WORTB
computer/openvms/dcl/symbol.txt · Zuletzt geändert: 2012/05/19 02:55 von christian