Archive for the ‘ODS’ Category

Protégé : Une option SAS 9.2 pour ODS PDF : répéter une valeur groupée sur plusieurs pages
août 3, 2010
Structurer ses travaux à l’aide de pages HTML
juillet 25, 2010Joël Rivest a eu l’occasion de présenter quelques usages du HTML pour structurer ses travaux SAS lors d’une rencontre sur la ville de Québec en juin dernier. Voici le support utilisé pour cette intervention. Vous y découvrirez comme sujet : 2 modes d’utilisation du HTML, quelques avantages que présentent le HTML, quelques pré-requis, quelques macros pour faciliter l’écriture des résultats dans des pages web.
Vous souhaitez télécharger la présentation grand format ici : Joel_Rivest_Structurer_travaux_SAS_via_ pages_HTML.ppt
Quelques abréviations:
OLE : Object Linking and Embedding (définition de Wikipédia)
Cie : Compagnie

Ajouter des liens hypertextes dans vos fichiers PDF
octobre 4, 2009Dans cet article, je vous propose d’ajouter des liens hypertextes dans vos fichiers .PDF créés avec la syntaxe de l’ODS PDF. Pour illustrer ce sujet, nous créerons une table des matières (table of contents ou TOC) rustique avec ODS PDF TEXT=’ ‘; où il suffira de cliquer sur la section qui vous intéresse pour l’atteindre.
1. Le principe de base
Pour ajouter des liens hypertextes, il faut deux informations :
- la location du point d’encrage/de destination (anchor)
- le lien vers ce point d’encrage
ods escapechar=‘^’;
ods listing close;
ods pdf file=‘C:/sasref/hyperlink_toc.pdf’;
ods pdf text=‘Table of Contents’;
ods pdf text= »;
ods pdf text=‘^S={url=’#hommes’}1. Hommes’;
ods pdf text=‘^S={url=’#femmes’}2. Femmes’;
ods pdf anchor=‘hommes’;
ods pdf text=‘1. Hommes’;
proc print data=sashelp.class(where=(sex=‘M’));
run;
ods pdf anchor=‘femmes’;
ods pdf text=‘2. Femmes’;
proc print data=sashelp.class(where=(sex=‘F’));
run;
ods pdf close;
ods listing;
Le point d’encrage : Le point d’encrage est donné par l’instruction ods pdf anchor=‘…’;. Entre guillemets est donné un nom de votre choix qui servira à l’identifier.
Le lien hypertexte : Le lien vers ce point d’encrage est donné par le mot URL à préciser sous forme de style donné au texte sur lequel cliquer.
ods pdf text=‘^S={url=’#…’}Je clique ici’;
Définition d’un style : Le style est défini avant le texte par S={…}. Pour indiquer à SAS qu’il faille interpréter ce texte comme un style et non un texte brut, un caractère doit précédé le tout. J’ai choisi le symbole du chapeau défini auparavant avec l’instruction ods escapechar=‘^’;
2. Personnaliser le style
Supprimer l’affichage du bookmark : Dans la version enrichie qui suit, j’ai choisi l’option NOTOC pour éviter l’affichage du bookmark sur la gauche de l’écran propre aux fichier PDF.
Les sauts de pages à la demande: J’ai aussi choisi d’enlever par défaut tous les sauts de pages ods pdf startpage=never; puis d’ajouter une fois un saut de page entre la table des matières et les tableaux avec ods pdf startpage=now;
Les en-têtes en moins : Le titre par défaut, la date et le numéro des pages sont enlevés :
title;
options nodate nonumber;
Les liens hypertextes invisibles : Par défaut, le lien hypertexte est présenté par un cadre bleu autour du texte à cliquer. Pour enlever ce cadre, travaillez le style avec ACTIVELINKCOLOR, VISITEDLINKCOLOR et LINKCOLOR.
ods pdf text=« ^S={activelinkcolor=white
visitedlinkcolor=white
linkcolor=white
url=’…’}… »;
D’autres styles permettent ici d’affiner la présentation :
- VJUST : ajustement vertical du texte
- CELLHEIGHT : hauteur de la case contenant le texte
- CELLWIDTH : largeur de la case contenant le texte
- FONT_FACE : la police de style
- FONT_SIZE : la taille du texte
- INDENT : l’indentation du texte
- FONT_WEIGHT : mise en gras du texte
J’ai choisi de sauvegarder ces informations dans des macros variables pour pouvoir centraliser l’information en début de programme.
3. Le résultat
Deux pages sont donc créées. La première contient la table des matières. Vous pouvez cliquer sur le texte 1. Hommes ou 2. Femmes pour rejoindre le tableau qui vous intéresse.
Annexe : l’intégralité du code
%let titl=vjust=middle
cellheight=30pt
cellwidth=17cm
font_face=arial
activelinkcolor=white
visitedlinkcolor=white
linkcolor=white;
%let titl1=&titl indent=5cm font_size=16pt font_weight=bold;
%let titl2=&titl indent=6cm font_size=12pt;
title;
options nonumber nodate;
ods escapechar=’^’;
ods listing close;
ods pdf file=‘C:/sasref/hyperlink_toc.pdf’ notoc startpage=never;
ods pdf text=« ^S={&titl1.}Table of Contents »;
ods pdf text= »;
ods pdf text=« ^S={&titl2. url=’#hommes’}1. Hommes »;
ods pdf text=« ^S={&titl2. url=’#femmes’}2. Femmes »;
ods pdf startpage=now;
ods pdf anchor=‘hommes’;
ods pdf text=« ^S={&titl2.}1. Hommes »;
proc print data=sashelp.class(where=(sex=‘M’));
run;
ods pdf anchor=‘femmes’;
ods pdf text=« ^S={&titl2.}2. Femmes »;
proc print data=sashelp.class(where=(sex=‘F’));
run;
ods pdf close;
ods listing;

Passer par un format pour changer les couleurs d’une cellule dans un tableau (PROC REPORT et ODS)
septembre 17, 2009Dans de précédents articles, je vous ai parlé de la possibilité de changer le style des cellules d’un tableau. Je vous invite ici à découvrir comment un format peut vous éviter de passer par un COMPUTE/ENDCOMP de PROC REPORT pour changer le style selon les valeurs prises par une variable donnée.
1. Créer les formats pour l’exemple
Pour mettre en gras (bold) ou non, il faut passer par le style FONT_WEIGHT. Dans notre exemple, ce style prendra la valeur BOLD quand la variable AGE aura des valeurs entre 14 et 16 ans et un LIGHT pour un style non gras. Vous avez aussi à disposition la valeur MEDIUM pour un ton légèrement plus prononcé.
Pour changer la couleur du texte, c’est le style FOREGROUND qu’il faut utiliser. Dans notre cas, le texte aura la couleur bleu si la variable AGE est comprise entre 14 et 16 ans inclus.
proc format;
value age_font 11–13=‘light’
14–16=‘bold’;
value age_color 14–16=‘blue’;
run;
2. Utiliser le format dans PROC REPORT
Pour changer le style d’une colonne en particulier, il suffit d’ajouter style(column)=[…] dans l’instruction DEFINE.
Ici au lieu de donner une couleur à toutes les valeurs avec FOREGROUND= suivi du nom de la couleur, on donne le format AGE_COLOR. qui prendra la valeur BLUE pour les AGE des 14-16 ans.
De manière similaire, l’épaisseur du trait est changée avec FONT_WEIGHT et le format AGE_FONT. défini auparavant.
ods listing close;
ods pdf file=‘C:/sasref/zebre.pdf’;
proc report data=sashelp.class nowd;
columns name age;
define name / display ;
define age / display style(column)=[font_weight=age_font. foreground=age_color.];
run;
ods pdf close;
ods listing;
3. Voir le résultat
Lectures complémentaires
- Alterner les couleurs de fond dans un tableau : une ligne sur deux (PROC REPORT et ODS)
- Changer la couleur d’une ligne ou d’une colonne grâce à PROC REPORT et ODS
- Un moyen simple de changer les couleurs en fonction des valeurs prises par des variables dans un fichier .xls
- Choisir ses couleurs sous SAS
Des questions ? Envoyez votre message sur le forum du blog.

Indenter ses titres et pieds-de-page dans un fichier PDF
août 2, 2009Comment couper ses titres et ajouter des indentations dans un fichier PDF avec SAS ? La solution deux petits mots-clés -2n et m précédés d’un symbole défini par vous-même auparavant.
Notez que cette syntaxe fonctionne aussi pour les pieds-de-page.
Si le passage à la ligne fonction avec ODS RTF, l’indentation par contre n’est pas prise en compte.
1. Par défaut un titre est sur une seule ligne
Dans l’exemple qui suit, un titre est donné dans une instruction TITLE.
Ce titre est aligné à gauche (J=L entendez par là justify=left).
Pour faciliter la lecture du programme, le titre est écrit sur plusieurs lignes. Mais au final, tout le texte apparaît sans passage à la ligne.
ods listing close;
title j=l
‘SASHELP.CLASS:’
‘Première Variable: Nom’
‘Seconde Variable: Sex’
‘Troisième Variable: Age’;
ods pdf file=‘C:/sasref/indent_title.pdf’;
proc print data=sashelp.class noobs;
run;
ods pdf close;
ods listing;
2. Passer à la ligne avec ODS ESCAPECHAR et ^-2n
A présent, un passage à la ligne est créé avec le mot -2n.
Pour que SAS n’utilise par ce mot comme un texte devant apparaître dans le titre, ce mot est précédent d’un symbole de son choix (ici un chapeau) défini précédemment avec l’instruction ODS ESCAPECHAR.
ods escapechar=‘^’;
ods listing close;
title j=l
‘SASHELP.CLASS:’
‘^-2nPremière Variable: Nom’
‘^-2nSeconde Variable: Sex’
‘^-2nTroisième Variable: Age’;
ods pdf file=‘C:/sasref/indent_title.pdf’;
proc print data=sashelp.class noobs;
run;
ods pdf close;
ods listing;
3. Passer à la ligne et indenter le titre avec ODS ESCAPECHAR, ^-2n et ^m
A présent, l’encre ^m est ajoutée en4ème position dans la première ligne. Cela veut dire que tout le texte qui suit est indenté et débutera en position 4 sous la lettre H de SASHELP.CLASS.
ods escapechar=‘^’;
ods listing close;
title j=l
‘SAS^mHELP.CLASS:’
‘^-2nPremière Variable: Nom’
‘^-2nSeconde Variable: Sex’
‘^-2nTroisième Variable: Age’;
ods pdf file=‘C:/sasref/indent_title.pdf’;
proc print data=sashelp.class noobs;
run;
ods pdf close;
ods listing;
Lectures complémentaires

Créer des abréviations sous SAS Windows. J’adore !
juin 28, 2009N’avez-vous jamais eu le sentiment de devoir taper toujours un même code sous SAS avec ODS TAGSETX.EXCELXP ou encore de ne pas vous rappeler la syntaxe exacte pour un PROC IMPORT ?
Une solution est de créer un programme de référence et de faire du copier/coller. Une autre solution, propre à SAS Windows, est de sauvegarder chaque code sous une abréviation et d’utiliser au moment venu cette abréviation. Voici comment cela marche.
1. Créer une abbréviation
Pour créer un abréviation, choisissez Tools/Add Abbreviation... dans le menu.
Ici, je choisi de créer l’abréviation report_xls. J’ajoute par copier/coller le code propre au tagsets.excelxp dans le second champs.
2. Comment utiliser l’abréviation
Dans l’éditeur SAS, saisissez le nom de l’abréviation. En tapant sur entrer le mot est remplacer le texte sous-jacent.
3. Modifier une abréviation existante
Si vous créer une nouvelle abréviation et lui donnez le même nom qu’une déjà existante, SAS vous demandera si vous souhaitez remplacer celle existante ou non.
4. Visualiser les abréviations existantes et les supprimer
Pour voir les abréviations existantes, aller dans le menu et choisissez Tools/Keyboard Macros/Macros…
Il ne vous reste plus qu’à sélectionner l’abréviation à supprimer et de cliquer sur Delete.

Supprimer le texte qui sert à la création de la table des matières dans un fichier .rtf
juin 18, 2009Ici, je vous propose d’illustrer l’usage de l’option notoc_data dans l’instruction ODS RTF sous SAS. Celle-ci empêche la création des points de références nécessaires à la création d’une table des matières. En effet, ces points affectent l’affichage des tableaux sur l’écran. Comment dissimuler/supprimer ces points pour améliorer la lisibilité de vos documents RTF ?
1. L’affichage par défaut
Pour pouvoir ajouter une table des matières (Table of Contents, TOC) dans un document Word, des marques aux différents points de références appelés ancres (anchers) au fil du document doivent exister. Ces points n’apparaissent pas à l’impression.
Lors de la création d’un fichier .rtf par SAS, ces points de référence sont automatiquement créés. Et cela peut donner une distorsion des tableaux comme dans l’exemple ci-dessous.
ods listing close;
ods rtf file=‘C:/sasref/toc.rtf’;
proc print data=sashelp.class;
run;
ods rtf close;
ods listing;
Avec un PROC PRINT, le point de référence ressemble à ceci :
{tc « print » \f C \l 1}{tc « Data Set SASHELP.CLASS » \f C \l 2}
Avec un PROC REPORT, le point de référence se présente est :
{tc « Report » \f \C \l 1}{tc « Detailed and/or summarized report » \f C \l2}
Pour palier à ce problèmes deux solutions sont envisageable.
- Désactiver l’affichage des symboles comme le passage à la ligne
- Ne pas créer de points de références pour la table des matières
2. Désactiver l’affichage des symboles
Il suffira de cliquer sur le bouton servant à l’affichage des symboles comme le passage à la ligne, la tabulation,… pour ne plus voir les points de références utilisés si une table des matières est créée.
3. Ne pas créer de points de référence pour la table des matières avec l’option notoc_data
Il vous suffira d’ajouter l’option notoc_data dans l’instruction ODS RTF de départ pour ôter les points de référence servant pour la création d’une table des matières.
ods listing close;
ods rtf file=‘C:/sasref/toc.rtf’ notoc_data;
proc print data=sashelp.class;
run;
ods rtf close;
ods listing;

Composer une page pdf avec des carrés à remplir (ODS LAYOUT/ODS REGION)
juin 14, 2009La syntaxe de l’ODS PDF sous SAS sert à la création d’un fichier au format pdf. Ici, vous verrez comment organiser les différents blocs de textes au moyen de ODS LAYOUT et ODS REGION. Cela sera aussi l’occasion de faire un rappel sur PROC TEMPLATE pour changer les marges d’un document et de se servir de l’instruction ODS PDF TEXT=.
1.Changer les valeurs par défaut
Par défaut, les sorties sous SAS affichent la date, un titre et chaque page est numérotée. Pour enlever ces informations, l’instruction TITLE et les options NODATE, NONUMBER sont utilisées.
* 1. Setting;
options nodate nonumber;
title;
Par défaut, les marges des feuilles A4 ne sont pas de zéro. Pour les changer, il faut utiliser un style différent à définir dans une procéduren PROC TEMPLATE. Ici, nous créons un style appelé REPORT_PDF qui est comme le style RTF de SAS à une exception prêt : les marges du document sont de zéro centimètre.
*2. Créer le template REPORT_PDF;
proc template;
define style styles.report_pdf;
parent=styles.rtf;
style body from Document /
bottommargin = 0cm
topmargin = 0cm
rightmargin = 0cm
leftmargin = 0cm;
end;
run;
Note : vous pouvez aussi choisir de rendre non défini les marges au niveau du proc template dans un premier temps. Ensuite, vous pourrez définir la valeur dans une instruction globale OPTIONS.
proc template;
define style styles.report_pdf;
parent=styles.rtf;
style body from Document /
bottommargin = _undef_
topmargin = _undef_
rightmargin = _undef_
leftmargin = _undef_;
end;
run;
options bottommargin=0cm topmargin=0cm rightmargin=0cm leftmargin=0cm;
Ici, j’ai choisi d’ajouter manuellement du texte au moyen de l’ODS PDF TEXT dans le fichier PDF pour illustrer l’usage d’ODS LAYOUT/ODS REGION. Au niveau de PROC TEMPLATE, il est possible de préciser la police de caractère et la taille. Ici je choisi une police Arial de taille 12pt.
proc template;
define style styles.report_pdf;
parent=styles.rtf;
style body from Document /
bottommargin = 0cm
topmargin = 0cm
rightmargin = 0cm
leftmargin = 0cm;
style usertext from usertext /
font_size = 12pt
font_face = ‘Arial’;
end;
run;
2. Créer le fichier
a. ODS LISTING : Stopper l’envoi dans la fenêtre OUTPUT et réactiver cette destination à la fin
ods listing close;
ods listing;
b. ODS PDF : Envoyer les résultats à venir dans un fichier PDF, appeler le style REPORT_PDF pour ne pas utiliser le style par défaut et stopper la destination en fin de programme.
ods pdf file=‘C:/sasref/ods_layout.pdf’ style=report_pdf;
ods pdf close;
c. ODS LAYOUT : Indiquer à SAS l’endroit où ODS REGION pourra être utilisé en précisant le début de la zone avec ODS LAYOUT START et la fin avec ODS LAYOUT END .
ods layout start;
ods layout end;
4. ODS REGION : préciser le point de départ du cadre avec X= et Y=. Puis donner la largeur (width) et la hauteur (height) du cadre.
ods region x=1cm y=1cm width=7cm height=2cm;
ods region x=13cm y=3cm width=7cm height=2cm;
ods region x=1cm y=5cm width=15cm height=1cm;
ods region x=4cm y=7cm width=15cm height=19cm;
Le code complète
ods listing close;
ods pdf file=‘C:/sasref/ods_layout.pdf’ style=report_pdf;
ods layout start;
*cadre 1 : adresse expéditeur;
ods region x=1cm y=1cm width=7cm height=2cm;
ods pdf text=‘Véronique Bourcier’;
ods pdf text=‘verronique.bourcier@sasreference.fr’;
ods pdf text=‘www.sasreference.fr’;
ods pdf text=‘Blog pour se former au logiciel SAS’;
*cadre 2 : adresse destinaire + date;
ods region x=13cm y=3cm width=7cm height=2cm;
ods pdf text=‘Lecteurs de SAS’;
ods pdf text=‘Rue des curieux’;
ods pdf text=‘00000 Francophones’;
ods pdf text=’ ‘;
ods pdf text=’14 Juin 2009, Cologne’;
*cadre 3 : object;
ods region x=1cm y=5cm width=15cm height=1cm;
ods pdf text=‘Objet: Exemple avec ODS LAYOUT/REGION’;
*cadre 4 : contenu de la lettre;
ods region x=4cm y=7cm width=15cm height=19cm;
ods pdf text=‘Madame, Monsieur’;
ods pdf text=‘ ‘;
ods pdf text=« Le blog http://www.sasreference.fr est votre outil pour découvrir et redécouvrir la syntaxe de SAS. C’est aussi une communauté d’utilisateurs se retrouvant sur Facebook pour échanger sur de multiples thématiques : »;
ods pdf text=‘ ‘;
ods pdf text=‘+ Certification SAS’;
ods pdf text=‘+ Mémoire de stage’;
ods pdf text=‘+ Pharmaceutique’;
ods pdf text=‘+ Banque/assurance’;
ods pdf text=‘+ Milieu hospitalier’;
ods pdf text=‘+ Statistiques publiques’;
ods pdf text=‘+ Recherche’;
ods pdf text=‘+ Enseignement’;
ods pdf text=‘etc. ‘;
ods layout end;
ods pdf close;
ods listing;
3. Voir le résultat
Lectures complémentaires

Ajouter un logo dans l’en-tête des fichiers pdf/rtf
juin 11, 2009Des fichiers au format RTF (lisibles par word) ou PDF se créent sous SAS au moyen de la syntaxe inclues l’Output Delivery System (ODS). L’en-tête et le pied de page sont ajoutés au moyen des instructions TITLE et FOOTNOTE. Ici, vous verrez quel texte mettre dans l’instruction TITLE pour ajouter une image dans l’en-tête d’un fichier PDF.
1. Créer un fichier PDF
La table (dataset) CLASS de la bibliothèque SASHELP est affichée dans la sortie au moyen de l’instruction PROC PRINT.
Les instructions ODS LISTING CLOSE/ODS LISTING : Par défaut la table est envoyée dans la fenêtre OUTPUT de SAS, souvent appelée fenêtre LISTING. Cette destination ne nous intéresse pas. Elle est désactivée le temps du PROC PRINT au moyen de l’instruction ODS LISTING CLOSE et est réactivée à la fin avec ODS LISTING.
Les instructions ODS PDF/ODS PDF CLOSE : A la place, la première instruction ODS PDF définie le nom du fichier à créer. ODS PDF CLOSE ferme le fichier après y avoir écrit les informations du PROC PRINT.
ods listing close;
title ‘Mon logo’;
ods pdf file=‘C:/sasref/image_entete.pdf’;
proc print data=sashelp.class;
run;
ods pdf close;
ods listing;
L’instruction TITLE : L’instruction TITLE précède la première l’instruction ODS PDF. Si vous voulez la mettre après, je vous conseille de prendre l’habitude d’indiquer à SAS de prendre le changement en compte en ajoutant une instruction ODS PDF juste après. Ainsi vous ferez appel à la même syntaxe avec ODS PDF et avec ODS RTF.
ods listing close;
ods pdf file=‘C:/sasref/image_entete.pdf’;
title ‘Mon logo’;
ods pdf;
proc print data=sashelp.class;
run;
ods pdf close;
ods listing;
2. Utiliser le style pour modifier la mise en page
L’image utilisée pour l’exemple est :
Pour changer la mise en page, il faut des styles. Les styles sont introduits par la lettre S. Afin que SAS fasse la différence entre un texte contenant la lettre S et un style, il faut faire précéder ce S d’un symbole.
Ici, l’accent circonflexe est choisi comme symbole précédent la lettre S pour définir un style. Pour le dire à SAS, il faut passer par l’instruction ODS ESCAPECHAR.
Les différents styles sont ensuite définis entre accolades.
title « ^S={} »;
Deux styles parmi d’autres :
- PREIMAGE= donnera le chemin d’accès à l’image.
- JUST= indiquera l’alignement du titre (LEFT pour la gauche, CENTER pour le milieur et RIGHT pour la droite).
ods escapechar=’^’;
ods listing close;
title « ^S={just=left preimage=’C:/sasref/logo.jpg’} »;
ods pdf file=‘C:/sasref/image_entete.pdf’;
proc print data=sashelp.class;
run;
ods pdf close;
ods listing;
Important : si vous rencontrez des difficultés avec une image au format .GIF, essayez avec une image au format JPG.
Cette syntaxe ne fonctionne pas avec ODS TAGSETS.EXCELXP.
3. Voir le résultat
Lectures complémentaires