2015-08-14 6 views
0

J'essaie de limiter le nombre d'observations incluses dans la table de sortie des SAO. Ma tentative est assez basique:Limiter le nombre d'observations dans la sortie 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; 

retourne fichier journal:

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 

tentée en utilisant %eval pour faire 100 numérique au lieu de caractère. Remplacé également & obs avec 100 au lieu d'utiliser la macro. Les deux ont eu les mêmes résultats que ci-dessus.

Toute aide serait appréciée!

+0

Comme indiqué ci-dessus, j'ai essayé d'autres méthodes en vain. Toutes mes recherches indiquent que les trois méthodes devraient fonctionner, mais aucune ne le fait. –

Répondre

2

Votre problème est probablement que vous avez un deuxième jeu de parens. Cela fonctionne très bien:

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

Votre erreur est conforme à ne pas mettre obs=10 à l'intérieur des parens de renommage. Une erreur différente se produirait si vous l'avez comme ci-dessus (deux ensembles de parens). Placez toutes les options de jeu de données dans un jeu de parens.

Pour être clair, ceci n'est pas une option liée à ODS. C'est une option de jeu de données, rien de plus. Et les variables macro n'ont pas de "types" donc %eval n'est pas pertinent ici.

+0

Merci pour votre aide! Essaie de combiner les parens maintenant. Cependant, selon le support SAS et les fichiers d'aide, les variables macro contiennent toujours des données de caractères. http://support.sas.com/documentation/cdl/fr/mcrolref/61885/HTML/default/viewer.htm#a002293823.htm –

+0

Les variables macro contiennent toujours * text *. Ils n'ont aucun concept de type - il n'y a pas de concept 'numérique' ou 'caractère'. Par conséquent, votre '% eval' ne fait rien:'% eval' renvoie toujours * text *. '% eval' dit à SAS d'évaluer le texte sous forme numérique afin d'y faire des calculs - puis renvoie le résultat sous forme de texte. – Joe

+0

Désolé, nouvelle ici et appuyez sur enter trop tôt pour précédente! –