data tmp2;
input id var_nm $ value;
cards;
1 var1 2
2 var2 2
2 var1 2
3 var3 2
;
run;
data _null_;
set tmp2 end=final;
call symput(("id"||compress(_n_)),id);
call symput(("var_nm"||compress(_n_)),var_nm);
call symput(("value"||compress(_n_)),value);
if final then call symput("n",_n_);
run;
%macro a;
%do j=1 %to &n;
data tmp3;
set tmp1;
if id=&&id&j then do;
put id;
%put &&id&j &&var_nm&j &&value&j;
&&var_nm&j = &&value&j;
end;
run;
%end;
%mend;
%a;作者: shiyiming 时间: 2007-1-23 10:03 标题: re Modified based on your code:
[code:ebf47]%macro a;
data tmp3;
set tmp1;
%do j=1 %to &n; /* moved line */
if id=&&id&j then do;
put id;
%put &&id&j &&var_nm&j &&value&j;
&&var_nm&j = &&value&j;
end;
%end;
run; /* moved line */
%mend;
[/code:ebf47]