楼主: harlon1976
1790 2

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

  • 2关注
  • 27粉丝

版主

院士

49%

还不是VIP/贵宾

-

威望
1
论坛币
37292 个
通用积分
100.0959
学术水平
25 点
热心指数
39 点
信用等级
17 点
经验
58976 点
帖子
1898
精华
0
在线时间
4212 小时
注册时间
2005-8-27
最后登录
2024-4-25

+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
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 08:54