0

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 に置き換えました。どちらも上記と同じ結果でした。

どんな助けでも大歓迎です!

4

1 に答える 1

2

ほとんどの場合、問題は 2 番目の括弧のセットがあることです。これはうまくいきます:

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

obs=10あなたのエラーは、名前の変更から括弧を入れないことと一致しています。上記のようにすると、別のエラーが発生します (括弧が 2 組)。すべてのデータセット オプションを 1 組のかっこに入れます。

明確にするために、これは ODS 関連のオプションではありません。これはデータ セット オプションであり、それ以上のものではありません。また、マクロ変数には「型」がないため、%evalここでは関係ありません。

于 2015-08-14T20:32:30.370 に答える