%let delete=Y;
data _null_;
set temp;
if upcase(name)=upcase("&findvar") then call symput ("delete","N");
run;
%if &delete=Y %then %do;
proc datasets lib=work;
delete &dset;
quit;
%put WARNING: &dset is deleted;
%end;
%mend delset;
%delset(a,unid);
%delset(b,unid);[/code:2s2lnzt9]作者: shiyiming 时间: 2011-5-13 16:29 标题: Re: 如何根据特定要求删掉一个dataset? [code:1umale8p]%let libname=work;
%let varname=unid;
data _null_;
if _n_=1 then call execute("proc datasets lib=&libname nolist; delete ");
do until(last.memname);
set sashelp.vcolumn(where=(libname="%upcase(&libname)")) end=last;
by memname notsorted;
if upcase(name)="%upcase(&varname)" then do;
call execute((put(memname,$32.));
leave;
end;
end;
if last then call execute('; quit;');
run;[/code:1umale8p]作者: shiyiming 时间: 2011-5-16 13:22 标题: Re: 如何根据特定要求删掉一个dataset? 楼上2位牛人,多谢了!!!作者: shiyiming 时间: 2011-5-19 04:51 标题: Re: 如何根据特定要求删掉一个dataset? Another one:
[code:2k3cnk7a]/* Create a macro that returns: */
/* 1 - if a specified variable is present in a given dataset, or */
/* 0 - otherwise */
%macro existsVariable(lib = work, ds =, var =);
%local dsid check rc;
/* Create a test dataset that has two variables, var1 and var2. */
data test;
var1 = 1; var2 = 2; output;
run;
/* Delete the dataset test if it does not contain variable var3. */
proc datasets lib = work nolist;
%sysfunc(ifc(%existsVariable(ds = test, var = var3) = 0, delete test, ));
quit;
[/code:2k3cnk7a]作者: shiyiming 时间: 2011-5-24 23:12 标题: Re: 如何根据特定要求删掉一个dataset? cloudpan2002, thanks a lot.