/*
/ Program : qgetenv.sas
/ Version : 1.1
/ Author : Roland Rashleigh-Berry
/ Date : 04-May-2011
/ Purpose : Function-style macro to get the contents of a system or user
/ environment variable and return the result MACRO QUOTED.
/ SubMacros : %qreadpipe
/ Notes : Works for Windows and Unix/Linux platforms. If not Windows then
/ a Unix style method of echoing the environment variable using a
/ dollar sign is assumed (i.e. echo $envvar is assumed to work).
/ The result is MACRO QUOTED. If you wish to use the results in
/ normal sas code then you must %unquote() the result. Note that
/ unlike the %sysget macro function, this macro will not give a
/ warning if the environment variable does not exist. Instead a
/ null string is returned. In the case of Windows then if the
/ first character is a "%" then it is assumed that the
/ environment variable was not resolved and a null string is
/ returned.
/ Usage : %let newvar=%qgetenv(uservar);
/
/===============================================================================
/ PARAMETERS:
/-------name------- -------------------------description------------------------
/ envvar (pos) Name of environment variable (unquoted)
/===============================================================================
/ AMENDMENT HISTORY:
/ init --date-- mod-id ----------------------description------------------------
/ rrb 12Oct09 Macro renamed from getenv to qgetenv (v1.1)
/ rrb 04May11 Code tidy
/===============================================================================
/ This is public domain software. No guarantee as to suitability or accuracy is
/ given or implied. User uses this code entirely at their own risk.
/=============================================================================*/
%put MACRO CALLED: qgetenv v1.1;
%macro qgetenv(envvar);
%local tempres;
%if "&sysscp" EQ "WIN" %then %do;
%let tempres=%qreadpipe(echo %nrbquote(%str(%%)%superq(envvar)%str(%%)));
%*- if it did not resolve then set to null -;
%if "%qsubstr(%superq(tempres),1,1)" EQ "%" %then %let tempres=;
%end;
%else %let tempres=%qreadpipe(echo $&envvar);
&tempres
%mend qgetenv;