SASの処理の経過時間を計る簡単なタイマーのマクロです。
処理開始時に、%timerstart() を実行し、時間を計りたい箇所で、%timermark()を実行させれば、開始時間からの経過秒数と、ひとつ前のmark時刻からの経過秒数をログに書き出します。
%macro timerstart();
/*時間計測開始*/
data _null_;
datetime=datetime();
call symput("start",datetime);
call symput("mark",datetime);
put "start : " datetime datetime.;
run;
%mend;
%macro timermark();
/*開始時刻からの経過秒数(from start)と直前の計測時刻からの経過秒数(from last)*/
data _null_;
datetime=datetime();
elaps1=datetime-&start;
elaps2=datetime-&mark;
call symput("mark",datetime);
put "mark : " datetime datetime. " ; elaps from start/last : " elaps1 "/" elaps2;
run;
%mend;
%timerstart();
/*start : 19OCT09:16:13:48*/
%timermark();
/*mark : 19OCT09:16:14:00 ; elaps from start/last : 12.730999947 /12.730999947*/
%timermark();
/*mark : 19OCT09:16:14:24 ; elaps from start/last : 36.119999886 /23.419999838*/