Type : CREATION_INTERNE
Die Daten werden dynamisch durch Abfrage des Metadaten-Servers über die SAS-Funktionen `metadata_*` generiert.
| 1 | options metaserver="meta.demo.sas.com" |
| 2 | metaport=8561 |
| 3 | metauser="sasadm @saspw" |
| 4 | metapass="Password" |
| 5 | metarepository=Foundation |
| 6 | metaprotocol=Bridge; |
| 7 | |
| 8 | /* Provide a group name you would like to query. */ |
| 9 | %let groupname=SAS Administrators; |
| 1 | DATA usertab; |
| 2 | LENGTH type id group_uri group_name per_uri per_name log_uri user_id ad_uri ad_name $ 256; |
| 3 | call missing(type,id,group_uri,group_name,per_uri,per_name,log_uri,user_id,ad_uri,ad_name); |
| 4 | obj="omsobj:IdentityGroup? @DisplayName='&groupname'"; |
| 5 | groupCount=metadata_resolve(obj,type,id); |
| 6 | put groupCount=; |
| 7 | IF groupCount = 0 THEN DO; |
| 8 | put "ERROR: No groups named &groupname defined in the repository."; |
| 9 | stop; |
| 10 | END; |
| 11 | IF groupCount > 0 THEN DO n=1 to groupCount; |
| 12 | rc=metadata_getnobj(obj,n,group_uri); |
| 13 | rc=metadata_getattr(group_uri,"DisplayName",group_name); |
| 14 | put group_name=; |
| 15 | memCount=metadata_getnasn(group_uri,"MemberIdentities",1,per_uri); |
| 16 | IF memCount > 0 THEN DO m=1 to memCount; |
| 17 | rc=metadata_getnasn(group_uri,"MemberIdentities",m,per_uri); |
| 18 | rc=metadata_getattr(per_uri,"DisplayName",per_name); |
| 19 | logCount=metadata_getnasn(per_uri,"Logins",1,log_uri); |
| 20 | IF logCount > 0 THEN DO o=1 to logCount; |
| 21 | rc=metadata_getnasn(per_uri,"Logins",o,log_uri); |
| 22 | rc=metadata_getattr(log_uri,"UserID",user_id); |
| 23 | rc=metadata_getnasn(log_uri,"Domain",1,ad_uri); |
| 24 | rc=metadata_getattr(ad_uri,"Name",ad_name); |
| 25 | OUTPUT; |
| 26 | call missing(log_uri,user_id,ad_uri,ad_name,group_name,per_name); |
| 27 | END; |
| 28 | END; |
| 29 | END; |
| 30 | keep group_name per_name ad_name user_id; |
| 31 | RUN; |