Macros 虚拟宏在SAS中的意义

Macros 虚拟宏在SAS中的意义,macros,sas,Macros,Sas,我从一开始就继承了一些宏,并确定了以下行: %macro dummy; %mend dummy; 这个宏在任何地方都没有特殊的调用,我不理解它的含义…这个宏没有“意义”。它只是一个不包含任何代码的宏声明。因此,运行它时不会发生任何事情 但是,可能是试图清除以前定义的名为dummy的宏,以避免意外执行此宏 清除(或在本例中删除)宏的更正确方法是使用(在SAS 9.3及更高版本中适用): 这样,如果要执行名为dummy的宏,您将得到一个错误,即该宏不存在。如果像示例中那样清空宏的内容,则不会出现此

我从一开始就继承了一些宏,并确定了以下行:

%macro dummy; %mend dummy;
这个宏在任何地方都没有特殊的调用,我不理解它的含义…

这个宏没有“意义”。它只是一个不包含任何代码的宏声明。因此,运行它时不会发生任何事情

但是,可能是试图清除以前定义的名为
dummy
的宏,以避免意外执行此宏

清除(或在本例中删除)宏的更正确方法是使用(在SAS 9.3及更高版本中适用):

这样,如果要执行名为
dummy
的宏,您将得到一个错误,即该宏不存在。如果像示例中那样清空宏的内容,则不会出现此错误。

宏没有“意义”。它只是一个不包含任何代码的宏声明。因此,运行它时不会发生任何事情

但是,可能是试图清除以前定义的名为
dummy
的宏,以避免意外执行此宏

清除(或在本例中删除)宏的更正确方法是使用(在SAS 9.3及更高版本中适用):


这样,如果要执行名为
dummy
的宏,您将得到一个错误,即该宏不存在。如果您只是像示例中那样清空宏的内容,则不会出现此错误。

如果代码打算在《企业指南》中使用,并且伪宏定义位于另一个(真实)宏定义中,则可能是一种旨在强制语法高亮显示的黑客行为

例如:

%macro real;
    /* Some sas code but without syntax highlighting */
%mend real;
但是:


似乎是
%mend
重新启用了突出显示。

如果代码打算在企业指南中使用,并且伪宏定义位于另一个(真实)宏定义中,则可能是一种旨在强制语法突出显示的黑客行为

例如:

%macro real;
    /* Some sas code but without syntax highlighting */
%mend real;
但是:


似乎是
%mend
重新启用了高亮显示。

如果@griboedov正在使用SAS 9.3,并且
%SYSMACDELETE
已经在代码中的某个地方使用了,那么伪宏可能是一种规避,详见@soren的分析,但建议从任何生产代码中删除此空宏定义。所提到的所有可能的理由都是胡说八道。应该没有必要。生产代码中甚至不需要%SYSMACDELETE dummy。如果@griboedov正在使用SAS 9.3,并且代码中的某个地方已经使用了
%SYSMACDELETE
,则伪宏可能是一种规避措施,如@soren的分析所述,但建议从任何生产代码中删除此空宏定义。所提到的所有可能的理由都是胡说八道。应该没有必要。生产代码中甚至不需要%SYSMACDELETE dummy。
%macro real;
    /* Some sas code but without sintax highlighting */ 
    %macro dummy; %mend dummy;
    /* Some sas code with syntax highlighting */
%mend real;