楼主: huqiong125
8628 5

[原创博文] 宏参数: 调用宏 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

74%

还不是VIP/贵宾

-

威望
0
论坛币
1353 个
通用积分
1.6822
学术水平
10 点
热心指数
11 点
信用等级
8 点
经验
1314 点
帖子
166
精华
0
在线时间
155 小时
注册时间
2009-12-3
最后登录
2022-12-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有一个问题,如有一个宏%macro word……%mend
现在有另外一个宏%macro par(参数)……%mend
我在调用宏%par时,可以用宏%word作为宏参数吗?即这种形式%par(%word)合不合法?

谢谢大家的指点啊!
二维码

扫码加我 拉你入群

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

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

关键词:Macro word CRO acr Mac

回帖推荐

soporaeternus 发表于2楼  查看完整内容

SAS宏的本质是文本替换 只要解析完成后你的代码是正确的,宏可以任意调用 下面一个简单的例子还有,宏还不是"函数".....残念,虽然可以用返回宏变量来弥补.....

本帖被以下文库推荐

沙发
soporaeternus 发表于 2010-3-16 13:21:08 |只看作者 |坛友微信交流群
SAS宏的本质是文本替换
只要解析完成后你的代码是正确的,宏可以任意调用
下面一个简单的例子
  1. %MACRO A;
  2.         1
  3. %MEND A;

  4. %MACRO B(x,y);
  5.         %let z=%eval(&x+&y);
  6.         %put &z;

  7. %MEND B;

  8. %B(13,%A);
复制代码
还有,宏还不是"函数".....残念,虽然可以用返回宏变量来弥补.....
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
huqiong125 + 1 + 1 + 1 热心

总评分: 经验 + 3  论坛币 + 3  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Let them be hard, but never unjust

使用道具

藤椅
huqiong125 发表于 2010-3-16 13:34:05 |只看作者 |坛友微信交流群
明白了,谢谢高人指教!

使用道具

板凳
醉_清风 发表于 2010-3-16 13:43:04 |只看作者 |坛友微信交流群
进来学习了
从来不需要想起 永远也不会忘记

使用道具

报纸
bobguy 发表于 2010-3-17 11:47:25 |只看作者 |坛友微信交流群
huqiong125 发表于 2010-3-16 12:08
我有一个问题,如有一个宏%macro word……%mend
现在有另外一个宏%macro par(参数)……%mend
我在调用宏%par时,可以用宏%word作为宏参数吗?即这种形式%par(%word)合不合法?

谢谢大家的指点啊!
The macro can be very tricky. Using a macro as a parameter even hard. You need to anticipate many  situations before designing your macro.

98   %macro a(dummy);
99      1,2,3,4
100     %mend;
101
102     %macro b(x);
103     data _null_;
104       bx=3;
105       if bx in (&x);
106       put bx=;
107       run;
108       %mend;
109  option mprint;
110  %b(%a );
ERROR: More positional parameters found than defined.

111  %macro a(dummy);
112     1,2,3,4
113     %mend;
114
115     %macro b(x);
116     data _null_;
117       bx=3;
118       if bx in (&x);
119       put bx=;
120       run;
121       %mend;
122  option mprint;
123  %b(%a );
ERROR: More positional parameters found than defined.
124
125  %b(%quote(%a) );
MPRINT(B):   data _null_;
MPRINT(B):   bx=3;
MPRINT(B):   if bx in (1,2,3,4);
MPRINT(B):   put bx=;
MPRINT(B):   run;

bx=3
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
已有 2 人评分经验 学术水平 热心指数 收起 理由
huqiong125 + 1 + 1 厉害
爱萌 + 20 我很赞同

总评分: 经验 + 20  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

地板
platypus 发表于 2014-5-8 15:41:22 |只看作者 |坛友微信交流群
%b(%quote(%a) );
赞,高高手呀,学习了,++++
机会稍纵即逝,且只给有准备的人。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-11-5 23:26