SAS-Makro-Programmierung: - Urz
SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz
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
- Seite 1 und 2: Universitätsrechenzentrum Heidelbe
- Seite 3 und 4: 6.1.5 %UPCASE- UND %QUPCASE-FUNKTIO
- Seite 5 und 6: LegendeSAS-Schlüsselworte, -Anweis
- Seite 7: Makrovariablen unterscheiden sich g
- Seite 11 und 12: %let vname=hans;%let name=&vname Sc
- Seite 13 und 14: • definieren lokale Makrovariable
- Seite 15 und 16: 4. Lokale und globale Makrovariable
- Seite 17 und 18: Dies bedeutet, daß der Makro-Proze
- Seite 19 und 20: Makro-Programmanweisungen sind die
- Seite 21 und 22: %put &name;%mend vornach; Der Makro
- Seite 23 und 24: infile in2;input produkt kosten dat
- Seite 25 und 26: un;%kurz: proc print data=_last_(ob
- Seite 27 und 28: Fenstername benennt das Fenster und
- Seite 29 und 30: PROTECT=YES|NOFalls Sie PROTECT=YES
- Seite 31 und 32: Bild 2: Makro DISP zeigt beide Grup
- Seite 33 und 34: 6.1 Funktionen zur Bearbeitung von
- Seite 36 und 37: Beispiel 1: %macro Verglei;%put Geb
- Seite 38 und 39: Beispiele:%let wert=%eval(50+60);%p
- Seite 41 und 42: Aufruf:%end;%put Ergebnis: &wert1 &
- Seite 43 und 44: 7. Berührungspunkte zwischen Makro
- Seite 45 und 46: Die Ausprägung der Variable muß e
- Seite 47 und 48: 7.1.3 Resolve-FunktionDiese Funktio
- Seite 49 und 50: Syntax:call execute(argument);Das a
- Seite 51 und 52: 8.1 Named styled Makros"Named style
- Seite 53 und 54: SystemoptionErklärungmautosource/B
- Seite 55 und 56: 9.3 Allgemeine SystemoptionenSystem
- Seite 57 und 58: Lösungvorschläge zu den Übungsau
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