2016-05-17 138 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