楼主: Hollycherry
1901 9

比较adv 里的两题 [推广有奖]

  • 1关注
  • 1粉丝

讲师

76%

还不是VIP/贵宾

-

威望
0
论坛币
91 个
通用积分
0.0498
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
84233 点
帖子
99
精华
0
在线时间
1063 小时
注册时间
2011-1-12
最后登录
2024-4-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有人能解释一下原因吗? 谢谢。
%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

二维码

扫码加我 拉你入群

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

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

关键词:Product clothes Compare Animal produc clothes compare animal shoes

沙发
Hollycherry 发表于 2011-10-30 10:34:26 |只看作者 |坛友微信交流群
没人知道如何解释吗?

使用道具

藤椅
905373531 发表于 2011-11-22 16:55:08 |只看作者 |坛友微信交流群
建议仔细看看课本,1:建立在宏定义中的宏变量,SAS先在LOCAL symbol table 查询是否存在宏变量,若存在更新宏变量,若没有,则查询在GLOBAL ..是否存在,若不存在建立 GLOBAL 宏变量。对于在宏定义外调用宏变量,调用的是global 宏变量。2:在宏中定义的参数变量是LOCAL 宏变量。3:楼主看看课本吧,我用手机实在说不清楚啦……ON TUTOR 中有
若有来生,我想做一棵沙漠中的胡杨

使用道具

板凳
ademons 发表于 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中开始找所需的变量。

使用道具

报纸
yanhuaguo 发表于 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;

使用道具

地板
yanhuaguo 发表于 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

已有 1 人评分热心指数 收起 理由
Hollycherry + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

使用道具

7
Hollycherry 发表于 2011-12-6 21:50:52 |只看作者 |坛友微信交流群
多谢yanhuaguo 的回复, 解释的很清楚

使用道具

8
Dao88 发表于 2011-12-6 23:49:36 |只看作者 |坛友微信交流群
ademons 发表于 2011-11-22 23:09
SAS宏变量遵循两个基本原则:
1 创建:%local与宏参数变量创建于most local symbol table中。其他语句%let ...
我倒是觉得这个答案挺全面的
解释也是听清楚的,怎么就没有人给他加分呢

使用道具

9
yanhuaguo 发表于 2011-12-7 11:06:35 |只看作者 |坛友微信交流群
Hollycherry 发表于 2011-12-6 21:50
多谢yanhuaguo 的回复, 解释的很清楚
前两天考adv,还出现了这题

使用道具

10
ywb0314 发表于 2011-12-7 11:32:25 |只看作者 |坛友微信交流群
yanhuaguo 发表于 2011-12-7 11:06
前两天考adv,还出现了这题
我觉得是mv与宏定义中的%macro PRODUCT(Mv=bicycles);变量同名,故在宏中修改的只是此宏中的mv,而不是全局mv,如果在%macro PRODUCT(Mv=bicycles);中mv改为mt,那么宏变量被顺利的修改。

使用道具

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

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

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

GMT+8, 2024-5-1 00:02