【发布时间】:2015-07-01 04:06:00
【问题描述】:
作为我的一部分,循环需要完成,直到满足条件。我使用的代码如下:
%IF &maxvif ge &thresh %THEN
%DO %UNTIL (&maxvif lt &thresh)
....
%END;
但是,它无法正常运行。即使 &maxvif=4.05,它仍然说 (&maxvif lt &thresh) 为假。因此,这个循环永远不会停止。
以下是部分日志,两个宏变量都正确解析,但最终评估出错。
SYMBOLGEN:宏变量 MAXVIF 解析为 4.050694277
SYMBOLGEN:宏变量 THRESH 解析为 10
MLOGIC(BACKWARDVIF): %DO %UNTIL(&maxvif lt &thresh) 条件是 错误的;循环将再次迭代。
【问题讨论】:
-
我相信如果您在宏中比较十进制数,您需要使用 %evalf 或 %sysevalf。
-
谢谢,但它不起作用。实际上,在这个 %if-%then 之前,还有一个 %if &maxvif lt &thresh %then %do。它正确地评估了条件。
-
对不起@LuYang,但 Reeza 是正确的。它不仅有效,而且宏代码中涉及小数的操作也需要它。