Macros for SAS Application Developers
https://github.com/sasjs/core
Loading...
Searching...
No Matches
mx_getgroups.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief Fetches all groups or the groups for a particular member
4 @details When building applications that run on multiple flavours of SAS, it
5 is convenient to use a single macro (like this one) to fetch the groups
6 regardless of the flavour of SAS being used
7
8 The alternative would be to compile a generic macro in target-specific
9 folders (SASVIYA, SAS9 and SASJS). This avoids compiling unnecessary macros
10 at the expense of a more complex sasjsconfig.json setup.
11
12
13 @param [in] mdebug= (0) Set to 1 to enable DEBUG messages
14 @param [in] user= (0) Provide the username on which to filter
15 @param [in] uid= (0) Provide the userid on which to filter
16 @param [in] repo= (foundation) SAS9 only, choose the metadata repo to query
17 @param [in] access_token_var= (ACCESS_TOKEN) VIYA only.
18 The global macro variable to contain the access token
19 @param [in] grant_type= (sas_services) VIYA only.
20 Valid values are "password" or "authorization_code" (unquoted).
21 @param [out] outds= (work.mx_getgroups) This output dataset will contain the
22 list of groups. Format:
23|GROUPNAME:$32.|GROUPDESC:$256.|GROUPURI:best.|
24|---|---|---|
25|`SomeGroup `|`A group `|`1`|
26|`Another Group`|`this is a different group`|`2`|
27|`admin`|`Administrators `|`3`|
28
29 <h4> SAS Macros </h4>
30 @li mf_getplatform.sas
31 @li mm_getgroups.sas
32 @li ms_getgroups.sas
33 @li mv_getgroups.sas
34 @li mv_getusergroups.sas
35
36**/
37
38%macro mx_getgroups(
39 mdebug=0,
40 user=0,
41 uid=0,
42 repo=foundation,
43 access_token_var=ACCESS_TOKEN,
44 grant_type=sas_services,
45 outds=work.mx_getgroups
46)/*/STORE SOURCE*/;
47%local platform name shortloc;
48%let platform=%mf_getplatform();
49
50%if &platform=SASJS %then %do;
51 %ms_getgroups(
52 user=&user,
53 uid=&uid,
54 outds=&outds,
55 mdebug=&mdebug
56 )
57 data &outds;
58 length groupuri groupname $32 groupdesc $128 ;
59 set &outds;
60 keep groupuri groupname groupdesc;
61 groupuri=cats(groupid);
62 groupname=name;
63 groupdesc=description;
64 run;
65 proc sort; by groupname; run;
66%end;
67%else %if &platform=SAS9 or &platform=SASMETA %then %do;
68 %if &user=0 %then %let user=;
69 %mm_getGroups(
70 user=&user
71 ,outds=&outds
72 ,repo=&repo
73 ,mDebug=&mdebug
74 )
75 proc sort data=&outds; by groupname; run;
76%end;
77%else %if &platform=SASVIYA %then %do;
78 %if &user=0 %then %do;
79 %mv_getgroups(access_token_var=&access_token_var
80 ,grant_type=&grant_type
81 ,outds=&outds
82 )
83 %end;
84 %else %do;
85 %mv_getusergroups(&user
86 ,outds=&outds
87 ,access_token_var=&access_token_var
88 ,grant_type=&grant_type
89 )
90 %end;
91 proc sort
92 data=&outds(rename=(id=groupuri name=groupname description=groupdesc))
93 out=&outds (keep=groupuri groupname groupdesc);
94 by groupname;
95 run;
96%end;
97
98%mend mx_getgroups;