Posts Tagged ‘ods escapechar’

h1

Avec ODS, comment ajouter des caractères spéciaux ≤ et ≥

septembre 19, 2010

Comment inclure dans un rapport généré par ODS les symboles ≤ et ≥ ? En effet, ils ne font pas parti des caractères spéciaux ASCII classiques, il s’agit de caractères dépendants d’une police de caractères en particulier : la police « symbol ».

SAS propose un article sur le sujet. Je vous propose de détailler l’exemple utilisé qui a été utilisé avec SAS 8.2 sous environnement DBCS.

1. Setting

Dans cette instruction ODS ESCAPECHAR, est précisé que l’accent circonflexe sera utilisé, non pas comme simple caractère, mais comme caractère introduisant une notation particulière pour le style.

ods escapechar= »^ »;

Un format appelé TEMP est créé. La valeur 11 aura un label composé du symbole « inférieur ou égal ».

  • Le symbole « inférieur ou égal » en lui même est introduit par le code hexadécimal A3.
  • Pour que ce que code corresponde à « inférieur ou égal », il faut utiliser la police de caractère, d’où le code font_face=symbol.
  • Avant A3, on change le style et en particulier la police de caractère. Notez ici l’accent circonflexe introduit précédemment pour entrer la police.
  • Après A3, on arrête d’utiliser cette police.

proc format;
value temp 11=‘The value is ^S={font_face=symbol}’ « A3″x ‘^S={} the value’;
run;

2. Reporting

A présent SAS va écrire tout ce qui suite dans un fichier temp.rtf. Vous avez ici seulement besoin de préciser le chemin d’accès au fichier dans les guillemets.

Le résultat s’affichera correctement dans votre fichier .RTF mais pas dans votre sortie listing classique. Autant fermer cette destination avec ODS LISTING CLOSE.

ods listing close;

ods rtf file=‘temp.rtf’;

Les deux tableaux imprimé se basent sur la table CLASS dans la bibliothèque SASHELP.

Dans le premier cas, le format créé précédemment est appliqué à la variable AGE. On aura dont le label de format défini précédemment quand AGE=11.

title ‘This uses the special characters in the value’;
proc print data=sashelp.class;
format age temp.;
run;

Dans ce second exemple, le symbole « supérieur ou égal » est introduit avec le code hexadécimal B3 d’où « B3″x.

Comme précédemment, il est entouré de ^S={font_face=symbol} avant et ^S={} après.

Cette fois ci pas contre le symbole est ajouté dans le label d’une variable. Chacun des groupes de mot est donc mis entre guillemets.

title ‘This uses the special characters in the label’;
proc print data=sashelp.class label;
label age=« Age » « ^S={font_face=symbol} » « B3″x « ^S={} » « 10 »;
run;

Enfin, on précise de former le fichier .rtf et donc de ne plus ajouter d’info dedans à partir de maintenant.

ods rtf close;

ods listing;

Source : Usage Note 24054: In ODS, how can I add special characters such as GE or LE to my output?

Lecture complémentaire