作爲我的一部分,循環需要完成直到滿足條件。我使用的代碼如下: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是正確的。它不僅可以工作,而且對於宏代碼中涉及小數的操作也是必需的。 –