楼主: jscsiwei91
4223 2

global and local macro 求解答 [推广有奖]

  • 0关注
  • 0粉丝

初中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
80 点
帖子
13
精华
0
在线时间
19 小时
注册时间
2013-7-16
最后登录
2024-10-24

楼主
jscsiwei91 发表于 2014-7-7 09:20:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
exmaple 1:

%let Mv=shoes;
%macro Product(Mv=bike);
   %let Mv=clothes;
%mend;

%Product(Mv=tents)
%put Mv is &Mv;


Example 2:
%let a=cat;
%macro animal;
   %let a =dog;
%mend;
%animal
%put a is &a

第一题应该是输出 Mv is shoes.
第二题输出         a is dog.
我想知道为什么第二题的答案不是 a is cat.

thx a lot.

二维码

扫码加我 拉你入群

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

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

关键词:Global Macro Local lobal 求解答 clothes local shoes

沙发
pobel 在职认证  发表于 2014-7-7 09:42:54
这是因为SAS在为宏变量赋值时,首先要查看该宏变量是不是已经存在。这个查找的顺序是从local symbol table开始,一直到外层的global symbol table。 如果SAS找到了要赋值的宏变量,就会将该宏变量的值更新。

第二题中,宏变量a只存在于open symbol table中,因此宏里的%LET语句会修改a的值。

https://bbs.pinggu.org/thread-2845461-1-1.html

藤椅
jscsiwei91 发表于 2014-7-7 10:06:57
pobel 发表于 2014-7-7 09:42
这是因为SAS在为宏变量赋值时,首先要查看该宏变量是不是已经存在。这个查找的顺序是从local symbol table开 ...
thx a lot

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

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