SAS-Makro-Programmierung: - Urz
SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz
Die argumente können• Zeichenketten sein,• Datenschritt-Zeichenkettenvariablen oder• Datenschritt-Zeichenkettenausdrückesein.Beispiele1. Beide Argumente sind ZeichenkettenBeispiel:data;call symput ('stadt', 'London');run;%put Stadt=&stadt;Ergebnis: Stadt=LondonDie Argumente müssen in Anführungszeichen eingeschlossen werden.2. Beide Argumente sind DatenschrittvariablenBeispiel:data loc;input gebiet $ name $;call symput(gebiet,name);cards;stadt Londonland Englandfluss Themse;%put Stadt=&stadt Land=&land Fluss=&fluss;Ergebnis: Stadt=London Land=England Fluss=ThemseDie Argumente dürfen nicht in Anführungszeichen eingeschlossen sein und der Wert des 1. Argumentsmuß ein gültiger Makrovariablenname sein.Es werden 3 Makrovariablen hergestellt (alle Ausprägungen der unter die Variablen gebiet).Durch die symput-Funktion bekommen sie die Werte London England Themse zugewiesen.3. Argument2 ist das Ergebnis einer Datenschritt-FunktionBeispiel:data;call symput('datum', put(today(),ddmmyy8.));run;%put datum=&datum;Ergebnis: datum=13/07/95In diesem Beispiel wird das argument1 durch eine Put-Funktion referenziert. Die Makrovariabledatum ist das Ergebnis der today-Funktion des Datenschritts (Die leere Klammer hinter dertoday-Funktion teilt SAS mit, daß es sich um eine Datenschrittfunktion handelt, und nicht um eineVariable). Mit Hilfe der %put-Anweisung wird dieser Wert raus-geschrieben.46
7.1.3 Resolve-FunktionDiese Funktion weist einer Datensatz-Variablen einen Wert zu. Die Länge, der mit Hilfe derresolve-Funktion hergestellten Variablen, beträgt standardmäßig 200 Zeichen, was sich beigrößeren Datenmengen auf die Rechengeschwindigkeit auswirken kann. Die resolve-Funktion isterst ab SAS-Version 6.07 verfügbar.Syntax:resolve(Argument)argument ist ein Makro-Ausdruck:• Textstring in Anführungszeichen (Die Anführungszeichen hindern den Makro-Prozessoran der Auflösung des Makroausdrucks während des Datenschritts.)name=resolve('%locate');• Name einer Datensatz-Variable (Der Inhalt der Datensatz-Variablen sollte ein Makro-Ausdruck sein.)adresse='%identi'Name=resolve(adresse)• Zeichenkette, die einen Makro-Ausdruck erzeugt.region=resolve('%land'||left(id))Wenn Sie den Wert einer Variable mit resolve bilden, hängt dieser von der Ausführung desDatenschritts ab. Wird der Wert als Makro-Variable gebildet, bleibt er während des Datenschrittskonstant. Im Unterschied zu symget erlaubt resolve zusätzliche Argumentformen und istflexibler einsetzbar, allerdings auch Ressourcen-intensiver.Beispiel:%let event=lousisiana purchase;%macro date;1803%mend date;%let person1=Thomas Jefferson;data _null_;length var1-var4 $20.;YEAR='%date';var1=resolve('&event');var2=resolve('%date');var3=resolve(year);var4=resolve('&person'||left(_n_));put var1--var4;run;Ergebnis: lousisiana purchase 1803 1803 Thomas Jefferson Die length-Anweisung definiert die Variablen var1-var4 mit einer Länge von 20 Zeichen.(Der Standard wäre 200 Zeichen.) Die Variablen var1 und var2 werden zu Zeichenketten aufgelöst. var1 erhält den Wertlouisiana purchase (Der Wert der Makrovariable event); var2 erhält durch die Auflösungdes Makros date den Wert 1803. var3 erhält den Wert der Datenschrittvariablen YEAR, der wiederum einen Makroaufrufbeinhaltet, und löst sich somit ebenfalls zu 1803 auf. var4 kombiniert die Zeichenkette &person und den Wert der automatischen Zählvariablen _N_,um die Makro-Variable &person1 zu referenzieren, und letztendlich zu Thomas Jeffersonaufzulösen. (Die left-Funktion schneidet die Leerzeichen ab die links von _N_ auftauchen.)47
- 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 und 8: Makrovariablen unterscheiden sich g
- Seite 9 und 10: 2.2 Benutzerdefinierte Makrovariabl
- 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: Die Ausprägung der Variable muß e
- 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
- Seite 59 und 60: Proc print data=&sds;run;%end;%* Fa
- Seite 61 und 62: %put Fügen sie die Fehlermeldung
- Seite 63 und 64: Welcher SAS-Code wird mit folgenden
- Seite 65 und 66: 11. Schreiben Sie ein Makro PLOTTER
- Seite 67 und 68: Makro-Programmanweisungen .... 7; 1
- Seite 69 und 70: 8ÔI’d){(oœXŒ1l)os,s->Š m?&˜$
- Seite 71 und 72: "%r({› &m?s/)-(oš4&(u¢W"]3I-8£
- Seite 73: wu£#¤ }~¥~z`}~W…¦#¥~y{w¦#"~
7.1.3 Resolve-FunktionDiese Funktion weist einer Datensatz-Variablen einen Wert zu. Die Länge, der mit Hilfe derresolve-Funktion hergestellten Variablen, beträgt standardmäßig 200 Zeichen, was sich beigrößeren Datenmengen auf die Rechengeschwindigkeit auswirken kann. Die resolve-Funktion isterst ab <strong>SAS</strong>-Version 6.07 verfügbar.Syntax:resolve(Argument)argument ist ein <strong>Makro</strong>-Ausdruck:• Textstring in Anführungszeichen (Die Anführungszeichen hindern den <strong>Makro</strong>-Prozessoran der Auflösung des <strong>Makro</strong>ausdrucks während des Datenschritts.)name=resolve('%locate');• Name einer Datensatz-Variable (Der Inhalt der Datensatz-Variablen sollte ein <strong>Makro</strong>-Ausdruck sein.)adresse='%identi'Name=resolve(adresse)• Zeichenkette, die einen <strong>Makro</strong>-Ausdruck erzeugt.region=resolve('%land'||left(id))Wenn Sie den Wert einer Variable mit resolve bilden, hängt dieser von der Ausführung desDatenschritts ab. Wird der Wert als <strong>Makro</strong>-Variable gebildet, bleibt er während des Datenschrittskonstant. Im Unterschied zu symget erlaubt resolve zusätzliche Argumentformen und istflexibler einsetzbar, allerdings auch Ressourcen-intensiver.Beispiel:%let event=lousisiana purchase;%macro date;1803%mend date;%let person1=Thomas Jefferson;data _null_;length var1-var4 $20.;YEAR='%date';var1=resolve('&event');var2=resolve('%date');var3=resolve(year);var4=resolve('&person'||left(_n_));put var1--var4;run;Ergebnis: lousisiana purchase 1803 1803 Thomas Jefferson Die length-Anweisung definiert die Variablen var1-var4 mit einer Länge von 20 Zeichen.(Der Standard wäre 200 Zeichen.) Die Variablen var1 und var2 werden zu Zeichenketten aufgelöst. var1 erhält den Wertlouisiana purchase (Der Wert der <strong>Makro</strong>variable event); var2 erhält durch die Auflösungdes <strong>Makro</strong>s date den Wert 1803. var3 erhält den Wert der Datenschrittvariablen YEAR, der wiederum einen <strong>Makro</strong>aufrufbeinhaltet, und löst sich somit ebenfalls zu 1803 auf. var4 kombiniert die Zeichenkette &person und den Wert der automatischen Zählvariablen _N_,um die <strong>Makro</strong>-Variable &person1 zu referenzieren, und letztendlich zu Thomas Jeffersonaufzulösen. (Die left-Funktion schneidet die Leerzeichen ab die links von _N_ auftauchen.)47