Die Daten stammen aus einer Abfrage des SAS Metadata Servers über PROC METADATA.
1 Codeblock
DATA STEP
Erklärung : Berechnung und Speicherung der Flags (OMI_SUCCINCT, OMI_GET_METADATA, OMI_ALL_SIMPLE) in einer Makrovariablen, die für die Metadatenabfrage erforderlich sind.
Kopiert!
data _null_;
flags=2048+256+8;
call symputx('flags',flags,'l');
run;
1
DATA _null_;
2
flags=2048+256+8;
3
call symputx('flags',flags,'l');
4
RUN;
2 Codeblock
PROC METADATA
Erklärung : Ausführung der Anfrage an den Metadatenserver, um alle 'SASLibrary'-Objekte abzurufen. Das XML-Ergebnis wird in der temporären Dateireferenz 'response' gespeichert.
Kopiert!
filename response temp;
/* get list of libraries */
proc metadata in=
'<GetMetadataObjects>
<Reposid>$METAREPOSITORY</Reposid>
<Type>SASLibrary</Type>
<Objects/>
<NS>SAS</NS>
<Flags>&flags</Flags>
<Options/>
</GetMetadataObjects>'
out=response;
run;
1
filename response temp;
2
/* get list of libraries */
3
PROC METADATA in=
4
'<GetMetadataObjects>
5
<Reposid>$METAREPOSITORY</Reposid>
6
<Type>SASLibrary</Type>
7
<Objects/>
8
<NS>SAS</NS>
9
<Flags>&flags</Flags>
10
<Options/>
11
</GetMetadataObjects>'
12
out=response;
13
RUN;
3 Codeblock
DATA STEP
Erklärung : Debug-Schritt, der den Rohinhalt der XML-Antwort in das SAS-Protokoll schreibt.
Kopiert!
/* write the response to the log for debugging */
data _null_;
infile response lrecl=32767;
input;
put _infile_;
run;
1
/* write the response to the log for debugging */
2
DATA _null_;
3
INFILE response lrecl=32767;
4
INPUT;
5
put _infile_;
6
RUN;
4 Codeblock
DATA STEP
Erklärung : Dynamische Generierung einer SXLEMAP-Datei (XML-Map), um zu definieren, wie die zurückgegebene XML-Datei geparst und die gewünschten Attribute (Id, Name, Libref, Engine) als Spalten extrahiert werden.
Kopiert!
filename sxlemap temp;
data _null_;
file sxlemap;
put '<SXLEMAP version="1.2" name="SASLibrary">';
put '<TABLE name="SASLibrary">';
put '<TABLE-PATH syntax="XPath">//Objects/SASLibrary</TABLE-PATH>';
put '<COLUMN name="LibraryId">><LENGTH>17</LENGTH>';
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Id</PATH></COLUMN>';
put '<COLUMN name="LibraryName"><LENGTH>256</LENGTH>>';
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Name</PATH></COLUMN>';
put '<COLUMN name="LibraryRef"><LENGTH>8</LENGTH>';
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Libref</PATH></COLUMN>';
put '<COLUMN name="Engine">><LENGTH>12</LENGTH>';
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Engine</PATH></COLUMN>';
put '</TABLE></SXLEMAP>';
run;
1
filename sxlemap temp;
2
DATA _null_;
3
file sxlemap;
4
put '<SXLEMAP version="1.2" name="SASLibrary">';
5
put '<TABLE name="SASLibrary">';
6
put '<TABLE-PATH syntax="XPath">//Objects/SASLibrary</TABLE-PATH>';
7
put '<COLUMN name="LibraryId">><LENGTH>17</LENGTH>';
8
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Id</PATH></COLUMN>';
9
put '<COLUMN name="LibraryName"><LENGTH>256</LENGTH>>';
10
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Name</PATH></COLUMN>';
11
put '<COLUMN name="LibraryRef"><LENGTH>8</LENGTH>';
12
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Libref</PATH></COLUMN>';
13
put '<COLUMN name="Engine">><LENGTH>12</LENGTH>';
14
put '<PATH syntax="XPath">//Objects/SASLibrary/ @Engine</PATH></COLUMN>';
15
put '</TABLE></SXLEMAP>';
16
RUN;
5 Codeblock
PROC SORT Data
Erklärung : Zuweisung der XML-Engine unter Verwendung der Antwortdatei und der generierten Map, gefolgt von der Erstellung der Ausgabetabelle, sortiert nach Bibliotheksname.
Kopiert!
libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
/* sort the response by library name */
proc sort data=_XML_.saslibrary out=&outds;
by libraryname;
run;
1
LIBNAME _XML_ xml xmlfileref=response xmlmap=sxlemap;
2
3
/* sort the response by library name */
4
PROC SORTDATA=_XML_.saslibrary out=&outds;
5
BY libraryname;
6
RUN;
6 Codeblock
DATA STEP
Erklärung : Bereinigung der Umgebung durch Freigabe der Datei- (filename) und Bibliotheksreferenzen (libname).
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.