全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2180 9
2011-10-24
有人能解释一下原因吗? 谢谢。
%let Mv=shoes;
%macro PRODUCT(Mv=bicycles);
%let Mv=clothes;
%mend;
%PRODUCT(Mv=tents)
%put Mv is &Mv;

*compare this;
%let a=cat;
%macro animal;
%let a=dog;
%mend;
%animal
%put a is &a;



answer:Mv is shoes,a is dog

二维码

扫码加我 拉你入群

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

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

全部回复
2011-10-30 10:34:26
没人知道如何解释吗?
二维码

扫码加我 拉你入群

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

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

2011-11-22 16:55:08
建议仔细看看课本,1:建立在宏定义中的宏变量,SAS先在LOCAL symbol table 查询是否存在宏变量,若存在更新宏变量,若没有,则查询在GLOBAL ..是否存在,若不存在建立 GLOBAL 宏变量。对于在宏定义外调用宏变量,调用的是global 宏变量。2:在宏中定义的参数变量是LOCAL 宏变量。3:楼主看看课本吧,我用手机实在说不清楚啦……ON TUTOR 中有
二维码

扫码加我 拉你入群

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

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

2011-11-22 23:09:44
SAS宏变量遵循两个基本原则:
1 创建:%local与宏参数变量创建于most local symbol table中。其他语句%let, proc sql into, data step call symput等创建于最"local"的非空表中,或说最近的非空symbol table中。都空就用most local symbol table.

2 使用:从最近的symbol table中开始找所需的变量。
二维码

扫码加我 拉你入群

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

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

2011-11-23 12:48:05
%macro PRODUCT(Mv=bicycles);中,MV是关键变量,一定要取bicycles,%let mv=clothes才会执行
此例中%product(MV=tents),不是bicycles,因此,%let mv=clothes不会执行,此时MV=shoes
而%macro animal 中,没有关键变量,因此该宏程序都会执行,也就是%let a=dog;

二维码

扫码加我 拉你入群

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

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

2011-11-23 12:54:24
yanhuaguo 发表于 2011-11-23 12:48
%macro PRODUCT(Mv=bicycles);中,MV是关键变量,一定要取bicycles,%let mv=clothes才会执行
此例中%prod ...
所以,该程序 只要%PRODUCT(Mv=bicycles)

%let Mv=shoes;
%macro PRODUCT(Mv=bicycles);
%let Mv=clothes;
%mend;
%PRODUCT(Mv=bicycles)
%put Mv is &Mv;
则得到的就是clothes

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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