楼主: 2oo8
16657 17

[问答] 关于宏变量使用%let赋值后,用%put输出结果的疑问 [推广有奖]

11
菜花的秘密 发表于 2016-10-23 10:31:40 |只看作者 |坛友微信交流群
谢谢楼主!

使用道具

12
mklyzl 发表于 2017-2-19 21:43:35 |只看作者 |坛友微信交流群
楼主辛苦,明白了局部与全局宏变量,学到很多!

使用道具

13
mklyzl 发表于 2017-2-19 21:48:34 |只看作者 |坛友微信交流群
吕小布韦 发表于 2016-6-22 17:56
用%put &a不好确定显示的宏变量, 建议macr里外都用 %put _user_, 这样你能搞清楚到底显示的是哪个宏变量的值 ...
这个很好,可以直观看到

使用道具

14
mklyzl 发表于 2017-2-19 21:48:37 |只看作者 |坛友微信交流群
吕小布韦 发表于 2016-6-22 17:56
用%put &a不好确定显示的宏变量, 建议macr里外都用 %put _user_, 这样你能搞清楚到底显示的是哪个宏变量的值 ...
这个很好,可以直观看到

使用道具

15
sherry123 发表于 2017-2-20 06:51:45 |只看作者 |坛友微信交流群
我觉得楼主没想对。
应该是,%let 在macro program 里面的时候,如果local variable a 存在了(例子2,5),%let 就是local的。如果local没有, 就去改变global 的值。也就是说,在macro 里面的let 没准儿,最好加code: %GLOBAL a;


470  %*例子 1 ;
471  %let a=cat;
472  %macro animal;
473  %let a=dog;
474  %put globol: %symglobl(a);
475  %put local: %symlocal(a);
476  %mend;
477  %animal
MLOGIC(ANIMAL):  Beginning execution.
MLOGIC(ANIMAL):  %LET (variable name is A)
MLOGIC(ANIMAL):  %PUT globol: %symglobl(a)
globol: 1
MLOGIC(ANIMAL):  %PUT local: %symlocal(a)
local: 0
MLOGIC(ANIMAL):  Ending execution.
478  %put a is &a;
SYMBOLGEN:  Macro variable A resolves to dog
a is dog
479
480  %*例子2 ;
481  %let a=cat;
482  %macro animal(a=name);
483  %let a=dog;
484  %put globol: %symglobl(a);
485  %put local: %symlocal(a);
486  %mend;
487  %animal(a=dog1);
MLOGIC(ANIMAL):  Beginning execution.
MLOGIC(ANIMAL):  Parameter A has value dog1
MLOGIC(ANIMAL):  %LET (variable name is A)
MLOGIC(ANIMAL):  %PUT globol: %symglobl(a)
globol: 1
MLOGIC(ANIMAL):  %PUT local: %symlocal(a)
local: 1

MLOGIC(ANIMAL):  Ending execution.

使用道具

16
userzht 发表于 2017-8-16 14:23:58 |只看作者 |坛友微信交流群
受教了受教了受教了受教了

使用道具

17
jackhlucy 发表于 2018-3-9 11:24:09 |只看作者 |坛友微信交流群
回答的非常清楚,要弄清楚global macro variable 有没有被替代非常重要。谢谢楼主。

使用道具

18
小洛vy 发表于 2018-5-27 15:28:13 |只看作者 |坛友微信交流群
感谢楼主,非常有帮助

使用道具

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

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

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

GMT+8, 2024-4-27 08:19