IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ODS et reporting Discussion :

[ODS RTF] Destination (FILE) ODS avec sas macro


Sujet :

ODS et reporting

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 114
    Points : 158
    Points
    158
    Par défaut [ODS RTF] Destination (FILE) ODS avec sas macro
    Bonjour,

    J'ai un problème de destination ods en utilisant SAS macro. je veux tracer un boxplot, que je vais ensuite envoyer par ods dans un fichier rtf. le Problème c'est SAS me dit que la destination n'a pas été crée, selon mes paramètres d'entrée. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    %macro trace_boxplot(table,titre,titre1_graph,titre2_graph,lab_y,var,classe);
    %let chemin="G:\Espace Equipe STAT\Ibrwa\universite";
    ods rtf path=&&chemin. body=&titre..rtf style=styles.minimal;
    title;
    option nodate nonumber;
    goption reset=all;
    goption border;
    goption devmap=winansi keymap=winansi;
    goptions xmax=5 IN ymax=4.5 IN;
    goption device=jpeg;
    axis1 label=none value=(h=10pt j=c color=black);
    axis2 label=(c=black j=c f='arial/bold' height=10pt &lab_y.) value=(h=10pt j=c color=black);
    title1;
    title2 j=c h=12pt color=black  font='arial/bold'  &titre1_graph.
            j=c h=12pt color=black  font='arial/bold' &titre2_graph.;
    proc boxplot data=&table;
    plot &var*&classe/vaxis=axis2 haxis=axis1;
    run;
    quit;
    ods rtf close;
     
     
    %mend trace_boxplot;
    le message d'erreur est le suivant :

    ERREUR: La référence au membre de catalogue 'BOX_PUBLI.RTF' nécessite qu'un catalogue soit aussi
    spécifié avec l'option PATH= dans l'instruction ODS.
    ERREUR: Une erreur ODS fatale est intervenue. Impossible de continuer à utiliser cette destination de
    sortie.
    Merci de votre aide.

  2. #2
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Tu as un &&chemin. au lieu d'un &chemin. non ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 114
    Points : 158
    Points
    158
    Par défaut Pb destination ODS avec SAS macro
    Merci de ta réponse,

    J'avais essayé auparavant avec &chemin., mais ça ne marche pas. Je vais continuer à chercher une solution....

    Merci

  4. #4
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Je pense que c'est peut-être à cause de l'absence de guillemets autour de la valeur proposée dans l'option FILE. Tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ods rtf path=&&chemin. body=&titre..rtf style=styles.minimal;
    Pour &Chemin (pas besoin de &&, un seul & suffit) tu mets les guillemets directement dans la valeur de la macro-variable, donc c'est OK. Pour FILE, en revanche, tu dois utiliser à la fois une macro-variable &TITRE. et le suffixe en dur .RTF. Il te faut donc impérativement des guillemets autour du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ods rtf path=&chemin. body="&titre..rtf" style=styles.minimal;
    Comme on ne voit pas l'appel à ton macro-programme, je n'ai pas d'idée du genre de valeurs que peut prendre &TITRE. Mais il faudra bien faire attention à éviter dans &TITRE les caractères interdits dans les noms de fichiers (ponctuation en particulier).
    Bon courage.
    Olivier

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 114
    Points : 158
    Points
    158
    Par défaut pb de destination
    Bonjour,

    ça marche!! Il faut effectivement mettre des guillements dans path=. La macro je l'ai appelé par le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %trace_boxplot(projet.brevet_publi2,
    box_publi,
    "Boxplot de la variable nombre de publications",
    "En fonction des classes disciplinaires",
    "nbr de publication",
    nb_publi,
    classe);
    .

    Mais ce qui est intéressant dans tout ça c'est que pour l'instruction file il faut mettre des guillements et dans l'appel proscrire les caractères speciaux alors que pour les titres et labels on ne mets pas de guillemets dans la macro, mais par contre dans l'appel il faut mettre des guillemets.

    Merci

  6. #6
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    A titre personnel, je ne mets quasiment jamais de guillemets dans les valeurs des macro-variables... surtout par peur de les oublier un jour. Je ne les mets que là où je les utilise.
    Ton code pourrait tout aussi bien fonctionner avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    %macro trace_boxplot(TABLE,titre,titre1_graph,titre2_graph,lab_y,var,classe);
    %let chemin=G:\Espace Equipe STAT\Ibrwa\universite;
    ods rtf path="&chemin." body="&titre..rtf" style=styles.minimal;
    title;
    OPTION nodate nonumber;
    goption reset=ALL;
    goption border;
    goption devmap=winansi keymap=winansi;
    goptions xmax=5 IN ymax=4.5 IN;
    goption device=jpeg;
    axis1 label=none value=(h=10pt j=c color=black);
    axis2 label=(c=black j=c f='arial/bold' height=10pt &lab_y.) value=(h=10pt j=c color=black);
    title1;
    title2 j=c h=12pt color=black  font='arial/bold'  "&titre1_graph."
            j=c h=12pt color=black  font='arial/bold' "&titre2_graph." ;
    proc boxplot DATA=&table;
    plot &var*&classe/vaxis=axis2 haxis=axis1;
    run;
    quit;
    ods rtf close;
     
    %mend trace_boxplot;
    Appelé ensuite ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %trace_boxplot(projet.brevet_publi2,
    box_publi,
    Boxplot de la variable nombre de publications,
    En fonction des classes disciplinaires,
    nbr de publication,
    nb_publi,
    classe);
    Ce qui a (à mes yeux) le mérite d'être plus cohérent : il n'y a pas certains arguments du macro-programme avec guillemets et d'autres sans.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 114
    Points : 158
    Points
    158
    Par défaut
    En effet ça marche en mettant seulement les guillemets dans la macro là il faut, et tu as raison en plus c'est plus cohérent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODS] ODS RTF - File print et taille de police
    Par polo92 dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 14/10/2013, 14h19
  2. [ODS] Options avec ODS RTF
    Par nbl.83 dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 04/06/2012, 12h28
  3. [ODS RTF] avec des graphiques (gplot et gchart)
    Par hammamr dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 19/01/2011, 16h53
  4. [SAS 8.2] proc template et ods rtf text - centrer les textes
    Par c_nvy dans le forum ODS et reporting
    Réponses: 11
    Dernier message: 17/12/2009, 18h54
  5. [Macro] Importation de plusieur fichiers avec sas
    Par bafafamiageugb dans le forum Macro
    Réponses: 3
    Dernier message: 16/12/2008, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo