Veröffentlicht am :
Macro AUCUNE

SAS-Makro zur Erfassung und Anzeige eines Log-Abschnitts

Dieser Code ist auch verfügbar auf: English Español Français
Attention : Dieser Code erfordert Administratorrechte.
Das `%cliplog`-Makro ist darauf ausgelegt, einen Teil des SAS©-Logs zu extrahieren. Es verwendet `marker1` und `marker2` als Komponenten des Startmarkers, `pos` (standardmäßig 'last') für die Suchrichtung und `file` (standardmäßig 'c:\test.txt') für den Pfad der Ausgabedatei. Es deaktiviert vorübergehend die `mprint`-Option von SAS©, um zu verhindern, dass seine eigenen Befehle im Log ausgegeben werden. Über die Display Manager-Schnittstelle (`dm`-Befehl) sucht das Makro den kombinierten Marker (`&marker1&marker2`) im Log (Rückwärtssuche, wenn `pos=last`), markiert diese Position, bewegt sich zum Ende des Logs und setzt dort eine zweite Markierung. Der Text zwischen diesen beiden Markierungen (vom gefundenen Marker bis zum Ende des Logs) wird dann in die SAS©-Zwischenablage kopiert und anschließend in die angegebene Datei eingefügt. Schließlich wird der `x`-Befehl verwendet, um die resultierende Textdatei mit der Anwendung Notepad zu öffnen. Die `mprint`-Option wird am Ende der Makroausführung wiederhergestellt.
Datenanalyse

Type : AUCUNE


Das Skript liest oder erstellt keine konventionellen SAS-Datensätze. Es interagiert direkt mit dem SAS-Log, um Text zu extrahieren und diesen in eine externe Textdatei zu schreiben.

1 Codeblock
MACRO DÉFINITION
Erklärung :
Dieser Block definiert das `%cliplog`-Makro. Es ist darauf ausgelegt, einen Abschnitt des SAS-Logs mithilfe der Display Manager-Befehle (`dm`) zu erfassen. Das Makro deaktiviert vorübergehend die `mprint`-Option, um die Aufnahme seiner eigenen Anweisungen in das erfasste Log zu verhindern. Es lokalisiert eine Zeichenkette (`marker1` verkettet mit `marker2`), markiert diese Position und dann das Ende des Logs. Der Inhalt zwischen diesen beiden Punkten wird in die SAS-Zwischenablage kopiert und dann in die durch den Parameter `file` angegebene Datei geschrieben. Schließlich wird der Befehl `x "notepad &file"` verwendet, um die generierte Datei in Notepad zu öffnen, und die `mprint`-Option wird wiederhergestellt.
Kopiert!
1%macro cliplog(marker1,marker2,pos=last,file=c:\test.txt) ;
2 * note: split search text in half so we dont go and find it in our macro call ;
3 * note: save mprint option since we want mprint turned off for the macro RUN, otherwise
4 we get our search text written to the log and we will find it ;
5 %let o=%sysfunc(getoption(mprint)) ;
6 options nomprint ;
7/* log;
8 find '&marker1&marker2' &pos;
9 rfind;
10 mark;
11 bottom;
12 mark;
13 store;
14 unmark;
15 notepad;
16 clear;
17 paste;
18 file '&file';
19 end
20*/
21 dm "log;find '&marker1&marker2' &pos;mark;bottom;mark;store;unmark;notepad;clear;paste;file '&file';end" ;
22 * view the file in windows notepad ;
23 x "notepad &file" ;
24 options &o ;
25%mend cliplog ;
2 Codeblock
EXEMPLE D'UTILISATION
Erklärung :
Dieser Block demonstriert die Verwendung des `%cliplog`-Makros. Die Zeile `***BEGIN***;` ist eine SAS-Anweisung, die einen Marker in das Log schreibt. Der Kommentar `/* now run all the SAS code you would like to capture */` gibt an, wo der Code eingefügt werden soll, dessen Log erfasst werden soll. Der Aufruf `%cliplog(***BEGIN,***);` führt das Makro aus, um das Log zu erfassen. Das Makro sucht nach dem ersten Vorkommen von `***BEGIN***` (rückwärts suchend, wenn `pos=last`), markiert diese Position, dann das Ende des Logs und kopiert den Text zwischen diesen beiden Punkten.
Kopiert!
1***BEGIN***;
2/* this marks where to start the copying from the log */
3/* now
4run all the SAS code you would like to capture */
5%cliplog(***BEGIN,***) ;
6/* finally we call the macro which captures the log from the point we previously marked */
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.