/*
/ Program : jobinfo.sas / Version : 2.1 / Author : Roland Rashleigh-Berry / Date : 12-Oct-2009 / Purpose : Spectre (Clinical) macro to store important job information in / global macro variables. / SubMacros : %qreadpipe / Notes : If this macro can not determine the calling program then it will / assume you are running interactively and prompt for the program / name. / Usage : %jobinfo / /=============================================================================== / PARAMETERS: /-------name------- -------------------------description------------------------ / N/A /=============================================================================== / AMENDMENT HISTORY: / init --date-- mod-id ----------------------description------------------------ / rrb 13Feb07 Made Windows compliant and "macro called" msg added / rrb 30Jul07 Header tidy / rrb 28Sep08 Header changed to classify this macro as belonging to / Spectre (Clinical). / rrb 12Oct09 Call to %readpipe changed to call to %qreadpipe due to / macro renaming (v2.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: jobinfo v2.1; %macro jobinfo; %*- set up global macro variables -; %global _sysin_ _prog_ _user_ _path_; %*- assign values -; %let _sysin_=%sysfunc(getoption(sysin)); %if "&sysscp" EQ "WIN" %then %let _user_=&sysuserid; %else %let _user_=%sysget(USER); %if "&sysscp" EQ "WIN" %then %let _path_=%qreadpipe(cd); %else %let _path_=%sysget(PWD); %if %length(&_sysin_) %then %let _prog_=%scan(&_sysin_,-2,.\/); %else %do; %*- Interactive SAS so prompt for the program name -; %window progname color=green columns=56 rows=12 #2 @2 'Enter the name of your sas program below' #3 @2 '(no extension -- case is important)' #4 @2 'Program:' @11 _prog_ 32 attr=rev_video display=yes required=yes color=white #6 @15 'Press ENTER to continue.'; %display progname; %*- left-align -; %let _prog_=%scan(&_prog_,1,.); %end; %put; %put MSG: (jobinfo) The following global macro variables have been set up; %put MSG: (jobinfo) and can be used in your code. ; %put _sysin_=&_sysin_; %put _prog_=&_prog_; %put _user_=&_user_; %put _path_=&_path_; %put; %mend jobinfo;