Veröffentlicht am :
Dienstprogramm CREATION_INTERNE

Eine Systemkommando ausführen und die Ausgabe in einem Datensatz erfassen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Makro `%cmd2ds` akzeptiert zwei Parameter: `cmd` (den auszuführenden Systembefehl) und `dsout` (den Namen des Ausgabedatensatzes, standardmäßig `_cmd2ds`). Es verwendet die Schnittstelle `filename ... pipe`, um den Befehl auszuführen und seine Standardausgabe umzuleiten. Ein DATA STEP liest dann jede Zeile dieser Ausgabe und speichert sie in einer 256 Zeichen langen Variablen `str` im angegebenen Datensatz. Der `filename`-Verweis wird anschließend freigegeben, was für die Systemressourcen entscheidend ist.
Datenanalyse

Type : CREATION_INTERNE


Der Ausgabedatensatz wird dynamisch erstellt, indem die Standardausgabe eines über die 'Pipe'-Schnittstelle ausgeführten Systembefehls gelesen wird. Jede Ausgabelinie des Befehls wird zu einer Beobachtung im SAS-Datensatz.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser Block definiert das Makro `%cmd2ds`. Er verwaltet den Namen des Ausgabedatensatzes, indem er ihm den Standardwert `_cmd2ds` zuweist, falls `dsout` nicht angegeben ist. Die Deklaration `filename _cmd2ds pipe "&cmd";` ist entscheidend, da sie den über den Parameter `&cmd` bereitgestellten Systembefehl ausführt und dessen Ausgabe der Fileref `_cmd2ds` zuordnet. Der `DATA STEP` liest dann diese Ausgabe Zeile für Zeile mithilfe von `infile _cmd2ds;` und `input;`, weist jede Zeile der Variablen `_infile_` und dann der Variablen `str` zu und erstellt so den SAS-Datensatz. Schließlich gibt `filename _cmd2ds CLEAR;` die Fileref frei, schließt die Pipe und gibt die Systemressourcen frei.
Kopiert!
1%put MACRO CALLED: cmd2ds v1.0;
2 
3%macro cmd2ds(cmd,dsout);
4 %IF not %LENGTH(&dsout) %THEN %let dsout=_cmd2ds;
5 filename _cmd2ds pipe "&cmd";
6 DATA &dsout;
7 LENGTH str $ 256;
8 INFILE _cmd2ds;
9 INPUT;
10 str=_infile_;
11 RUN;
12 filename _cmd2ds CLEAR;
13%mend cmd2ds;
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.