Loops 宏中的步长';sas中的doloop

Loops 宏中的步长';sas中的doloop,loops,sas,sas-macro,Loops,Sas,Sas Macro,所以我想为我的宏函数运行嵌套循环。 这是我的代码,SAS似乎不喜欢-1的by。我是否编写了这样的代码,让第二个循环逐步减少-1? 在这种情况下,myyearMix=1982和yearMax=1994 %Macro theLoop; %Do I = &yearMin+1 %to &YearMax-1; %Do J = &YearMax-1 %to &I by -1; %Meaw; %END; %

所以我想为我的宏函数运行嵌套循环。 这是我的代码,SAS似乎不喜欢-1的
by
。我是否编写了这样的代码,让第二个循环逐步减少-1? 在这种情况下,my
yearMix=1982
yearMax=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将停止执行


您可以在宏
%do
循环中使用
%by
而不是
by
指定增量。有关更多详细信息,请参见《用户指南》

在您的代码中,SAS试图将
&I按-1
作为数值进行求值

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