Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 打印警告以记录if-then-else语句sas_If Statement_Logging_Sas_Warnings - Fatal编程技术网

If statement 打印警告以记录if-then-else语句sas

If statement 打印警告以记录if-then-else语句sas,if-statement,logging,sas,warnings,If Statement,Logging,Sas,Warnings,我正在写一个if/then/else语句,其中最后的else是: if variable2 = 'foo' then variable = 'bar' else variable = . 我是否可以将自定义“警告”打印到包含变量2名称列表或数组的日志文件中 variable = . 可以使用PUTLOG语句将消息写入日志 if variable2 = 'foo' then variable = 'bar' ; else do; variable = . ; putlog "WA

我正在写一个if/then/else语句,其中最后的else是:

if variable2 = 'foo' then variable = 'bar' 
else variable = .
我是否可以将自定义“警告”打印到包含变量2名称列表或数组的日志文件中

variable = .

可以使用PUTLOG语句将消息写入日志

if variable2 = 'foo' then variable = 'bar' ;
else do;
   variable = . ;
   putlog "WARNING: bad value " variable2 = ;
end ;

可以使用PUTLOG语句将消息写入日志

if variable2 = 'foo' then variable = 'bar' ;
else do;
   variable = . ;
   putlog "WARNING: bad value " variable2 = ;
end ;

看起来OP想要一条包含所有相关变量名的消息。有多种方法可以做到这一点。。。最简单的方法是在此步骤完成后对输出数据集执行快速PROC SQL:

proc sql noprint;
  select distinct variable2 into :bad_vals separated by ' '
    from my_data
    where variable = .
  ;
quit;

%put WARNING: Bad values of VARIABLE: &bad_vals;
这对于相对较小的数据集来说是很好的;对于大数据集,您可以在初始数据步骤运行时维护相关值的列表,并在数据步骤结束时只打印一次消息,从而避免额外的数据传递

data mydata;
   length bad_vals $ 10000;
   drop bad_vals;
   set in end=end;
   ...blah...
   ...else do;
     variable = .;
     bad_vals = strip(bad_vals) || ' ' || variable2;
   end;
   if end then do;
     putlog 'WARNING: Bad values of VARIABLE:' bad_vals;
   end;
run;

或者您可以使用宏变量而不是数据步骤变量bad\u VAL等。

看起来OP需要一条包含所有相关变量名称的消息。有多种方法可以做到这一点。。。最简单的方法是在此步骤完成后对输出数据集执行快速PROC SQL:

proc sql noprint;
  select distinct variable2 into :bad_vals separated by ' '
    from my_data
    where variable = .
  ;
quit;

%put WARNING: Bad values of VARIABLE: &bad_vals;
这对于相对较小的数据集来说是很好的;对于大数据集,您可以在初始数据步骤运行时维护相关值的列表,并在数据步骤结束时只打印一次消息,从而避免额外的数据传递

data mydata;
   length bad_vals $ 10000;
   drop bad_vals;
   set in end=end;
   ...blah...
   ...else do;
     variable = .;
     bad_vals = strip(bad_vals) || ' ' || variable2;
   end;
   if end then do;
     putlog 'WARNING: Bad values of VARIABLE:' bad_vals;
   end;
run;

或者,您可以使用宏变量而不是数据步骤变量bad\u vals等。

为了确保它进入日志而不是fileref,最好是显式的,并使用putlog语句谢谢@Allan。旧习难改。更新。为了确保它进入日志而不是fileref,最好是显式的,并使用putlog语句谢谢@Allan。旧习难改。更新。