SAS中文论坛

标题: 帮忙看一下错在哪里? [打印本页]

作者: shiyiming    时间: 2012-8-29 04:46
标题: 帮忙看一下错在哪里?
data a;
input x$ @@;
cards;
a aa a a bb bb bb ccc cc cc cc
;
run;
proc sql noprint;
select count(distinct x) into :n from a;
select distinct x into :vx1-:vx%sysfunc(strip(&n.)) from a;
quit;
%put n=&n.  vx=&&vx%sysfunc(strip(&n.)) ;

结果如下:
n=       5     vx=&vx5
我发现vx=&vx5没有被解释,这是为何,如何改?
谢谢!
作者: shiyiming    时间: 2012-8-29 09:48
标题: Re: 帮忙看一下错在哪里?
上面sql程序没有问题,已经生成宏变量vx1-vx5,只需把%put变成:
%let m=%sysfunc(strip(&n.));
%put vx=&&vx&m ;
就可以看到你想要的东西了。
这里我不是很清楚,貌似%sysfunc是在解析符&之后运行(因为code顺序?),这样SAS就无法识别vx这个宏变量了。




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2