1
0
mirror of https://github.com/sasjs/core.git synced 2025-12-10 22:14:35 +00:00
Files
core/meta/mm_getgroupmembers.sas
2021-04-03 21:30:51 +02:00

73 lines
2.3 KiB
SAS
Executable File

/**
@file
@brief Creates dataset with all members of a metadata group
@details
usage:
%mm_getgroupmembers(someGroupName
,outds=work.mm_getgroupmembers
,emails=YES)
@param group metadata group for which to bring back members
@param outds= the dataset to create that contains the list of members
@param emails= set to YES to bring back email addresses
@param id= set to yes if passing an ID rather than a group name
@returns outds dataset containing all members of the metadata group
@version 9.2
@author Allan Bowe
**/
%macro mm_getgroupmembers(
group /* metadata group for which to bring back members */
,outds=work.mm_getgroupmembers /* output dataset to contain the results */
,emails=NO /* set to yes to bring back emails also */
,id=NO /* set to yes if passing an ID rather than group name */
)/*/STORE SOURCE*/;
data &outds ;
attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType
euri email length=$64
GroupDesc length=$256
rcGrp rcMem rc i j length=3;
call missing (of _all_);
drop uriGrp uriMem rcGrp rcMem rc i j arc ;
i=1;
* Grab the URI for the first Group ;
%if &id=NO %then %do;
rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Name='&group'",i,uriGrp);
%end;
%else %do;
rcGrp=metadata_getnobj("omsobj:IdentityGroup?@Id='&group'",i,uriGrp);
%end;
* If Group found, enter do loop ;
if rcGrp>0 then do;
call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role
,MemberName,MemberType);
* get group info ;
rc = metadata_getattr(uriGrp,"Id",GroupId);
rc = metadata_getattr(uriGrp,"Name",GroupName);
rc = metadata_getattr(uriGrp,"PublicType",Group_or_Role);
rc = metadata_getattr(uriGrp,"Desc",GroupDesc);
j=1;
do while (metadata_getnasn(uriGrp,"MemberIdentities",j,uriMem) > 0);
call missing (MemberName, MemberType, email);
rc = metadata_getattr(uriMem,"Name",MemberName);
rc = metadata_getattr(uriMem,"PublicType",MemberType);
if membertype='User' and "&emails"='YES' then do;
if metadata_getnasn(uriMem,"EmailAddresses",1,euri)>0 then do;
arc=metadata_getattr(euri,"Address",email);
end;
end;
output;
j+1;
end;
end;
run;
%mend;