楼主: harlon1976
2239 2

[问答] 关于SAS/IML中调用过程与宏的问题 [推广有奖]

  • 2关注
  • 27粉丝

版主

院士

54%

还不是VIP/贵宾

-

威望
1
论坛币
33781 个
通用积分
135.1232
学术水平
25 点
热心指数
39 点
信用等级
17 点
经验
59249 点
帖子
1928
精华
0
在线时间
4352 小时
注册时间
2005-8-27
最后登录
2025-12-9

楼主
harlon1976 发表于 2018-8-11 10:25:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我们知道可以在SAS/IML中submit和endsubmit来调用过程步,但如果把这个过程置于宏中,就不能运行了,例如:%macro ss(m);
proc iml;
x=normal(j(&m,1,0));
create a from x [colname={x}];
append from x;
close a;
submit;
data b;
set a;
lx=lag(x);
proc print data=b;
run;
endsubmit;
%mend ss;
%ss(100);
quit;
会显示ERROR 180-322: Statement is not valid or it is used out of proper order.
但如果在宏中不使用参数,例如上述的宏变量m,直接赋值为100,即x=normal(j(100,1,0));则此时可以得到结果,虽然仍然显示上述报错内容。
请问高手,有什么解决办法吗?


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:解决办法 使用参数 不使用 决办法

已有 1 人评分热心指数 收起 理由
eijuhz + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

沙发
whymath 发表于 2018-8-11 13:47:58
不能将 Submit 块直接置于宏中。请先将 Submit 块置于文件中,然后在宏定义中使用 %include 引用该文件。

藤椅
harlon1976 发表于 2018-8-11 15:09:49
感谢您的回复,是否有什么资料推荐看一下!谢谢!

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

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