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

Macro Discussion :

Enregistrement sortie graphique SAS


Sujet :

Macro

  1. #1
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut Enregistrement sortie graphique SAS
    Bonjour,

    Je viens vers vous car j'ai besoin de votre aide pour l'écriture d'une macro SAS.

    En gros j'essaye de faire en sorte que ma macro enregistre dans le répertoire courant mon graphique sortie par une procedure GPLOT (je travaille sous SAS pour Linux).

    En gros voila ma macro :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    %macro gacpbx2;
    /*calcul pour graphique
    data conccomp (keep=k cc);
    set compr (keep=prin1--prin&pvar);
    array c{*} _numeric_;
    do k = 1 to &pvar;
    cc=c{k};
    output;end;
    run;
     
    /*recuperation nom repertoire courant
    proc sql noprint;
    select xpath into :nomprog
    from sashelp.vextfl where upcase(xpath) like '%.SAS';
    quit;
    %put &nomprog;
    proc sql noprint;
    select scan(xpath,-1,'/') into :nomprog2 from sashelp.vextfl
    where upcase(xpath) like '%.SAS';
    quit;
    %put &nomprog2;
    %let tailletotale=%length(&nomprog);
    %let taillebase=%length(&nomprog2);
    %let taillechemin=%eval(&tailletotale.-&taillebase.);
    %let nomchemin=%substr(&nomprog,1,&taillechemin);
    %put nomchemin: &nomchemin.;
     
    /* preparation pour enregistrement
    filename grafout '&nomchemin.';
    goptions reset=all gsfname=graphout gsfmode=replace device=jpeg; 
     
    /* creation graphique
    proc gplot data=conccomp;
    footnote;
    symbol1 i=box v=star;
    plot cc*k=1 / haxis= 0 to &pvar by 1 hminor=0 name='nomfichier'; 
     
    run;
    quit;
     
    filename grafout clear;
    goptions reset=all;
    %mend;
    Alors cette macro a marché hier mais ne marche plus aujourd'hui je ne comprend pas trop...

    Merci d'avance pour votre aide !

  2. #2
    Membre éclairé

    Femme Profil pro
    SAS FRANCE - Support Clients France et Europe
    Inscrit en
    Février 2010
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : SAS FRANCE - Support Clients France et Europe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 289
    Points : 886
    Points
    886
    Par défaut
    Bonjour,

    il faudrait bien appliquer la syntxe pour les commentaires :
    remplacer
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* creation graphique */
    en macro il faut bien respecter cela.

    Quelle est l'erreur reçue exactement ?
    Cordialement,

    --
    Géraldine CADE-DESCHAMPS
    Consultante ▪ Support Clients SAS
    Tel: +33 1 60 62 12 12 ▪ support@sas.com
    www.sas.com/france
    SAS® … THE POWER TO KNOW®

  3. #3
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut
    J'ai trouvé la solution à mon problème, désolé de la réponse tardive.

    En faite il manquait une ligne utilisant une commande ODS (outre le problème des commentaires).

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    %macro gacpbx;
     
    proc goptions;
    run;
     
    data conccomp (keep=k cc);
    set compr (keep=prin1--prin&pvar);
    array c{*} _numeric_;
    do k = 1 to &pvar;
    cc=c{k};
    output;end;
    run;
     
    /*on recupere le chemin du dossier courant*/
    proc sql noprint;
    select xpath into :nomprog
    from sashelp.vextfl where upcase(xpath) like '%.SAS';
    quit;
    %put &nomprog;
    proc sql noprint;
    select scan(xpath,-1,'/') into :nomprog2 from sashelp.vextfl
    where upcase(xpath) like '%.SAS';
    quit;
    %let tailletotale=%length(&nomprog);
    %let taillebase=%length(&nomprog2);
    %let taillechemin=%eval(&tailletotale.-&taillebase.);
    %let nomchemin=%substr(&nomprog,1,&taillechemin);
    /*affichage du chemin du dossier courant*/
    %put nomchemin: &nomchemin.;
     
    /*on specifie ou on veut enregistrer les figures*/
    ods listing gpath="&nomfichier";
    filename grafout "&nomchemin/test.jpg";
    goptions reset=all;
    goptions device=jpeg gsfname=grafout ; /*on enregistre au format jpeg*/
     
    axis2 label=(a=90);
     
    proc gplot data=conccomp;
     
     
    footnote font=zapf justify=right 'Ce graphique est fait sous SAS’;
     
    symbol1 i=box v=star;
    plot cc*k=1 / vaxis=axis2 haxis= 0 to &pvar by 1 hminor=0 name="test"; /*on nomme notre figure test*/
     
    /* on encadre le graphique */
    goptions border;
    /* On choisit les noms de nos axes */
    label k = "Mettre le nom de l'axe 1 ici"
           cc = "Mettre le nom de l'axe 2 ici" ;
     
    run;
    quit;
     
    filename grafout clear;
    goptions reset=all;
    %mend;
    Merci pour votre aide !

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

Discussions similaires

  1. Enregistrer un graphique
    Par lila1 dans le forum Octave
    Réponses: 2
    Dernier message: 05/04/2020, 11h02
  2. Réponses: 8
    Dernier message: 05/06/2016, 22h59
  3. [Carbon] OpenGL en Fullscreen avec choix sortie graphique
    Par NiamorH dans le forum Développement OS X
    Réponses: 8
    Dernier message: 22/03/2007, 09h45
  4. Sortie graphique personnalisée
    Par habasque dans le forum Oracle
    Réponses: 1
    Dernier message: 02/10/2006, 22h36
  5. Comment enregistrer des graphiques pour le web?
    Par pepe2006 dans le forum Access
    Réponses: 1
    Dernier message: 11/10/2005, 20h08

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