-
-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
236 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/** | ||
@file | ||
@brief Testing mx_getgroups.test.sas macro | ||
Be sure to run <code>%let mcTestAppLoc=/Public/temp/macrocore;</code> when | ||
running in Studio | ||
<h4> SAS Macros </h4> | ||
@li mf_nobs.sas | ||
@li mf_getuser.sas | ||
@li mp_assert.sas | ||
@li mx_getgroups.sas | ||
**/ | ||
|
||
|
||
%mx_getgroups(outds=work.test1) | ||
|
||
%mp_assert( | ||
iftrue=(%mf_nobs(work.test1)>0), | ||
desc=groups were found, | ||
outds=work.test_results | ||
) | ||
%mp_assertcols(work.test1, | ||
cols=groupuri groupname groupdesc, | ||
test=ALL, | ||
desc=check all columns exist | ||
) | ||
|
||
%mx_getgroups(outds=work.test2,user=%mf_getuser()) | ||
|
||
%mp_assert( | ||
iftrue=(%mf_nobs(work.test2)>0), | ||
desc=groups for current user were found, | ||
outds=work.test_results | ||
) | ||
%mp_assertcols(work.test2, | ||
cols=groupuri groupname groupdesc, | ||
test=ALL, | ||
desc=check all columns exist | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
/** | ||
@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`| | ||
<h4> SAS Macros </h4> | ||
@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; |