|
楼主

楼主 |
发表于 2011-12-6 17:58:28
|
只看该作者
请高手看看宏程序里面的条件语句为什么不能跳转?
%macro lab1;
%if %sysfunc(exist(labo)) ne 0 %then %do;
proc datasets lib=work nolist;
delete labo;
quit;
%end;
%do i= 1 %to 9;
data labout;
set dog;
where zc10&i. in(2,3) or zc70&i. in(2,3) or zc90&i. in(2,3) or zc130&i. in(2,3) or zch&i. in(2,3) ;
typevar=lab10&i.;
if vtype(typevar)="N" then do;
lab1 =put(lab10&i.,best.);
lab7 =put(lab70&i.,best.);
lab9 =put(lab90&i.,best.);
lab13 =put(lab130&i.,best.);
labh =put(labh&i.,best.);
end;
else do;
lab1 =lab10&i.;
lab7 =lab70&i.;
lab9 =lab90&i.;
lab13 =lab130&i.;
labh =labh&i.;
end;
rename zc10&i.=zc1 zc70&i.=zc7 zc90&i.=zc9 zc130&i.=zc13 zch&i.=zch;
name=&i.;
run;
data laboo;
length lab1 lab7 lab9 lab13 labh $60.;
set labout;
keep no group treat_ name lab1 zc1 lab7 zc7 lab9 zc9 lab13 zc13 labh zch;
run;
proc append base=labo data=laboo force;run;
%end;
%mend;
option mprint ;
%lab1
如果typevar是字符型的话,应该运行这里:
lab1 =lab10&i.;
lab7 =lab70&i.;
lab9 =lab90&i.;
lab13 =lab130&i.;
labh =labh&i.;
但是事实上没有。。。所以就出现错误 |
|