Veröffentlicht am :
Makro CREATION_INTERNE

Liste der Datasets einer Bibliothek

Dieser Code ist auch verfügbar auf: English Español Français
Das Makro `dslist` hat das Ziel, eine Liste der in einer bestimmten SAS©-Bibliothek enthaltenen Datasets bereitzustellen. Es akzeptiert einen Parameter `libref`, um die zu analysierende Bibliothek anzugeben, mit einer Verwaltung von Standardwerten ('user' oder 'work', falls nicht angegeben). Ein optionaler Parameter `prefix` ermöglicht es, den Bibliotheksnamen vor jedem Dataset-Namen in der resultierenden Liste einzufügen. Die Implementierung verwendet `PROC SQL`, um die Systemtabelle `dictionary.tables` abzufragen, wobei die Einträge nach Mitgliedern des Typs 'DATA', die zum Ziel-`libref` gehören, gefiltert werden. Die kompilierte Liste der Dataset-Namen wird anschließend der globalen Makrovariablen `_dslist_` zugewiesen.
Datenanalyse

Type : CREATION_INTERNE


Die Daten werden durch Abfragen der SAS-Systemtabelle `dictionary.tables` gewonnen, die Metadaten zu allen im SAS-Umfeld registrierten Tabellen bereitstellt. Es handelt sich um eine interne Informationsquelle des SAS-Systems und nicht um externe oder vom Benutzer direkt in diesem Skript erstellte Daten.

1 Codeblock
Macro SAS
Erklärung :
Dieser Block markiert den Beginn der Makroausführung und -definition. Er kündigt den Makroaufruf an und initialisiert die globale Makrovariable `_dslist_` als leer. Er enthält die Logik, um dem Parameter `libref` einen Standardwert zuzuweisen, falls dieser nicht angegeben ist (unter Verwendung der Systemoption 'user' oder 'work'), und stellt sicher, dass der `libref` in Großbuchstaben ist.
Kopiert!
1%put MACRO CALLED: dslist v1.0;
2 
3%macro dslist(libref,prefix);
4 %global _dslist_;
5 %let _dslist_=;
6 %IF not %LENGTH(&libref) %THEN %let libref=%sysfunc(getoption(user));
7 %IF not %LENGTH(&libref) %THEN %let libref=work;
8 %let libref=%upcase(&libref);
2 Codeblock
PROC SQL
Erklärung :
Dieses Segment verwendet `PROC SQL` im stillen Modus (`noprint`), um die Metadatentabelle `dictionary.tables` abzufragen. Es wählt alle eindeutigen Mitgliedsnamen (`memname`) aus, die vom Typ 'DATA' sind und zur durch `&libref` angegebenen Bibliothek gehören. Die abgerufenen Namen werden in der Makrovariablen `_dslist_` gespeichert, mit einem bedingten Trennzeichen: entweder ein Leerzeichen oder `&libref..`, wenn der Parameter `prefix` aktiviert ist.
Kopiert!
1 PROC SQL noprint;
2 select distinct memname into :_dslist_ separated BY
3 %IF %LENGTH(&prefix) %THEN %DO;
4 " &libref.."
5 %END;
6 %ELSE %DO;
7 ' '
8 %END;
9 from dictionary.tables
10 where memtype='DATA'
11 and LIBNAME="&libref";
12 QUIT;
3 Codeblock
Macro SAS
Erklärung :
Dieser letzte Block passt die Makrovariable `_dslist_` an, falls das `prefix` verwendet wurde, da das 'separated by' in `PROC SQL` nur zwischen den Elementen, nicht aber am ersten Element angewendet wird. Er beendet die `PROC SQL` mit `run;` und schließt die Definition des Makros `dslist` mit `%mend` ab.
Kopiert!
1%IF %LENGTH(&prefix) %THEN %let _dslist_=&libref..&_dslist_;
2 
3RUN;
4%mend dslist;
5 
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.