SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 954|回复: 5
打印 上一主题 下一主题

宏里面的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-12-3 16:03:06 | 只看该作者

宏里面的问题

在宏里面的if then语句前也加上%,我不是很明白这种意思,例如:
%macro create;
data temp;
set impish.employee;
if id>=350;
run;
%mend create;
%macro plot;
proc plot;
plot &x*&y;
run;
%mend plot;
%macro analyze(getdata,x,y);
%if &getdata=yes
%then %create;
%plot;
%mend analyze;
%analyze(yes,educ,salary);
我试了一下去掉if then 前面的%,画出来的图跟去掉前的一样,请教一下,加%的意义何在?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-12-3 20:25:28 | 只看该作者

if then

如果拿掉的话应该会报错的,因为你最后一个宏里面最外面一层没有data步,编译的时候会把if then作为open code而出错。不一样是因为你拿掉以后,宏create不会执行,而只执行宏plot.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-12-3 23:47:00 | 只看该作者

:)

简单地说,加%的关键字是宏编译器识别的语言。
执行步骤先于不加%的普通语句
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-12-6 09:55:13 | 只看该作者

thanks

先谢谢两位的指点!我还想问一句,是不是宏里面的语句都要加上%?我在别人编辑的宏里面看到有些地方好像没加,就是if then前面,而且是可用的,而有些地方全都加上了,比如while do 之类的,我就不解了。不明白应该怎么区别。请指点一下,谢谢:)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-12-6 10:20:12 | 只看该作者

呵呵

本论坛有一个SAS的帮助文件pdf的下载.
几十个PDF文件.
看macro的文件吧几百页看了就明白了.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-12-8 18:54:48 | 只看该作者

to impish

不一定要加%,只要是在data step中,都可以用if then ;do while;如果在宏里不用data step的话,就一定要加%,否则if then 之类的东西会出错。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-6 01:16 , Processed in 0.070690 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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