【问题标题】:%mend statement in SAS macroSAS 宏中的 %mend 语句
【发布时间】:2015-05-13 08:03:13
【问题描述】:
%macro A1(input);
[balala]
%mend A1;


%macro A1(input);
[balala]
%mend;

我刚刚意识到两种方法都可以定义宏。这两者有什么区别吗?

【问题讨论】:

    标签: macros sas


    【解决方案1】:

    不,绝对没有区别。所有这些在技术上都是一样的。

    %mend;
    %mend <macroname>;
    %mend <something else>;
    

    将宏名称放在那里的可能性只是为了清楚起见。

    当您有长宏或在其他宏中定义宏时,这可能很有用(在我看来,这几乎总是不好的做法)。

    例如,这些完全相同,但当然第一个非常令人困惑,但 SAS 正确警告您可能需要修复一些问题:

    1)

    %macro OuterMacro;
        %macro submacro;
            %put 1;
        %mend OuterMacro;
    %mend submacro;
    

    2)

    %macro OuterMacro;
        %macro submacro;
            %put 1;
        %mend submacro;
    %mend OuterMacro;
    

    http://support.sas.com/documentation/cdl/en/mcrolref/68140/HTML/default/viewer.htm#n01mgvwt7f9smen159ad334ts4ha.htm

    【讨论】:

      【解决方案2】:

      实际上,没有区别,您可以使用两者中的任何一个。但作为一种良好的编程习惯,您应该使用第一个,因为它有助于确定宏的结束位置。

      如果您使用的是第一个,请记住在mend 后面加上与macro 相同的名称,否则SAS 将发出Warning。

      http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000206958.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        • 2021-03-21
        • 1970-01-01
        相关资源
        最近更新 更多