楼主: 邢不行
4960 2

[原创博文] data步中调用宏,关于call execute()参数的问题 [推广有奖]

已卖:1906份资源

院士

10%

还不是VIP/贵宾

-

威望
1
论坛币
26755 个
通用积分
155.8944
学术水平
489 点
热心指数
509 点
信用等级
460 点
经验
53138 点
帖子
585
精华
26
在线时间
1198 小时
注册时间
2010-4-30
最后登录
2025-12-29

楼主
邢不行 在职认证  发表于 2011-3-28 08:36:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
是用call execute语句在data步中调用宏,call execute()语句括号里面的参数一直写不对。
问题一:
跟crackman读sas(5)里面有一个例子:
data _null_;
    do i=1 to 3;
         call execute(cats('%inner(0,1,',put(i,best.),')'));    %* %inner(0,1,i);*/
    end;
run;


请问call execute(cats('%inner(0,1,',put(i,best.),')'));这句话中的',put(i,best.),',也即宏%inner()的第三个参数,为什么要加两个逗号?也即把',put(i,best.),'改成这样子'put(i,best.)'为什么就不行了?


问题二:
现在有一宏,%cov(name),name是形参。
想在data步中调用该宏,已经赋值好宏变量n1。
请问该如何调用?
我尝试了如下的方式是不行的:
call execute('%cov('||n1||')');
call execute('%cov('n1')');
call execute('%cov('put(n1,best.)')');
call execute('%cov(',put(n1,best.),')');


还请各位大侠指导!


















1.

二维码

扫码加我 拉你入群

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

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

关键词:EXECUTE data步 call Cute Data inner null

沙发
horace_chen 发表于 2011-3-28 10:10:19
问题一:
call execute(cats('%inner(0,1,',put(i,best.),')'));
call execute的参数是cats('%inner(0,1,',put(i,best.),')')生成的字符
而cats函数合并的是三个字符串
(1)'%inner(0,1,'  
(2)put(i,best)
(3)')'
三个参数中间用“,”隔开

问题二:
试试 call execute('%cov('||&n1||')');
或 call execute(cats('%cov(' ,&n1,')'))

藤椅
邢不行 在职认证  发表于 2011-3-28 12:17:17
2# horace_chen 非常感谢!!
不管去哪里 只要在路上

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

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