2013-11-13 2 views
0

Я получаю предупреждение в журнале при запуске программы, но номер строки, где говорится о возникновении предупреждения, не имеет смысла. Я скопировал часть журнала ниже. В нем говорится, что операция выполняется на линии 4229, но в моем коде всего 1500 строк, а предупреждение - в строке 1895 в журнале. Почему это говорит мне, что предупреждение происходит на линии 4229, когда в моем коде только 1500 строк?Номер строки журнала руководства предприятия SAS не имеет смысла

ПРЕДУПРЕЖДЕНИЕ: Деление на ноль, результат не установлен.

Количество: число вхождений составляет 201 операции:/в строке 4229 колонка 11 операнды: _TEM1001, _TEM1002 _TEM1001 1 строка 201 смещ_по_столбцам (числовое)

_TEM1002 1 строка 1 колонка (числовое)

 0 

заявление: ASSIGN по линии 4228 колонки 245 ВНИМАНИЕ: деление на ноль, результирующий набор отсутствует значение.

Количество: число вхождений составляют 201 операции:/в строке 4229 колонок 43 операндов: _TEM1001, _TEM1003 _TEM1001 1 строка 201 смещ_по_столбцам (числовая)

_TEM1003 1 строка 1 колонок (числовой)

 0 
+0

Вы используете какие-либо макросы? – Santhosh

+1

Если вы очистите журнал, номера строк журнала не будут сброшены. – scott

+0

Да, это в макросе – user2989290

ответ

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; 
Смежные вопросы