/*
/ Program : env2ds.sas / Version : 1.1 / Author : Roland Rashleigh-Berry / Date : 25-Jul-2011 / Purpose : To write system and user environment variables to a dataset. / SubMacros : none / Notes : By default, the output dataset will be named _env2ds. The name of / the environment variables will be held in the variable "name" with / length 40 and the value will be held in the variable "value" with / length 1000. A temporary file reference is used named "_env2ds" / that will be cleared after use. / / This version is for non-specifc operating systems but might not / work on the Windows 7 operating system due to unnamed pipes not / working. If you are running on Windows 7 and this macro does not / work then use %env2dsw7 instead. / / For later version of SAS software then this information might be / held in the sashelp library as a view in which case this macro / will be withdrawn. / / Usage : %env2ds; / %env2ds(OutputDatasetName); /=============================================================================== / PARAMETERS: /-------name------- -------------------------description------------------------ / dsout (pos) Name of output dataset (defaults to _env2ds) /=============================================================================== / AMENDMENT HISTORY: / init --date-- mod-id ----------------------description------------------------ / rrb 25Jul11 Test for missing value added (v1.1) /=============================================================================== / 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: env2ds v1.1; %macro env2ds(dsout); %if not %length(&dsout) %then %let dsout=_env2ds; filename _env2ds pipe 'set'; data &dsout; length name $ 40 value $ 1000; infile _env2ds; input; name=scan(_infile_,1,"="); if scan(_infile_,2,"=") NE " " then value=substr(_infile_,index(_infile_,"=")+1); label name="Environment Variable Name" value="Environment Variable Value" ; run; filename _env2ds clear; run; %mend;