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

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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!