SAS:为什么宏中的 IN 运算符不是默认值?

SAS: Why is the IN operator within a macro not a default?

来自 Sample 35591

The IN operator can be used in the %IF statement only when the MINOPERATOR option is set in the %MACRO statement or as a SAS® system option.

需要单独的宏处理选项似乎是不必要的复杂化。当然,由于宏处理的性质,宏 IN 语法和它可以处理的内容肯定与 DATA 步 IN 不同。但是实现迫使程序员跟踪两个不同的 IN,尽管它们在逻辑上是相同的。

  1. 它们在逻辑上不相同吗?
  2. 宏 IN 需要一个单独的选项是否意味着提醒程序员与 DATA 步 IN 的区别?
  3. 或者,是否存在需要以这种方式实现宏 IN 的情况或向后兼容性问题?

MINOPERATOR 的文档。

注释说这仅适用于 SAS 9.2 及更高版本。以前,没有用于 MACRO 处理的 IN 语句。宏是字符串,"IN" 是有效字符串。需要该选项来告诉宏处理器 IN 现在是关键字。如果他们只是将其设为关键字,则可能包含 "IN" 的遗留代码将被破坏。

所以#3.