检查数据集是否已使用SASFILE打开

时间:2016-01-18 14:09:44

标签: sas

我有一个用SASFILE语句打开两个文件的程序。您可以在here上看到SASFILE可以执行的操作。

如果我在尝试再次打开它们之前没有使用sasfile close语句卸载SAS数据集,可以说通过在同一会话中重新运行代码会导致错误。

有没有办法可以检查数据集是否已经加载,然后有条件地卸载/加载/ do_nothing?

1 个答案:

答案 0 :(得分:0)

只需写一个记得你确实打开它的宏。

%macro sasFileOpen(lib, mem);
    %global &lib._&mem._open;
    %if &&&lib._&mem._open NE open %then %do;
        sasfile &lib..&mem..data open; 
        %let &lib._&mem._open = open;
    %end;
%mend;

然后以这种方式使用它:

libname mydata 'SAS-library';

%sasFileOpen (mydata, census);  

data test; 
   set mydata.census;  
run;

%sasFileOpen (mydata, census);  

data test; 
   set mydata.census;  
run;

proc summary data=mydata.census print;  
run;

data mydata.census;  
   modify mydata.census; 
   .
   . (statements to modify data)
   .
run;

sasfile mydata.census close;      

很抱歉没有测试,我的SAS安装目前已损坏。