Macros for SAS Application Developers
https://github.com/sasjs/core
mm_getgroupmembers.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Creates dataset with all members of a metadata group
4 @details This macro will query SAS metadata and return all the members
5 of a particular group.
6
7 Usage:
8
9 %mm_getgroupmembers(someGroupName
10 ,outds=work.mm_getgroupmembers
11 ,emails=YES
12 )
13
14 @param group metadata group for which to bring back members
15 @param outds= (work.mm_getgroupmembers) The dataset to create that contains
16 the list of members
17 @param emails= (NO) Set to YES to bring back email addresses
18 @param id= (NO) Set to yes if passing an ID rather than a group name
19
20 @returns outds dataset containing all members of the metadata group
21
22 <h4> Related Macros </h4>
23 @li mm_getgorups.sas
24 @li mm_adduser2group.sas
25
26 @version 9.2
27 @author Allan Bowe
28
29**/
30
31%macro mm_getgroupmembers(
32 group /* metadata group for which to bring back members */
33 ,outds=work.mm_getgroupmembers /* output dataset to contain the results */
34 ,emails=NO /* set to yes to bring back emails also */
35 ,id=NO /* set to yes if passing an ID rather than group name */
36)/*/STORE SOURCE*/;
37
38 data &outds ;
39 attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType
40 euri email length=$64
41 GroupDesc length=$256
42 rcGrp rcMem rc i j length=3;
43 call missing (of _all_);
44 drop uriGrp uriMem rcGrp rcMem rc i j arc ;
45
46 i=1;
47 * Grab the URI for the first Group ;
48 %if &id=NO %then %do;
49 rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Name='&group'",i,uriGrp);
50 %end;
51 %else %do;
52 rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Id='&group'",i,uriGrp);
53 %end;
54 * If Group found, enter do loop ;
55 if rcGrp>0 then do;
56 call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role
57 ,MemberName,MemberType);
58 * get group info ;
59 rc = metadata_getattr(uriGrp,"Id",GroupId);
60 rc = metadata_getattr(uriGrp,"Name",GroupName);
61 rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);
62 rc = metadata_getattr(uriGrp,"Desc",GroupDesc);
63 j=1;
64 do while (metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);
65 call missing (MemberName, MemberType, email);
66 rc = metadata_getattr(uriMem,"Name",MemberName);
67 rc = metadata_getattr(uriMem,"PublicType",MemberType);
68 if membertype='User' and "&emails"='YES' then do;
69 if metadata_getnasn(uriMem,"EmailAddresses",1,euri)>0 then do;
70 arc=metadata_getattr(euri,"Address",email);
71 end;
72 end;
73 output;
74 j+1;
75 end;
76 end;
77 run;
78
79%mend mm_getgroupmembers;