%macro delete_null(lib=);
/*lib:數據庫名稱*/
proc sql noprint;
select memname into :sasdata separated by " "
from dictionary.tables
where upcase(libname)=upcase("&lib");
quit;
%let i=1;
%do %until (%scan(&sasdata.,&i.," ")=);
%let name=%scan(&sasdata.,&i.," "); /*循環對work里所有數據集調用內部嵌套的“a”宏*/
%a(data=&name);
%let i=%eval(&i.+1);
%end;
%mend delete_null;
%macro a(data=); /*data:數據集,如果該數據集為空就刪掉*/
data _null_;
if 0 then set &data nobs=nobs;
call symputx('nobs',nobs);
stop;
run;
%if &nobs=0 %then %do;
proc datasets lib=work nolist;
delete &data;
quit;
%end;
%mend a;
DO之后的操作內容可自定義。
