在宏中调用宏函数的正确语法

Correct syntax for invoking a macro function within a macro

假设我编写了一个 SAS 宏,在该宏中,我希望调用宏函数 TRIM。 我需要写:

%sysfunc(%trim(&text.))

或 %trim(&text.)

或者 %sysfunc(trim(&text.))

正确的语法是什么?

没有宏功能trim。因此,这取决于您是要调用 SAS 提供的自动调用宏 %TRIM() 还是要使用函数 TRIM()。如果是后者,则需要使用 %SYSFUNC(TRIM()).

将其嵌套在宏函数 %SYSFUNC()

关于SYSFUNC与否的基本规则:

如果你是 运行 来自 this page, the Dictionary of SAS Functions and Call Routines 的函数,那么你使用 SYSFUNC

如果它在 this page 或相关页面上("Autocall Macros" 在这里是相关的),那么您使用 % 而不要使用 SYSFUNC.

在某些情况下,%trim 就是其中之一,您可以 两者都做 - 或多或少会得到相同的结果(方法可能略有不同SYSFUNC 和自动调用宏起作用,特别是与宏引用有关)。