2016-05-17 142 views
1

我如何检查目录是否存在,如果没有,那就再:SYSERR <> 0?,我需要SAS检查目录存在

%sysfunc(filename(fileref,&dir)) 

我需要SYSERR值,如果存在,否则为0 < > 0。 感谢您的帮助

+1

如果谷歌“SAS检查,如果目录存在”则返回大量的为你 – Longfish

+0

我选择总是有SYSERR = 0,即使我尝试不存在的目录D打开功能。然后我得到的信息'操作结果已被设置为 缺失值。' – aola

+1

为什么SYSERR而不是其他一些宏变量? – Tom

回答

2

有可能获得SAS抛出一个错误,但我下面的工作的一个更清洁的方式。一般的想法是,如果目录存在,你可以做一些将syserr设置为0的东西;如果不是的话,你会做出引发错误的事情。

%let your_path = "..."; 

%macro your_macro(dir); 

    %let rc = %sysfunc(filename(fileref, &dir.)); 

    %if %sysfunc(fexist(&fileref)) %then %do; 
     data _null_; 
      set _null_; 
     run; 
    %end; 
    %else %do; 
     data _null_; 
      set something_that_doesnt_exist; 
     run; 
    %end; 

    %put syserr = &syserr.; 

%mend your_macro; 

%your_macro(&your_path.); 
4

的清洁器的方法,以检查是否一个文件夹中存在

%let does_it_exist=%sysfunc(fileexist(&dir)); 

这将返回值0,如果文件夹不存在,并且为1的值,如果该文件夹确实存在。

+0

OP需要syserr值为1,但不仅仅是1的宏变量。 – superfluous