24 %macro mm_getgroupmembers(
    26     ,outds=work.mm_getgroupmembers 
    32     attrib uriGrp uriMem GroupId GroupName Group_or_Role MemberName MemberType
    35       rcGrp rcMem rc i j   length=3;
    36     call missing (of _all_);
    37     drop uriGrp uriMem rcGrp rcMem rc i j arc ;
    40     * Grab the URI 
for the first Group ;
    42       rcGrp=metadata_getnobj(
"omsobj:IdentityGroup?@Name='&group'",i,uriGrp);
    45       rcGrp=metadata_getnobj(
"omsobj:IdentityGroup?@Id='&group'",i,uriGrp);
    47     * If Group found, enter 
do loop ;
    49       call missing (rcMem,uriMem,GroupId,GroupName,Group_or_Role
    50         ,MemberName,MemberType);
    52       rc = metadata_getattr(uriGrp,
"Id",GroupId);
    53       rc = metadata_getattr(uriGrp,
"Name",GroupName);
    54       rc = metadata_getattr(uriGrp,
"PublicType",Group_or_Role);
    55       rc = metadata_getattr(uriGrp,
"Desc",GroupDesc);
    57       do while (metadata_getnasn(uriGrp,
"MemberIdentities",j,uriMem) > 0);
    58         call missing (MemberName, MemberType, email);
    59         rc = metadata_getattr(uriMem,
"Name",MemberName);
    60         rc = metadata_getattr(uriMem,
"PublicType",MemberType);
    61         if membertype=
'User' and 
"&emails"=
'YES' then 
do;
    62           if metadata_getnasn(uriMem,
"EmailAddresses",1,euri)>0 then 
do;
    63             arc=metadata_getattr(euri,
"Address",email);