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 :

Indiquer des puissances et des indices (ODS ESCAPECHAR et unicode)


Sujet :

ODS et reporting

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Par défaut Indiquer des puissances et des indices (ODS ESCAPECHAR et unicode)
    Bonjour à tous,

    Je viens vous voir avec une nouvelle question après avoir cherché désespérément comment indiquer des indices et des puissances dans mes graphiques.

    Tout d'abord j'ai trouvé un message sur ce forum datant de 2012 qui m'a appris l'existance d'ODS ESCAPECHAR, ici :
    http://www.developpez.net/forums/d12...elle-variable/

    Sauf que visiblement ça ne fonctionne pas sur les graphes (libellés) et j'ai ce message : SUB FUNCTION NOT DEFINED IN THIS TAGSET.

    Ensuite j'ai trouvé sur Internet qu'on peut utiliser de l'"unicode" pour arriver à ses fins. J'ai bien compris comme mettre des indices. Avec l'unicode 208 auquel on ajoute un chiffre.

    En revanche pour les puissances je n'y arrive pas du tout. Je lis sur internet que ça fonctionne avec {unicode '00bx'x}
    Ça marche pour 2 et 3 ({unicode '00b2'x} par exemple), mais à partir de 4 ça ne fonctionne plus.
    J'ai trouvé mes informations ici : http://support.sas.com/kb/39/267.html

    Quelqu'un a une idée ?

    Merci beaucoup,

    alers

  2. #2
    Membre émérite
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Par défaut
    Bonjour,

    Avec les bon codes, ça fonctionne bien.

    http://unicode.org/fr/charts/PDF/U2070.pdf

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Par défaut
    Bonjour,

    Ce PDF est une mine d'or, merci beaucoup !

    En revanche je me rends compte que j'ai un autre problème...

    Là ça a très bien fonctionné car je décomposais toutes mes courbes dans PROC SGPLOT (j'avais une variable par groupe). Je pouvais faire les labels directement dedans.

    Sauf que la plupart du temps je me sers de l'option GROUP associée à un DATTRMAP et là ça ne fonctionne plus. Je change dans le DATTRMAP pour mettre les unicode, ainsi que dans mon dataset ou mon format, mais ça ne donne rien.

    J'ai l'impression que ce principe d'unicode fonctionne uniquement pour du "texte" comme des libellés mais pas pour de véritables observations. Existe-t-il un moyen de procéder pour avoir ce que je veux au final ?

    Merci encore,

    alers

  4. #4
    Membre chevronné
    Homme Profil pro
    Consultant Finance/Assurance
    Inscrit en
    Décembre 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant Finance/Assurance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 198
    Par défaut
    Re bonjour !

    En cherchant sur le net j'ai trouvé un code qui pourrait t'aider avec des unicode dans des modalité :
    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
     
     
    data sup_sub;
     length myvar $200;
     myvar = "Pythagorean Theorem: a^{super 2} + b^{super 2} = c^{super 2}";
     output;
     myvar = "This is something that needs a footnote. ^{super 1}";
     output;
     myvar = "Macbeth: 'Is this a dagger I see before me?' ^{dagger}";
     output;
     myvar = "The Caffeine molecule is an alkaloid of the methylxanthine family: " ||
     "C^{sub 8}H^{sub 10}N^{sub 4}O^{sub 2}";
     output;
    run;
     
    ods escapechar='^';
     proc print data=sup_sub;
     title j=r 'PDF & RTF: Page ^{thispage} of ^{lastpage}';
     title2 j=c 'RTF only: ^{pageof}';
     footnote '^{super 1}If this were a real footnote, there would be something very
    academic here.';
     footnote2 '^{dagger} Macbeth talked to himself a lot. This quote is from Macbeth:
    Act 2, Scene 1, Lines 33-39.';
     run;
    le résultat est bien transformé dans le print mais pas dans la table !

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Par défaut
    Bonjour et merci pour ta réponse,

    Ce code marche mais de mon côté je n'y arrive toujours pas avec un DATTRMAP. J'ai résolu mon problème en réalisant toutes mes figures avec des SERIES séparées (VALEUR_GRP1, VALEUR_GRP2, etc), mais c'est quand même enquiquinant quand on sait qu'avec un DATTRMAP tout va plus vite et plus simplement.

    Du coup je m'intéresse quand même à ce problème et je continue de chercher une réponse.

    Voilà ici un exemple réalisé dans lequel je n'obtiens jamais le résultat que je veux, sauf quand j'utilise sans unicode :

    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
    ods escapechar = "*";
    data __dattrmap;
    length id $25. value $80. linecolor $25. linepattern $25. fillcolor $25. markercolor $25. markersymbol $25.;
    id="MOD";  value="CARAC1 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)";             						linecolor="black";  linepattern="solid";                fillcolor="black";  markercolor="black";    markersymbol="circlefilled"; output;
    id="MOD";  value="CARAC2 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)";        linecolor="red";  linepattern="shortdash";            fillcolor="red";  markercolor="black";    markersymbol="trianglefilled"; output;
     
    id="MODD";  value="CARAC1 (log10 UNIT)";             	 linecolor="black";  linepattern="solid";                fillcolor="black";  markercolor="black";    markersymbol="circlefilled"; output;
    id="MODD";  value="CARAC2 (log10 UNIT)";        linecolor="red";  linepattern="shortdash";            fillcolor="red";  markercolor="black";    markersymbol="trianglefilled"; output;
     
    id="MODDD";  value="CARAC1";             	 linecolor="black";  linepattern="solid";                fillcolor="black";  markercolor="black";    markersymbol="circlefilled"; output;
    id="MODDD";  value="CARAC2";        linecolor="red";  linepattern="shortdash";            fillcolor="red";  markercolor="black";    markersymbol="trianglefilled"; output;
     
     
    run;
     
    proc format;
    value grpe
    	1	=	"CARAC1 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)"
    	2	=	"CARAC2 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)"
    ;
    run;
     
    data __donnees;
    length GRPc $80. GRPcc $80.;
    GRP = 1; GRPc = "CARAC1 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)"; GRPcc = "CARAC1 (log10 UNIT)"; GRPccc = "CARAC1";
    TEMPS = 1; MOYENNE = 50; ICINF = 25; ICSUP = 75;
    output;
    GRP = 1; GRPc = "CARAC1 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)"; GRPcc = "CARAC1 (log10 UNIT)"; GRPccc = "CARAC1";
    TEMPS = 2; MOYENNE = 30; ICINF = 15; ICSUP = 35;
    output;
     
    GRP = 2; GRPc = "CARAC2 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)";  GRPcc = "CARAC2 (log10 UNIT)"; GRPccc = "CARAC2";
    TEMPS = 1; MOYENNE = 80; ICINF = 70; ICSUP = 85;
    output;
    GRP = 2; GRPc = "CARAC2 (log*{unicode '2081'x}*{unicode '2080'x} UNIT)"; GRPcc = "CARAC2 (log10 UNIT)"; GRPccc = "CARAC2";
    TEMPS = 2; MOYENNE = 20; ICINF = 15; ICSUP = 50;
    output;
    run;
     
    /* Essai avec variable au format caractère qui correspond au VALUE du DATTRMAP */
    proc sgplot data = __donnees noautolegend dattrmap = __dattrmap;
    series x = TEMPS y = MOYENNE / group = GRPc attrid = MOD name="legende";
    keylegend "legende" / position = bottom location=inside border;
    run;
     
    /* Essai avec la variable numérique et le format */
    proc sgplot data = __donnees noautolegend dattrmap = __dattrmap;
    series x = TEMPS y = MOYENNE / group = GRP attrid = MOD name="legende";
    keylegend "legende" / position = bottom location=inside border;
    format grp grpe.;
    run;
     
    /* Essai sans UNICODE */
    proc sgplot data = __donnees noautolegend dattrmap = __dattrmap;
    series x = TEMPS y = MOYENNE / group = GRPcc attrid = MODD name="legende";
    keylegend "legende" / position = bottom location=inside border;
    run;
    Je me dis qu'au pire ce qui serait possible de mettre les unités dans un texte associé à la figure mais c'est vraiment embêtant.

    Bref je continue mes recherches dés que je trouve un moment de libre.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/10/2009, 10h36
  2. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  3. Réponses: 4
    Dernier message: 02/04/2008, 17h51
  4. Réponses: 3
    Dernier message: 13/09/2007, 18h11
  5. Réponses: 3
    Dernier message: 23/01/2007, 08h14

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