Try using this code
data test;
input a1 a2 a3;
datalines;
1 2 3
4 5 6
7 8 9
;
run;
data var_names;
input var1 $2. var2 $3.;
datalines;
b1 c1
b2 c2
b3 c3
;
run;
data contents;
ds=open("test",'i');
num=attrn(ds,'nvars');
do v=1 to num;
vn=varname(ds,v);
output;
end;
run;
proc sql;
select count(distinct var1) into : count from var_names;
%let count=&count;
select distinct var2 into : newvar_1-: newvar_&count from var_names;
quit;
proc sql;
select count(distinct v) into : count1 from contents;
%let count1=&count1;
select distinct vn into : oldvar_1-:oldvar_&count1 from contents;
quit;
%put &oldvar_1 &oldvar_2 &oldvar_3;
%put &newvar_1 &newvar_2 &newvar_3;
data want1;
set test;
run;
%macro rename;
%do i=1 %to &count1.;
data want1;
set want1;
rename &&oldvar_&i..=&&newvar_&i..;
run;
%end;
%mend;
%rename;
... View more