SAS 判斷數據集是否為空,並批量操作非空/空數據集


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM