Macros for SAS Application Developers
https://github.com/sasjs/core
Loading...
Searching...
No Matches
mm_getobjects.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Creates a dataset with all metadata objects for a particular type
4
5 @param [in] type= the metadata type for which to return all objects
6 @param [out] outds= the dataset to create that contains the list of types
7
8 @returns outds dataset containing all objects
9
10 @note The following filenames are created and then de-assigned:
11
12 filename sxlemap clear;
13 filename response clear;
14 libname _XML_ clear;
15
16 @version 9.2
17 @author Allan Bowe
18
19**/
20
21%macro mm_getobjects(
22 type=SASLibrary
23 ,outds=work.mm_getobjects
24)/*/STORE SOURCE*/;
25
26/* use a temporary fileref to hold the response */
27filename response temp;
28/* get list of libraries */
29proc metadata in=
30 "<GetMetadataObjects><Reposid>$METAREPOSITORY</Reposid>
31 <Type>&type</Type><Objects/><NS>SAS</NS>
32 <Flags>0</Flags><Options/></GetMetadataObjects>"
33 out=response;
34run;
35
36/* write the response to the log for debugging */
37data _null_;
38 infile response lrecl=1048576;
39 input;
40 put _infile_;
41run;
42
43/* create an XML map to read the response */
44filename sxlemap temp;
45data _null_;
46 file sxlemap;
47 put '<SXLEMAP version="1.2" name="SASObjects"><TABLE name="SASObjects">';
48 put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/&type";
49 put "</TABLE-PATH>";
50 put '<COLUMN name="id">';
51 put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/&type/@Id</PATH>";
52 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
53 put '</COLUMN><COLUMN name="name">';
54 put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/&type/@Name</PATH>";
55 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
56 put '</COLUMN></TABLE></SXLEMAP>';
57run;
58libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
59
60proc sort data= _XML_.SASObjects out=&outds;
61 by name;
62run;
63
64/* clear references */
65filename sxlemap clear;
66filename response clear;
67libname _XML_ clear;
68
69%mend mm_getobjects;