2016-08-24 1 views
2

J'ai le code suivantPourquoi le varnum arrête-t-il le contenu du processus dans sas?

ods select Variables; 
    proc contents data=xmlout.&XML_DSET; 
    run; 

La déclaration pdf ouverte ods est antérieure dans le code

ods pdf file="&exceldir\README.pdf" startpage=never; 
title 'README FILE'; 

Cela prend XMLEnDehors. & XML_DSET et joliment le met dans un pdf pour moi (l'ods pdf fermer, est plus tard dans le code).

Cependant!

Si je mets à l'ordre Varnum comme variables existent dans l'ensemble de données comme si

ods select Variables; 
    proc contents data=xmlout.&XML_DSET varnum; 
    run; 

Le pdf ne présente pas les résultats du tout!

Qu'est-ce que je fais mal?

Merci!

Répondre

4

Apparemment, lorsque vous ajoutez l'option VARNUM, l'objet de sortie VARIABLES n'est pas créé, mais un objet de sortie nommé POSITION est créé. La meilleure façon de trouver les différents objets produits par une procédure est d'utiliser ODS TRACE:

52 ods trace on; 
53 proc contents data=sashelp.class; 
54 run; 


Output Added: 
------------- 
Name:  Attributes 
Label:  Attributes 
Template: Base.Contents.Attributes 
Path:  Contents.DataSet.Attributes 
------------- 

Output Added: 
------------- 
Name:  EngineHost 
Label:  Engine/Host Information 
Template: Base.Contents.EngineHost 
Path:  Contents.DataSet.EngineHost 
------------- 

Output Added: 
------------- 
Name:  Variables 
Label:  Variables 
Template: Base.Contents.Variables 
Path:  Contents.DataSet.Variables 
------------- 

55 
56 proc contents data=sashelp.class varnum; 
57 run; 


Output Added: 
------------- 
Name:  Attributes 
Label:  Attributes 
Template: Base.Contents.Attributes 
Path:  Contents.DataSet.Attributes 
------------- 

Output Added: 
------------- 
Name:  EngineHost 
Label:  Engine/Host Information 
Template: Base.Contents.EngineHost 
Path:  Contents.DataSet.EngineHost 
------------- 

Output Added: 
------------- 
Name:  Position 
Label:  Varnum 
Template: Base.Contents.Position 
Path:  Contents.DataSet.Position 
------------- 

58 ods trace off; 

Voyant que, vous pouvez changer votre code pour sélectionner l'objet de sortie de position, i.e. .:

ods select position;  
proc contents data=sashelp.class varnum; 
run; 
ods select all;