宏中的步长在sas中循环

时间:2015-03-26 14:09:38

标签: loops sas sas-macro

所以我想为我的宏函数运行嵌套循环。 这是我的代码,看起来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将停止执行。

2 个答案:

答案 0 :(得分:5)

您使用%do而不是%by在宏by循环中指定增量。更多详细信息,请参阅用户指南here

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

答案 1 :(得分:0)

%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;