/** @file @brief Fetches all groups or the groups for a particular member @details When building applications that run on multiple flavours of SAS, it is convenient to use a single macro (like this one) to fetch the groups regardless of the flavour of SAS being used The alternative would be to compile a generic macro in target-specific folders (SASVIYA, SAS9 and SASJS). This avoids compiling unnecessary macros at the expense of a more complex sasjsconfig.json setup. @param [in] mdebug= (0) Set to 1 to enable DEBUG messages @param [in] user= (0) Provide the username on which to filter @param [in] uid= (0) Provide the userid on which to filter @param [in] repo= (foundation) SAS9 only, choose the metadata repo to query @param [in] access_token_var= (ACCESS_TOKEN) VIYA only. The global macro variable to contain the access token @param [in] grant_type= (sas_services) VIYA only. Valid values are "password" or "authorization_code" (unquoted). @param [out] outds= (work.mx_getgroups) This output dataset will contain the list of groups. Format: |GROUPNAME:$32.|GROUPDESC:$256.|GROUPURI:best.| |---|---|---| |`SomeGroup `|`A group `|`1`| |`Another Group`|`this is a different group`|`2`| |`admin`|`Administrators `|`3`|

SAS Macros

@li mf_getplatform.sas @li mm_getgroups.sas @li ms_getgroups.sas @li mv_getgroups.sas @li mv_getusergroups.sas **/ %macro mx_getgroups( mdebug=0, user=0, uid=0, repo=foundation, access_token_var=ACCESS_TOKEN, grant_type=sas_services, outds=work.mx_getgroups )/*/STORE SOURCE*/; %local platform name shortloc; %let platform=%mf_getplatform(); %if &platform=SASJS %then %do; %ms_getgroups( user=&user, uid=&uid, outds=&outds, mdebug=&mdebug ) data &outds; length groupuri groupname $32 groupdesc $128 ; set &outds; keep groupuri groupname groupdesc; groupuri=cats(groupid); groupname=name; groupdesc=description; run; proc sort; by groupname; run; %end; %else %if &platform=SAS9 or &platform=SASMETA %then %do; %if &user=0 %then %let user=; %mm_getGroups( user=&user ,outds=&outds ,repo=&repo ,mDebug=&mdebug ) proc sort data=&outds; by groupname; run; %end; %else %if &platform=SASVIYA %then %do; %if &user=0 %then %do; %mv_getgroups(access_token_var=&access_token_var ,grant_type=&grant_type ,outds=&outds ) %end; %else %do; %mv_getusergroups(&user ,outds=&outds ,access_token_var=&access_token_var ,grant_type=&grant_type ) %end; proc sort data=&outds(rename=(id=groupuri name=groupname description=groupdesc)) out=&outds (keep=groupuri groupname groupdesc); by groupname; run; %end; %mend mx_getgroups;