OUTPUTウィンドウに出力される日時をプログラム実行日時にする

[OS]ALL
[リリース] 6.07以降
[キーワード] base, datastep, output, window, date(), date, time(); time, function, macro, variable, call, symput, title, statement

[質問]

OUTPUTウィンドウに出力される日時を、SASを起動した日時ではなく、処理を行った日時にするにはどうすればよいでしょうか。

[回答]

SASを起動すると、起動した日時がシステムに記憶されます。この時間は、OUTPUTウィンドウへの出力だけではなく、&SYSDATEや&SYSTIMEなどの値としても使用されます。

残念ながらその内容を変更することはできません。
そこで、以下のプログラムのように、マクロ機能を使用して、実行時の日付時間をタイトル行に出力する方法を紹介します。

次のプログラムは、まずDATEおよびTIME関数を使用して現在の日付値や時間値を取得し、それをCALL SYMPUTルーチンでマクロ変数DATEとTIMEに格納します。 TITLEステートメントではこれらのマクロ変数を参照し、タイトル行に日時を表示させます。

[マクロ定義]

%macro now;
  options nodate;
  data _null_;
    date=date(); time=time();
    call symput("date",put(date,weekdate30.));
    call symput("time",put(time,time5.));
  run;
%mend now;

[マクロ実行]

%now;
title2 "                                        &time.&date";
proc print data=sasuser.class; run;