%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之后的操作內容可自定義。