SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 600|回复: 1
打印 上一主题 下一主题

宏问题求助

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-1-4 15:01:54 | 只看该作者

宏问题求助

%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啊?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2006-1-4 21:03:39 | 只看该作者

挑刺

很遗憾我这个人喜欢挑别人的刺,不过我个人觉得这样你印象会更深.
[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.知道你想要什么,但由于你表达不明确,所以就不帮你写了.先改自己的描述吧.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-9 13:50 , Processed in 0.067908 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表