Macros sas宏比较两个数值时出现错误消息“未关闭%DO语句”
作为练习的一部分,我使用下面的宏比较两个数值Macros sas宏比较两个数值时出现错误消息“未关闭%DO语句”,macros,sas,Macros,Sas,作为练习的一部分,我使用下面的宏比较两个数值 options mlogic mprint; %let price_trd = 93.68; %put &price_trd.; %let max_price = 100.94; %put &max_price.; %macro test; %if &price_trd. < &max_price %then %do; %if %sysevalf(&price_trd. LT &
options mlogic mprint;
%let price_trd = 93.68;
%put &price_trd.;
%let max_price = 100.94;
%put &max_price.;
%macro test;
%if &price_trd. < &max_price %then %do;
%if %sysevalf(&price_trd. LT &max_price) %then %do;
%put Pass HERE;
%end;
%mend;
%test;
我得到以下错误:
有一条未关闭的%DO语句。
宏未编译
请让我知道我们解决这个问题的建议。谢谢。您没有在代码中说明/指示第一个%if和%do条件应该发生什么,也没有关闭%do with%end。试试下面的方法
%macro test;
%if &price_trd. < &max_price %then %do;
%put something HERE;
%end;
%if %sysevalf(&price_trd. > &max_price) %then %do;
%put Pass HERE;
%end;
%mend;
%test;
请注意,您有两个%DO语句,只有一个%END语句。在我看来,您应该删除第一条%if语句。您需要%sysevalf,因为您的值不是整数。