|
|
データセットの存在判定
[OS]ALL
[リリース] 6.12, 8.1, 8.2
[キーワード] EXIST, %SYSFUNC, SCL
[質問]WORKライブラリの中に「Data1」というデータセットがあるかどうかを調べて、分岐処理を行ないたいのですが、どのようにしたらよいのでしょうか。
[回答]データセットが存在するかどうかを判定するには、SCL関数であるEXIST関数を使用します。 EXIST関数は、指定のデータセットが存在すればリターンコード「1」、存在しなければリターンコード「0」を返します。ただし、この関数はSCLプログラムの外では使用できないため、マクロ関数%SYSFUNCを使って呼び出します。 次のサンプルプログラムは、データセットが存在する場合にPRINTプロシジャを実行し、存在しなければ「データセット XX は存在しません」というメッセージをログに出力します。
/** テストデータの作成 **/
DATA data1;
a=1;
RUN;
/** データセットの存在を判定するマクロ **/
%MACRO exist(lib,dsn);
%IF %SYSFUNC(EXIST(&lib..&dsn)) %THEN
%DO;
PROC PRINT DATA=&lib..&dsn;
RUN;
%END;
%ELSE %PUT ** データセット &dsn は存在しません **;
%MEND;
/** パラメータを指定してマクロを実行 **/
%exist(work,data1); /* 1番目はライブラリ名 */
/* 2番目はデータセット名 */
実行結果
|
|||||