SAS-Makro-Programmierung: - Urz
SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz
6.3.8 %Superq-FunktionDiese Funktion verhindert die Auflösung von Makro-Ausdrücken bei der Auflösung vonMakrovariablen. Die %superq-Funktion ist in folgenden Fällen nützlich:• Bei Benutzung einer Makrovariablen, die mit einer %Input- oder %Window- Anweisungdefiniert wurde und ein Ampersand oder Prozentzeichen enthält.• Bei Benutzung einer Makrovariablen, die mit der SYMPUT-Routine geschaffen wurde undein Ampersand oder Prozentzeichen enthält.Syntax:%superq(Makrovariable)Beispiel: %input x;%testvariable&anton%put Der Inhalt der Variablen x ist: %superq(x).;Ergebnis: Der Inhalt der Variablen x ist: %testvariable&antonÜbungsaufgaben20. Erzeugen Sie eine %put-Anweisung, die folgenden Text ins Log-Fenster schreibt:Der Wert von %sysdate ändert sich nicht innerhalb eines SAS Programms.21. Geben Sie folgende Sätze mit Hilfe von %put-Anweisungen im Log-Fenster aus:Das ist der Schnupperhund von C&A.Die Gewinner waren die Nummern 3;12;1 & 7So 'n Blödsinn!22. Stellen Sie sich vor, Sie arbeiten in der Univerwaltung und sind für die Adreßkartei derStudenten zuständig.Schreiben Sie ein Makro, das Ihnen schnell summarische Informationen über die Studentenliefern kann.Das Makro soll in einem Fenster die Variablen darstellen, die erfragt werden können, etwafolgendermaßen:Gruppierung nach1. Wohnort2. Semesterzahl3. Studienfach4. Abschlußart(Tip: Prozedur Freq mit by-Anweisung.)23a) Erstellen Sie ein Makro SASERROR, das es SAS-Benutzern ermöglicht, auftretendeFehlermeldungen in einer Datei abzulegen. Die Fehlermeldungen müssen dazu aus dem Log-Fenster in den Zwischenspeicher kopiert werden und dann über ein %input- Statementeingelesen werden.b) Vervollständigen Sie das Makro SASERROR, indem Sie es ermöglichen Erläuterungen (z.B.Kontext und Situation) zu den Fehlermeldungen abzulegen. Verändern Sie das Makrodahingehend, das die Fehlermeldungen in eine permanente Datei STAMM hinzugefügt werden,in der die Fehlermeldungen gesammelt werden (Tip: Proc Append). Überprüfen Sie in demMakro, ob die Datei STAMM bereits existiert; falls nicht, soll diese gebildet werden.42
7. Berührungspunkte zwischen Makro-Sprache und Datenschritt7.1 Zugriff auf Daten in SAS-MakrosDas SAS-System stellt zwei Funktionen bereit, die den Austausch zwischen SAS-Datenschritt undMakro-Sprache erlauben:• symget: transferiert Inhalt einer Makro-Variable in den Datenschritt und• symput: transferiert Datenschritt-Informationen in eine Makro-Variable.Dieser Austausch ist notwendig, da die Variablen des SAS-Datenschritts und die Makro-Sprache inunterschiedlichen Speichern abgelegt werden. Die Datenschritt-Variablen werden in einen Speichernamens "Programm Data Vektor" geschrieben, die Makro-Sprache legt ihre Variablen inSymboltabellen ab (siehe Kap. 4). Um zwischen diesen Speichern Informationen auszutauschen,benötigen Sie die Funktionen symput und symget.SAS-Data-SchrittProgramm DataVektorSYMGETMakro-SpracheSymboltabellenDatenschrittvariablenSYMPUTMakrovariablenDer verwendete Speicher hängt ab:• von der Stelle, wo der Datenschritt aufgerufen wird,• von der Verschachtelung der Umgebungen und• von der Definition lokaler und globaler Variablen.7.1.1 Symget-FunktionSyntax:symget(argument)datenschritt-variable=symget(argument);Das argument kann• eine in Anführungszeichen eingeschlossen Makrovariable,• eine Datenschritt-Zeichenkettenvariable oder• ein Datenschritt-Zeichenkettenausdrucksein.43
- 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: Aufruf:%end;%put Ergebnis: &wert1 &
- 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
- 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¦#"~
6.3.8 %Superq-FunktionDiese Funktion verhindert die Auflösung von <strong>Makro</strong>-Ausdrücken bei der Auflösung von<strong>Makro</strong>variablen. Die %superq-Funktion ist in folgenden Fällen nützlich:• Bei Benutzung einer <strong>Makro</strong>variablen, die mit einer %Input- oder %Window- Anweisungdefiniert wurde und ein Ampersand oder Prozentzeichen enthält.• Bei Benutzung einer <strong>Makro</strong>variablen, die mit der SYMPUT-Routine geschaffen wurde undein Ampersand oder Prozentzeichen enthält.Syntax:%superq(<strong>Makro</strong>variable)Beispiel: %input x;%testvariable&anton%put Der Inhalt der Variablen x ist: %superq(x).;Ergebnis: Der Inhalt der Variablen x ist: %testvariable&antonÜbungsaufgaben20. Erzeugen Sie eine %put-Anweisung, die folgenden Text ins Log-Fenster schreibt:Der Wert von %sysdate ändert sich nicht innerhalb eines <strong>SAS</strong> Programms.21. Geben Sie folgende Sätze mit Hilfe von %put-Anweisungen im Log-Fenster aus:Das ist der Schnupperhund von C&A.Die Gewinner waren die Nummern 3;12;1 & 7So 'n Blödsinn!22. Stellen Sie sich vor, Sie arbeiten in der Univerwaltung und sind für die Adreßkartei derStudenten zuständig.Schreiben Sie ein <strong>Makro</strong>, das Ihnen schnell summarische Informationen über die Studentenliefern kann.Das <strong>Makro</strong> soll in einem Fenster die Variablen darstellen, die erfragt werden können, etwafolgendermaßen:Gruppierung nach1. Wohnort2. Semesterzahl3. Studienfach4. Abschlußart(Tip: Prozedur Freq mit by-Anweisung.)23a) Erstellen Sie ein <strong>Makro</strong> <strong>SAS</strong>ERROR, das es <strong>SAS</strong>-Benutzern ermöglicht, auftretendeFehlermeldungen in einer Datei abzulegen. Die Fehlermeldungen müssen dazu aus dem Log-Fenster in den Zwischenspeicher kopiert werden und dann über ein %input- Statementeingelesen werden.b) Vervollständigen Sie das <strong>Makro</strong> <strong>SAS</strong>ERROR, indem Sie es ermöglichen Erläuterungen (z.B.Kontext und Situation) zu den Fehlermeldungen abzulegen. Verändern Sie das <strong>Makro</strong>dahingehend, das die Fehlermeldungen in eine permanente Datei STAMM hinzugefügt werden,in der die Fehlermeldungen gesammelt werden (Tip: Proc Append). Überprüfen Sie in dem<strong>Makro</strong>, ob die Datei STAMM bereits existiert; falls nicht, soll diese gebildet werden.42