楼主: liulubucm
1401 4

Referencing Macro Variables Indirectly问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

46%

还不是VIP/贵宾

-

威望
0
论坛币
19 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
793 点
帖子
33
精华
0
在线时间
44 小时
注册时间
2011-12-21
最后登录
2019-1-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
关于                                                                                                                                                [size=16.000000pt]Referencing Macro Variables Indirectly这块是死活弄不明白了。
[size=16.000000pt]例子如下:运行以下程序,不同个数的&,是怎么re-scan神马的得到下面结果的啊???真心是醉了!请问哪位大仙抽空给指点一下!!!
程序:
%let test=one;
%let one=two;
%let two=three;
%let three=four;
%let four=five;
%put 5:&&&&&test;
%put 6:&&&&&&test;
%put 7:&&&&&&&test;
%put 8:&&&&&&&&test;
%put 9:&&&&&&&&&test;
%put 10:&&&&&&&&&&test;

结果:

1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
42         ;
43         %let test=one;
44         %let one=two;
45         %let two=three;
46         %let three=four;
47         %let four=five;
48         %put 5:&&&&&test;
5:two
49         %put 6:&&&&&&test;
6:two
50         %put 7:&&&&&&&test;
7:three
51         %put 8:&&&&&&&&test;
8:one
52         %put 9:&&&&&&&&&test;
9:two
53         %put 10:&&&&&&&&&&test;
10:two
54         
55         ;
56         OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
66         ;

                               
                       
               

二维码

扫码加我 拉你入群

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

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

关键词:referencing indirectly Variables Variable indirect 神马 程序

沙发
liulubucm 发表于 2014-11-13 06:40:33 |只看作者 |坛友微信交流群
补充一下,用symbolgen option也晕晕乎乎不太懂
1          OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
SYMBOLGEN:  Macro variable _SASWSTEMP_ resolves to /folders/myfolders/.images/ab872ba3-2cff-4295-aa65-1f2c0ebb757c
SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
SYMBOLGEN:  Macro variable _SASWSTEMP_ resolves to /folders/myfolders/.images/ab872ba3-2cff-4295-aa65-1f2c0ebb757c
SYMBOLGEN:  Some characters in the above value which were subject to macro quoting have been unquoted for printing.
SYMBOLGEN:  Macro variable GRAPHINIT resolves to  
42         ;
43         %let test=one;
44         %let one=two;
45         %let two=three;
46         %let three=four;
47         %let four=five;
48         %put 5:&&&&&test;
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable TEST resolves to one
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable ONE resolves to two
5:two
49         %put 6:&&&&&&test;
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable TEST resolves to one
SYMBOLGEN:  Macro variable ONE resolves to two
6:two
50         %put 7:&&&&&&&test;
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable TEST resolves to one
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable ONE resolves to two
SYMBOLGEN:  Macro variable TWO resolves to three
7:three
51         %put 8:&&&&&&&&test;
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable TEST resolves to one
8:one
52         %put 9:&&&&&&&&&test;
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable TEST resolves to one
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable ONE resolves to two
9:two
53         %put 10:&&&&&&&&&&test;
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable TEST resolves to one
SYMBOLGEN:  && resolves to &.
SYMBOLGEN:  Macro variable ONE resolves to two
10:two
54         
55         ;
56         OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;
SYMBOLGEN:  Macro variable GRAPHTERM resolves to  
66         ;

使用道具

藤椅
pobel 在职认证  发表于 2014-11-13 09:06:48 |只看作者 |坛友微信交流群
SAS宏处理器在解析带有&的字符串时,大致的规则是这样的:
1. 顺序是从左到右;
2. 两个连续的&&,处理成单个&;
3. &后跟宏变量名字,那就解析出宏变量的值;
4. 回到第1步,直到解析结束。

例如:%put 7:&&&&&&&test;解析过程是:
7:&&&one
7:&two
7:three

使用道具

板凳
liulubucm 发表于 2014-11-14 00:45:52 |只看作者 |坛友微信交流群
pobel 发表于 2014-11-13 09:06
SAS宏处理器在解析带有&的字符串时,大致的规则是这样的:
1. 顺序是从左到右;
2. 两个连续的&&,处理成 ...
哦,如果是这样,是不是可以理解为:
%put 8:&&&&&&&&test;解析过程是:
8:&&&&test
8:&&test
8:&test
8:one
%put 9:&&&&&&&&&test;解析过程是:
9:&&&&one;
9:&&one;
9:&one;
9:two;
%put 10:&&&&&&&&&&test;解析过程是:
10:&&&&&test;
10:&&one;
10:&one;
10:two;
%put 11:&&&&&&&&&&&test;
11:&&&&&one;
11:&&two;
11:  &two;
11:  three;
好像确实是对的啊!
茅塞顿开! 非常感谢!

使用道具

报纸
lqyrendajinji 发表于 2014-11-14 01:02:04 |只看作者 |坛友微信交流群
xuexi xuexi

使用道具

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

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

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

GMT+8, 2024-4-28 23:04