SAS-Makro-Programmierung: - Urz
SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz
Aufruf:%end;%put Ergebnis: &wert1 &op &wert2 =%eval(&wert1 %unquote(&op) &wert2);%ende:%mend rechne;%rechne(18,25,op=ADD);%rechne(18,25,op=diff);%rechne(18,25,op=mal); Wenn die Variable op den Wert ADD zugewiesen bekommt, wird sie in ein Pluszeichen (+)verwandelt. Durch die %str-Funktion wird das Pluszeichen von seiner Funktion als arithmetischesOperator enthoben. Es wird jetzt vom Makro-Prozessor als "normales" Textzeichen behandelt. Durch die %unquote-Funktion wird dem Pluszeichen (+) seine ursprüngliche Bedeutungzurückgegeben, und es kann als arithmetischer Operator verwendet werden.Ohne Rück-Quotierung durch die %unquote-Funktion taucht folgende Fehlermeldung auf: ERROR:A character operand was found in the %EVAL function or %IF conditionwhere a numeric operand is required.6.3.6 %Str-FunktionDie %str-Funktion quotiert konstanten Text zur Zeit der Kompilierung (Konstruktion). DerZeitpunkt der Quotierung ist der grundlegende Unterschied zur %quote-Funktion, die bei jederMakro-Ausführung neu durchgeführt wird. Wenn es darum geht, einen Makro-Ausdruckaufzulösen, sollte die %quote-Funktion benutzt werden.Die %str-Funktion entfernt nicht die Bedeutung von Ampersands, Prozentzeichen und nichtgeschlossenenHochkommata. Um nicht geschlossene Hochkommata zu quotieren, muß einProzentzeichen vor das Zeichen gesetzt werden:Beispiel:%let place=%str(Clinton%'s America);Die %str-Funktion sollte bei folgenden Gegebenheiten verwendet werden:• Wenn ein Semikolon statt als Makroausdruck als Textzeichen verwendet werden soll.• Um ein Leerzeichen (Blank) bedeutsam zu machen.• Um ein nicht geschlossenes Hochkomma oder eine offene Klammer, die mit einemProzentzeichen versehen sind, zu benutzen.Syntax: %str(argument)Beispiele: %let p=%str(Proc Print; run;);%put &p;%let time=%str(now);6.3.7 %Nrstr-FunktionDie %nrstr-Funktion quotiert, zusätzlich zu den Funktionen der %str-Funktion, auchProzentzeichen und Hochkommata.Beispiel:%let p=%nrstr(%rechne);%put &p;41
- 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 42 und 43: 6.3.8 %Superq-FunktionDiese Funktio
- Seite 44 und 45: Die Datenschritt-Variable• kann z
- Seite 46 und 47: Die argumente können• Zeichenket
- Seite 48 und 49: Die put-Anweisung schreibt das Erge
- Seite 50 und 51: Übungsaufgaben24. Erzeugen Sie ein
- Seite 52 und 53: 8.3 Command styled Makros"Command s
- Seite 54 und 55: Sie beheben dies, in dem Sie die Fi
- Seite 56 und 57: 10. Fehlermeldungen und mögliche U
- Seite 58 und 59: d. Sie benötigen 3 verschiedene Au
- Seite 60 und 61: %put Das Ergebnis ist &total;Das Er
- Seite 62 und 63: call symput('u_ystd',u_ystd);call s
- Seite 64 und 65: %first%put D1: &fname &mname &lname
- Seite 66 und 67: Index%%bquote .....................
- Seite 68 und 69: 1l‰?*,&.‹ŠŒ1`4m?s-Žb‹{4u
- Seite 70 und 71: Ê º¸· ³IL+OIËé³ ·¹®ÍÌ
- Seite 72 und 73: И¿ Ê¢ ȘÎu˜ ÊÍ Ì'¿ Ê
Aufruf:%end;%put Ergebnis: &wert1 &op &wert2 =%eval(&wert1 %unquote(&op) &wert2);%ende:%mend rechne;%rechne(18,25,op=ADD);%rechne(18,25,op=diff);%rechne(18,25,op=mal); Wenn die Variable op den Wert ADD zugewiesen bekommt, wird sie in ein Pluszeichen (+)verwandelt. Durch die %str-Funktion wird das Pluszeichen von seiner Funktion als arithmetischesOperator enthoben. Es wird jetzt vom <strong>Makro</strong>-Prozessor als "normales" Textzeichen behandelt. Durch die %unquote-Funktion wird dem Pluszeichen (+) seine ursprüngliche Bedeutungzurückgegeben, und es kann als arithmetischer Operator verwendet werden.Ohne Rück-Quotierung durch die %unquote-Funktion taucht folgende Fehlermeldung auf: ERROR:A character operand was found in the %EVAL function or %IF conditionwhere a numeric operand is required.6.3.6 %Str-FunktionDie %str-Funktion quotiert konstanten Text zur Zeit der Kompilierung (Konstruktion). DerZeitpunkt der Quotierung ist der grundlegende Unterschied zur %quote-Funktion, die bei jeder<strong>Makro</strong>-Ausführung neu durchgeführt wird. Wenn es darum geht, einen <strong>Makro</strong>-Ausdruckaufzulösen, sollte die %quote-Funktion benutzt werden.Die %str-Funktion entfernt nicht die Bedeutung von Ampersands, Prozentzeichen und nichtgeschlossenenHochkommata. Um nicht geschlossene Hochkommata zu quotieren, muß einProzentzeichen vor das Zeichen gesetzt werden:Beispiel:%let place=%str(Clinton%'s America);Die %str-Funktion sollte bei folgenden Gegebenheiten verwendet werden:• Wenn ein Semikolon statt als <strong>Makro</strong>ausdruck als Textzeichen verwendet werden soll.• Um ein Leerzeichen (Blank) bedeutsam zu machen.• Um ein nicht geschlossenes Hochkomma oder eine offene Klammer, die mit einemProzentzeichen versehen sind, zu benutzen.Syntax: %str(argument)Beispiele: %let p=%str(Proc Print; run;);%put &p;%let time=%str(now);6.3.7 %Nrstr-FunktionDie %nrstr-Funktion quotiert, zusätzlich zu den Funktionen der %str-Funktion, auchProzentzeichen und Hochkommata.Beispiel:%let p=%nrstr(%rechne);%put &p;41