Production Ready Macros for SAS Application Developers
mf_getuser.sas
Go to the documentation of this file.
1 /**
2  @file
3  @brief Returns <code>&sysuserid</code> in Workspace session, <code>
4  &_secureusername</code> in Stored Process session.
5  @details In a workspace session, a user is generally represented by <code>
6  &sysuserid</code>. In a Stored Process session, <code>&sysuserid</code>
7  resolves to a system account (default=sassrv) and instead there are several
8  metadata username variables to choose from (_metauser, _metaperson
9  ,_username, _secureusername). The OS account is represented by
10  <code> _secureusername</code> whilst the metadata account is under <code>
11  _metaperson</code>.
12 
13  %let user= %mf_getUser();
14  %put &user;
15  @param type META returns _metaperson, OS returns _secureusername. Each of
16  these are scanned to remove any @domain extensions (which can happen after
17  a password change).
18 
19  @return sysuserid (if workspace server)
20  @return _secureusername or _metaperson (if stored process server)
21 
22  @version 9.2
23  @author Allan Bowe
24 **/
25 
26 %macro mf_getuser(type=META
27 )/*/STORE SOURCE*/;
28  %local user metavar;
29  %if &type=OS %then %let metavar=_secureusername;
30  %else %let metavar=_metaperson;
31 
32  %if %symexist(&metavar) %then %do;
33  %if %length(&&&metavar)=0 %then %let user=&sysuserid;
34  /* sometimes SAS will add @domain extension - remove for consistency */
35  %else %let user=%scan(&&&metavar,1,@);
36  %end;
37  %else %let user=&sysuserid;
38 
39  %quote(&user)
40 
41 %mend;