SAS中文论坛

标题: SAS对宏引用符号&的处理机制 [打印本页]

作者: shiyiming    时间: 2007-10-14 14:13
标题: 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
作者: shiyiming    时间: 2007-10-15 08:31
标题: Re: SAS对宏引用符号&的处理机制
真是受益匪浅,谢谢shiyiming
若能把资料来源说明就更好了(我好像比较贪),^_^
作者: shiyiming    时间: 2007-10-18 18:49
标题: Re: SAS对宏引用符号&的处理机制
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> 清晰易懂.....呵呵......




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2