/** @file @brief Returns a userid according to session context @details In a workspace session, a user is generally represented by &sysuserid or SYS_COMPUTE_SESSION_OWNER if it exists. In a Stored Process session, &sysuserid resolves to a system account (default=sassrv) and instead there are several metadata username variables to choose from (_metauser, _metaperson ,_username, _secureusername). The OS account is represented by _secureusername whilst the metadata account is under _metaperson. %let user= %mf_getUser(); %put &user; @param type - do not use, may be deprecated in a future release @return SYSUSERID (if workspace server) @return _METAPERSON (if stored process server) @return SYS_COMPUTE_SESSION_OWNER (if Viya compute session) @version 9.2 @author Allan Bowe **/ %macro mf_getuser(type=META )/*/STORE SOURCE*/; %local user metavar; %if &type=OS %then %let metavar=_secureusername; %else %let metavar=_metaperson; %if %symexist(SYS_COMPUTE_SESSION_OWNER) %then %let user=&SYS_COMPUTE_SESSION_OWNER; %else %if %symexist(&metavar) %then %do; %if %length(&&&metavar)=0 %then %let user=&sysuserid; /* sometimes SAS will add @domain extension - remove for consistency */ %else %let user=%scan(&&&metavar,1,@); %end; %else %let user=&sysuserid; %quote(&user) %mend;