My favorite for creating control variables is to do it in a data step and use call symput:
data _null_;
call symput('cdate',put(date(),ddmmyyn8.));
timestr = put(time(),tod5.);
call symput('ctime',substr(timestr,1,2)!!substr(timestr,4,2));
run;
%put &cdate.;
%put &ctime.;
Note that the tod. format outputs a leading zero for single-digit hours (what the time. format does not do).
In a data step I can hack away using simple data step syntax without having to repeatedly use %sysfunc or %eval.
... View more