SAS宏中的特殊字符列表

时间:2018-04-12 13:48:44

标签: sas sas-macro

我想知道在SAS宏中哪些字符可以安全使用。

所以我的意思是这里的特殊字符是任何在任何上下文中都可以在SAS中具有特定角色的角色(或一组角色)。我对关键字(由a-z 1-9字符组成)不感兴趣。

例如= ^= ; % , @是特殊的(不确定@是否实际用于SAS,但它已用于doc,因此仍被视为对所有用途都安全的参数' )。

$ ! ~ § { } °等等呢?

这应包括PROC SQL中特殊的字符。

我想在我的代码中使用其中一些字符并赋予它们特殊含义,但我不要与任何现有用法冲突(我对{{1特别感兴趣) }})。

4 个答案:

答案 0 :(得分:3)

一般性参考:

我认为标准英语键盘上的绝大多数字符都是在SAS语言的某处或其他地方使用。

解决您的示例:

  • $用于格式名称,put / input语句,正则表达式定义......
  • !'或某些环境中的“运营商”
  • ~'不是'运营商
  • §据我所知不使用
  • {}可用于数据步骤数组引用&定义
  • °据我所知不使用

以上所有人都没有在宏观背景下做任何特别的事情,因为汤姆已经在答案中明确表示了这一点。

答案 1 :(得分:2)

也许SAS Operators in Expressions可以帮助你〜, 看着桌子 比较运算符
逻辑运算符

答案 2 :(得分:1)

宏代码中的主要触发器是&%,它们用于触发宏变量引用和宏语句,函数或宏调用。

;(分号)用于宏代码(如SAS代码中)以表示语句的结束。

要将参数传递给宏参数,您首先需要担心,(逗号)。但您也希望避免不平衡()。在按位置传递参数值时,应避免使用=

您可以通过在值周围添加引号或额外()来保护它们。但这些角色成为传递价值的一部分。您可以使用宏引用来保护它们。

 %mymac(parm1='1,200',parm2=(1,200),parm3=%str(1,200),parm4="a(b")

只要您的呼叫使用命名参数,就可以在不引用的情况下包含等号。

 %mymac(parm1=a=b)

答案 3 :(得分:0)

除了之前的答案;

  • %也用于在程序中包含文件。 %include

  • 使用特殊字符可能会导致代码因报价不平衡而陷入循环。 SAS Note

如果碰到这个,只需提交下面的魔术字符串:

*';*";*/;run;