%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之后的操作内容可自定义。
原文:https://www.cnblogs.com/jiulaosan/p/10729506.html