作为我的一部分,循环需要完成直到满足条件。我使用的代码如下:SAS%do%直到循环
%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 &脱粒)条件是 FALSE ;循环将再次迭代。
我相信,如果你是在你需要使用%evalf或%sysevalf宏比较小数。 – Reeza
谢谢,但它不起作用。实际上,在这个%if-%之前,还有另一个%,如果&maxvif lt&thresh%then%do。它正确地评估了这种情况。 –
对不起@LuYang,但Reeza是正确的。它不仅可以工作,而且对于宏代码中涉及小数的操作也是必需的。 –