我试了,下面的宏可以解决,20各变量中任何一个值符合条件则该记录保留。
%macro aa(data1=, data2=, dsout=);
proc contents data=&data1 out-=temp;run;
data _null_;
set temp end=eof;
call symput('var'||left(_N_),strip(memname));
if eof then
call symput('nobs',left(_N_));
run;
%put &nobs;
%do i=1 %to &nobs;
proc sql;
select min(&&var&i), max(&&var&i) into :min_&&var&i, :max_&&var&i
from &data1;
quit;
%put &&&&min_&&var&j &&&&max_&&var&j;
%end;
proc sql;
create table &dsout as
select *
from &data2
where
%do j=2 %to &nobs;
(&&var&j<&&&&min_&&var&j or &&var&j>&&&&max_&&var&j) or
%end;
(&var1<&&min_&var1 or &var1>&&max_&var1);
quit;
%mend aa;
%aa(data1=data1, data2=data2, dsout=dsout)
|