データセットの存在チェック

[OS]ALL
[リリース]
[キーワード] Base SAS, EXIST DATA SET

[質問]

SCLのEXIST関数のように、目的のデータセットが存在しない場合、処理を回避したり代替のデータを指定するような処理を、SASプログラムで記述できますか。

[回答]

現在割り当てられているライブラリ参照名とデータセット名を持っているSASデータビュー (SASHELP.VMEMBER.VIEW)を検索して、目的のデータセットを検査できます。 マクロプログラムを使用して、存在チェックを行うプログラムの例を以下に示します。

/* マクロプログラムの定義 */

%global exist;
%macro existchk(lib=WORK,data=);
 %do;
    options nonotes noreplace;
    data _null_;
      retain exist "0";
      set sashelp.vmember(where=
      (memtype='DATA' and libname="&lib"))
         end=end;
      if memname="&data" then exist="1";
      if end then call symput("exist",exist);
    run;
    options notes replace;
    %if &exist=1 %then %do;
      /* 存在する場合の処理 */
      %put note: %upcase(&lib..&data)
                 が存在します.;
    %end;
    %else %do;
      /* 存在しない場合の処理 */
      %put warning: %upcase(&lib..&data)
                    はありません.;
    %end;
  %end;
%mend existchk;

/* マクロプログラムの使用例 */
/* (例)sasuser.class の存在チェック */
%existchk(lib=SASUSER,data=CLASS);