1

运行程序时,我在日志中收到警告,但显示警告的行号没有意义。我已经复制了下面的部分日志。它说该操作发生在第 4229 行,但我的代码中只有 1500 行,警告在日志中的第 1895 行。当我的代码中只有 1500 行时,为什么它告诉我警告发生在第 4229 行?

警告:除以零,结果设置为缺失值。

计数:出现次数为 201 操作:/在第 4229 行第 11 列操作数:_TEM1001、_TEM1002 _TEM1001 1 行 201 列(数字)

_TEM1002 1 行 1 列(数字)

     0

语句:在第 4228 行第 245 列分配警告:除以零,结果设置为缺失值。

计数:出现次数为 201 操作:/在第 4229 行第 43 列操作数:_TEM1001、_TEM1003 _TEM1001 1 行 201 列(数字)

_TEM1003 1 行 1 列(数字)

     0
4

1 回答 1

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;
于 2013-11-14T05:57:21.813 回答