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:

MakrovariableBeschreibungAb
.ActiveDSNName der aktiven DSN.v1.x
.AffectedRowsAnzahl der Zeilen, die von der Skriptausführung betroffen waren.v2.2
.BatchMode„Off“, falls kein Batchlauf aktiv ist. Andernfalls „On“.v1.x
.ColumnNameIst im Schema-Browser eine Spalte markiert, dann ist der Wert dieser Makrovariablen gleich dem Namen der Spalte.v1.x
.ConfigDirDas Konfigurationsverzeichnis, das i.d.R. auch die oms.config-Datei beinhaltet.v1.x
.Dayv1.x
.DBMSSofern 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
.DocumentNameDer Name des aktiven Dokuments (OSL-Skript).v2.2
.ForeignKeyNameGibt den Namen des im Schema-Browser markierten Fremdschlüssels an.v1.x
.HelpContextIDKontext-ID zum aktuellen Hilfe-Thema.v1.x
.HelpURLURL zur Online-Hilfe (https://www.oms.cherware.de/docs/).v1.x
.Homepagehttps://www.oms.cherware.dev1.x
.HourDie Stunde der aktuellen Uhrzeit.v1.x
.IndexNameGibt den Namen des im Schema-Browser markierten Index an.v1.x
.LastErrorGibt die letzte Fehlermeldung wieder, sofern es eine gab.v2.2
.LastMessageGibt die letzte Meldung wieder, sofern es eine gab.v1.x
.LogFileFormatv2.2
.MediaDirEin Verzeichnis für Medien (Zur freien Verfügung).v1.x
.MinuteDie Minute der aktuellen Uhrzeit.v1.x
.MonthDer Monat des aktuellen Datums.v1.x
.PluginDirDas Plugin-Verzeichnis.v1.x
.PrimaryKeyNameGibt den Namen des im Schema-Browser markierten Primärschlüssels an.v1.x
.ProcedureNameIst im Schema-Browser eine Prozedur markiert, dann enthält diese Makrovariable den Namen der Prozedur.v1.x
.RunningTimeNach Ausführung eines Skripts gibt dieses Makro die benötigte Laufzeit in Millisekunden wieder.v2.2
.SecondDie Sekunde der aktuellen Uhrzeit.v1.x
.TableNameIst 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
.WorkingDirGibt das Arbeitsverzeichnis an.v1.x
.YearDas Jahr des aktuellen Datumsv1.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.