Macros for SAS Application Developers
https://github.com/sasjs/core
mm_getservercontexts.sas
Go to the documentation of this file.
1/**
2 @file mm_getservercontexts.sas
3 @brief Creates a dataset with all server contexts in all repos
4 @details
5 Usage:
6
7 %mm_getservercontexts(outds=mm_getservercontexts)
8
9 @param outds= the dataset to create that contains the list
10
11 @warning The following filenames are created and then de-assigned:
12
13 filename __mc1 clear;
14 filename __mc2 clear;
15 libname __mc3 clear;
16
17 <h4> SAS Macros </h4>
18 @li mm_getrepos.sas
19
20 @version 9.3
21 @author Allan Bowe
22
23**/
24
25%macro mm_getservercontexts(
26 outds=work.mm_getrepos
27)/*/STORE SOURCE*/;
28%local repo repocnt x;
29%let repo=%sysfunc(getoption(metarepository));
30
31/* first get list of available repos */
32%mm_getrepos(outds=work.repos)
33%let repocnt=0;
34data _null_;
35 set repos;
36 where repositorytype in('CUSTOM','FOUNDATION');
37 keep id name ;
38 call symputx(cats('repo',_n_),name,'l');
39 call symputx('repocnt',_n_,'l');
40run;
41
42filename __mc1 temp;
43filename __mc2 temp;
44data &outds;
45 length serveruri servername $200;
46 call missing (of _all_);
47 stop;
48run;
49%do x=1 %to &repocnt;
50 options metarepository=&&repo&x;
51 proc metadata in=
52 "<GetMetadataObjects><Reposid>$METAREPOSITORY</Reposid>
53 <Type>ServerContext</Type><Objects/><NS>SAS</NS>
54 <Flags>0</Flags><Options/></GetMetadataObjects>"
55 out=__mc1;
56 run;
57 /*
58 data _null_;
59 infile __mc1 lrecl=1048576;
60 input;
61 put _infile_;
62 run;
63 */
64 data _null_;
65 file __mc2;
66 put '<SXLEMAP version="1.2" name="SASContexts"><TABLE name="SASContexts">';
67 put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/ServerContext";
68 put "</TABLE-PATH>";
69 put '<COLUMN name="serveruri">';
70 put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/ServerContext/@Id";
71 put "</PATH>";
72 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
73 put '</COLUMN>';
74 put '<COLUMN name="servername">';
75 put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/ServerContext/@Name";
76 put "</PATH>";
77 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>200</LENGTH>";
78 put '</COLUMN>';
79 put '</TABLE></SXLEMAP>';
80 run;
81 libname __mc3 xml xmlfileref=__mc1 xmlmap=__mc2;
82 proc append base=&outds data=__mc3.SASContexts;run;
83 libname __mc3 clear;
84%end;
85
86options metarepository=&repo;
87
88filename __mc1 clear;
89filename __mc2 clear;
90
91%mend mm_getservercontexts;