SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

求助:SAS 宏函数的返回值

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2008-11-13 14:39:00 | 只看该作者

Re: 求助:SAS 宏函数的返回值

那我上面的这个程序为什么无法得到CITY的返回值呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2008-11-13 14:53:49 | 只看该作者

Re: 求助:SAS 宏函数的返回值

你这个程序宏定义错了,index只有在data步中使用的,
应该改成宏函数%index,
%if %index(&add,ab)>0 %then %let &city=1;

另外,你的data步也不对,
首先在宏会在data步执行前被执行,宏是不会随着data步的语句执行的,
其次add是数据集变量,不能直接用在%a中调用的,我前面已经说了,如果非要在%a中使用add,那么应该用call symput把add转成宏变量。
但我认为,你这个问题的解决思路不正确了,这个问题不应该这么解决,建议直接使用data步:
data b;
set c;
if index(add,'ab') > 0 then city=1
else if index(add,'bc') > 0 then city=2;
....
else city =n;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2008-11-13 15:22:02 | 只看该作者

Re: 求助:SAS 宏函数的返回值

我再好好想想
谢谢了
如有不懂的地方,我再向你请教 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 05:14 , Processed in 0.069364 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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