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,因为您的值不是整数。