楼主: clark3721
1148 7

[问答] 问一道adv的题目 [推广有奖]

  • 0关注
  • 0粉丝

大专生

1%

还不是VIP/贵宾

-

威望
0
论坛币
16 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
536 点
帖子
21
精华
0
在线时间
44 小时
注册时间
2008-12-19
最后登录
2016-11-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
%macro one(input);
  %two
  %put the value is &date;
%mend;

     %macro two;
          data _null_;
          call symput (
'date','12SEP2008');
          run;
     %mend;
%let date=31DEC2006;
%one(&date);

&date 为什么是'12SEP2008' 来自global 而不是local symbol table one啊?请高手指教,多谢了。

二维码

扫码加我 拉你入群

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

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

关键词:symbol symput Global Macro value local null

本帖被以下文库推荐

沙发
geniusv 发表于 2013-5-21 20:17:36 |只看作者 |坛友微信交流群
觉得程序写的很乱,但是大概猜得到你的问题,我把help里面的原话复制下来
CALL SYMPUT creates the macro variable in the current symbol table available while the DATA step is executing, provided that symbol table is not empty. If it is empty (contains no local macro variables), usually CALL SYMPUT creates the variable in the closest nonempty symbol table.

使用道具

藤椅
clark3721 发表于 2013-5-21 21:38:58 |只看作者 |坛友微信交流群
geniusv 发表于 2013-5-21 20:17
觉得程序写的很乱,但是大概猜得到你的问题,我把help里面的原话复制下来
CALL SYMPUT creates the macro  ...
这个我也看到了,sually CALL SYMPUT creates the variable in the closest nonempty symbol table
这个例子里data two 是空的 最近的非空table不应该是one么?

使用道具

板凳
boe 发表于 2013-5-21 21:57:28 |只看作者 |坛友微信交流群
先在one里找,没有,再在two里找,找到了12SEP2008,如果还没找到,就在globle symbol table里找,找到31DEC2006。
Gorgeous girl , I love !

使用道具

报纸
clark3721 发表于 2013-5-21 22:02:35 |只看作者 |坛友微信交流群
boe 发表于 2013-5-21 21:57
先在one里找,没有,再在two里找,找到了12SEP2008,如果还没找到,就在globle symbol table里找,找到31DE ...
这不对吧,先在two里找吧,没有在one里找,再没有在global里面找

使用道具

地板
boe 发表于 2013-5-21 22:39:49 |只看作者 |坛友微信交流群
clark3721 发表于 2013-5-21 22:02
这不对吧,先在two里找吧,没有在one里找,再没有在global里面找
嗯,前面表述有点问题。基于问题:
options mprint mlogic;
%let date=31DEC2006;
%put &date;
%one(&date.)
%put &date;
Gorgeous girl , I love !

使用道具

7
geniusv 发表于 2013-5-22 21:08:40 |只看作者 |坛友微信交流群
clark3721 发表于 2013-5-21 21:38
这个我也看到了,sually CALL SYMPUT creates the variable in the closest nonempty symbol table
这个 ...
&date是什么?
one 里面你也没有创建宏变量啊,宏变量表是空的

使用道具

8
clark3721 发表于 2013-5-22 22:35:16 |只看作者 |坛友微信交流群
geniusv 发表于 2013-5-22 21:08
&date是什么?
one 里面你也没有创建宏变量啊,宏变量表是空的
就是&date one里有宏变量 input 我搞清楚了,call symput是把宏变量建立在最近的一个非空symbol table 如果把global的宏改为不是date 宏rwo里的date就建在one里了

使用道具

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

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

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

GMT+8, 2024-5-5 06:32