Makros und Makrovariablen

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 Skript
      SELECT * 
        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

1 thought on “Makros und Makrovariablen

  1. Pingback: ODBC Management Studio 2.2.1 | ODBC Management Studio

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.