data a;
input x y;
cards;
9.56 10.15
4.57 8.98
;
run;
我想用下面这个宏来实现
data b;
set a;
v1=scan(x,1);
v2=scan(x,2);
p1=scan(y,1);
p2=scan(y,2);
run;
的结果。但是我用如下的宏
%macro tt();
%let dsid=%sysfunc(open(a));
%if &dsid gt 0 %then %do;
%let nobs=%sysfunc(attrn(&dsid,nobs));
%do i=1 %to &nobs;
%let rc=%sysfunc(fetchobs(&dsid,&i));
%let varnume=%sysfunc(varnum(&dsid,x));
%let variable=%sysfunc(getvarn(&dsid,&varnume));
%let varnume1=%sysfunc(varnum(&dsid,y));
%let variable1=%sysfunc(getvarn(&dsid,&varnume1));
data b;
set a;
v1=scan(&variable,1);
v2=scan(&variable,2);
p1=scan(&variable1,1);
p2=scan(&variable1,2);
run;
%end;
%let dsid=%sysfunc(close(&dsid));
%end;
%mend tt;
%tt;
但是我实现的结果却是每列值都是最后一行观测值计算得到的值,请问是怎么回事,应该怎么修改才行?