Veröffentlicht am :
Makro EXTERNE

Umgebungsvariablen in einem SAS-Datensatz speichern

Dieser Code ist auch verfügbar auf: English Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Dieses Makro führt den Systembefehl 'set' über eine 'Pipe' aus, um alle Umgebungsvariablen zu erfassen. Anschließend wird die Ausgabe analysiert, um einen SAS©-Datensatz zu erstellen, der den Namen und den Wert jeder Variablen enthält. Der Standard-Ausgabedatensatz ist '_env2ds', kann aber angepasst werden. Der Code ist generisch konzipiert, erwähnt aber eine Alternative für Windows 7, wo anonyme 'Pipes' möglicherweise nicht funktionieren.
Datenanalyse

Type : EXTERNE


Die Daten werden dynamisch durch Ausführen des Systembefehls 'set' über die Anweisung 'filename pipe' generiert. Die Quelle ist somit keine bereits vorhandene Datei, sondern die Standardausgabe dieses Systembefehls, der die Umgebungsvariablen der Sitzung auflistet.

1 Codeblock
FILENAME
Erklärung :
Diese Anweisung ordnet den Fileref '_env2ds' einer 'Pipe' zu. Sie führt den Systembefehl 'set' aus und erfasst dessen Standardausgabe, sodass sie von SAS als flache Datei gelesen werden kann.
Kopiert!
1filename _env2ds pipe 'set';
2 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA STEP Block liest die Daten aus der 'Pipe' _env2ds. Für jede gelesene Zeile ('input') extrahiert er den Namen der Umgebungsvariablen, indem er den Teil vor dem '='-Zeichen nimmt, und ihren Wert, indem er den Teil danach nimmt. Eine Bedingung prüft, ob der Wert nicht leer ist, bevor er zugewiesen wird. Die Variablen 'name' und 'value' werden mit vordefinierten Längen und beschreibenden Labels erstellt.
Kopiert!
1DATA &dsout;
2 LENGTH name $ 40 value $ 1000;
3 INFILE _env2ds;
4 INPUT;
5 name=scan(_infile_,1,"=");
6 IF scan(_infile_,2,"=") NE " " THEN value=substr(_infile_,index(_infile_,"=")+1);
7 label name="Environment Variable Name"
8 value="Environment Variable Value"
9 ;
10RUN;
3 Codeblock
FILENAME
Erklärung :
Diese Anweisung gibt den Fileref '_env2ds' frei und schließt die zugehörige 'Pipe', was eine gute Praxis für die Ressourcenbereinigung ist.
Kopiert!
1filename _env2ds clear;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.