データセットの存在判定
[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番目はデータセット名 */ 実行結果
|