全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1632 7
2011-12-06
%let Mv=shoes;
%macro PRODUCT(Mv=bicycles);
%let Mv=clothes;
%mend;
%PRODUCT(Mv=tents)
%put Mv is &Mv;
结果是 Mv is shoes;

%let Mv=shoes;
%macro PRODUCT(Mva=bicycles);
%let Mv=clothes;
%put aa;
%mend;
%PRODUCT(Mva=tents)
%put Mv is &Mv;
结果是Mv is clothes;

求结果分析,为何
二维码

扫码加我 拉你入群

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

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

全部回复
2011-12-6 19:41:17
看看
二维码

扫码加我 拉你入群

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

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

2011-12-7 09:51:51
You are confused by a macro variable scope.

A local macro variable lives within its scope. See comments below.

18   %let Mv=shoes;  ***Mv has a global scope;
19   %macro PRODUCT(Mv=bicycles);***Mv has a local scope;
20   %put Mv is &Mv;
21   %mend;
22
23   %PRODUCT(Mv=tents)
Mv is tents
24   %PRODUCT(Mv=clothes)
Mv is clothes
25   %PRODUCT(Mv=cars)
Mv is cars
26
27   %put Mv is &Mv;
Mv is shoes
二维码

扫码加我 拉你入群

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

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

2011-12-7 10:00:05
很明显,你把局部宏变量宏程序中的宏变量进行了混淆,建议你将宏变理的运作原理再重新看一遍ADVANCE那本书中讲得很清楚
二维码

扫码加我 拉你入群

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

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

2013-1-9 14:40:01
因为开头定义了全局的宏变量Mv, 因此在%product里再次定义mv时, 将全局mv的值修改为clothes, 打印出的结果为clothes. 在%product中加%local mv; 全局mv的值仍为shoes.
%let Mv=shoes;
%macro PRODUCT;
%local mv;
%let Mv=clothes;
%mend;
%PRODUCT;
%put Mv is &Mv;
二维码

扫码加我 拉你入群

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

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

2013-1-9 15:42:18

RE: 宏调用结果分析

echotianxia 发表于 2011-12-7 10:00
很明显,你把局部宏变量宏程序中的宏变量进行了混淆,建议你将宏变理的运作原理再重新看一遍ADVANCE那本书中 ...
请问ADWANCE 是哪一本,全名是什么?谢谢。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群