SAS-Makro-Programmierung: - Urz

SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz

web.urz.uni.heidelberg.de
von web.urz.uni.heidelberg.de Mehr von diesem Publisher
12.07.2015 Aufrufe

2.1 Automatische MakrovariablenAutomatische Makrovariablen werden automatisch vom Makro-Prozessor zur Verfügung gestellt.Sie beginnen alle mit den Buchstaben SYS. Da diese Kombination für das SAS-System reserviertist, sollten Sie deshalb nie diese Kombination am Anfang eines Variablennamens benutzen.Die wichtigsten automatischen Makrovariablen und ihre Funktion:SYSDATESYSDAYSYSTIMESYSENVSYSSCPSYSVERSYSDEVICSYSSCPLSYSERRSYSINFOSYSFILRCSYSLIBRCSYSRCSYSLASTSYSDSNAktuelles Datum des ProgrammstartsWochentag des ProgrammstartsZeit des ProgrammstartsAusführungsmodus, FORE=interaktiv, BACK=BatchjobBetriebssystem (als Abkürzung)SAS-Versionaktueller Device Driverausführlichere Infos zum Betriebssystem (ab SAS-Version6.10)Fehlerinformation (Return Code) von Prozedurenähnlich wie SYSERRReturn Code der letzten Filename-AnweisungReturn Code der letzten Libname-AnweisungReturn Code des letzten Betriebssystem-KommandosName der zuletzt erzeugten SAS-Dateilibref.dateiname (ein Name)Name der zuletzt erzeugten SAS-Dateilibref dateiname (zwei Namen)Verwendet werden können diese Variablen u.a. in Textzeilen, die mit• Title-Anweisungen,• Footnote-Anweisungen• Note-Anweisungen und• Put-Anweisungenerzeugt werden.Falls Sie, wie z.B. im nächsten Beispiel, Title- und Footnote-Anweisungen benutzen, müssen Siedoppelte Anführungszeichen (Gänsefüßchen) verwenden, da ansonsten die automatischenMakrovariablen nicht aufgelöst werden.Beispiel:proc gslide;title "Heute ist &sysday, der &sysdate,&systime Uhr";footnote "SAS-Version &sysver";run;Anmerkung: Die automatischen Makrovariablen geben ihre Information in englischer Sprache aus.Alle automatischen Makrovariablen finden Sie auf den Seiten 55-59 im "SAS Guide to MakroProcessing" beschrieben.8

2.2 Benutzerdefinierte MakrovariablenSie können eigene Makrovariablen auf verschiedene Weise definieren. Die einfachste undgebräuchlichste Art ist die Verwendung von "%let". Weitere Möglichkeiten der Erzeugungbenutzerdefinierter Makrovariablen finden Sie im Kapitel 4.1.2.2.1 Erzeugung von benutzerdefinierten MakrovariablenSyntax:Beispiel:%let makrovariable=wert;%let A=13;%let Name=Alois Vorderhuf%let Monat=NovemberDie Variable makrovariable wird erzeugt, falls diese nicht bereits existiert, und sie bekommt denWert wert zugewiesen. Falls Sie der gleichen Variablen nacheinander mehrere Werte zuweisen,wird der Wert überschrieben. Als Wert können Sie beliebige Zeichenketten zuweisen. Es ist auchmöglich, Makrovariablen bereits bestehende Makrovariablen als Wert zuzuweisen.Beispiel:%let Datum=&SYSDATE;Die Zuweisung erfordert keine Anführungszeichen. Werden diese trotzdem verwendet, werden sieals Teil des Wertes interpretiert. Die %LET-Anweisung entfernt führende und nachfolgendeLeerzeichen des zugewiesenen Textes. Wollen Sie nachfolgende Leerzeichen berücksichtigen oderein Semikolon als Textzeichen verwenden, müssen Sie die "%STR-Funktion" (siehe Kap. 6.3.6)verwenden.Beispiel: %let Name=%STR( Herr Hans Ulrich Meier);%let Druck=%STR(Proc Print; Run;);Falls Sie dagegen nur %let druck=Proc print;run;schreiben, hat ihre Variable druck nurden Wert "Proc print", da die %let-Anweisung nur bis zum Semikolon liest.2.2.2 Ausgabe des Wertes benutzerdefinierter MakrovariablenWenn Sie sich den Wert ihrer Makrovariablen anzeigen lassen wollen, verwenden Sie ameinfachsten die "%put-Anweisung". Sie schreibt den Wert ihrer Makrovariablen ins LOG-Fenster.(Analog zur Put-Anweisung für die Ausgabe von normalen Variablen.)Beispiel: %put &Name;Ausführlich beschrieben wird die "%put-Anweisung" in Kapitel 5.2.2.2.3 Verkettung von MakrosSie können Text direkt an einen Makro-Namen anhängen. Damit läßt sich z.B. eine Variablenlistefür die Keep-Anweisung erzeugen:Beispiel:Ergebnis:%LET start=1;%LET ende=10;keep var&start-var&ende;keep var1-var109

2.2 Benutzerdefinierte <strong>Makro</strong>variablenSie können eigene <strong>Makro</strong>variablen auf verschiedene Weise definieren. Die einfachste undgebräuchlichste Art ist die Verwendung von "%let". Weitere Möglichkeiten der Erzeugungbenutzerdefinierter <strong>Makro</strong>variablen finden Sie im Kapitel 4.1.2.2.1 Erzeugung von benutzerdefinierten <strong>Makro</strong>variablenSyntax:Beispiel:%let makrovariable=wert;%let A=13;%let Name=Alois Vorderhuf%let Monat=NovemberDie Variable makrovariable wird erzeugt, falls diese nicht bereits existiert, und sie bekommt denWert wert zugewiesen. Falls Sie der gleichen Variablen nacheinander mehrere Werte zuweisen,wird der Wert überschrieben. Als Wert können Sie beliebige Zeichenketten zuweisen. Es ist auchmöglich, <strong>Makro</strong>variablen bereits bestehende <strong>Makro</strong>variablen als Wert zuzuweisen.Beispiel:%let Datum=&SYSDATE;Die Zuweisung erfordert keine Anführungszeichen. Werden diese trotzdem verwendet, werden sieals Teil des Wertes interpretiert. Die %LET-Anweisung entfernt führende und nachfolgendeLeerzeichen des zugewiesenen Textes. Wollen Sie nachfolgende Leerzeichen berücksichtigen oderein Semikolon als Textzeichen verwenden, müssen Sie die "%STR-Funktion" (siehe Kap. 6.3.6)verwenden.Beispiel: %let Name=%STR( Herr Hans Ulrich Meier);%let Druck=%STR(Proc Print; Run;);Falls Sie dagegen nur %let druck=Proc print;run;schreiben, hat ihre Variable druck nurden Wert "Proc print", da die %let-Anweisung nur bis zum Semikolon liest.2.2.2 Ausgabe des Wertes benutzerdefinierter <strong>Makro</strong>variablenWenn Sie sich den Wert ihrer <strong>Makro</strong>variablen anzeigen lassen wollen, verwenden Sie ameinfachsten die "%put-Anweisung". Sie schreibt den Wert ihrer <strong>Makro</strong>variablen ins LOG-Fenster.(Analog zur Put-Anweisung für die Ausgabe von normalen Variablen.)Beispiel: %put &Name;Ausführlich beschrieben wird die "%put-Anweisung" in Kapitel 5.2.2.2.3 Verkettung von <strong>Makro</strong>sSie können Text direkt an einen <strong>Makro</strong>-Namen anhängen. Damit läßt sich z.B. eine Variablenlistefür die Keep-Anweisung erzeugen:Beispiel:Ergebnis:%LET start=1;%LET ende=10;keep var&start-var&ende;keep var1-var109

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!