Aufruf von SAS-Makros

Aus SAS-Wiki
Wechseln zu: Navigation, Suche

Einleitung

Es gibt drei Arten von SAS-Makros

  • Named styled Makros
  • Statement styled Makros und
  • Command styled Makros,

die sich in Definition, Aufruf und Funktion unterscheiden. Alle bisherigen Beispiele in diesem Skript waren "Named styled" Makros.

Art des Makros Aufruf Ort des Aufrufs
Named styled Makro %makroname(makroparameter) Programm Editor
Statement styled Makro makroname makroparameter Programm Editor
Command styled Makro makroname makroparameter Kommando-Zeile

Named styled Makros

"Named styled" Makros werden im Programm Editor aufgerufen. Sie beginnen immer mit einem Prozentzeichen. Ihre Parameter erscheinen in Klammern hinter dem Makronamen. "Named styled" Makros können nur im Programm Editor aufgerufen werden.

Aufruf:  %makroname(makroparameter)
Beispiele:
%print(Age,Height,Sex,sds=sashelp.class);
%makedir;
%tu_solan(7);

Statement styled Makros

"Statement styled" Makros machen es möglich, Makroaufrufe wie gewöhnliche SAS-Anweisungen aussehen zu lassen. Der Aufruf beginnt mit dem Makronamen ohne Prozentzeichen, die Makroparameter erscheinen nicht in Klammern und sind jeweils durch ein Leerzeichen voneinander getrennt. Positionsparameter müssen deshalb in der Reihenfolge ihrer Definition angegeben werden. Der Aufruf muss mit einem Semikolon enden. Es ist nicht möglich ein "Statement styled" Makro in einer anderen SAS-Anweisung aufzurufen; der Aufruf muss allein in einer Zeile stehen.

Um ein Makro als "Statement styled" zu definieren, ist die Option Stmt in der Makrodefinition notwendig.

Um ein "Statement styled" Makro zu verwenden, muss die Systemoption IMPLMAC gesetzt sein, da ansonsten der Makroname nicht als solcher erkannt wird.

Definition:
%Macro makroname(makroparameter) / Stmt;
  Makrotext;
%Mend makroname;
Aufruf: makroname makroparameter;
Beispiel:
Option Implmac; 1) 
%Macro print (var1,var2,var3,sds=_last_) / Stmt; 2) 
  Proc Print Data=&sds;
    Var &var1 &var2 &var3;
  Run;
%Mend print;
Aufruf:
print Age Height Sex sds=sashelp.class;

1) Ohne die Systemoption Implmac erscheint folgende Fehlermeldung:

ERROR 180-322: Statement is not valid or it is used out of proper order.

2) Ohne die Option stmt wäre das Makro ein "Named styled" Makro und müsste mit

%print(....);

aufgerufen werden.

Bei der Verwendung von Statement styled Makros ist zu beachten, dass es zu Performance-Einbußen führen kann, da SAS jedes Statement nach Statement styled Makros absuchen muss.

Command styled Makros

"Command styled" Makros lassen sich wie SAS-Kommandos, nur in der Kommandozeile aufrufen. Makroparameter sind ohne Klammer, getrennt durch Leerzeichen, in der Reihenfolge ihrer Definition anzugeben.

Um ein Makro als "Command styled" zu definieren, ist die Option Cmd in der Makrodefinition erforderlich. Außerdem muss die Systemoption CMDMAC gesetzt sein. Das Makro sollte außerdem nur Display Manager Kommandos enthalten.

Definition:
%Macro makroname(makroparameter) / Cmd;
  Makrotext;
%Mend makroname;
Aufruf: makroname makroparameter;
Beispiel:
Options Cmdmac; 1) 
%Macro Colors(fenster)/Cmd; 2) 
  &fenster;
  Color banner Green;
  Color source Yellow;
  Color warning Cyan;
  Color error Red;
%Mend colors;
Aufruf in der Kommandozeile:
colors log

Das Makro colors führt Farb Änderungen im jeweiligen Fenster durch. 1) Durch die Systemoption Cmdmac werden "Command styled" Makros ermöglicht. 2) Durch die Option Cmd wird das Makro colors als "Command styled" definiert.

Auch bei der Verwendung von Command styled Makros muss mit Performance-Einbußen gerechnet werden.

Siehe auch

Literatur

  • Ortseifen, C.(1993): Einführung in die SAS-Makro-Programmierung - Begleitskript zur Vorlesung Wintersemester 1993/1994 - nicht veröffentlicht.
  • SAS 9.3 Macro Language – Reference.