SAS-脱离宏%DO循环

Lor*_*sum 5 sas sas-macro

我知道存在用于数据步骤DO循环的LEAVE语句以终止当前循环。但是,我找不到相应宏命令的文档。

我已经尝试过了,%LEAVE但是似乎没有定义。

  1. SAS没有宏循环的break语句吗?
  2. 如果不是,除了使用%GOTO或以外,还有其他选择DATA _NULL_吗?

小智 5

如果 %RETURN 语句不是一个选项,我通常使用 %GOTO 来打破宏循环。有时我也会使用 GOTO 来离开数据步循环,因为:最 CPU 高效的编程方式不仅取决于能够离开当前循环,还取决于能够离开当前循环,而且还能够离开围绕它的循环。

在您可以指定要跳出的循环级别之前,如果您想以最高的效率和清晰度进行编程,就无法绕过偶尔的 GOTO。这对于 SAS、C、C++ 和任何其他使用循环结构的语言都是如此。如果没有 GOTO,你将不得不做一些愚蠢的事情,比如重复代码和不止一次检查相同的条件。


Rob*_*dge 2

leave不,不幸的是,在宏语言中没有等效的(从 v9.4 开始)。

您可以在宏语言词典的文档中查看宏语句的完整列表。

作为解决方法,您必须手动触发循环的退出条件。