楼主: hqs811
2439 2

[程序分享] 用call execute函数定义macro [推广有奖]

  • 3关注
  • 0粉丝

已卖:172份资源

硕士生

60%

还不是VIP/贵宾

-

威望
0
论坛币
2312 个
通用积分
28.8975
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
1051 点
帖子
76
精华
0
在线时间
212 小时
注册时间
2011-10-11
最后登录
2024-11-6

楼主
hqs811 发表于 2013-9-18 19:29:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如果我想在data set 中做如下动作:
每一个步定义一个macro last,其值为month variable, 具体来说:

month = propcase(strip(scan(name,1,',')));
%let last = month;

由于每一步的month value都不一样,需要用call execute 函数。

按照说明写出的是call execute('%last('||month||')');


但是好像不行,应该如何写呢?



谢谢!


二维码

扫码加我 拉你入群

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

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

关键词:EXECUTE Macro Cute call acr 如何

沙发
tnmyxxzx 发表于 2013-9-18 19:35:40
完全看不懂

藤椅
yongyitian 发表于 2013-9-19 10:36:25
生成 macro variable 可以用 symput function。

data test;
    input month $ year;
datalines;
Jan 2001
Feb 2002
Mar 2003
Apr 2004
May 2005
Jun 2006
Jul 2007
Aug 2008
Sep 2009
Oct 2010
Nov 2012
Dec 2013
; run;

/* call symput() function */
data _null_;
   set test;
   call symput('last'||put(year,4.),  month);
   m = symget('last'||put(year,4.));
   put m=;
run;

/* call execute */
%macro Last_M (month, n);
  %global last_&n last;
  %let last = &month;
  %let last_&n = &month;
  %put AAA  &last;
  %put BBB     &&last_&n;
%mend Last_M;

data _null_;
   set test;
   call execute('%Last_M('||month||', '||_n_||')');  
   call execute(' %let last2='||month||'; %put CCC          &last2;  ');  
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 09:22