我在运行程序时会在日志中收到警告,但是说出警告的行号没有意义。我复制了下面的部分日志。它表示操作发生在第4229行,但我的代码中只有1500行,警告位于日志中的第1895行。当我的代码中只有1500行时,为什么告诉我警告发生在第4229行?
警告:除以零,结果设置为缺失值。
计数:出现次数为201次 操作:/第4229行第11行 操作数:_TEM1001,_TEM1002 _TEM1001 1行201列(数字)
_TEM1002 1行1 col(数字)
0
声明:ASSIGN在第4228行第245行 警告:除以零,结果设置为缺失值。
计数:出现次数为201次 操作:/第4229行第43行 操作数:_TEM1001,_TEM1003 _TEM1001 1行201列(数字)
_TEM1003 1行1 col(数字)
0
答案 0 :(得分:0)
如上所述,宏正在为您生成SAS代码,使提交的SAS行数超过代码中的行数。
启用MPRINT以查看导致问题的代码。从您的错误行,看起来您正在使用IML。这是一个例子:
%macro loop_then_error();
%do i=10 %to 0 %by -1;
proc iml;
x = {1 1};
x = (x || x) / &i;
quit;
%end;
%mend;
options nomprint;
%loop_then_error;
options mprint;
%loop_then_error;