h1

Protégé : Newsletter Novembre : Solution

novembre 3, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Protégé : Newsletter Novembre : Exercice

novembre 3, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Sponsor et CRO : Réunion de début d’étude détaillée

novembre 2, 2009

Dans le monde pharmaceutiques deux termes reviennent fréquemment : sponsor qui développent les médicaments et CRO (clinical research organisation) vers lesquelles sont externalisées une partie des études. A ces termes est souvent associé la question : comment améliorer la collaboration entre les deux. Ce fût en tous les cas le sujet de plusieurs interventions lors de la conférence annuelle PHUSE (Pharma SAS Users) de Bâle (Suisse) en octobre.

Voici quelques notes prises lors de PHUSE sur la réunion de début d’étude entre sponsor et CRO. Cette réunion est l’occasion d’établir un premier contact entre les intervenants de l’étude. Mais elle peut aussi permette de clarifier certains points. Un agenda détaillé pourra optimiser votre temps :

  • Donner une vue d’ensemble sur le projet et des informations propres à l’étude
  • Citer les problèmes potentiels déjà envisagés
  • Fournir des détails sur le processus suivi par le sponsor pour conduire une étude
  • Expliquer les objectifs que doivent servir les documents à fournir au sponsor
  • Clarifier les dates à respecter des deux côtés
  • Préciser les ressources humaines et technologiques nécessaires des deux côtés
  • Débuter un document traçant les décisions prises

tracking_decisions

Vous avez des suggestions pour améliorer ces réunions, ajoutez un commentaire sur le forum.

h1

Samedi Emploi – 3 postes à Munich et 1 poste à la Hague (6 mois)

octobre 31, 2009

L’agence de recrutement Beezen Services recherche 3 profils SAS pour Munich (Allemagne) et 1 expert SAS pour la Hague (Pays-Bas) dans le cadre de missions de 6 mois  (1er janvier – 30 juin 2010).

beezen_services_logo

Pour postulez, contactez, en France, Madame Desprez : clementine.desprez@beezen.fr, +33 (0)1 55 90 67 05.

Merci de citer le blog lors lors de votre candidature.


1. Trois positions à Munich (Allemagne)

  • 2 SAS experts with experience in Base, Stat, Graph, ODS and Enterprise Guide and preferably experience with MS Office Add-in.
  • 1 Senior SAS expert with DI studio and Mainframe knowledge and preferably knowledge of SPM, ABM and SAP Data Surveyor

2. Une position à la Hague (Pays-Bas)

  • 1 Senior SAS expert with DI studio and Mainframe knowledge

3. Votre contact

Clémentine DESPREZ
Beezen Services
Resources Manager
Mobile Phone: +33 (0)6 59 40 34 81
20 Avenue André Malraux
92300 Levallois-Perret
France
clementine.desprez@beezen.fr

h1

Devenir Correspondant pour le blog

octobre 29, 2009

Que vous soyez à Casablanca, Genève, Québec ou Grenoble,…, devenez le correspondant de votre ville pour le blog www.sasreference.fr. Pour plus d’informations, contactez veronique.bourcier@ sasreference.fr.

La liste de nos correspondants

Entrez en contact avec votre correspondant et développez des échanges de proximité.

Suisse, Lausanne : Cédric MABIRE

 

www.facebook.com/cedric.mabir

cedric.mabire@gmail.com

cedric_mabire_correspondant_lausanne
Tunisie, Tunis : Achraf MRABET

 

chorfan@gmail.com

Profil Viadeo

profil sas tunis tunisie
France, Marseille : François SEMECURBE

 

francois.semecurbe@insee.fr

Profil Facebook

Sémécurbe Francois profil sas marseille
h1

Entretien avec Susan Slaughter et Lora Delwiche, auteurs de The Little SAS Book (partie 1)

octobre 19, 2009

Susan Slaughter (www.avocetsolutions.com) et Lora Delwiche sont les auteurs du livre The Little SAS Book: A Primer et The Little SAS Book for Enterprise Guide 4.1. Pour vous, elles ont accepté de répondre à mes questions. Voici donc un entretien à distance entre Europe et Etats-Unis. La première section est la version originale. La seconde est ma traduction en français.


Cet entretien sera publié en trois fois, une par mois. Cette première partie s’intéresse à The Little SAS Book: A Primer.

A dans un mois pour découvrir la seconde partie de cet entretien ou inscrivez-vous à la newsletter pour recevoir l’intégralité de l’article dès à présent (envoyer un email à veronique.bourcier@sasreference.fr avec Inscription Newsletter dans l’objet).

1. Partie 1, Version originale : The Little SAS Book: A Primer

Véronique: Hi Susan, Hi Lora,

I’m really pleased having this interview with both of you today and get the chance to present your work to French speaking SAS users.

To start with I’d like to talk about The Little SAS Book: A Primer which, I would say, is your main team achievement. Please feel free to correct me if needed.

14 years have gone by and The Little SAS Book: A Primer keeps being a reference book with more than 219,000 copies sold around the world. One of my colleagues has just started reading the one I had lent her and she said to me shortly after: ‘I like it. It is easy to read and it is even funny. Can I take it home?’. So what key features of The Little SAS Book do you think make it a success?

Susan: We think the two-page format is really important. It allows you to see a whole topic at once which makes it easier to learn. Also our examples are complete so you can type them in and run them, and we try to avoid using jargon.

Lora: Susan and I have both taught SAS programming, and helped other programmers, so we think this helped us write the book in a way that new SAS users could understand. We also tried to select the most useful topics for our book, covering most of the topics a SAS programmer will need.

Véronique: Now SAS online documentation and lots of good SAS papers are available for free on the net. What, would you say, makes The Little SAS Book still a valuable purchase?

Lora: You are right, there are a lot of good papers available online, but it would be difficult and time consuming to gather together all the information you need using papers alone. Our book has all the important topics together in one place and it is presented in a consistent manner.

Susan: Yes, and the SAS documentation is huge. That’s why we wrote The Little SAS Book: A Primer in the first place. When we wrote the first edition, the SAS Language Reference manual was 4.5 cm thick and weighed 2 kg, and many SAS programmers had shelves full of SAS books that size. Now the documentation is online so our bookshelves are less full, but the documentation is even bigger than before. It can be hard to find information in the online documentation, especially if you are a beginning SAS programmer.

Véronique: You or your publisher has decided to get The Little SAS Book on Google Books (A Primer, for Enterprise Guide 4.1). What made you decide to do so? To which extend do you think it affects your sales?

Lora: SAS Publishing handles marketing for our book, so we asked our editor this question. Here is her reply:

“Google is one of the most popular search engines on the internet. When Google began their book search program, we were very excited to be able to participate. We feel that Google Book Search offers a unique opportunity to publishers and authors in gaining additional exposure for their books. When a SAS user enters a keyword in the search, our books can surface as resources for them. Given that SAS users rely so heavily on SAS Press books and SAS documentation, we felt very strongly that SAS Press books and SAS documentation should surface in the Google search and added them in 2004.”

We have no information on how this affects our sales.

Véronique: You have decided in your last edition (4th Edition, 2008) to present some SAS 9.2 functionalities and especially SAS/Graph functionalities. The Little SAS Book: A Primer has always been focusing on basic SAS programming skills. Why do you think graphics are nowadays a basic skill requirement?

Susan: Graphics have always been important, and we always wanted to include them in our book. However, we felt that traditional SAS/Graph® was too complex for The Little SAS Book. ODS Graphics is much simpler. Since we already have a chapter on ODS, it was easy to add ODS Graphics.

2. Partie 1, Traduction en français: The Little SAS Book: A Primer

Véronique : Bonjour Susan, bonjour Lora,

Je suis ravie de réaliser cet entretien avec vous aujourd’hui et d’avoir la chance de présenter votre travail aux utilisateurs de SAS francophones.

Pour commencer, j’aimerais parler de votre livre The Little SAS Book: A Primer qui, je dirais, est votre principale réalisation en équipe. Soyez libre de me corriger si besoin est.

14 ans se sont écoulés et The Little SAS Book: A Primer continue d’être un livre de référence avec plus de 219 000 exemplaires vendus dans le monde. Une de mes collègues vient de débuter la lecture d’un exemplaire que je lui ai prêté et elle m’a dit peu après : « Je l’aime bien. C’est facile à lire et c’est même drôle. Est-ce que je peux le ramener à la maison ? ». Donc, selon vous, quels sont les éléments qui font de The Little SAS Book un succès ?

Susan : Nous pensons que le format deux pages est très important. Cela vous permet de voir l’intégralité du sujet d’un seul coup d’œil qui rend plus facile l’apprentissage. De plus, nos exemples sont dans leur intégralité de sorte que vous pouvez les saisir et les exécuter, et nous essayons d’éviter l’usage de jargon.

Lora : Susan et moi avons enseigné la programmation sous SAS, et aidé d’autres programmeurs. Donc nous pensons que cela nous aide à écrire le livre d’une manière que les nouveaux utilisateurs de SAS peuvent comprendre. Nous essayons aussi de sélectionner les sujets les plus utiles pour notre livre, en couvrant le plus de sujets qu’un programmeur aura besoin.

Véronique : Aujourd’hui, la documentation en ligne de SAS et beaucoup de bons articles sur SAS sont disponibles gratuitement sur le net. Selon vous, qu’est-ce qui rend l’achat de The Little SAS Book toujours intéressant ?

Lora : Vous avez raison. Il y a beaucoup d’articles de qualité disponibles en ligne, mais cela serait difficile et mangeur de temps de rassembler toutes les informations dont vous avez besoin en utilisant les articles seulement. Notre livre a tous les sujets importants rassemblés dans un endroit et c’est présenté de manière consistante.

Susan : Oui, et la documentation SAS est énorme. C’est pour cela que nous avons écrit The Little SAS Book en premier lieu. Quand nous avons rédigé la première édition, le manuel SAS Language Reference était épais de 4,5 cm et pesait 2 kg, et beaucoup de programmeurs SAS avait des étagères pleines de livres SAS de cette taille. Maintenant la documentation est en ligne. Donc nos étagères sont moins remplies, mais la documentation est encore plus importante qu’avant. Cela peut être difficile de trouver l’information dans la documentation en ligne, en particulier si vous êtes un programmeur SAS débutant.

Véronique : Vous ou votre éditeur a décidé de mettre The Little SAS Book sur Google Books (A Primer, for Enterprise Guide 4.1). Qu’est-ce-qui vous a décidé à faire cela ? Dans quelle mesure pensez-vous que cela affecte vos ventes ?

Lora : SAS Publishing se charge du marketing pour notre livre. Donc, nous avons posé à notre éditeur cette question. Voici sa réponse :

“Google est le plus populaire moteur de recherche sur Internet. Quand Google a commencé son programme de recherche de livres, nous étions très excités de pouvoir y participer. Nous avons le sentiment que Google Book Search offre une opportunité unique aux éditeurs et aux auteurs de gagner une exposition supplémentaire pour leurs livres. Quand un utilisateur SAS entre un mot-clé dans la recherche, nos livres peuvent se dégager comme ressource pour eux. Etant donné que les utilisateurs SAS font si confiance aux livres de SAS Press et à la documentation SAS, nous avons eu le sentiment profond que les livres de SAS Press et la documentation SAS doivent se dégager de la recherche sur Google et nous les avons ajoutés en 2004.”

Nous n’avons par d’information sur la manière donc cela affecte nos ventes.

Véronique : Vous avez décidé dans votre dernière édition (4ème édition, 2008) de présenter certaines fonctionnalités de SAS 9.2 et en particulier des fonctionnalités de SAS Graph. The Little SAS Book a toujours été centré sur des compétences de programmation SAS de base. Pourquoi pensez-vous que les graphiques sont de nos jours une compétence de base requise ?

Susan: Graphique ont toujours été important, et nous avons toujours voulu les inclure dans notre livre. Cependant, nous avions le sentiment que le SAS/Graph® traditionnel était trop complexe pour The Little SAS Book. ODS Graphics est beaucoup plus simple. Vu que nous avons déjà un chapitre sur ODS, c’était facile d’ajouter ODS Graphics.

A dans un mois pour découvrir la seconde partie de cet entretien en trois parties ou inscrivez-vous à la newsletter pour recevoir l’intégralité de l’article dès à présent (envoyer un email à veronique.bourcier@sasreference.fr avec Inscription Newsletter dans l’objet).

h1

Créer une variable numérique à partir d’une variable caractère (fonctin INPUT avec point d’interrogation)

octobre 17, 2009

Vous avez des nombres et du texte sauvegardés dans une variable caractère dans une table sAS et vous voulez sauvegarder les données numériques dans une variable numérique sans avoir dans la log une indication d’erreur (_ERROR_=1) pour les valeurs non compatibles. Comment adapter la fonction INPUT ?

1. Les données pour l’exemple

Pour l’exemple,  nous avons un dataset appelé CHAR avec une variable caractère, X_CHAR et 5 observations.

data char;
length x_char $10;
input x_char $ 1-10;
datalines;
-1.3
- 5
5.3.2
18.9
AB
;
run;

2. Le résultat attendu

Nous voudrons que la première et la quatrième observation soient converties en nombre. En effet,les trois autres valeurs ne sont pas convertibles.

  • La seconde observations est non valide à cause de l’espace séparant le signe moins et le nombre 5.
  • La troisième observation a plus d’un point
  • La dernière observation est un texte.

3. La version traditionnelle

La fonction INPUT permet de passer d’une variable caractère à une variable numérique. Elle est composée de deux paramètres : le nom de la variable caractère à convertir (ou une valeur entre guillemets) et l’informat qui permet d’interpréter les valeurs de la variable.

data char_num;
set char;
x_num=input(x_char,20.6);
run;

Malheureusement, SAS n’est pas totalement satisfait de cette action pour les valeurs ne répondant pas aux critères de l’informat.

input_withoutquestionmark

4. Une log propre grâce au point d’interrogation

Le double point d’interrogation précédent le nom de l’informat empêchera la log d’avoir la note. Bien sûr, cela n’a d’intérêt que si vous avez de bonnes raisons d’ignorer ce message d’erreur. Le cas contraire, vérifiez vos données.

data char_num;
set char;
x_num=input(x_char,??20.6);
run;

Note : si la fonction INPUT est utilisée dans l’option de data set WHERE, un WARNING apparaît.

data char_num ;
set char (where=(input(x_char,20.6)=18.9));
run;

input_warning

Ce warning ne peut être enlevé avec le point d’interrogation. Il crée même une erreur dans la log.

input_error

Lecture complémentaire

h1

Protégé : Newsletter Octobre : Solution

octobre 8, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Protégé : Newsletter Octobre : Exercice

octobre 8, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Les titres de la Newsletter d’octobre

octobre 6, 2009

La newsletter est un moyen simple d’avoir, une fois par mois, une vue d’ensemble de l’actualité de votre blog SAS. Voici les titres de l’édition de septembre.

  1. Les derniers articles : liste des articles parus en juillet avec un court descriptif
  2. Il y a un an sur le blog : lien vers les articles publiés il y a un an.
  3. Les nouvelles du forum : résumé des interventions faites sur le forum du blog
  4. Les commentaires : messages ajoutés en suite à la publication d’articles
  5. L’exercice du mois : mot de passe pour accéder à l’exercice du mois et sa solution
  6. Emploi : résumé des CVs et offres d’emploi actuellement diffusés sur le blog
  7. Concours : les nouvelles du concours proposé par le blog cette année.
  8. Agenda : récapitulatif des événements SAS de deux prochains mois
  9. Interview en avant-première : entretien avec Susan Slaughter et Lora Delwiche auteurs du livre The Little SAS Book: A Primer.

Pour s’inscrire, il vous suffit d’écrire un email à veronique.bourcier@sasreference.fr avec en objet Inscription Newsletter.

h1

Ajouter des liens hypertextes dans vos fichiers PDF

octobre 4, 2009

Dans 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.

hyperlink_toc

hyperlink_main

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;

h1

Appeler une macro d’un catalogue permanent

septembre 27, 2009

Dans l’article “Sauvegarder une macro au delà d’une session“, vous avez vu comment créer un catalogue permanent pour macro. Ici, je vous propose d’appeler une macro contenue dans un de ces catalogues.

1. Rappel : ajouter une entrée dans un catalogue pour macro

libname sasref ‘C:/sasref’;
options sasmstore=sasref mstored;

%macro perm_macro /store;
proc print data=sashelp.class;
run;
%mend perm_macro;

2. Appeler une macro compilée

Les options globales qui indique la position d’un catalogue pour macros sont MSTORED et SASMSTORE= où SASMSTORE est suivi du nom de la bibliothèque.

libname sasref ‘C:/sasref’;
options mstored sasmstore=sasref;
%perm_macro;

Lectures complémentaires

h1

Lire le contenu d’un catalogue pour macros

septembre 24, 2009

Dans l’article “Sauvegarder une macro au delà d’une session“, vous avez vu comment créer un macro catalogue permanent. Ici, je vous propose de voir comment savoir quelles macros sont contenues dans ce fichier.

1. Rappel : ajouter une entrée dans un catalogue pour macros

Dans l’étape qui suit, la macro PERM_MACRO a été sauvée dans un catalogue pour macro. Le nom par défaut d’un catalogue pour macro est SASMACR. Celui-ci a été sauvegardé dans la bibliothèque SASREF.

libname sasref ‘C:/sasref’;

options sasmstore=sasref mstored;

%macro perm_macro /store;
proc print data=sashelp.class;
run;
%mend perm_macro;

2. Voir le contenu d’un catalogue pour macro

A présent, la procédure catalogue et plus particulièrement l’instruction CONTENTS permet de lire le contenu de SASMACR.

La procédure CATALOG  peut être composée de plusieurs étapes. Pour voir le résultat en séquence de ces étapes une instruction RUN est ajoutée entre chacune d’elle. Un QUIT en fin de procédure permet de clore la procédure.

Ici comme une seule étape est requise, seul un RUN apparaît. Il est donc possible, dans ce cas précis de se contenter d’un QUIT.

  • Avec RUN et QUIT, REAL et CPU times sont de 0.01 secondes.
  • Avec seulement QUIT, REAL TIME=0.04 secondes et CPU TIME=0.00 secondes.

libname sasref ‘C:/sasref’;

proc catalog catalog=sasref.sasmacr;
contents;
run;
quit;

Ce contenu est affiché dans la fenêtre OUTPUT de SAS. Voir le résultat :

content_macro_catalog

Lectures complémentaires

h1

Passer par un format pour changer les couleurs d’une cellule dans un tableau (PROC REPORT et ODS)

septembre 17, 2009

Dans 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

color_format

Lectures complémentaires

Des questions ? Envoyez votre message sur le forum du blog.

h1

Quelle est la différence entre un RUN et un QUIT ?

septembre 12, 2009

Aujourd’hui, je voulais vous parler de la différence entre les instructions RUN et QUIT.  Toby Dunn a écrit une explication très bien faite sur le forum anglophone SAS-L. Voici une traduction possible.

1. L’instruction RUN

L’instruction RUN dit à SAS d’exécuter les instructions précédentes (c’est-à-dire l’étape data qui vient d’être compilée ou la procédure). C’est un délimiteur d’étape qui dit : “c’est la fin de l’étape ou de la procédure. Maintenant exécute le code.”.

Vous n’avez pas besoin d’utiliser l’instruction RUN, le début d’une autre étape data ou d’une procédure feront le boulot aussi. Cependant utiliser une instruction RUN nettoiera votre log.

2. L’instruction QUIT

L’instruction QUIT est aussi un délimiteur d’étape. Quelques procédures (par exemple PROC DATASETS, PROC CATALOG) permettent de soumettre plusieurs étapes à l’intérieur d’une procédure sans avoir à terminer la procédure. Dans ces cas là, vous ajoutez une instruction RUN pour terminer une étape dans cette procédure et une instruction QUIT pour terminer la procédure.

3. Le cas particulier de PROC SQL

SQL est un peu l’exception qui confirme la règle car cette procédure nécessite une instruction QUIT et toute instruction RUN sera ignorée. Ceci est dû au fait qu’elle exécute chaque instruction automatiquement. Il n’y a donc aucun besoin d’une exécution par groupe avec RUN mais un réel besoin d’un délimiteur de fin d’étape.

h1

Cap ou pas Cap : le gagnant

septembre 6, 2009

Ce premier Cap ou pas Cap s’est déroulé du 20 avril au 31 juillet 2009. Pour participer, il suffisait de proposer une réponse à la question : que vérifiez-vous pour valider vos programmes et comment ? Trois lecteurs ont participé.

Le gagnant de cette année est Philippe. Il va recevoir dans les jours qui viennent le livre d’Olivier Decourt : Reporting avec SAS : mettre en forme et diffuser vos résultats avec SAS 9 et SAS 9 BI offert par la maison d’édition Dunod (www.dunod.com).

reporting

Je vous propose de découvrir les thématiques abordées dans la réponse de Philippe.

A l’année prochaine pour un nouveau défi !

(Lancement prévu le 1er mars 2010 pour une durée de trois mois)

Si vous souhaitez sponsoriser cet événement, contactez-moi : veronique.bourcier@sasreference.fr

1. Les erreurs de syntaxes

  • Le point-virgule : Je vérifie la présence du point-virgule à la fin de chaque ligne/instruction.
  • L’orthographe des mots non-SAS : je vérifie que je n’ai pas fait de coquille dans le nom de variable ou de table. Les noms sont les mêmes d’une instruction à une autre et il ne doit pas y avoir d’inversion des lettres.
  • L’orthographe des mots de SAS : idem pour les mots dans les instructions SAS, même si le plus souvent SAS reconnaît et suppose que ça a été mal orthographié (misspelling).
  • L’aide des couleurs : Je vérifie qu’il n’y a pas de couleur qui “sautent” dans l’éditeur (enhanced editor), chaque mot syntaxique SAS doit correspondre à une même couleur.

2. Débugger une étape data

  1. L’instruction PUT : Si nécessaire, mettre un put xx= ; dans les étapes data pour afficher le nom d’une variable (ici variable xx) avec sa valeur.

3. Importer et exporter des données

  • Le contenu des fichiers textes à lire : je vérifie visuellement comment se présente le fichier à lire : est-il lisible (pas corrompu), y a t-il des sauts de pages, des choses inattendues et quel séparateur est utilisé (tabulation, espace, point-virgule ou autre).
  • Les chemins d’accès aux fichiers : A l’importation comme à l’exportation de données,  je vérifie que le chemin Unix ou Windows existe bien, sinon SAS va mettre “le fichier n’existe pas” ou encore “le chemin n’existe pas”.

4. La syntaxe française

  • Les titres et pieds-de-page : Pour les titres et pieds-de-page (title ou footnote) sous Output ou SAS/GRAPH®, les accents français ou apostrophes ne sont pas résolus proprement à l’écran sans action particulière. J’enlève ces caractères spéciaux par défaut.

5. Le langage macro

  • Les commentaires : Pour écrire un commentaire, deux syntaxes existent  /* xxxx */ et l’étoile/point-virgule. A  l’intérieur d’une macro,  il faut mettre l’étoile après le symbole pourcentage pour que cela fonctionne à tous les coups (SAS Online Doc.: %* Macro Comment Statement).
  • Initialiser ses macro-variables : Lors de la création d’une macro variable avec PROC SQL par exemple, la macro variable n’est créée que si une valeur lui est assignée. Il est donc important d’initialiser la macro variable avant de lui appliquer une valeur et ainsi parer au cas où aucune observation n’est sélectionnée pour assinger une valeur à la macro variable.  Lire l’article 3 méthodes pour construire des macros variables sans macro.
  • La valeur prise par une macro variable : quand il y a un nom de macro variable dans un chemin d’accès je vérifie qu’il y a bien une barre inclinée  (slash /) et et non aucune ou deux parce que parfois ça se résout en c:\tempnomfichier.txt ou en c:\temp\\nomfichier.txt.
  • in () ne fonctionne pas avec le langage macro. Ainsi sous SAS 9.1.3 %if &var in () ne marche pas. Une solution est de multiplier les égalités en ajoutant un OR de liaison : %if &var. = xx or &var. = xxx.
  • %DO / %END : A chaque %do doit correspondre un %end (SAS Online Doc. : %DO Statement)
  • Les positional parameters : Les macros sont définies soit avec des positional parameters, soit avec des keyword parameters (SAS online doc.:  %macro Statement). Si vous optez pour des positional parameters, vous devez vous assurez que tous les paramètres sont cités à l’appel de macro et dans le bon ordre.
  • Les options macros : les options mprint, symbolgen, mlogic enrichiront la log d’informations pour vérifier les valeurs produites, les boucles, etc.

Lecture complémentaire

h1

Les titres de la newsletter de septembre

septembre 1, 2009

La newsletter est un moyen simple d’avoir, une fois par mois, une vue d’ensemble de l’actualité de votre blog SAS. Voici les titres de l’édition de septembre.

  1. Les derniers articles : liste des articles parus en juillet avec un court descriptif
  2. Il y a un an sur le blog : lien vers les articles publiés il y a un an.
  3. Les nouvelles du forum : résumé des interventions faites sur le forum du blog
  4. Les commentaires : messages ajoutés en suite à la publication d’articles
  5. L’exercice du mois : mot de passe pour accéder à l’exercice du mois et sa solution
  6. Emploi : résumé des CVs et offres d’emploi actuellement diffusés sur le blog
  7. Concours : les nouvelles du concours proposé par le blog cette année.
  8. Agenda : récapitulatif des événements SAS de deux prochains mois

Pour s’inscrire, il vous suffit d’écrire un email à veronique.bourcier@sasreference.fr avec en objet Inscription Newsletter.

h1

Protégé : Newsletter Septembre : Solution

septembre 1, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Protégé : Newsletter Septembre : Exercice

septembre 1, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Alterner les couleurs de fond dans un tableau : une ligne sur deux (ODS et PROC REPORT)

août 30, 2009

Ces semaines passées, je vous ai proposé une syntaxe pour changer le style des cellules d’un tableau généré sous SAS avec PROC REPORT. Aujourd’hui, je vous propose une variante permettant de changer la couleur de fond une ligne sur deux. L’exemple utilise une sortie PDF. Le programme peut s’appliquer aux sorties RTF et TAGSETS.EXCELXP.

1. Le programme

Dans PROC REPORT, l’instruction CALL DEFINE contenu entre les instructions COMPUTE et ENDCOMP permet de modifier le style des lignes dans un tableau.

La notion de RETAIN : Dans l’exemple qui suit une variable nommée CNT est créée avec un RETAIN implicite. Le changement de couleur de fond est fonction de la valeur prise par cette variable. Vous pouvez également utilisée une variable déjà existante dans le data set lu.

La foncton MOD() : Le modulo est le résidu d’une division. La fonction MOD() avec un modulo 2 permet de distinguer les valeurs pairs des valeurs impaires. Ici à chaque fois que la valeur CNT a une valeur pair, le fond est mis en gris.

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;
compute name;
cnt+1;
if mod(cnt,2) then call define (_row_,’style’,’style=[background=lightgrey]‘);
endcomp;
run;
ods pdf close;
ods listing;

2. Le résultat

zebre

Lectures complémentaires