楼主: yy461352
1166 2

求大神解惑关于嵌套宏的问题--SAS ADV 153题 Q2 [推广有奖]

  • 0关注
  • 0粉丝

小学生

21%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
46 点
帖子
4
精华
0
在线时间
3 小时
注册时间
2013-7-26
最后登录
2015-12-26

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
1.png

这里的put难道不是输出局部变量吗?还有macro one的参数input,最后调用变成%one(&date)好奇怪,哪位大神能把整个编译执行环节讲一下,小白感激不尽啊。
二维码

扫码加我 拉你入群

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

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

关键词:Input Macro date 感激不尽 put

沙发
liehuodgq 发表于 2015-12-25 14:45:50 |只看作者 |坛友微信交流群
主要是%two将data _null_中的&date变成了全局变量

使用道具

藤椅
Tigflanker 发表于 2015-12-25 23:07:25 |只看作者 |坛友微信交流群
我来尝试解释下呢,足球直播即将开始。

从结构上说,前面堆了两个宏,用于编译阶段SAS的储存,

后面的%let date是硬货,将date宏变量编入Global表中,date成分已定。

接着ONE宏执行,&date值传给input,这是个假动作

date依然以Global的身份访问ONE宏,但是在%put句之前,它还是遇到了守门员TWO宏

date在TWO宏这么一走坏事了,遇到了改变值的语句symput,date的值也就被改变了
  1. %macro x;
  2. data _null_;
  3.   call symput('a','x');
  4. run;
  5. %mend;

  6. %macro y;
  7. data _null_;
  8.   call symputx('b','y','l');
  9. run;

  10. %put i am local b as &b., differ from another one;
  11. %mend;

  12. %let a = a;
  13. %let b = b;

  14. %x;
  15. %y;

  16. %put i have been changed as &a.;
  17. %put i still keey my value as &b.;
复制代码

使用道具

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

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

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

GMT+8, 2024-4-20 01:24