Macros for SAS Application Developers
https://github.com/sasjs/core
mm_getrepos.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Creates a dataset with all available repositories
4
5 @param outds= the dataset to create that contains the list of repos
6
7 @returns outds dataset containing all repositories
8
9 @warning The following filenames are created and then de-assigned:
10
11 filename sxlemap clear;
12 filename response clear;
13 libname _XML_ clear;
14
15 @version 9.2
16 @author Allan Bowe
17
18**/
19
20%macro mm_getrepos(
21 outds=work.mm_getrepos
22)/*/STORE SOURCE*/;
23
24
25* use a temporary fileref to hold the response;
26filename response temp;
27/* get list of libraries */
28proc metadata in=
29 "<GetRepositories><Repositories/><Flags>1</Flags><Options/></GetRepositories>"
30 out=response;
31run;
32
33/* write the response to the log for debugging */
34/*
35data _null_;
36 infile response lrecl=1048576;
37 input;
38 put _infile_;
39run;
40*/
41
42/* create an XML map to read the response */
43filename sxlemap temp;
44data _null_;
45 file sxlemap;
46 put '<SXLEMAP version="1.2" name="SASRepos"><TABLE name="SASRepos">';
47 put "<TABLE-PATH syntax='XPath'>/GetRepositories/Repositories/Repository";
48 put "</TABLE-PATH>";
49 put '<COLUMN name="id">';
50 put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Id";
51 put "</PATH>";
52 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
53 put '</COLUMN>';
54 put '<COLUMN name="name">';
55 put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Name";
56 put "</PATH>";
57 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
58 put '</COLUMN>';
59 put '<COLUMN name="desc">';
60 put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Desc";
61 put "</PATH>";
62 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
63 put '</COLUMN>';
64 put '<COLUMN name="DefaultNS">';
65 put "<PATH syntax='XPath'>";
66 put "/GetRepositories/Repositories/Repository/@DefaultNS</PATH>";
67 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
68 put '</COLUMN>';
69 put '<COLUMN name="RepositoryType">';
70 put "<PATH syntax='XPath'>";
71 put "/GetRepositories/Repositories/Repository/@RepositoryType</PATH>";
72 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>20</LENGTH>";
73 put '</COLUMN>';
74 put '<COLUMN name="RepositoryFormat">';
75 put "<PATH syntax='XPath'>";
76 put "/GetRepositories/Repositories/Repository/@RepositoryFormat</PATH>";
77 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>10</LENGTH>";
78 put '</COLUMN>';
79 put '<COLUMN name="Access">';
80 put "<PATH syntax='XPath'>";
81 put "/GetRepositories/Repositories/Repository/@Access</PATH>";
82 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>16</LENGTH>";
83 put '</COLUMN>';
84 put '<COLUMN name="CurrentAccess">';
85 put "<PATH syntax='XPath'>";
86 put "/GetRepositories/Repositories/Repository/@CurrentAccess</PATH>";
87 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>16</LENGTH>";
88 put '</COLUMN>';
89 put '<COLUMN name="PauseState">';
90 put "<PATH syntax='XPath'>";
91 put "/GetRepositories/Repositories/Repository/@PauseState</PATH>";
92 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>16</LENGTH>";
93 put '</COLUMN>';
94 put '<COLUMN name="Path">';
95 put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Path";
96 put "</PATH>";
97 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>256</LENGTH>";
98 put '</COLUMN>';
99 put '<COLUMN name="Engine">';
100 put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Engine";
101 put "</PATH>";
102 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>8</LENGTH>";
103 put '</COLUMN>';
104 put '<COLUMN name="Options">';
105 put "<PATH syntax='XPath'>/GetRepositories/Repositories/Repository/@Options";
106 put "</PATH>";
107 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>32</LENGTH>";
108 put '</COLUMN>';
109 put '<COLUMN name="MetadataCreated">';
110 put "<PATH syntax='XPath'>";
111 put "/GetRepositories/Repositories/Repository/@MetadataCreated</PATH>";
112 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>24</LENGTH>";
113 put '</COLUMN>';
114 put '<COLUMN name="MetadataUpdated">';
115 put "<PATH syntax='XPath'>";
116 put "/GetRepositories/Repositories/Repository/@MetadataUpdated</PATH>";
117 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>24</LENGTH>";
118 put '</COLUMN>';
119 put '</TABLE></SXLEMAP>';
120run;
121libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
122
123proc sort data= _XML_.SASRepos out=&outds;
124 by name;
125run;
126
127/* clear references */
128filename sxlemap clear;
129filename response clear;
130libname _XML_ clear;
131
132%mend mm_getrepos;