データが0件のときOUTPUTウィンドウにメッセージを出力する

[OS] ALL
[リリース] 8.2
[キーワード] SAS 8, OUTPUT, PRINT, OBSERVATION NUMBER

[質問]

OUTPUTウィンドウへの出力があるプログラムを実行するとき、データが0件だと何も出力されませんが、任意のメッセージを出力するようにできますか?

[回答]

次のようなプログラムでメッセージを出力できます。下記のサンプルプログラムでは、データのあるデータセットと0件のデータセットを作成し、データが0件のデータセットを処理した際にメッセージを出力するマクロを作成しています。


                                / * サンプルデータセット1 作成*/
DATA one;
  x=1;
RUN;
                      /* サンプルデータセット2(データ0件) 作成*/
DATA two;
  STOP;
RUN;

OPTIONS MPRINT;

%MACRO drive(dsn);
                               /* オブザベーション数のカウント */
  DATA _null_;
    CALL SYMPUT('cnt',PUT(cnt,5.));
    SET &dsn NOBS=cnt;
  RUN;

                                           /* データがあるとき */
  %IF &cnt NE 0 %THEN %DO;
    PROC PRINT DATA=&dsn;
      TITLE "データセット名 : &dsn";
    run;
  %END;
  %ELSE %DO;
    DATA _null_;                             /* 0件のとき */
      TITLE;
      FILE PRINT;
      PUT _page_;
      PUT "データセット名: &dsn";
      PUT "データセットにオブザベーションがありません。";
    RUN;
  %END;
%MEND drive;

%drive(one)
%drive(two)