PROC TEMPLATE : modifier le style d`un rapport SAS

Transcription

PROC TEMPLATE : modifier le style d`un rapport SAS
PROC TEMPLATE : MODIFIER LE STYLE D’UN RAPPORT SAS
Cet article traite de la création et de la modification de
styles personnalisés à l’aide de la PROC TEMPLATE et du
tagsets style_popup.
Après avoir créé un style personnalisé, nous verrons
comment définir par défaut ses attributs, grâce à
l’héritage. Nous verrons aussi comment intégrer un logo
à une sortie SAS.
Caractéristiques :
Catégories : ODS
OS : Windows, Unix, z/OS
Version : SAS® 9.4
Vérifié en février 2014
Sommaire
1.
Concepts.................................................................................................................... 1
1.1.
L’ODS................................................................................................................... 1
1.2.
Les styles ............................................................................................................. 2
1.3.
Les attributs de styles ............................................................................................ 3
1.4.
Héritage de styles .................................................................................................. 3
2.
Exemples ................................................................................................................... 4
2.1.
La PROC TEMPLATE ................................................................................................ 4
2.2.
Héritage d’attributs ................................................................................................ 5
3.
Les Attributs et le tagsets style_popup .......................................................................... 6
3.1.
Déclaration du tagsets style_popup .......................................................................... 6
3.2.
Utilisation du tagsets style_popup ............................................................................ 6
3.3.
Modification des styles obtenus via le tagsets popup .................................................. 8
3.4.
Insertion d’un logo ................................................................................................ 11
4.
En cas de problème .................................................................................................... 11
4.1.
Les problèmes les plus fréquents ............................................................................ 11
4.2.
Eléments à transmettre au Support Clients .............................................................. 12
5.
Liens utiles ................................................................................................................ 12
1.
CONCEPTS
1.1.
L’ODS
L’ODS ou « Output Delivery System » est le moteur de sorties des rapports SAS. Toutes les
procédures SAS l’utilisent pour produire leur sorties.
L’ODS désigne sous quel format sera stocké le rapport SAS.
Les ODS disponibles sont les suivants :

HTML (ODS par défaut depuis SAS 9.3)

Liste SAS

Table SAS

RTF

PDF

Imprimantes PCL / PostScript / (PDF)

XML
Par exemple pour qu’un rapport soit produit, l’instruction « ods » doit « encapsuler » le code SAS :
ods html file= "c:\temp\rapport.html";
proc freq data=sashelp.class;
table sex;
run;
ods html close;
Février 2014
-1-
Support Clients SAS France
Dans le code ci-dessus, la sortie ci-dessous est redirigée vers un fichier HTML, rapport.html. L’ODS
se charge de créer le code HTML.
Le même code utilisant l’ODS PDF va créer un rapport qui sera enregistré dans le format PDF avec,
ici, pour nom de fichier rapport.pdf.
ods pdf file= "C:\temp\rapport.pdf";
proc freq data=sashelp.class;
table sex;
run;
ods pdf close;
1.2.
Les styles
Un style décrit l’aspect visible d’un rapport SAS. Il s’agit entre autres :
de la taille et la couleur du texte
des marges
de la police
des bordures de tableau
des couleurs de fond de page
Lorsqu’une session SAS est ouverte, si une option de style personnalisé n’est pas spécifiée, SAS
utilisera le style par défaut. Pour connaître la bibliothèque, le nom et l’emplacement du style par
défaut, il faut exécuter la commande suivante :
ods path show;
Dans le journal (og) s’affichera :
1
ods path show;
La liste ODS PATH actuelle est :
1. SASUSER.TEMPLAT(UPDATE)
2. SASHELP.TMPLMST(READ)
Le magasin des styles de l’utilisateur est SASUSER.TEMPLAT
Le magasin des styles par défaut est SASHELP.TMPLMST
Février 2014
-2-
Support Clients SAS France
A noter que pour deux styles portant le même nom, c’est celui présent dans la première bibliothèque
listée qui sera utilisé.
Pour spécifier une autre bibliothèque contenant les styles personnalisés, il est possible d’utiliser le
code suivant :
LIBNAME MALIB "C:\templates\";
ODS PATH MALIB.TEMPLATE (UPDATE)
SASHELP.TMPLMST (READ);
1.3.
Les attributs de styles
Les styles SAS sont constitués d’une liste de paramètres appelés attributs. Les valeurs des attributs
de style définissent le style auxquels ils appartiennent. Un style SAS est donc un ensemble de
clés/valeurs.
Pour visualiser les attributs d’un style, il est possible d’exporter ce style vers du code SAS via le code
suivant :
PROC TEMPLATE;
SOURCE STYLES.DEFAULT /
FILE="C:\temp\STYLE_DEFAULT.SAS";
RUN;
Dans l’exemple précédent, le fichier STYLE_DEFAULT.SAS contiendra la liste des classes et des
attributs du style STYLES.DEFAULT.
define style Styles.Default;
class fonts
"Fonts used in the default style" /
'TitleFont2' = ("<sans-serif>, Helvetica, sans-serif",4,bold italic)
'TitleFont' = ("<sans-serif>, Helvetica, sans-serif",5,bold italic)
…
Dans cet exemple nous pouvons constater que les attributs de style de TitleFont sont : ("<sans-
serif>, Helvetica, sans-serif",5,bold italic).
1.4.
Héritage de styles
Dans la source SAS du style C:\temp\STYLE_DEFAULT.SAS nous constatons que le style
STYLES.DEFAULT est constitué de plusieurs classes : class fonts, class GraphFonts, class color_list,
etc.
Extrait de la source C:\temp\STYLE_DEFAULT.SAS
define style Styles.Default;
class fonts
"Fonts used in the default style" /
'TitleFont2' = ("<sans-serif>, Helvetica, sans-serif",4,bold italic)
'TitleFont' = ("<sans-serif>, Helvetica, sans-serif",5,bold italic)
[…]
'headingFont' = ("<sans-serif>, Helvetica, sans-serif",4,bold)
'docFont' = ("<sans-serif>, Helvetica, sans-serif",3);
class GraphFonts
"Fonts used in graph styles" /
'GraphDataFont' = ("<sans-serif>, <MTsans-serif>",7pt)
[…]
'GraphAnnoFont' = ("<sans-serif>, <MTsans-serif>",10pt);
class color_list
"Colors used in the default style" /
'fgB2' = cx0066AA
[…]
Février 2014
-3-
Support Clients SAS France
'bgA' = cxE0E0E0;
class colors
"Abstract colors used in the default style" /
[…]
Le principe d’héritage désigne la réutilisabilité des caractéristiques d’un objet parent par ses
descendants.
A partir d’un objet StyleParent comportant deux attributs « Couleur=Bleu » et « Forme=Rond », il
est possible de déclarer un objet StyleEnfant qui va hériter des attributs de son père. Ensuite ces
attributs hérités seront modifiés dans le code avec par exemple « Couleur = rouge ».
Dans cet exemple les attributs de StyleEnfant décriront donc un rond rouge.
Ainsi, il est possible de déclarer le style par défaut dans un premier temps via la PROC TEMPLATE et
ensuite d’attribuer uniquement les nouvelles valeurs des attributs qui nous intéressent.
Cette méthode a l’avantage de ne pas déclarer à nouveau un style qui existe déjà et donc permet de
simplifier le code et d’économiser les ressources.
2.
EXEMPLES
2.1.
La PROC TEMPLATE
Dans l’éditeur de SAS, nous allons d’abord déclarer un style avec un nom personnalisé.
Le code ci-après définit le style « SupportSASF». Il ne contient aucun attribut de style. Il sera stocké
dans SASUSER.TEMPLAT comme nous l’avons vu plus haut. Ce style n’hérite pour l’instant de rien.
Code 0 :
proc template;
define style Styles.SupportSASF;
end;
run;
Le code 1 produit une sortie HTML à laquelle est appliqué le style sans attributs :
Code 1:
ods html file="c:\temp\supportsas.htm"
title 'Class Fréquences' ;
footnote 'Article Support SAS France';
proc freq data=sashelp.class;
tables sex age;
run;
ods html close;
style=Styles.SupportSASF;
Résultat :
Février 2014
-4-
Support Clients SAS France
L’aspect est donc celui des objets HTML par défaut.
La prochaine étape sera d’ajouter des attributs au style SupportSASF.
2.2.
Héritage d’attributs
La méthode la plus simple pour personnaliser le style d’un rapport est d’appliquer d’abord un style
par défaut et ensuite de ne modifier que certains attributs. C’est l’héritage d’attributs comme nous
l’avons décrit précédemment.
Pour faire hériter votre style des attributs d’un autre style, il faut utiliser l’affectation suivante :
parent=Styles.HTMLBlue ;
Le style HTMLBlue est le style standard de SAS.
Le code complet de la PROC TEMPLATE héritant de Styles.HTMLBlue est le suivant :
proc template;
define style Styles.SupportSASF;
parent=Styles.HTMLBlue;
end ;
run ;
Désormais le code 1 vu précédemment produira la sortie suivante :
Février 2014
-5-
Support Clients SAS France
3.
LES ATTRIBUTS ET LE TAGSETS STYLE_POPUP
Maintenant que nous avons notre propre style (Styles.SupportSASF), il s’agit de le personnaliser.
Pour cela nous allons utiliser le tagsets « style_popup ». Ce tagsets permet de survoler les zones du
rapport et de visualiser sous forme de popup le nom d’attribut de la zone. Ce tagsets ne fonctionne
qu’avec Internet Explorer. Il permet de visualiser rapidement les attributs d’un rapport, leurs nom
et valeurs. C’est un outil d’aide au développement. Il fonctionne avec Internet Explorer 9 pour SAS
9.3 et le result viewer de SAS 9.4.
3.1.
Déclaration du tagsets style_popup
Code complet issu de la section précédente :
Code 2:
proc template;
define style Styles.SupportSASF;
parent=Styles.HTMLBlue;
end ;
run ;
ods html file='c:\temp\supportsas.htm' style=Styles.SupportSASF;
title 'La PROC Template' ;
footnote 'Article Support SAS France' ;
proc freq data=sashelp.class;
tables sex age;
run;
ods html close ;
L’activation du tagsets popup se fait en remplaçant l’ods html du code 2 par l’ods
tagsets.style_popup soit :
ods tagsets.style_popup file='popup.html';
L’ods html doit être mis en commentaire, ainsi le code est le suivant :
code 3 :
proc template;
define style Styles.SupportSASF;
parent=Styles.HTMLBlue;
end ;
run ;
ods tagsets.style_popup file='popup.html';
*ods html file='c:\temp\supportsas.htm' style=Styles.SupportSASF;
title 'La PROC Template';
footnote 'Article Support SAS France' ;
proc freq data=sashelp.class;
tables sex age / nocum;
run;
ods html close ;
3.2.
Utilisation du tagsets style_popup
A l’exécution de ce code la sortie n’affiche pas le style du code mais un style par défaut. Peu importe
les couleurs, l’important est de constater que le survol d’une zone avec la souris affiche le nom de
cette zone.
Février 2014
-6-
Support Clients SAS France
Si vous cliquez sur la zone, une fenêtre popup s’ouvre avec le code des attributs de style disponibles
pour cette zone.
Les principales zones que distingue le tagsets_popup sont :
-
BODY : La page du rapport
SYSTEMTITLE : Le titre du rapport
PROCTITLE : Le nom de la procédure qui crée le rapport
BRANCH (n’a pas d’attributs de style)
TABLE : Le tableau de résultats du rapport
HEADER : Les titres des colonnes
ROWHEADER : La colonne N° d’observation des lignes du rapport
DATA : Une cellule du rapport
SYSTEMFOOTER : Le pied de page du rapport
Février 2014
-7-
Support Clients SAS France
3.3.
Modification des styles obtenus via le tagsets popup
Lorsque vous cliquez sur une zone et que le pop-up s’affiche, copiez le code (n’oubliez pas de copier
le ; sous l’attribut BACKGROUND) et collez-le dans votre proc template sous la fonction d’héritage.
Voici le code de la proc template après avoir cliqué sur la zone header :
Code 4 :
proc template;
define style Styles.SupportSASF;
parent=Styles.HTMLBlue;
STYLE header /
FONT_FACE = "Arial, Helvetica, sans-serif"
FONT_SIZE = 4
FONT_WEIGHT = bold
FONT_STYLE = roman
FOREGROUND = cx0033aa
BACKGROUND = cxb0b0b0;
end ;
run ;
Nous allons changer
l’attribut police Arial par Calibri,
la valeur de l’attribut FOREGROUND par cxFFFFFF
et la valeur de l’attribut BACKGROUND par cx6495ed
Le code de la proc template devient ainsi :
Code 5 :
proc template;
define style Styles.SupportSASF;
parent=Styles.HTMLBlue;
STYLE header /
FONT_FACE = "calibri, Helvetica, sans-serif"
FONT_SIZE = 3
Février 2014
-8-
Support Clients SAS France
FONT_WEIGHT = bold
FONT_STYLE = roman
FOREGROUND = cxffffff
BACKGROUND = cx6495ed;
end;
run ;
Exécutez le code 1, l’aspect visuel du rapport aura changé en ceci :
Conseil : pour supprimer le sous-titre, insérez « ods noproctitle; » en début de code. Ainsi le soustitre « The FREQ Procedure » sera supprimé.
Répétez l’opération sur les autres attributs de la sortie. Au final nous obtenons un code SAS modifié
comme suit :
ods noproctitle;
proc template;
define style Styles.SupportSASF;
parent=Styles.HTMLBlue;
STYLE header /
FONT_FACE = "calibri, Helvetica, sans-serif"
FONT_SIZE = 3
FONT_WEIGHT = bold
FONT_STYLE = roman
FOREGROUND = cxffffff
BACKGROUND = cx6495ed;
STYLE systemtitle /
FONT_FACE = "Arial, Helvetica, sans-serif"
FONT_SIZE = 4
FONT_WEIGHT = bold
FOREGROUND = cx002288
;
STYLE proctitle /
FONT_FACE = "Arial, Helvetica, sans-serif"
FONT_SIZE = 4
FONT_WEIGHT = bold
FOREGROUND = cx002288
;
STYLE table /
FONT_FACE = "calibri, Helvetica, sans-serif"
Février 2014
-9-
Support Clients SAS France
FONT_SIZE = 3
FONT_WEIGHT = medium
FONT_STYLE = roman
FOREGROUND = cx002288
BACKGROUND = cxf0f0f0
BORDERWIDTH = 1
CELLSPACING = 1
CELLPADDING = 7
FRAME = BOX
RULES = GROUPS
;
STYLE systemfooter /
FONT_FACE = "calibri, Helvetica, sans-serif"
FONT_SIZE = 5
FONT_WEIGHT = bold
FOREGROUND = cx002288
;
end;
*ods tagsets.style_popup file='popup.html';
ods html file='c:\temp\supportsas.htm' style=Styles.SupportSASF;
title 'La PROC Template' ;
footnote 'Article Support SAS France' ;
proc freq data=sashelp.class;
tables sex age;
run;
ods html close ;
Ce code produira la sortie ci-dessous:
Février 2014
- 10 -
Support Clients SAS France
3.4.
Insertion d’un logo
Il est possible d’insérer un logo dans un bas de page en renommant l’attribut du rapport footnote en
footnote1 et en ajoutant un footnote2. Footnote2 sera du code HTML standard :
footnote1 'Article Support SAS France' ;
footnote2 '<IMG SRC="http://www.sas.com/images/logos/SAS_TPTK_logo.gif">';
Ces deux instructions produiront la sortie SAS ci-dessous:
4.
EN CAS DE PROBLÈME
4.1.
Les problèmes les plus fréquents
Les templates personnalisés sont stockés dans la table SASUSER.TEMPLAT.
Pour supprimer un template, vous pouvez utiliser le code suivant :
proc template;
delete Styles.SupportSASF;
run;
277
278
proc template;
delete Styles.SupportSASF;
Février 2014
- 11 -
Support Clients SAS France
NOTE: 'Styles.SupportSASF' has been deleted from: SASUSER.TEMPLAT
Et le code ci-dessous supprime tous les templates personnalisés :
ods path sashelp.tmplmst(read);
proc datasets library=sasuser nolist;
delete templat(memtype=itemstor);
run;
ods path sasuser.templat(update) sashelp.tmplmst(read);
281
282
283
284
ods path sashelp.tmplmst(read);
proc datasets library=sasuser nolist;
delete templat(memtype=itemstor);
run;
NOTE: Deleting SASUSER.TEMPLAT (memtype=ITEMSTOR).
285 ods path sasuser.templat(update) sashelp.tmplmst(read);
4.2.
Eléments à transmettre au Support Clients
Si vous rencontrez des problèmes lors de l’usage de templates personnalisés, vous pouvez nous
écrire à mailto:[email protected], en attachant à votre message le programme de création du style,
la sortie obtenue, l’erreur reçue, et le journal SAS.
Vous pouvez suivre la méthode EMITS, détaillée ICI.
5.
LIENS UTILES
Documentation SAS 9.4 sur la Proc Template :
SAS(R) 9.4 Output Delivery System: User's Guide, Second Edition
Proc template Tables Tip Sheet
Styles Proc Template Styles Tip Sheet
Reporting procedure styles Tip sheet
Bertrand d’Hérouville
Consultant Support Clients SAS France
Février 2014
- 12 -
Support Clients SAS France