SAS 宏中的 %mend 语句
%mend statement in SAS macro
%macro A1(input);
[balala]
%mend A1;
%macro A1(input);
[balala]
%mend;
我刚刚意识到这两种方法都适用于定义宏。这两者有什么区别吗?
实际上,没有区别,您可以使用两者中的任何一个。但作为一种良好的编程习惯,您应该使用第一个,因为它有助于识别宏的结束位置。
如果您使用的是第一个,请记住在 mend
后面加上您用于 macro
的相同名称,否则 SAS
会发出一个 Warning
.
http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000206958.htm
不,绝对没有区别。所有这些在技术上都是相同的。
%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;
%macro A1(input);
[balala]
%mend A1;
%macro A1(input);
[balala]
%mend;
我刚刚意识到这两种方法都适用于定义宏。这两者有什么区别吗?
实际上,没有区别,您可以使用两者中的任何一个。但作为一种良好的编程习惯,您应该使用第一个,因为它有助于识别宏的结束位置。
如果您使用的是第一个,请记住在 mend
后面加上您用于 macro
的相同名称,否则 SAS
会发出一个 Warning
.
http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000206958.htm
不,绝对没有区别。所有这些在技术上都是相同的。
%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;