SAS中文论坛

标题: 宏问题求助 [打印本页]

作者: shiyiming    时间: 2006-1-4 15:01
标题: 宏问题求助
%MACRO DSSoutputstep2;
%DO D=1 %To 2;
%let fd=wc000001.id&D.;
%let in="datatem&D.";
data _NULL_;
set &fd;
call symput('scelist',senario_index);
*%let scelist=a1 b1 c1 d1 e1;
run;
%let i=0;
%do %while(%scan(&scelist,&i+1,%str( )) ne %str( ));   
%let i = %eval(&i+1);   
%let sce = %scan(&scelist,&i,%str( ));
%let out="&sce._&D.";

大家帮我看看吧,senario_index是一个宏&fd代表的data的里面一个变量,我是想把这个变量的值一个一个地读出来,然后用作为输出data (就是"out")的名字, 现在我用call symput('scelist',senario_index);这个语句把这些值附到宏变量scelist里面,然后想一个个读scelist,后来发现scelist应该是一个array,就是像*%let scelist=a1 b1 c1 d1 e1;而我的scelist,如果用put输出的话,是

a1

b1

c1

d1

e1

怎么把着这个转换成array啊?
作者: shiyiming    时间: 2006-1-4 21:03
标题: 挑刺
很遗憾我这个人喜欢挑别人的刺,不过我个人觉得这样你印象会更深.
[quote:7a35c]后来发现scelist应该是一个array,就是像*%let scelist=a1 b1 c1 d1 e1;
而我的scelist,如果用put输出的话,是

a1

b1

c1

d1

e1

怎么把着这个转换成array啊? [/quote:7a35c]
1.我怎么看还是觉得下面的那个东西看起来有ARRAY的味道.
为什么你认为*%let scelist=a1 b1 c1 d1 e1这样一个字符串是ARRAY呢?ARRAY总是一个有"多"个储存单位的东西吧
2.你的代码不能生成你最后输出的多行的字符串,只是每次输出的累加.
3.知道你想要什么,但由于你表达不明确,所以就不帮你写了.先改自己的描述吧.




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