这个语句内容的介绍,可以在以下书籍中查询:
1、SAS? 9.4 Functions and CALL Routines Reference
2、SAS? 9.4 Macro Language Reference
先直接介绍文档里的三个例子的应用:
Example 1: Executing a Macro Conditionally
这里可以先看Data步的操作,输出DATEDUE在30天之前的记录,并计数加1。Data操作之后,Late数据集中只包含30天之前的数据以及计数。当数据处理到末尾(if final)以及计数n不为0(if n)时, 执行这个宏程序%overdue.
Example 2: Passing DATA Step Values into a Parameter List
数据集Dates中存储了三个日期;数据集Reptdata中存储了日期变量、var1、var2;宏程序rept的作用是输出特定日期下的某变量横向条形图的频数统计。
数据集Dates中有三条记录,所以最后Call Execute语句会执行三次,变量值date会依次传送到宏程序%rept中,宏程序另外两个参数是固定值,三次运行值都相同。语句中的“,”也可以写在后面两个参数一块,效果相同。
Example 3: How to Create a Macro Using CALL EXECUTE
这里的需要注意的是,在data步运行时%nrstr会消除“%”的解析的作用,也就是在Data运行提交后再执行宏定义语句。
也可以去掉%nrstr,不影响结果。只不过在data步运行中,就已经运行宏定义了。可以参考下两个程序的日志情况进行理解。