【问题标题】:Limiting number of observations in SAS ODS output限制 SAS ODS 输出中的观察次数
【发布时间】:2015-08-14 20:09:31
【问题描述】:

我正在尝试限制 ODS 输出表中包含的观察数。 我的尝试非常基础:

OPTIONS NODATE number pageno=1 rightmargin=0.25in leftmargin=0.25in topmargin=0.4in bottommargin=0.4in;
options sysprintfont=("SAS Monospace" normal regular 8 ALL) orientation=landscape;
ODS LISTING CLOSE;
ODS NORESULTS;
ods TAGSETS.EXCELXP PATH="C:\TEMP" FILE= "&Place._RequiredFlaggedRecords.XML" STYLE=NORMALPRINTER;
/*Sets number of observations allowed per ODS*/
%let obs=100;

ODS TAGSETS.EXCELXP OPTIONS (EMBEDDED_TITLES='YES' EMBEDDED_FOOTNOTES='YES' SHEET_NAME='Outdated');
proc print data=&Place (obs=&obs) (rename = (CREATE_DATE = DATE_PROCESSED EARLIEST_DATE_TIME=VISIT_DATE_TIME EARLIEST_DATE=VISIT_DATE)) noobs;
        var
            DATEDIFF
            DATE_PROCESSED
            VISIT_DATE
            VISIT_DATE_TIME
                            ;
                WHERE DATEDIFF >=60 ;
        title1 j=l "Outdated Records " ;
        title2 j=l 'This page reflects the records which were received more than 60 days following';
RUN;

日志文件返回:

NOTE: Line generated by the macro variable "OBS".
1      100
       ---
       22
       76

ERROR 22-322: Expecting a quoted string.

ERROR 76-322: Syntax error, statement will be ignored.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.09 seconds
      cpu time            0.01 seconds

尝试使用%eval 将 100 变成数字而不是字符。还将 &obs 替换为 100 而不是使用宏。两者的结果都与上述相同。

任何帮助将不胜感激!

【问题讨论】:

  • 如上所述,我尝试了其他方法都无济于事。我所有的研究都表明这 3 种方法都应该有效,但没有一个有效。

标签: sas sas-macro sas-ods


【解决方案1】:

您的问题很可能是您有第二组括号。这工作正常:

ods html file="c:\temp\blah.html" path="";
proc print data=sashelp.class(obs=10 rename=name=namer);
run;
ods html close;

您的错误与未将 obs=10 放在重命名的括号内一致。如果您像上面那样(两组括号),则会发生不同的错误。将所有数据集选项放在一组括号中。

需要明确的是,这不是与 ODS 相关的选项。这是一个数据集选项,仅此而已。而且宏变量没有“类型”,所以%eval 在这里无关紧要。

【讨论】:

  • 感谢您的帮助!我现在正在尝试组合括号。但是,根据 SAS 支持和帮助文件,宏变量始终包含字符数据。 support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/…
  • 宏变量总是包含文本。他们没有类型的概念——没有“数字”或“字符”的概念。因此,您的 %eval 没有做任何事情:%eval 仍然返回 text%eval 告诉 SAS 将文本评估为数字,以便对其进行一些数学运算 - 然后将结果作为文本返回。
  • 抱歉,这里是新的,以前的输入太早了!
  • 好吧,如果帮助文件中提到了这一点,那就太好了!会为我节省一些时间!
  • 这解决了问题!谢谢你,乔!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多