Posts Tagged ‘title’

h1

Indenter ses titres et pieds-de-page dans un fichier PDF

août 2, 2009

Comment 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;

title_01_default

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;

title_02_linebreak

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;

title_03_indent

Lectures complémentaires

h1

Personnaliser l’apparence des titres et pieds-de-page dans un fichier.xls (ODS TAGSETS.EXCELXP et PROC TEMPLATE)

juillet 14, 2009

Après vous avoir présenté les options EMBEDDED_TITLES et EMBEDDED_FOOTNOTES dans l’article : Ajouter les titres et pieds-de-page dans une feuille de calcul du fichier .xls, je vous propose de personnaliser l’apparence de vos titres au moyen d’un nouveau style créé dans une instruction PROC TEMPLATE.

1. Créer un style personnaliser pour ses titres et pieds de page

Le nouveau style s’appelle XLS_TITL. Comme base, nous prenons un style existant sous SAS : STYLES.DEFAULT et faisont quelques modification au niveau des titres et pieds-de-page.

proc template;
define style styles.xls_titl;
parent=styles.rtf;

style systemtitle from systemtitle /
background=transparent
foreground=#000000
font_style=roman
font_weight = medium
font_size=18pt
font_face=‘Arial’;

style systemfooter from systemfooter/
background=transparent
foreground=#000000
font_style=roman
font_weight = medium
font_size=14pt
font_face=‘Arial’;

end;
run;

  • BACKGROUND modifie la couleur de font des cellules (voir l’article : choisir ses couleurs sous SAS). Notez que le mot TRANSPARENT ne fonctionne pas avec la version 1.86 de TAGSETS.EXCELXP mais avec certaines versions plus anciennes. Mettre à jour ses TAGSETS pour EXCELXP »
  • FOREGROUND modifie la couleur du texte
  • FONT_STYLE empêche l’inclinaison par défaut (enlever l’italique : roman, mettre en italic : italic)
  • FONT_WEIGHT enlève la côté gras présent par défaut (enlever les gras : medium, mettre en gras : bold)
  • FONT_SIZE défini la taille des caractères
  • FONT_FACE liste les polices à utiliser. Si plusieurs polices sont listées entre guillemets, la première disponible sur l’ordinateur sera retenue.

2. Appeler le style dans l’instruction ODS TAGSETS.EXCELXP

L’option STYLE= a été ajouté dans la première instruction ODS TAGSETS.EXCELXP . Elle est suivie du nom du style créé préalablement. Cela donne STYLE=XLS_TITL.

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/class.xls’ style=xls_titl
options(embedded_titles=‘yes’
embedded_footnotes=‘yes’);

title ‘Titre’;
footnote ‘Pied’;
ods tagsets.excelxp;

proc report data=sashelp.class nowd;
columns name age;
define name/display ‘Nom’;
define age /display ‘Age’;
run;

ods tagsets.excelxp close;
ods listing;

Pour le reste des explications concernant cette syntaxe, reportez-vous à l’article de la semaine dernière.

3. Voir le résultat

02_xls_title

Lectures complémentaires :

h1

Ajouter une date dans un nom de fichier Excel, Word…

mars 12, 2009

Sous SAS, en créant un fichier .xls ou .rtf avec la syntaxe de l’ODS (Output Delivery System), il est parfois pratique d’ajouter dans le nom du fichier une date. Par exemple : listing_20090311.xls.

Nous verrons ici plusieurs représentations de la date et de l’heure : afin d’avoir des noms triables par ordre chronologique, l’année apparaît avant le mois et le jour.

La syntaxe proposée, %SYSFUNC(fonction, format), s’utilise dans d’autres cas que la définition d’un nom de fichier (.rtf, .xls, …). De manière générale, elle sert à utiliser des fonctions en dehors d’une étape data ou d’une procédure. Par exemple, elle peut être ajoutée dans une instruction TITLE.

1. L’objectif pour un programme exécuté le 11 mars 2009

L’objectif de l’exemple qui suit est d’obtenir un fichier .xls nommé class_20090311.xls dont la date change selon le jour de sa création.

La version fixe se présente ainsi : un fichier .xls est créé au moyen de ODS TAGSETS.EXCELXP. Il contient les données du data set SASHELP.CLASS. La création d’un fichier dans la fenêtre OUTPUT est suspendu le temps de la création du fichier .xls au moyen de l’instruction ODS LISTING CLOSE et ODS LISTING.

ods listing close;
ods tagsets.excelxp file='C:/sasref/class_20090311.xls';
proc print data=sashelp.class;
run;
ods tagsets.excelxp close;
ods listing;

2. Ajouter de la flexibilité avec %SYSFUNC

A présent, la date est définie automatiquement au moyen de la macro fonction %SYSFUNC. Cette fonction est dans ce cas particulier composée de deux paramètres :

  • la date SAS extraite au moins de la fonction TODAY()
  • le format à appliquer sur cette date

Résoudre le contenu de la fonction %SYSFUNC grâce aux guillemets doubles : la fonction %SYSFUNC fait partie du langage macro. Dès lors, pour obtenir la résolution de son contenu, il faut utiliser des guillemets doubles.

Retrouver la date d’exécution du programme grâce aux fonctions TODAY() ou DATE () : La fonction TODAY() retourne la date SAS d’exécution du programme. Une alternative est la fonction DATE(). Dans les deux cas, la fonction ne contient pas de paramètre.

Le format YYMMDDn. pour écrire 20090311 : Le format YYMMDDn. est un sous-ensemble de la fonction YYMMDD composée de 8 caractères, sauf indication contraire, faisant apparaître :

  • l’année en premier,
  • suivi du mois en chiffre et
  • enfin du jour.

Ce format avec l’extension « n » a la particularité de ne pas utiliser de symbole ou espace séparatant le jour, du mois et de l’année. Les 8 caractères par défaut de la fonction laisse de la place à une année exprimée par 4 chiffres.

ods listing close;
ods tagsets.excelxp file="C:/sasref/class_%sysfunc(today(),yymmddn.).xls";
proc print data=sashelp.class;
run;
ods tagsets.excelxp close;
ods listing;

3. Tester d’autres formes d’affichage

3.1 Ajouter des tirets bas entre le jour, le mois et l’année grâce à la fonction TRANSLATE

class_2009_03_11.xls : pour avoir des tirets bas (underscore) entre le jour, le mois et l’année, il n’existe pas de format directement applicable. Une solution est alors d’utilise un autre symbole et de le remplacer avec la fonction TRANSLATE.

Ici le format YYMMDD10 retourne une date de la forme 20009-03-11. Les traits d’union (hyphen) sont remplacés par des tirets bas (underscore).

ods tagsets.excelxp file=« C:/sasref/class_%sysfunc(translate(%sysfunc(today(),yymmdd10.),’_’,’-‘)).xls »;

3.2 Ajouter une heure avec TIME() et PICTURE (class_20090311_113057.xls)

Quelle fonction pour l’heure ? : La fonction TIME() retourne l’heure sous la forme d’un time SAS.

Quels formats pour l’heure ? : Le format HHMM. retournera les heures et les minutes, tandis que le format TIME. retournera en plus les secondes. Dans les deux cas cependant, les heures avant 10h apparaissent avec seulement un chiffre : 9:30 et non 09:30. Un espace remplace le zéro manquant.

L’instruction PICTURE de PROC FORMAT pour un format personalisé : Une solution est de créer un format personalisé au moyen de l’instruction PICTURE (PICTURE statement). Comme les lettres H, M et S n’inclus pas de zéro devant (leading zero) pour les nombres à un chiffres, il faut les ajouter dans l’instruction PICTURE.

Note : %0S fait référence aux secondes. Il n’est obligatoire que si vous voulez des secondes dans votre texte final.

proc format;
   picture sasref other=‘%0H%0M%0S’ (datatype=time);
run;

Ensuite, 

  • pour une heure à quatre chiffres (heure + minutes) , il faudra préciser le nombre 4 dans l’appel du format.
  • pour une heures à six chiffres (heures + minutes + secondes), c’est 6 qui doit être ajouté

ods tagsets.excelxp file=« C:/sasref/class_%sysfunc(today(),yymmddn.)_%sysfunc(time(),sasref6.).xls »;

Lectures complémentaires sur http://www.sasreference.fr

ODS

Les fonctions

Les formats :

Les macros fonctions

h1

9 points pour personnaliser ses titres

mars 28, 2008

silhouettes

Ajouter un titre à vos tableaux et graphiques est simple avec l’instruction TITLE. Je vous rappelle la différence entre les guillemets simples et doubles. Je vous parle des méthodes pour aligner vos titres, etc. Vous saurez ensuite comment supprimer vos titres. Pour rendre vos titres un peu plus flexibles, je vous donne un tuyau (l’option NOBYLINE). Pour ce qui est d’un titre de tableau avec ODS RTF, je vous parle de l’option BODYTITLE. Et pour un titre de graphique, on parlera de l’option NOGTITLE. Bonne lecture.

1. Créer un titre : l’instruction globale TITLE permet d’ajouter un titre. Pour cela, on fait suivre le mot-clé du titre entre guillemets.

title ‘Mon titre’;

2. Créer plusieurs titres : SAS autorise jusqu’à 10 lignes servant de titre. Pour les distinguer, un numéro a été ajouté au mot-clé TITLE1-TITLE10. Ainsi TITLE est équivalent de TITLE1.

title1 ‘Mon premier titre’;
title2 ‘Mon second titre’;

title10 ‘Mon dixième titre’;

3. Supprimer un titre : Par défaut, SAS inscrit « The SAS System » comme titre de vos sorties. Pour l’enlever, vous pouvez soit réécrire dessus ou l’enlever définitivement avec une instruction TITLE vide. Notez que pas seulement le premier titre sera supprimé mais l’intégralité des titres définis.

title ;

4. Un titre sur une seule page d’éditeur : votre titre est long et vous avez besoin d’utiliser la barre de défilement horizontale de votre éditeur SAS pour le lire en entier. La solution est de couper votre titre.

title ‘Ma première partie’
      ‘Ma deuxième partie’
;

5. Guillemets simples ou doubles : pour alléger le programme, utilisez de préférence des guillemets simples. Dans certains cas, cependant, vous aurez besoin de guillemets doubles :

  • Résoudre une macro variable
  • Avoir un titre avec des apostrophes

title « Etude : &numero_etude. »;
title « Don’t do it »;

Une autre solution pour traiter les apostrophes est de mettre deux apostrophes simples l’une à coter de l’autre.

title ‘Don »t do it’;

6. Changer l’alignement : votre titre sera par défaut centré. Pour aligner à gauche, vous pouvez suspendre temporairement l’option globale de centrage (options nocenter; /*votre programme*/ options center). Vous pouvez aussi utiliser l’option pour justifier (j=). Celle-ci peut prendre trois valeurs :

  • j=l (left) pour aligner à gauche,
  • j=c (center) pour centrer,
  • j=r (right) pour aligner à droite.

7. Un texte à gauche et un texte à droite : vous pouvez aussi avoir sur une seule ligne plusieurs éléments à positionner : un à gauche, un à droite et un au milieu.

L’ancienne méthode : l’ancienne méthode consiste à assembler le texte de gauche, x blancs, le texte du milieu, y blancs et le texte de droite. Le tout faisant la largeur de la page. Pour cela un petit calcul s’impose.

  • On prend le nombre total de caractères sur la ligne (linesize).
  • La longueur des trois morceaux de texte y est soustraite.
  • Le reste est divisé par deux. Si on a un nombre impair, les deux textes blancs auront un espace de différence.

La nouvelle méthode : avec SAS 8.2 il existait une alternative, temporairement indisponible sous SAS 9.1.3 mais qui devrait redevenir disponible sous SAS 9.2 (cette année !).

title j=l ‘Mon texte de gauche (left)’
      j=c ‘Mon texte du milieu (center)’
      j=r‘Mon texte de droite (right)’;

En fait, l’option ‘justifié’ (j=) est toujours disponible sous SAS 9.1.3 mais seul le dernier est pris en considération par SAS. D’ici là, il ne vous reste plus que l’ancienne méthode.

8. Personnaliser son titre avec la valeur d’une BY variable : l’option globale BYLINE permet d’ajouter automatiquement un titre pour précisez la valeur d’une valeur BY variable. Par exemple, vous construisez un proc report…; by pop;… D’un côté vous avez la forme automatique avec BYLINE (Par Protocol). De l’autre, vous pouvez personnaliser votre titre (Population : Par Protocol).  Pour cela, on désactive l’option avec NOBYLINE (options nobyline;). Puis on utilise #byvar() et ou #byval() dans le titre. Soit on souhaite faire apparaître le nom de la BY variable soir la valeur de la BY variable. Dans le second cas, cette valeur est rendue parlante avec un format.

title ‘Population : #byval(pop)’;proc report …;
  by pop;
  …;
  format pop pop.;
run;

9. ODS RTF : lorsqu’on crée des documents RTF lisibles par Word, il faut pouvoir adapter les options par défaut des titres pour répondre à ses besoins.

Un titre de tableau dans le corps du document : par défaut les titres d’un tableau sont inclus dans les entêtes du document RTF. Pour qu’il fasse partie intégrante du corps du document, on ajoute l’option BODYTITLE.

Un titre de graphique dans le corps du document : par défaut les titres des graphiques sont inclus dans l’image graphique générée par SAS. Pour que cela ne soit plus le cas, on ajoute l’option NOGTITLE dans l’instruction ODS RTF.