我试验的最终版本是:
options mprint mlogic symbolgen ;
proc sql;
select name into :vname separated by " "
from sashelp.vcolumn
where libname='xxxx
and memname='xxxx'
and varnum>2;
run;
quit;
%put &vname;
%macro namecreate;
%let onames=&vname;
%global _name_;
%let i=1;
%let _name_=;
%let newname=;
%do%while (&i<=7);
%let j=1;
%do%while (&j<=7);
%if &j>&i %then
%let _name_=&_name_ %scan(&onames,&i)_%scan(&onames,&j);
%let j=%eval(&j+1);
%end;
%let i=%eval(&i+1);
%end;
%mend namecreate ;
%namecreate
;
data xxxx ;
set xxxx ;
array orig{7} &vname;
array comb{21} &_name_;
n=0;
do i=1 to dim(orig)-1;
do j=i+1 to dim(orig);
n+1;
comb[n]=orig[i]*orig[j];
end;
end;
drop i j n;
run;
看各位有没有更好的想法。
|