【发布时间】:2017-01-21 02:21:44
【问题描述】:
我有以下代码:
%macro TEST();
%let prev=3;
%do i=1 %to 4;
%if &i>2 %then %do;
%put prev = 5;
%end;
%else;
%put prev = 0;
%end;
%end;
%mend;
执行时返回:
prev = 0
prev = 0
prev = 5
prev = 0
prev = 5
prev = 0
我的问题是 - if-else 语句在 SAS 宏中如何工作 - 为什么总是执行 else 语句?
【问题讨论】:
-
您的代码无法在我的机器上运行,语法错误。错误:%END 没有匹配的 %DO 语句。该语句将被忽略。请参阅@vknowles 解决方案以获取答案。
-
%ELSE后面是空语句。第二个%PUT不是%ELSE子句的一部分,所以它总是运行。