SAS中文论坛
标题:
宏里面的问题
[打印本页]
作者:
shiyiming
时间:
2004-12-3 16:03
标题:
宏里面的问题
在宏里面的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 前面的%,画出来的图跟去掉前的一样,请教一下,加%的意义何在?
作者:
shiyiming
时间:
2004-12-3 20:25
标题:
if then
如果拿掉的话应该会报错的,因为你最后一个宏里面最外面一层没有data步,编译的时候会把if then作为open code而出错。不一样是因为你拿掉以后,宏create不会执行,而只执行宏plot.
作者:
shiyiming
时间:
2004-12-3 23:47
标题:
:)
简单地说,加%的关键字是宏编译器识别的语言。
执行步骤先于不加%的普通语句
作者:
shiyiming
时间:
2004-12-6 09:55
标题:
thanks
先谢谢两位的指点!我还想问一句,是不是宏里面的语句都要加上%?我在别人编辑的宏里面看到有些地方好像没加,就是if then前面,而且是可用的,而有些地方全都加上了,比如while do 之类的,我就不解了。不明白应该怎么区别。请指点一下,谢谢:)
作者:
shiyiming
时间:
2004-12-6 10:20
标题:
呵呵
本论坛有一个SAS的帮助文件pdf的下载.
几十个PDF文件.
看macro的文件吧几百页看了就明白了.
作者:
shiyiming
时间:
2004-12-8 18:54
标题:
to impish
不一定要加%,只要是在data step中,都可以用if then ;do while;如果在宏里不用data step的话,就一定要加%,否则if then 之类的东西会出错。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2