Veröffentlicht am :
Verwaltung INTERNE_ERSTELLUNG

Aktualisierung der Lilly-Makrobibliothek

Dieser Code ist auch verfügbar auf: English Español Français
Attention : Dieser Code erfordert Administratorrechte.
Das Makro AHGrefreshlilly führt mehrere Schlüsseloperationen aus. Erstens verwendet es DATA-Schritte mit dem Befehl `filename pip pipe 'dir ...'`, um alle '.sas©'-Dateien in den Unterverzeichnissen 'core' und 'inter' eines durch die Variable `kanbox` definierten Pfads aufzulisten. Es filtert die Dateien, um 'refreshmac.sas©' auszuschließen und, falls angegeben, nur die im Parameter 'files' aufgelisteten Dateien einzuschließen. Jede gefundene SAS©-Datei wird dann dynamisch über `%include` in die SAS©-Sitzung eingebunden. Zweitens initialisiert das Makro Netzwerkpfade (`SAdrive`, `macbackup`) und definiert eine Libname `netmac`, die auf das Sicherungsverzeichnis der Makros verweist. Anschließend werden Systembefehle (`x mkdir`, `x copy`) verwendet, um ein zeitgestempeltes Verzeichnis zu erstellen und alle vorhandenen Dateien der Makrobibliothek in dieses neue Sicherungsverzeichnis zu kopieren. Schließlich kopiert es die Kataloge (wahrscheinlich die kompilierten Makros enthaltend) aus dem temporären Katalog `work` in die Libname `netmac` (das Sicherungsverzeichnis), wodurch sichergestellt wird, dass die Makrobibliothek aktuell und gesichert ist.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Das Skript verwendet keine externen SAS-Datensätze direkt. Die beiden 'DATA _NULL_' werden verwendet, um Systembefehle auszuführen und Dateipfade zu manipulieren, ohne persistente Datensätze zu erstellen. Die verarbeiteten Daten sind hauptsächlich Dateimetadaten (Namen von SAS-Dateien) und Zugriffspfade.

1 Codeblock
DATA STEP
Erklärung :
Dieser SAS-Data-Schritt-Block, der keinen persistenten Datensatz erstellt ('_NULL_'), verwendet die Funktion `filename pip pipe 'dir ...'`, um den Systembefehl 'dir' auszuführen und die Namen der '.sas'-Dateien im durch `kanbox` definierten 'core'-Verzeichnis aufzulisten. Die Dateinamen werden einzeln gelesen. Er enthält eine Logik zum Ausschließen von 'refreshmac.sas' und zum Filtern von Dateien, wenn der Parameter `&files` angegeben ist. Für jede relevante Datei wird ein `%include`-Befehl erstellt und dynamisch über `call execute` ausgeführt, um andere SAS-Makros oder -Codes einzubinden.
Kopiert!
1 DATA _null_;
2 filename pip pipe "dir "&kanbox\core\*.sas " /b";
3 INFILE pip;
4 LENGTH file $100 com $300;
5 INPUT file ;
6 IF index(file,'refreshmac.sas') THEN return;
7 IF ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) THEN return;
8 com=("%include "&kanbox\core\"||file||"';");
9 put com=;
10 call execute(com);
11 RUN;
2 Codeblock
DATA STEP
Erklärung :
Ähnlich wie der vorherige Block verwendet dieser zweite Data-Schritt ebenfalls einen 'DATA _NULL_', um '.sas'-Dateien dynamisch aufzulisten und einzubinden. Der einzige Unterschied besteht darin, dass er das 'inter'-Verzeichnis anstelle von 'core' im Pfad `kanbox` anspricht und dieselbe Logik für das Filtern und dynamische Einbinden von Makros oder Codes in diesem Verzeichnis anwendet.
Kopiert!
1 DATA _null_;
2 filename pip pipe "dir "&kanbox\inter\*.sas " /b";
3 INFILE pip;
4 LENGTH file $100 com $300;
5 INPUT file ;
6 IF index(file,'refreshmac.sas') THEN return;
7 IF ("&files" ne '') and (not index(upcase("&files"),trim(upcase(file)))) THEN return;
8 com=("%include "&kanbox\inter\"||file||"';");
9 put com=;
10 call execute(com);
11 RUN;
3 Codeblock
Makro und Systembefehle
Erklärung :
Dieser Block definiert lokale Variablen für Netzwerkpfade (`SAdrive`, `macbackup`) und weist eine Libname `netmac` dem Sicherungsverzeichnis der Makros zu. Anschließend werden zwei Makros (`%AHGdateandtime`, `%AHGpm`) verwendet, um ein Datum/Uhrzeit in der Variablen `mydt` zu generieren (nicht bereitgestellt, werden an anderer Stelle angenommen). Entscheidend ist, dass Systembefehle über die `x`-Anweisung ausgeführt werden: `x mkdir`, um ein neues zeitgestempeltes Verzeichnis für die Sicherung zu erstellen, und `x copy`, um die vorhandenen Dateien der Bibliothek in dieses neue Verzeichnis zu kopieren. Schließlich wird `PROC DATASETS` verwendet, um alle Kataloge (die die kompilierten Makros enthalten) aus der temporären Bibliothek 'work' in die Libname 'netmac' zu kopieren, wodurch die Sicherung und Aktualisierung der Makrobibliothek gewährleistet ist.
Kopiert!
1 %local macbackup;
2 %let SAdrive=\\gh3nas01\gh3nas_sales.grp\LCDDMAC\STATS\SA;
3 %let macbackup=&sadrive\Macro library\Macro learning tool\sas7bcat\mac;
4
5 LIBNAME netmac "&macbackup";
6 %local mydt;
7 %AHGdateandtime(mydt);
8 %AHGpm(mydt);
9
10 x mkdir "&macbackup&mydt";
11 x copy "&macbackup\*.*" "&macbackup&mydt";
12 PROC DATASETS lib=work;
13 copy out=netmac memtype=catalog;
14 RUN;
15 QUIT;
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.