Einrichten einer Projekt-Umgebung.
Aus SAS-Wiki
Von Grischa Pfister aus: Hans-Peter Altenburg, Carina Ortseifen, Tanja Petrowitsch, Grischa Pfister, Wilfried Schollenberger: Tipps & Tricks für den leichteren Umgang mit der SAS Software, KSFE 2007
Hintergrund dieses Tipps ist die allgegenwärtige Fragestellung, wie SAS-Sitzungen individuell angepasst werden, und wie dafür gesorgt wird, dass bestimmte Ressourcen (Bibliotheken, externe Dateien etc.) von Anfang an bereit stehen. Im professionellen Einsatz von SAS wird dies z.B. für SAS/AF Anwendungen benötigt, die zwar ein „normales“ SAS als Basis haben, wo der Benutzer aber nicht mit den klassischen Fenstern PGM, LOG, OUTPUT arbeiten soll.
Grundsätzlich wird SAS über eine Vielzahl von (System) Optionen konfiguriert, ein Teil davon kann nur während der Startphase gesetzt werden – die eigentlichen System-Optionen – ein anderer Teil wird in der laufenden SAS-Sitzung nach dem Schalter-Prinzip bzw. durch Wertzuweisung gesetzt. Eine Übersicht aller Optionen findet sich in der Online-Hilfe. Hier ist der schnellste Weg der Index, der nach Eingabe von „system options“ den Unterpunkt „by category“ anbietet. Hilfe zu einer konkreten Option oder einer Gruppe von Optionen bietet auch die Prozedur Proc Options, die eine Definition ausgeben kann:
Proc Options option=mprint define; Run; Proc Options group=macro define; Run;
System-Optionen werden auf zwei verschiedene Arten gesetzt. Zum einen können sie an den Aufruf von SAS angehängt werden, unter Windows sieht der typische Aufruf von SAS 9 z.B. so aus:
D:\sas9\sas.exe -CONFIG d:\Programme\SAS\sas9\nls\en\SASV9.CFG
Zum anderen – und das ist der bessere Weg, wenn mehrere Optionen gesetzt werden – kann eine benutzerspezifische CONFIG-Datei erstellt werden, in der die Optionen aufgeführt sind und auch dokumentiert werden können (mit der Kommentarform /*…*/). Bis Version 8 musste dazu die vollständige Original CONFIG-Datei in Kopie übernommen werden, seit V9 ist auch das Ineinander-Schachteln verschiedener CONFIG-Dateien möglich. So kann das Original referenziert werden und anschließend folgen nur die Optionen, die vom Standard abweichen sollen.
Allokationsanweisungen für Bibliotheken und externe Dateien (sowie beliebiger anderer SAS Code) können in einer sog. AUTOEXEC.SAS zusammengefasst werden. Dieses Programm wird beim Starten von SAS nach abgeschlossener Initialisierung automatisch abgearbeitet. Dazu muss es sich entweder im Arbeitsverzeichnis von SAS befinden (Windows) oder per Option beim Aufruf bzw. in der CONFIG-Datei referenziert worden sein (System-Option Autoexec). D:\sas9\sas.exe -CONFIG „…/config.cfg“ –AUTOEXEC „…/autoexec.sas“
Es folgt eine subjektive Auswahl verschiedener System-Optionen, die für die Einrichtung einer Projektumgebung interessant sein können: (In der CONFIG-Datei werden die Optionen mit –Option angegeben)
- -Awstitle „text“
gibt einen Text an, der als Titel des Hauptfensters verwendet wird
- -Splashloc „…/*.bmp“ referenziert eine Grafik die beim Start anstelle des SAS-Logos angezeigt wird
- -Awsdef llx lly urx ury
gibt Größe und Position des SAS-Fensters bei Start in % des Bildschirms an
- -Nodsmexp
Schaltet den Explorer und das Resultsfenster aus
- -Work
Setzt den Pfad für die WORK-Bibliothek
- -Sasuser
Setzt den Pfad für die SASUSER-Bibliothek
- -Rsasuser
Erlaubt nur lesenden Zugriff auf die SASUSER-Bibliothek (readonly)
Es gibt verschiedene Möglichkeiten, Bibliotheken zu allokieren. Klassischerweise wird eine Libname-Anweisung verwendet, die z.B. in der AUTOEXEC.SAS enthalten ist.
Libname libref „Verzeichnis“;
Genauso gut kann die Bibliothek aber bereits in der CONFIG-Datei definiert werden, hier ist die Syntax anders:
- -SET LIBREF „Verzeichnis“
Bei dem ersten Zugriff auf die Bibliothek LIBREF wird sie im Hintergrund automatisch allokiert, dabei entscheidet SAS selbständig, welcher Engine verwendet wird.
Eine wesentliche Rolle beim Aufsetzen von Projekten spielen die verschiedenen Projektumgebungen. In der Regel gibt es eine Entwicklungs-, eine Test- und eine Produktiv-Umgebung. Natürlich sollen diese Umgebungen verschiedene Ressourcen verwenden, andererseits soll der administrative Aufwand zum Anpassen so gering wie möglich gehalten werden. Die Verzeichnisstruktur der verschiedenen Umgebungen ist meistens identisch, d.h. die Bibliotheken beziehen sich auf gleich benannte Unterverzeichnisse, nur am Anfang des Pfades taucht die Unterscheidung in DEV, TEST, PROD auf. Mit Hilfe von relativen Bezügen oder Platzhaltern lässt sich der Pflegeaufwand minimieren.
Mit „-Sasinitialfolder“ wird das Arbeitsverzeichnis einer SAS-Sitzung festgelegt. Relative Pfadangaben – also solche ohne „C:\...“ oder „/…“ am Anfang – beziehen sich immer auf diesen absoluten Pfad.
Das Einstellen von
-SASINITIALFOLDER "C:\projekt\daten"
in der CONFIG-Datei, gefolgt von diesen Libname-Anweisungen in der AUTOEXEC.SAS
Libname t1 "Oracle"; Libname t2 "Db2";
sorgt dafür, dass die Library T1 auf den Pfad „C:\projekt\daten\Oracle“ zeigt, die Library T2 auf den Pfad „C:\projekt\daten\Db2“.
Es gibt noch eine zweite Methode, relative Bezüge zu verwenden, dabei wird in der CONFIG-Datei mit „-SET PlatzhalterName PlatzhalterWert“ ein Platzhalter definiert, auf den dann in weiteren Anweisungen mit „!PlatzhalterName“ referenziert wird (in der CONFIG, in der AUTOEXEC, oder in beliebigen anderen SAS-Programmen). Das oben bereits verwendete Beispiel sieht dann so aus: In der CONFIG-Datei:
-SET root "C:\projekt\daten" In der AUTOEXEC.SAS Libname t1 "!root\Oracle"; Libname t2 "!root\Db2"
In der AUTOEXEC.SAS können natürlich auch Makro-Variablen definiert werden, die Pfade oder Teilpfade enthalten und dann in entsprechenden Libname-Anweisungen Verwendung finden.
Hier noch einmal ein durchgehendes Beispiel für eine eigene CONFIG-Datei:
/* GP angepasste Config */ /* GP vorgelagerte Config einlesen */ -config "D:\Programme\SAS\SAS9\sasv9.cfg" /* GP Arbeitsverzeichnis festlegen */ -SASINITIALFOLDER "D:\Eigene\iCASUS\02 Konferenzen\02 KSFE\Ksfe 2007\02 Tipps und Tricks\02 SAS-Umgebungen\GP" /* GP Library Sasuser relativ zu SASINITIALFOLDER */ -SASUSER "sasuser" /* GP Titel fuer Session vergeben */ -Awstitle "SAS Entwicklungsumgebung [GP]" /* GP Explorer und Results-Fenster abschalten */ -NoDmsexp /* GP Fenster auf maximale Groesse setzen */ -AWSDEF 0 0 100 100 /* GP Platzhalter mit Hauptpfad fuer Projekt */ -SET root "D:\Eigene\iCASUS\02 Konferenzen\02 KSFE\Ksfe 2007\02 Tipps und Tricks\02 SAS-Umgebungen\GP" /* GP Startbild */ -splashloc "!root\SAS_Start.bmp" /* GP Libraries allokieren */ -Set TempPath "d:/temp" -Set daten1 "!root\daten" Und hier die dazugehörende AUTOEXEC.SAS
/* GP angepasste Autoexec */
* GP Daten allokieren *;
Libname daten2 "daten";
Libname daten3 "../AndereDaten";
* GP Explorer einschalten
--> Nur Results-Fenster bleibt geschlossen *;
DM "explorer";
Libname _all_ list;
Literatur
- SAS Online Hilfe zu (System-) Optionen

