所以我想为我的宏函数运行嵌套循环。
这是我的代码,看起来SAS并不像by -1
。无论如何,我编码这个让第二个循环减少步骤-1?
在这种情况下,我的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将停止执行。
答案 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;