前のページ|次のページ

EXIST関数

SASライブラリメンバの存在を確認します。

カテゴリ: SASファイルI/O

構文

必須引数

member-name

SASライブラリメンバを指定する文字定数、変数または式です。member-nameが空白またはNULL文字列の場合、EXISTはメンバ名として_LAST_システム変数の値を使用します。

オプション引数

member-type

SASライブラリメンバの種類を指定する文字定数、変数または式です。一般的なメンバの種類には、ACCESS、CATALOG、DATA、VIEWなどがあります。member-typeを指定しない場合、メンバの種類はDATAとみなされます。

generation

存在を確認するSASデータセットの世代番号を指定する数値定数、変数または式です。member-typeがDATA以外の場合、generationは無視されます。

正の数は、その世代番号による履歴バージョンへの絶対参照です。負の数は、以前の最も新しいバージョンから最も古いバージョンまでの、基本バージョンに対する履歴バージョンへの相対参照です。たとえば、–1は最も新しいバージョンまたは基本バージョンより1つ前のバージョンを示します。0は相対世代番号として扱われます。

詳細

シーケンシャルライブラリを使用する場合、EXIST関数の結果は未定義になります。シーケンシャルライブラリを使用しない場合、EXIST関数は、ライブラリメンバが存在する場合は1、member-nameが存在しないかmember-typeが無効な場合は0を返します。
カタログ内のエントリの存在を確認するには、CEXIST関数を使用します。

例1: データセットの存在確認

この例では、データセットの存在を確認します。データセットが存在しない場合、この例ではログにメッセージを表示します。
%let dsname=sasuser.houses;
%macro opends(name);
%if %sysfunc(exist(&name)) %then
   %let dsid=%sysfunc(open(&name, i));
%else %put Data set &name does not exist.;
%mend opends;
%opends(&dsname);

例2: データビューの存在確認

この例では、SASビューTEST.MYVIEWの存在を確認します。ビューが存在しない場合、この例ではログにメッセージを表示します。
data _null_;
dsname="test.myview";
   if (exist(dsname, "VIEW")) then
      dsid=open(dsname, "i");
   else put dsname 'does not exist.';
run;

例3: 世代データセットの存在確認

この例では、正の世代番号(絶対参照)を使用して世代データセットの存在を確認します。
data new(genmax=3);
   x=1;
run;
data new;
   x=99;
run;
data new;
   x=100;
run;
data new;
   x=101;
run;
data _null_;
   test=exist('new', 'DATA', 4);
   put test=;
   test=exist('new', 'DATA', 3);
   put test=;
   test=exist('new', 'DATA', 2);
   put test=;
   test=exist('new', 'DATA', 1);
   put test=;
run;
次の出力がログに書き込まれます。
test=1 test=1 test=1 test=0
この例を次のように変更することで、負の数(相対参照)を使用して世代データセットの存在を確認できます。
data new2(genmax=3);
   x=1;
run;
data new2;
   x=99;
run;
data new2;
   x=100;
run;
data new2;
   x=101;
run;
data _null_;
   test=exist('new2', 'DATA', 0);
   put test=;
   test=exist('new2', 'DATA', -1);
   put test=;
   test=exist('new2', 'DATA', -2);
   put test=;
   test=exist('new2', 'DATA', -3);
   put test=;
   test=exist('new2', 'DATA', -4);
   put test=;
run;
次の出力がログに書き込まれます。
test=1 test=1 test=1 test=0 test=0

関連項目:

前のページ|次のページ|ページの先頭へ