SAS-Makro-Programmierung: - Urz
SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz
8.3 Command styled Makros"Command styled" Makros lassen sich wie SAS-Kommandos, nur in der Kommandozeile aufrufen.Makroparameter sind ohne Klammer, getrennt durch Leerzeichen, in der Reihenfolge ihrerDefinition anzugeben.Um ein Makro als "Command styled" zu definieren, ist die Option cmd in der Makrodefinitionerforderlich. Außerdem muß die Systemoption CMDMAC gesetzt sein. Das Makro sollte außerdemnur Display Manager Kommandos enthalten. "Command styled" Makros sind erst ab SAS-Version6.07 möglich.Definition: %macro makroname(makroparameter) / cmd;Makrotext;%mend makroname;Aufruf:makroname makroparameter;Beispiele: options cmdmac;%macro colors(fenster)/cmd;&fenster;color banner green;color source yellow;color warning cyan;color error red;%mend colors;Aufruf in der Kommandozeile: colors logDas Makro colors führt Farbänderungen im jeweiligen Fenster durch. Durch die Systemoption cmdmac werden "Command styled" Makros ermöglicht. Durch die Option cmd wird das Makro colors als "Command styled" definiert.9. Makro-Bibliotheken (Autocall-Facility)SAS-Makros werden (temporär oder permanent) in Bibliotheken abgelegt und können automatischzur Verfügung gestellt werden. Die Makros werden in SAS-Katalogen unter dem Makro-Namenabgespeichert.Die Makros können als• Quelltext oder• kompiliertes Programmabgespeichert werden. Quelltext-Makros müssen von SAS zunächst kompiliert werden, d.h. manlädt das Makro in den Programmeditor und submittiert es.9.1 Automatischer Aufruf von Makros (Autocall Facility)Es gibt verschiedene Systemoptionen, mit deren Hilfe Sie direkt auf ihre Makrobibliothekenzugreifen können, ohne sie als Quelltext in den Programm Editor zu laden. Den automatischenMakroaufruf nennt man 'Autocall'. Wo genau SAS nach Makros sucht, steht in der Dateiconfig.sas.52
SystemoptionErklärungmautosource/Bestimmt, ob die automatische Makrosuche (AutocallnomautosourceFacility) eingeschaltet werden soll.Sasautos=Makrobibliothek Definiert die Makro-Bibliothek. Es gibt drei Möglichkeitenauf ihre Makrobibliothek zu verweisen:• über Fileref,• über eine Filename-Anweisung• oder mit direktem Namen in Anführungszeichen.mrecall/nomrecall Veranlasst den Makro-Prozessor nach Makrobibliotheken zusuchen, die nicht bei der ersten Suche gefunden wurden.Die Default-Einstellungen sind unterstrichen.Der Makro-Prozessor sucht Makros sequentiell in den Makro-Bibliotheken. Er sucht immer zuerstim Katalog WORK.SASMACR, in die kompilierte Makros automatisch während einer Sitzungabgespeichert werden (Siehe Kap. 9.2).Beispiel: Ihre Makrobibliothek, in die Sie ihre Makros abgelegt haben, befindet sich im Verzeichnis'C:\sas\makros'. Außerdem befinden sich einige Makros im Verzeichnis 'N:\sasurz\makros'.filename urzmac 'n:\sasurz\makros';filename mymac 'c:\sas\makros';options sasautos=(mymac urzmac);oder:options sasautos=('c:\sas\makros' 'N:\sasurz\makros');Sie können ihre Makros jetzt direkt aufrufen, indem sie den Makroaufruf im Programm-Editorsubmittieren.%ttest(calcium,,pille,co.blutbild);%nobs(sasuser.crime);Der Makro-Prozessor sucht jetzt zunächst im Katalog WORK.SASMACR und erst danach in denVerzeichnissen c:\sas\makros und N:\sasurz\makros.SAS stellt selbst einige Makros bereit. Sie befinden sich im Verzeichnis 'SASROOT\core\sasmacro'.Um auf diese Makros zuzugreifen muß das obige Beispiel folgendermaßen ersetzt werden: (DasSASROOT-Verzeichnis ist im URZ N:\saswn610.)optionssasautos=('N:\sasurz\makros' mymac'N:\saswn610\core\sasmacro');Die vollständige Liste aller von SAS zur Verfügung gestellten Makros finden Sie im 'SAS Guide forMacro Processing', Version 6, 2. Edition, Seiten 186-187.Folgende Fehlermeldung taucht auf, wenn Sie z.B. vergessen haben, die Filename-Anweisung fürmymac zu setzen:WARNING: No logical assign for filename MYMAC.WARNING: Source level autocall is not found or cannot be opened. Autocall hasbeen suspended and OPTION NOMAUTOSOURCE has been set. To use theautocall facility again, set OPTION MAUTOSOURCE.WARNING: Apparent invocation of macro DATATYP not resolved.53
- 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 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: 8.1 Named styled Makros"Named style
- 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¦#"~
SystemoptionErklärungmautosource/Bestimmt, ob die automatische <strong>Makro</strong>suche (AutocallnomautosourceFacility) eingeschaltet werden soll.Sasautos=<strong>Makro</strong>bibliothek Definiert die <strong>Makro</strong>-Bibliothek. Es gibt drei Möglichkeitenauf ihre <strong>Makro</strong>bibliothek zu verweisen:• über Fileref,• über eine Filename-Anweisung• oder mit direktem Namen in Anführungszeichen.mrecall/nomrecall Veranlasst den <strong>Makro</strong>-Prozessor nach <strong>Makro</strong>bibliotheken zusuchen, die nicht bei der ersten Suche gefunden wurden.Die Default-Einstellungen sind unterstrichen.Der <strong>Makro</strong>-Prozessor sucht <strong>Makro</strong>s sequentiell in den <strong>Makro</strong>-Bibliotheken. Er sucht immer zuerstim Katalog WORK.<strong>SAS</strong>MACR, in die kompilierte <strong>Makro</strong>s automatisch während einer Sitzungabgespeichert werden (Siehe Kap. 9.2).Beispiel: Ihre <strong>Makro</strong>bibliothek, in die Sie ihre <strong>Makro</strong>s abgelegt haben, befindet sich im Verzeichnis'C:\sas\makros'. Außerdem befinden sich einige <strong>Makro</strong>s im Verzeichnis 'N:\sasurz\makros'.filename urzmac 'n:\sasurz\makros';filename mymac 'c:\sas\makros';options sasautos=(mymac urzmac);oder:options sasautos=('c:\sas\makros' 'N:\sasurz\makros');Sie können ihre <strong>Makro</strong>s jetzt direkt aufrufen, indem sie den <strong>Makro</strong>aufruf im Programm-Editorsubmittieren.%ttest(calcium,,pille,co.blutbild);%nobs(sasuser.crime);Der <strong>Makro</strong>-Prozessor sucht jetzt zunächst im Katalog WORK.<strong>SAS</strong>MACR und erst danach in denVerzeichnissen c:\sas\makros und N:\sasurz\makros.<strong>SAS</strong> stellt selbst einige <strong>Makro</strong>s bereit. Sie befinden sich im Verzeichnis '<strong>SAS</strong>ROOT\core\sasmacro'.Um auf diese <strong>Makro</strong>s zuzugreifen muß das obige Beispiel folgendermaßen ersetzt werden: (Das<strong>SAS</strong>ROOT-Verzeichnis ist im URZ N:\saswn610.)optionssasautos=('N:\sasurz\makros' mymac'N:\saswn610\core\sasmacro');Die vollständige Liste aller von <strong>SAS</strong> zur Verfügung gestellten <strong>Makro</strong>s finden Sie im '<strong>SAS</strong> Guide forMacro Processing', Version 6, 2. Edition, Seiten 186-187.Folgende Fehlermeldung taucht auf, wenn Sie z.B. vergessen haben, die Filename-Anweisung fürmymac zu setzen:WARNING: No logical assign for filename MYMAC.WARNING: Source level autocall is not found or cannot be opened. Autocall hasbeen suspended and OPTION NOMAUTOSOURCE has been set. To use theautocall facility again, set OPTION MAUTOSOURCE.WARNING: Apparent invocation of macro DATATYP not resolved.53