SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 842|回复: 2
打印 上一主题 下一主题

SAS对宏引用符号&的处理机制

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-10-14 14:13:12 | 只看该作者

SAS对宏引用符号&的处理机制

SAS中通过&name引用一个宏变量name的值,但在实际编程中经常碰到诸如&&name&i甚至&&&的情况,初学者很容易被其迷惑,不过在了解SAS宏处理机制后,这个问题不难理解。

例:
宏变量名     宏变量值
i            1
location     beijing
name1        shanghai
name         location

SAS宏处理器在读到SAS代码中的&时,会
1 向后继续读一个字符;
2 如果后面的字符也为&,则宏处理器将读到的两个&&并做一个&看待,然后转到步骤1;
3 否则,将后面连续的非&字符(直到空格或&)做为宏变量名字符串。

对于&&name&i,解析流程如下:
&&name&i
   |
(&&)name(&i)
   |
&name1
   |
shanghai

对于&&&name,解析流程为:
&&&name
   |
(&&)(&name)
   |
&location
   |
beijing

对于&&&&name,解析流程为::
&&&&name
   |
(&&)(&&)name
   |
&&name
   |
(&&)name
   |
&name
   |
alocation
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-10-15 08:31:43 | 只看该作者

Re: SAS对宏引用符号&的处理机制

真是受益匪浅,谢谢shiyiming
若能把资料来源说明就更好了(我好像比较贪),^_^
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2007-10-18 18:49:35 | 只看该作者

Re: SAS对宏引用符号&的处理机制

<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> 清晰易懂.....呵呵......
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-3-3 12:12 , Processed in 0.068576 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表