1

我有一个 SAS 程序,它遍历某些数据集并生成一堆报告到ODS HTML目的地。

有时,由于我运行这些报告的数据集很小,某些数据PROC REPORT不会生成,因为对于我所使用的这组数据,没有要报告的数据。对于这些情况,我会收到以下消息:

警告:每次观察都缺少 GROUP、ORDER 或 ACROSS 变量。

我想要在 HTML 中显示某种消息,例如“未生成”或其他内容。

PROC REPORT我尝试使用返回/错误代码或上面的警告文本来检测这一点,但错误代码为 0(没问题,真的吗?)并且如果下一个生成 OK ,则警告文本不会重置。

如果它很重要,我将使用带有 CALL EXECUTE 的数据步骤来获取为这些数据集生成的所有 PROC REPORT 代码。

有什么方法可以生成此“未生成”消息或至少捕获这些警告PROC REPORT

4

2 回答 2

1

您可以用一个值替换报告中缺失的观察值。

首先将缺失值重新定义为某个字符。 我认为你只能使用一个字符,不过我可能是错的。

options missing='M';run;

然后确保在您的 PROC REPORT 中使用“缺失”选项。

proc report data=somedata nowd headline missing;
....
run;

基于评论的编辑

为了让评论出现,我看到了一些可能性。

一,扫描数据集并检查缺失值。如果有任何存在,则发出一条消息。

Data _Null_;
  Set dataset;
  file print notitles;
  if obs = . then do;
    put @01 'DID NOT COMPUTE';
    stop;
  end;
run;

二、添加一个带有计算的列:

define xx /computed "(Message)";    
compute xx /char length=16 ;
if obs =. then xx = 'did not compute value in row';

三、使用compute的条件行:

compute after obs;
  if obs = . then do;
     line @1 "DID NOT COMPUTE";
  end;
endcomp;

结束计算;

于 2009-10-07T14:41:22.030 回答
1

见: http ://www2.sas.com/proceedings/sugi26/p095-26.pdf

查找 MTANYOBS 宏和打印“无观察”页面的部分。

于 2010-04-13T16:44:15.460 回答