我有一个用SASFILE
语句打开两个文件的程序。您可以在here上看到SASFILE可以执行的操作。
如果我在尝试再次打开它们之前没有使用sasfile close
语句卸载SAS数据集,可以说通过在同一会话中重新运行代码会导致错误。
有没有办法可以检查数据集是否已经加载,然后有条件地卸载/加载/ do_nothing?
答案 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安装目前已损坏。