【问题标题】:Step size in macro's do loop in sassas中宏的do循环中的步长
【发布时间】:2015-03-26 14:09:38
【问题描述】:

所以我想为我的宏函数运行嵌套循环。 这是我的代码,SAS 似乎不喜欢by -1。无论如何我编码这个让第二个循环减少-1? 在这种情况下,我的yearMix = 1982yearMax = 1994

%Macro theLoop;
    %Do I = &yearMin+1 %to &YearMax-1;
        %Do J = &YearMax-1 %to &I by -1;
            %Meaw;
        %END;
    %END;
%MEND theLoop;
%theLoop;

我收到了这个错误:

错误:在需要数字操作数的 %EVAL 函数或 %IF 条件中找到字符操作数。条件是:&I by -1
错误:%DO J 循环的 %TO 值无效。
错误:宏 THELOOP 将停止执行。

【问题讨论】:

    标签: loops sas sas-macro


    【解决方案1】:

    您在宏%do 循环中使用%by 而不是by 指定增量。更多细节可以在用户指南here中找到。

    在您的代码中,SAS 试图将 &I by -1 评估为数值。

    【讨论】:

      【解决方案2】:
      %let yearMin = 1982;
      %let yearMax = 1994;
      
      %Macro theLoop;
          %Do I = %eval(&yearMin+1) %to %eval(&YearMax-1);
              %Do J = %eval(&YearMax-1) %to &I %by -1;
                  %put &i =  &j = ;
              %END;
          %END;
      %MEND theLoop;
      %theLoop;
      

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多