Makros können ganz einfach über die DEFINE MAKRO
-Anweisung definiert werden:
DEFINE MAKRO __msg "MESSAGE \"Hallo Welt!\" TYPE I"; $(__msg); UNDEFINE MAKRO __msg;
In diesem Beispiel wird das Makro __msg
mit dem Wert
MESSAGE "Hallo Welt!" TYPE I
belegt. Ein Aufruf des Makros via $(__msg)
führt daher dazu, dass der Text Hallo Welt! in einem Dialog dargestellt wird.
Makrovariablen können entweder vor oder während der Ausführung von OMS-SL-Skripten ausgewertet werden. Dazu stehen die Makrofunktionen $
– und (ab Version 2.2) $!
zur Verfügung.
- Mit der
$
-Funktion werden Makros vor der Ausführung komplett ersetzt. Zum Beispiel wird das SkriptSELECT * FROM Einkäufe WHERE Auftragsdatum = {d'$(.Year)-$(.Month)-$(.Day)'};
in einem Präprozessor-Schritt zu
SELECT * FROM Einkäufe WHERE Auftragsdatum = {d'2015-01-01'};
ausgewertet und an die Datenbank übergeben.
- Das
$!
-Makro wertet die Makrovariablen erst zur Laufzeit aus. Möchte man zum Beispiel im Batch-Modus eine Logdatei schreiben, die das aktuelle Datum als Dateinamen enthält, dann könnte das folgendermaßen umgesetzt werden:DEFINE MAKRO __date "$!(.Year)$!(.Month)$!(.Day)"; DEFINE MAKRO __logfile "$(.WorkingDir)\$(__date)_Logfile.log";
Diese Möglichkeit besteht ab OMS Version 2.2.
Die vom OMS vorgegebenen Makrovariablen beginnen mit einem vorangestellten „.“. Es folgt die Liste aller vordefinierten Makrovariablen:
Makrovariable | Beschreibung | Ab |
---|---|---|
.ActiveDSN | Name der aktiven DSN. | v1.x |
.AffectedRows | Anzahl der Zeilen, die von der Skriptausführung betroffen waren. | v2.2 |
.BatchMode | „Off“, falls kein Batchlauf aktiv ist. Andernfalls „On“. | v1.x |
.ColumnName | Ist im Schema-Browser eine Spalte markiert, dann ist der Wert dieser Makrovariablen gleich dem Namen der Spalte. | v1.x |
.ConfigDir | Das Konfigurationsverzeichnis, das i.d.R. auch die oms.config-Datei beinhaltet. | v1.x |
.Day | v1.x | |
.DBMS | Sofern eine Verbindung besteht, enthält diese Makrovariable den vom ODBC-Treiber definierten Names des DBMS, das geradeüber den Schema-Browser oder über ein OMS-SL-Skript verwendet wird. | v1.x |
.DocumentName | Der Name des aktiven Dokuments (OSL-Skript). | v2.2 |
.ForeignKeyName | Gibt den Namen des im Schema-Browser markierten Fremdschlüssels an. | v1.x |
.HelpContextID | Kontext-ID zum aktuellen Hilfe-Thema. | v1.x |
.HelpURL | URL zur Online-Hilfe (https://www.oms.cherware.de/docs/). | v1.x |
.Homepage | https://www.oms.cherware.de | v1.x |
.Hour | Die Stunde der aktuellen Uhrzeit. | v1.x |
.IndexName | Gibt den Namen des im Schema-Browser markierten Index an. | v1.x |
.LastError | Gibt die letzte Fehlermeldung wieder, sofern es eine gab. | v2.2 |
.LastMessage | Gibt die letzte Meldung wieder, sofern es eine gab. | v1.x |
.LogFileFormat | v2.2 | |
.MediaDir | Ein Verzeichnis für Medien (Zur freien Verfügung). | v1.x |
.Minute | Die Minute der aktuellen Uhrzeit. | v1.x |
.Month | Der Monat des aktuellen Datums. | v1.x |
.PluginDir | Das Plugin-Verzeichnis. | v1.x |
.PrimaryKeyName | Gibt den Namen des im Schema-Browser markierten Primärschlüssels an. | v1.x |
.ProcedureName | Ist im Schema-Browser eine Prozedur markiert, dann enthält diese Makrovariable den Namen der Prozedur. | v1.x |
.RunningTime | Nach Ausführung eines Skripts gibt dieses Makro die benötigte Laufzeit in Millisekunden wieder. | v2.2 |
.Second | Die Sekunde der aktuellen Uhrzeit. | v1.x |
.TableName | Ist im Schema-Browser eine Tabelle oder ein darunterliegendes Element (z.B. eine Spalte, ein Index etc.) markiert, dann ist der Wert dieser Makrovariablen gleich dem Namen der Tabelle. | v1.x |
.WorkingDir | Gibt das Arbeitsverzeichnis an. | v1.x |
.Year | Das Jahr des aktuellen Datums | v1.x |
Pingback: ODBC Management Studio 2.2.1 | ODBC Management Studio