2015-08-14 4 views
0

Я пытаюсь ограничить количество наблюдений, включенных в таблицу вывода ODS. Моя попытка довольно простой:Ограничение числа наблюдений на выходе SAS 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; 

Log файл возвращается:

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 вместо использования макроса. Оба имеют те же результаты, что и выше.

Любая помощь будет оценена!

+0

Как указано выше, я пробовал другие методы безрезультатно. Все мои исследования говорят, что все 3 метода должны работать, но никто этого не делает. –

ответ

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 внутри скобок от переименования. Произошла бы другая ошибка, если у вас есть это выше (два набора парнеров). Поместите все параметры набора данных в один набор параметров.

Для того, чтобы быть понятным, это не относится к ОРВ. Это опция набора данных, не более того. А макропеременные не имеют «типов», поэтому %eval здесь не имеет значения.

+0

Благодарим вас за помощь! Я пытаюсь комбинировать парс сейчас. Однако в файлах поддержки и поддержки SAS макро переменные всегда содержат символьные данные. http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a002293823.htm –

+0

Макропеременные всегда содержат * текст *. У них нет понятия типа - нет понятия «числовой» или «характер». Следовательно, ваш '% eval' ничего не делает:'% eval' все еще возвращает * текст *. '% eval' сообщает SAS, чтобы оценивать текст как числовое значение для выполнения некоторой математики, а затем возвращает результат в виде текста. – Joe

+0

Извините, новый здесь и попал слишком рано в предыдущее! –

Смежные вопросы