Macros for SAS Application Developers
https://github.com/sasjs/core
mm_getusers.sas
Go to the documentation of this file.
1/**
2 @file mm_getusers.sas
3 @brief Creates a table containing a list of all users
4 @details Only shows a limited number of attributes as some sites will have a
5 LOT of users.
6
7 Usage:
8
9 %mm_getusers()
10
11 Optionally, filter for a user (useful to get the uri):
12
13 %mm_getusers(user=&_metaperson)
14
15 @param outds the dataset to create that contains the list of libraries
16
17 @returns outds dataset containing all users, with the following columns:
18 - uri
19 - name
20
21 @param user= (0) Set to a metadata user to filter on that user
22 @param outds= (work.mm_getusers) The output table to create
23
24 @version 9.3
25 @author Allan Bowe
26
27**/
28
29%macro mm_getusers(
30 outds=work.mm_getusers,
31 user=0
32)/*/STORE SOURCE*/;
33
34filename response temp;
35%if %superq(user)=0 %then %do;
36 proc metadata in= '<GetMetadataObjects>
37 <Reposid>$METAREPOSITORY</Reposid>
38 <Type>Person</Type>
39 <NS>SAS</NS>
40 <Flags>0</Flags>
41 <Options>
42 <Templates>
43 <Person Name=""/>
44 </Templates>
45 </Options>
46 </GetMetadataObjects>'
47 out=response;
48 run;
49%end;
50%else %do;
51 filename inref temp;
52 data _null_;
53 file inref;
54 put "<GetMetadataObjects>";
55 put "<Reposid>$METAREPOSITORY</Reposid>";
56 put "<Type>Person</Type>";
57 put "<NS>SAS</NS>";
58 put "<!-- Specify the OMI_XMLSELECT (128) flag -->";
59 put "<Flags>128</Flags>";
60 put "<Options>";
61 put "<Templates>";
62 put '<Person Name=""/>';
63 put "</Templates>";
64 length string $10000;
65 string=cats('<XMLSELECT search="Person[@Name=',"'&user'",']"/>');
66 put string;
67 put "</Options>";
68 put "</GetMetadataObjects>";
69 run;
70 proc metadata in=inref out=response;
71 run;
72%end;
73
74filename sxlemap temp;
75data _null_;
76 file sxlemap;
77 put '<SXLEMAP version="1.2" name="SASObjects"><TABLE name="SASObjects">';
78 put "<TABLE-PATH syntax='XPath'>/GetMetadataObjects/Objects/Person";
79 put "</TABLE-PATH>";
80 put '<COLUMN name="uri">';
81 put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/Person/@Id</PATH>";
82 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>32</LENGTH>";
83 put '</COLUMN><COLUMN name="name">';
84 put "<PATH syntax='XPath'>/GetMetadataObjects/Objects/Person/@Name</PATH>";
85 put "<TYPE>character</TYPE><DATATYPE>string</DATATYPE><LENGTH>256</LENGTH>";
86 put '</COLUMN></TABLE></SXLEMAP>';
87run;
88libname _XML_ xml xmlfileref=response xmlmap=sxlemap;
89
90proc sort data= _XML_.SASObjects out=&outds;
91 by name;
92run;
93
94filename sxlemap clear;
95filename response clear;
96libname _XML_ clear;
97
98%mend mm_getusers;