楼主: bzmctj
2832 15

[程序分享] 为什么在宏当中不能传输数据集,而在宏外是可以的? [推广有奖]

11
sushe1527 发表于 2010-5-12 16:30:53
随便找个例子测试下都对,说明你自己的宏有问题呗,死鸭子嘴硬。

%macro t;
ods listing close;%do i=1 %to 2;
proc anova data=sashelp.accpeo ;
class msgtype;
model msgnum=msgtype;
means msgtype/snk;
ods output  MCLines=jieguo&i;
run;
%end;
ods output close;
ods listing;
%mend;
%t;
QQ截图未命名.jpg

12
pobel 在职认证  发表于 2010-5-12 16:31:18
能否把整段代码发上来?

13
bzmctj 发表于 2010-5-12 16:42:02
解决了,只是因为在 ods 前面取秩次的过程后,忘了加一个"run;"。这下记住了。

14
bzmctj 发表于 2010-5-12 16:45:33
解决了,在ods前面的取秩次的过程忘了加run;。低级错误哈,耽误大家时间了

15
bzmctj 发表于 2010-5-12 17:02:48
解决了,犯了一个低级错误,ods前面的过程要加run;耽误大家时间了。

16
jingju11 发表于 2010-5-12 21:25:13
正如你已经认识到的,错误源于没有run语句,故此数据的产生推迟到遭遇proc的时候(等同于run)。我猜想因为这个延迟而导致ods无法找到对象(姑娘上了轿却不知道往哪里抬)。因此如你所做的1.加run; 2. 把ods 语句写在proc anova statement之后。另外,正如所表明的,也是我们所学到的,ods无法结束一个过程和数据步。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 17:26