Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用
-
其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting);
-
K开头的代表是专门针对DBCS(Double Byte Character Set)语言设计的,即适用于类似中文的双字节存储语言
为什么INDEX函数返回的结果是8呢?
因为像INDEX、FIND等这类搜索函数是通过单字节编码进行查找的,有两个过程:
-
首先将所有的字符串转换成编码,每个字节对应一个编码;
-
然后按照编码进行搜索;
1个汉字占2个字节,就会对应2个编码。在某些特殊的情况下,就会出现这种情况:某2个汉字共4个编码,第1个汉字的第2个编码与第2个汉字的第1个编码凑成的编码,正好是要搜索的汉字的编码。虽然该汉字没有在查找的文本中出现,但是其编码出现了。然后就会返回搜索到的编码位置:
三个有关Macro的System Option,在日志中输出更加详细的信息:
-
MPRINT:在日志中输出Macro生成的SAS代码;
-
MLOGIC:在日志中输出Macro的执行逻辑;
-
MSYMBOLGEN:在日志中输出Macro Variables的解析结果;
Delete User-Defined Macro
跟Macro Variable一样,如果不想再用某个Macro Program,也可以将其删除掉。语法非常简单:
%SYSMACDELETE macro_name;