Posts Tagged ‘programmation’

h1

La fonction CATQ pour concaténer tout en ajoutant des guillemets avec SAS 9.3 et plus

février 23, 2019

La fonction catq est disponible depuis SAS 9.3. La particularité de cette fonction est de pouvoir ajouter des guillemets simples (single quotes) ou des guillemets doubles (double quotes) autour des différentes valeurs à concaténer.

Un des avantages de la fonction catq est de pouvoir travailler autant avec les valeurs numériques qu’avec les valeurs caractères. On fera néanmoins attention aux valeurs infinies comme 1/3.

Exemple 1

data catq;
    x=catq('1' ,'ABC ',2," EFG",' ');
    put x=;

    x=catq('2' ,'ABC ',2," EFG",' ');
    put x=;
run;

Dans ce premier exemple, on voit que le 1 permet d’ajouter des guillemets simples alors que le deux permet d’ajouter des guillemets doubles. Dans le cas présent, seules les valeurs caractères ont des guillemets.

x='ABC ' 2 ' EFG' ' '
 x="ABC " 2 " EFG" " "

Exemple 2

data catq;
   x=catq('1'     ,'ABC ',2," EFG",' '); 
   put x=;

   x=catq('1a'    ,'ABC ',2," EFG",' '); 
   put x=;
 
   x=catq('1c'    ,'ABC ',2," EFG",' '); 
   put x=;
   
   x=catq('1ac'    ,'ABC ',2," EFG",' '); 
   put x=;
run;

Dans ce second exemple, on voit que la lettre a pour que toutes les valeurs soient entre guillemets, y compris les valeurs numériques.

Si on souhaite ajouter la virgule (comma) entre les différentes valeurs à concaténer avec la lettre c, il faudra impérativement garder la lettre a.

 x='ABC ' 2 ' EFG' ' '
 x='ABC ' '2' ' EFG' ' '
 x=ABC ,2, EFG,
 x='ABC ','2',' EFG',' '

Exemple 3

Une autre manière d’ajouter la virgule comme séparateur entre les valeurs est d’utiliser la lettre d (delimiter) et de préciser le séparateur dans le second argument de la fonction ; cet argument est optionnel et ne servira qu’avec la lettre d.

data catq;
   x=catq('c','ABC ',2," EFG",' '); 
   put x=;

   x=catq('d',',','ABC ',2," EFG",' '); 
   put x= /;
  
   x=catq('1ac','ABC ',2," EFG",' '); 
   put x=;

   x=catq('1ad',',','ABC ',2," EFG",' '); 
   put x=;
run;

Nous obtenons le même résultat qu’on utilise c ou d avec l’argument optionnel. La lettre d offre juste plus de possibilités.

 x=ABC ,2, EFG,
 x=ABC ,2, EFG,
 x='ABC ','2',' EFG',' '
 x='ABC ','2',' EFG',' '

Exemple 4

Lorsqu’on n’a pas besoin des guillemets autour des différentes valeurs à concaténer, la fonction catq se rapproche de la fonction catx.

data catq;  
   x=catq('d',',','ABC ',2," EFG",' '); 
   put x=/;
   
   x=catq('ds',',','ABC ',2," EFG",' '); 
   put x=;
   
   x=catx(',','ABC ',2," EFG",' ');
   put x=/;
   
   x=catq('dt',',','ABC ',2," EFG",' '); 
   put x=;
run;

Pour enlever les leading et trailing blanks avec la fonction catq, on ajoutera la lettre s (strip).
Pour uniquement enlever les trailing blanks avec la fonction catq, on ajoutera la lettre t (trim).

 x=ABC ,2, EFG,
 x=ABC,2,EFG
 x=ABC,2,EFG
 x=ABC,2, EFG

Aller plus loin

La fonction dispose d’autres arguments pour travailler avec les literals (lettre n), pour afficher les valeurs en hexadecimal (lettre x), pour utiliser une tabulation horizontale comme séparateur (lettre h), etc.
Toutes les informations sont disponibles dans la documentation en ligne : http://support.sas.com/documentation/cdl/en/lefunctionsref/63354/HTML/default/viewer.htm

 

À lire aussi


			
h1

SAS : obtenez des couleurs sympas dans vos rapports en 5 minutes

août 20, 2018

h1

11 Astuces SAS – PDF à télécharger

mars 6, 2018

J’ai écris pour la conférence KSFE qui se déroule chaque année début mars dans une ville différente d’Allemagne un PDF contenant 11 astuces de programmation SAS. Vous pouvez le télécharger sur cette page : https://xxformat.com/blog/ksfe-2018/

h1

Passer de CLASS CLAS à « CLASS » « CLAS » dans une macro variable

février 1, 2013

Mettre toutes les mots contenus dans une macro variable entre guillemets (quote en anglais) est un tâche plus fréquente qu’elle n’y paraît.
Une vois le code écrit, il est souvent plus rapide de faire du copier/coller et ensuite de modifier. Voici un exemple où DSN=CLASS CLAS sert à créer DSN_QUOTE= »CLASS » « CLAS ».

1. Exemple dans une macro

Dans l’exemple, la macro est PRINTDSN. Elle a pour tâche d’imprimer dans la log tous les datasets présents dans la bibliothèque SASHELP qui sont cités dans le paramètre de macro DSN, s’ils existent.

%macro printdsn (dsn=);

%let dsn      =upcase(&dsn.);
%let dsn_quote=%sysfunc(tranwrd(%nrstr(%")&dsn.%nrstr(%"),%str( ),%str(" ");

proc sql;
 create table ref as
 select memname
 from dictionary.tables
 where upcase(libname)='SASHELP' and
       upcase(memname) in (&dsn_quote.);
quit;

data _null_;
 set ref;
 call execute ('proc print data=' || memname || ';');
 call execute ('run;');
run;
%mend printdsn;
%printdsn(dsn=class clas);

Pour ma part j’ai pris l’habitude de mettre le contenu des macros paramètres en majuscule, et ce dès le début du programme, sauf besoin spécifique contraire. Ceci explique la ligne %let dsn=upcase(&dsn.);

De plus j’ai pris l’habitude de rajouter le suffixe _quote au nom de la macro variable. Dans notre exemple il y a la macro variable DSN mise en majuscule. Cette variable est ensuite mise entre guillemets.

La macro fonction %sysfunc() permet d’utiliser la fonction tranwrd dans une expression macro. La fonction tranwrd est composée de trois paramètres :

  1. le texte d’origine entre guillemets
  2. le partie de texte à remplacer dans cette chaîne de caractères
  3. le texte de remplacement

2. Le même exemple sans macro

L’exemple est présenté dans une macro. Pour tester le code, un simple %let et %put feront l’affaire. Le résultat s’affiche alors dans la log.

%let dsn=CLASS CLAS;
%let dsn_quote=%sysfunc(tranwrd(%nrstr(%")&dsn.%nrstr(%"),%str( ),%str(" ");
%put &dsn_quote.;
h1

Aller-Retour entre dataset et catalogue de formats avec CNTLIN en CNTLOUT

décembre 29, 2012

Dans un précédent article, je parlais des deux méthodes pour créer des formats avec une procédure proc format, la première étant de taper toutes les values dans une instruction value, la seconde étant de stocker ces valeurs dans un data set et de les convertir en format avec l’option cntlin. Aujourd’hui, je souhaite revenir sur l’option CNTLIN et son pendant CNTLOUT pour passer d’un dataset à un format et pour passer d’un format à un dataset.

1. Créer une table SAS (dataset) type

Pour débuter créons un data set (table SAS) appelée POP avec 4 colonnes START, LABEL, TYPE et FMTNAME. Cette table contient les données pour deux formats : un format numérique et un format alphanumérique. Ces deux formats sont appelés GRP.

data pop;
length start $40 label $200 type $1 fmtname $32;
retain fmtane 'GRP' type 'N';
start='10';
label='Per Protocol';
output;
start='11';
label='Modified Per Protocol';
output;
start='20';
label='Intent-to-Treat';
output;
start='21';
label='Modified Intent-to-Treat';
output;
type='C';
start='PP';
label='Per Protocol';
output;
start='mPP';
label='Modified Per Protocol';
output;
start='ITT';
label='Intent-to-Treat';
output;
start='mITT';
label='Modified Intent-to-Treat';
output;
run;

S’il est possible de convertir de convertir le nombre 100 stocker dans une variable alphanumérique en numérique, il est impossible de convertir le mot ABC en numérique. Dans cet exemple on comprend mieux pour quoi START est toujours alphanumérique qu’il s’agisse dun format numérique ou alphanumérique.

2. Passer d’un dataset à un format catalog

A présent la procédure proc format convertit le data set en format catalogue. Le data set est situé dans la bibliothèque (library) WORK. Il n’y a pas besoin de préciser la bibliothèque de la table POP. Par défaut le format catalog s’appellera FORMATS et sera stocké dans la bibliothèque WORK. L’option LIB n’est pas utilisé.

proc format cntlin=pop;
run;

Ainsi le code au dessus est équivalent à :

proc format cntlin=work.pop lib=work.formats;
run;

Le code proposé ci-dessus est uniquement là pour faciliter la compréhension. Sauf besoin particulier, la version simplifiée doit suffire.

3. Passer d’un format catalog à un dataset

Dans un second temps, je vous propose de convertir ce format dans un autre dataset.

proc format cntlout=pop2; 
run;

Ainsi le code au dessus est équivalent à :

proc format cntout=work.pop2 lib=work.formats; 
run;

A vous de jouez avec les proc print et librairies pour voir la résultat.

4. Rappel sur le nom du format

Notez ici que le nom du format est au maximum long de 32 caractères en  SAS 9.1.3 / SAS 9.2  et limité à 8 caractères pour la version SAS 8.2. Pour être plus précis, on a 32 caractères pour un format numérique et 31 caractères pour un format alphanumérique en SAS 9.1.3 et SAS 9.2, SAS gardant un caractère pour le symbole dollar $. SAS 8.2 fonctionnait sur le même principe : 8 caractères pour un format numérique et 7 caractères pour un format alphanumérique. Si le nom du format était trop long en SAS 8.2, SAS le coupe à la longueur maximum. Ainsi les nom  ALPHABETA et ALPHABETI sont interprétés pas SAS 8.2 en FMTNAME=ALPHABET pour un format numérique.

Aller plus loin

h1

Protégé : Newsletter Exercices – n°1 : Solution

juillet 14, 2012

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

h1

Livre en anglais : 97 Things Every Programmer Should Know

mars 17, 2012

Voici une lecture que je tenais à vous faire partager. Il s’agit du livre 97 Things Every Programmer Should Know.

Il s’agit d’un recueil de conseils de programmeurs au sens large C++, Java, etc. mais pas de SAS. Chaque témoignage se présente sous la forme d’une double page. Certains exemples sont peux accessibles aux non initiés. Il reste quelques idées générales valables également pour le programmeur SAS. Voici les grandes thématiques :

  • Bugs and Fixes
  • Build and Deployment
  • Coding Guidelines and Code Layout
  • Design Principle and Coding Techniques
  • Domain Thinking
  • Errors, Error Handling, and Exceptions
  • Learning, Skills and Expertise
  • Nocturnal or Magical
  • Performance, Optimization, and Representation
  • Professionalism, Mindset, and Attitude
  • Programming Languages and Paradigms
  • Refactoring and Code Care
  • Reuse versus Repetition
  • Schedules, Deadlines, and Estimates
  • Simplicity
  • Teamwork and Collaboration
  • Tests, Testing, and Testers
  • Tools, Automation, and Development Environments
  • Users and Customers

Vous pouvez consulter les commentaires du livre sur Amazon : 97 Things Every Programmer Should Know

h1

5 points pour rendre la maintenance d’un programme la plus inaperçu possible pour l’utilisateur

mars 4, 2012

La maintenance des programmes est toujours mieux acceptée si les utilisateurs sont informés au préalable et si la durée de l’intervention est limitée dans le temps. Voici cinq points qui rendront l’intervention plus douce.

  1. S’il est préférable de faire une maintenance de programme dans un environnement de développement, il est parfois plus rapide de faire certains changements directement en production après avoir fait une copie des fichiers d’origine, surtout les changements rapides. L’utilisateur est dans l’indisponibilité d’utiliser le programme durant cet intervalle de temps.
  2. Idéalement la maintenance sera planifiée. Les utilisateurs seront informés une semaine à l’avance par email de la date et durée d’indisponibilité. Ils pourront ainsi adapter leur travail en fonction.
  3. Le créneau horaire sera choisi de préférence en dehors des heures d’utilisation les plus fréquentes (le week-end, le matin, le soir).
  4. Un email informera du début de la maintenance.
  5. Un autre email confirmera la fin de la maintenance et donc la remise à disposition du service.
h1

André Wiekli : ouvrage gratuit sur SAS 9.2 à télécharger

août 28, 2011

Téléchargez ici l’ouvrage gratuit d’André Wielki sur SAS 9.2 sous Windows.  Il  est composé de 10 chapitres répartis en 4 parties soit 215 pages d’information destinées à des initiés ou des débutants très motivés.

Ici vous avez dans un .pdf l’intégralité du livre. Vous pouvez opter pour un .pdf par partie ou encore un .pdf par chapitre. En fin de post, il est possible de visionner l’ouvrage complet sans téléchargement.

1. La table des matières

TdM Couverture et avant propos, Table des matières, 10 pages

Partie 1 Le Fonctionnement en SAS Fenêtre de SAS Windows, 64 pages

  • Chapitre 1 Introduction à l’interface SAS Windows, 6 pages
  • Chapitre 2 SAS Windows quelques repères techniques cachés, 18 pages
  • Chapitre 3, Familiarisation avec des fenêtres de SAS Windows : l’espace de travail SAS (AWS) et son architecture interne, 24 pages
  • Chapitre 4 Familiarisation avec des fenêtres de SAS Windows (suite), 14 pages

Partie 2 Thèmes particulier concernant SAS Windows, 44 pages

  • Chapitre 5, La version 9.2… Windows avec les autres versions de SAS, 6 pages
  • Chapitre 6 Les liens micros-host, 12 pages
  • Chapitre 7 Les échanges des tables SAS avec d’autres logiciels micros, 23 pages

Partie 3 Les Sorties/Résultats SAS Impression et ODS, 67 pages

  • Chapitre 8 Les sorties imprimées classiques (texte ou graphique), 4 pages
  • Chapitre 9 La voie royale de l’ODS (Output Delivery System), 61 pages

Partie 4 Divers changements dans le langage SAS de Base, 24 pages

  • Chapitre 10 Panorama des changements du langage SAS 9.2.3, 23 pages

Annexe A Visualisation d’une table SAS, 6 pages

2. Les téléchargements

Télécharger l’intégralité du document :

Wielki_SAS92_10_integralite.pdf, 215 pages (table des matières en fin de document)

Télécharger chacune des 4 parties

Wielki_SAS92_21-couverture-tabledesmatieres.pdf, 10 pages
Wielki_SAS92_22_partie1.pdf, 64 pages
Wielki_SAS92_22_partie2.pdf, 44 pages
Wielki_SAS92_22_partie3.pdf, 67 pages
Wielki_SAS92_22_partie4.pdf, 24 pages
Wielki_SAS92_23_annexe.pdf, 6 pages

Télécharger chacun des 10 chapitres

Wielki_SAS92_31-couverture-tabledesmatieres.pdf, 10 pages
Wielki_SAS92_32-chapitre01.pdf, 6 pages
Wielki_SAS92_32-chapitre02.pdf, 18 pages
Wielki_SAS92_32-chapitre03.pdf, 24 pages
Wielki_SAS92_32-chapitre04.pdf, 14 pages
Wielki_SAS92_32-chapitre05.pdf, 6 pages
Wielki_SAS92_32-chapitre06.pdf, 12 pages
Wielki_SAS92_32-chapitre07.pdf, 23 pages
Wielki_SAS92_32-chapitre08.pdf, 4 pages
Wielki_SAS92_32-chapitre09.pdf, 61 pages
Wielki_SAS92_32-chapitre10.pdf, 23 pages
Wielki_SAS92_33_annexe.pdf, 6 pages

3. L’intégralité de l’ouvrage

Notez que la table des matières est en fin d’ouvrage.

Afficher ce document sur Scribd


h1

Protégé : SAS 9.2 Souligner ou barrer un texte dans une table en sortie ODS

juillet 14, 2011

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

h1

Protégé : Deux exemples d’usage de la syntaxe de l’ODS : PROC PRINT et PROC REPORT

juin 26, 2011

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

h1

Protégé : SAS 9.2 et PROC SORT : Quel est l’effet de l’option – sortseq=ascii (numeric_collation=on) ?

avril 10, 2011

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

h1

Interview en anglais avec Rick Aster – auteur du livre Professional SAS Programming Secrets

octobre 20, 2010

1. Rick Aster in one sentence

Véronique Bourcier : Hi Rick, could you present yourself to the sasreference.com blog readers in one sentence?

Rick Aster : When people say “SAS programming” today, it’s largely because I glued those two words together a generation ago in the book Professional SAS Programming Secrets. It was the first book on SAS to be widely distributed in bookstores around the world.

2. Motivation for writing books about SAS

Véronique : Your first publication was in 1991. Since then you have published six books. What made you decide to write down your knowledge in the first place? What motivates you in selling these products?

Rick : I love SAS. You can do amazing things with it, in terms of working with data, and you don’t need such a high level of skill to do them. At the same time, I really want SAS people to gain the advantages that come with the computer programming perspective. If you take the attitude that you’re in charge of the computer and you can make SAS do whatever you want with the data you’re working on, that’s a more powerful position than if you are just hoping you can type the right words and symbols so that SAS will do its thing for you. Make that shift in perspective, and a whole world of possibilities opens up, and then you start finding answers to questions you didn’t know existed. The more people I can persuade to make that shift, the more things are going to happen in the world — “more people finding more answers,” as I like to say. So that’s really the purpose behind everything I write about SAS, to get people to take on the programming perspective.

Rick : At the same time, also, I want to make sure this knowledge is there for everyone. A big company can afford to hire me to work on their data, but really, anyone could do what I do, so I write the books to help the people who are trying to do the same thing I’m doing.

3. Programmer skills

Véronique : What do you think the essential qualities are to become a good programmer?

Rick : The important thing to understand is that it doesn’t require a level of skill, knowledge, or experience. Everything that goes into a program can be looked up, or it can be tested, and every mistake you make along the way can be fixed. So you can do good programming from the very beginning, even if you start out not knowing anything about SAS.

Rick : It’s really just a matter of taking responsibility for what your program does. If you can say, “It’s up to me to know what actions result from the words I’m writing in this SAS program,” then you’ll take the time to find out, and that’s really all it takes. And SAS makes this easy by providing a log that’s ready for you to use even before you get started.

Rick : But then, after you get started on SAS programming, you’ll want to write more advanced programs, and write them faster. When I was getting ready to rewrite Professional SAS Programming Secrets for the new third edition I spent a long time — years, really — researching the question of what people really need to know about SAS. What distinctions make the biggest difference in people becoming proficient in SAS, so that they can write SAS programs quickly, and with very few mistakes to correct? I ended up completely redoing the outline of the book so that I could build the book around these key distinctions.

Rick : So, for example, before you do anything in SAS, you need to know that SAS is going to wait for you to tell it to do something, then it’s going to do what it you tell it, and then the way you know what SAS did is by reading the log. So these are some of the key ideas at the beginning of chapter 1 — not as an aside that you come to somewhere along the way, but right there in the middle of the discussion.

Rick : The most important thing I like to emphasize whenever I get the chance to teach SAS programmers is the importance of knowing the automatic actions SAS is taking when it runs a SAS program, especially in the data step. There are a lot of automatic actions in SAS, but there aren’t so many that you can’t learn all of them — and when you do, it makes such a difference, because all of a sudden, you can see everything that’s happening. It’s like the difference between playing chess blindfolded, and playing chess when you can see the pieces on the board.

4. Programming for several decades

Véronique : How do you keep interested in SAS programming after such a long time using it?

Rick : [Rock singer] Jon Anderson said about ten years ago, “The more you know, the more there is to know.” And of course, that wasn’t a new idea then, philosophers have been telling us that kind of thing for ages. When I was younger, I thought it meant that the more experience you have with the world, the more lost you are, because you realize how uncertain everything is. Now I realize it’s actually the opposite. Yes, in a way, everything is uncertain, but the other side of that is, there is so much potential for us to answer all the questions we have, at least the most immediate questions.

Rick : And of course, SAS is right in the middle of this, with people writing SAS programs to answer questions that matter not just for themselves or the companies where they’re working but, eventually, for the whole world.

Rick : At the same time, I see computer programming as being on the frontiers of consciousness. From everything I know, humans have the kind of intelligence we have because of our need to make decisions in advance. As programmers, though, we’re not just making decisions in advance. Whenever we write IF-THEN statements, we’re writing abstract rules to make decisions. These are decisions that the program makes, if you want to look at it that way, which means we’re one more level removed from the basic level of action, of seeing and reacting. And then, as SAS programmers, we’re working with data, which is abstract to begin with, so that’s yet another level removed. So when SAS programming seems difficult sometimes, it’s because, as humans, we’re still learning how to use our brains this way.

Rick : So when I’m writing a SAS program, I’m not just answering some questions that a bank had about its customer base, or whatever the program is about. And I’m not just thinking about what it means to write a SAS program simply and correctly. I’m still learning everything I can about the state of mind that goes into successful programming. What’s the right way to think in order to write a successful program, with all the levels of abstraction that go into the process? Anything I can learn about that, and pass along to others, is something that’s added to the human ability to understand the world. And the more I found out about that, the more there is to learn about it.

5. What has changed in this new edition?

Véronique : Could you tell us a bit more about this new edition? What is specific to it? Which part of the public would be primarily interested in reading it? Do you have already a plan for a future edition?

Rick : Most people don’t realize it, but the first edition of Professional SAS Programming Secrets was mostly written in 1988 and delivered to the publisher in 1989, and I actually had to update it before it was even released. And then, the publisher let me add a few new things in 1997, such as the REPORT procedure and international date formats, and that’s how the revised edition came about. Obviously, that was ages ago in computing terms, and almost everything in the book had to be revised.

Rick : SAS itself has changed — there are ten times as many features as there were in 1991 — but more importantly, the world in which SAS programmers work has changed. When the first edition came out, most of the readers were people who had never used a computer before they started with SAS. Some of the things we had to explain are things that people learn when they’re five years old now! Today, almost everyone has used a computer, or has seen people work on computers, so we’re no longer introducing people to an alien world when we teach them SAS. But there are still a lot of people who haven’t really done any computer programming, so the new edition still has to explain the most basic ideas of computer programming. And that, of course, is a little tricky, because SAS is so different from C and the other programming languages people might be using in a university course on computer programming.

Rick : One of the biggest changes is the move from paper to electronic documents. In 2010, even if you are going to print a document on paper, you probably need it in electronic form first. And that means people really need to know how to open and close an ODS destination in SAS. The way things are right now, an HTML document, or a PDF, is a much more reliable document than a print file — you can e-mail it to someone and it won’t get garbled along the way. It’s also a lot easier and faster to design a report for HTML than it is to design it for a print file. So those two chapters in the previous edition on designing printed reports — they’re really not needed now. Instead, people need to know the four statements that let you create an HTML file in SAS. And I tried to explain that as simply as possible in the new edition. This also changes everything about the way you approach the REPORT procedure, so that part is all different.

Rick : Really, the whole book has been re-written to keep up with everything that’s changed. So for example, the fixed-field data files, the “flat” files from Cobol programs, they’re really not very common anymore, so the emphasis instead is on delimited text files as a source of data, with a little bit about SQL pass-through for connecting to databases and the XML engine for importing and exporting XML data. I still explain how to read fixed-field data files, but I know most readers won’t be using that part.

Rick : Efficiency was a very big topic in SAS programming in the 1990s, and it’s a much smaller topic in the new edition — still essential if you’re working with 10 million observations at a time, but most of us aren’t, most of the time. When I went through the second edition to prepare for the third edition, I was surprised at how much is in there that doesn’t really matter anymore, really, two thirds of the book. It’s a measure of how much SAS has progressed — there are statements and functions in SAS 8 and 9 that let you do in just a few words the kind of processing we used to write 10 or 20 lines of code to do in SAS 6. The great thing about this is that you no longer have to be an expert to do high-level work in SAS. And in terms of the reader’s experience in reading the book, it means I can cover a lot more things and explain them in more detail without making the book twice as long.

Rick : With all the changes, this is still a book for anyone who’s using SAS, but it’s especially for people who are new to SAS, and for people who have been using SAS and want to get the programming perspective on SAS. Every day, I imagine, there’s a statistician or analyst who is already pretty good with the analytical side of SAS, who decides they want to become proficient at the programming side of it too, and I hope they get a chance to read Professional SAS Programming Secrets.

Rick : I’m hoping to make a movie of this new edition — I wrote it with the movie format in mind, and I’m hoping it’s not just a fantasy that I can put the essential ideas of the book into a movie that’s not much longer than 8 or 10 hours. I think there will be tremendous advantages in showing people some of the aspects of SAS programming, some of the things that it takes more than a paragraph or two to explain in words. I’ve been focusing this year on making the book as good as I can make it, but by next year I’m hoping I can get the production pieces together and start making the movie.

Rick : As soon as I can manage it, I’m hoping next year, I want to do a new edition of another of my books, Professional SAS Programming Shortcuts. That won’t be anything big, I don’t think, but there are some web technologies that definitely ought to be added to that book. I do the best I can to keep my books current, but a lot of the time, it’s not up to me. I have 10 pages of changes ready to put into Professional SAS Programmer’s Pocket Reference, but the book people say, “That’s not enough changes to make the readers buy a new edition.” I’m pretty sure with the next SAS release, I’ll be able to do a new edition of that book.

6. What is specific to SAS Programming Secret book compared to the other books of Rick Aster?

Véronique : What is the difference between Professional SAS Programming Secrets and your other books? Why would someone want to read this book if they have already read one of your other books, or other books on SAS?

Rick : Professional SAS Programming Secrets is really the “how SAS works” book, the book that takes you behind the scenes so that you can really understand SAS from the inside. And in the third edition, I’ve explained this in a lot of detail, with examples and metaphors, in a way that no one ever has before. This was three chapters before, and now it’s five chapters, because it’s really that important. Once you understand how SAS works, anything is possible.

Rick : There are a lot of books, including my other book Professional SAS Programming Shortcuts, that focus on specific techniques that you can use in SAS, and those are also very important. If you want to do all the things that you hear about people doing in SAS, that’s a very big subject, much bigger than you can get in one, or two, or three books.

7. Meet Rick Aster

Véronique : Are there any other ways you’re using to share with other people interested in SAS? Are you involved in forums, attending conferences? Where can your readers meet you during the coming year?

Rick : I get out to conferences as much as I can, which hasn’t been so often, lately. I’m pleased, though, that so many people visit my web site, globalstatements.com. It’s about a thousand people a day, which I think makes it the biggest independent web site on SAS, and I just hope the visitors are finding the information they’re searching for. The biggest thing on the site is the dictionary, where you can look up SAS-related words. Another thing I’m working on is the SAS hypic, or web guide, which is supposed to help get people to the answers they’re looking for in just a few clicks. There’s always more that I need to add to it, though. And I get e-mail from about one or two readers a week, and I try my best to answer all the e-mail. If I can manage to get out to a few conferences or events in the next year, they’ll be on my calendar on the web site as soon as they’re confirmed.

8. Message from Rick Aster to the blog readers

Véronique : Is there one thing you would especially like to share with the readers of the blog www.sasreference.com?

Rick : Just remember that whenever you’re using SAS to work with data, you’re working on the leading edge of human capabilities. You’re doing something that couldn’t even be explained one lifetime ago. It’s a pretty awesome place to be when you look at it that way.

9. End of interview

Véronique : Thank you for sharing your experience with SAS with us and presenting this new book which should help SAS users…

Rick : Thank you, Véronique, for all that you do to put useful information in front of SAS users.

Shopping

Further reading

Link

h1

Protégé : Plusieurs formats pour une variable numériques – passer à une variable caractère avec la fonction PUTN

octobre 14, 2010

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

h1

Protégé : Répéter la valeur d’une variable sur chaque page avec ODS RTF

septembre 26, 2010

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

h1

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

septembre 19, 2010

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

h1

Protégé : Avez-vous pensé à lire votre log de manière automatique

septembre 12, 2010

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

h1

Des options pour se débarrasser de WARNING de SAS 9.2

août 18, 2010

Avec SAS 9.1.3 et SAS9.2 de nouveaux warning apparaissent. En voici deux que vous pouvez faire disparaître dans le cas où ils ne reflètent pas un problème dans votre programme.

  1. Avec PROC SQL, je crée une nouvelle table du même nom que la table source.
  2. Dans un data set je réduis la longueur d’une variable

1. Utiliser le même nom de data set en entré et en sortie avec PROC SQL

Pour illustrer le sujet, je vais d’abord créer un data set appelé ONE avec deux variables X et Y.

data one;
x=‘A’;
y=‘B’;
run;

Ensuite je vais créer avec PROC SQL un nouveau data set du même nom ONE qui ne contiendra que la variable X.

proc sql;
create table one as
select x
from one;
quit;

Le message dans la log ressemble à ceci:
WARNING: This CREATE TABLE statement recursively reference the target table. A consequence of this is a possible data integrity problem.

Pour ne plus avoir ce message dans la log, ajouter l’option UNDO_POLICY=NONE

proc sql undo_policy=none;
create table one as
select x
from one;
quit;

Ce cas existe depuis SAS 9.1.3.

2. Réduire la longueur d’une variable dans une étape data

Une solution pour changer la longueur d’une variable est de définir sa longueur dans une instruction LENGTH avant de lire les données avec un SET par exemple.

Depuis SAS 9.2, si la nouvelle longueur est plus petite que l’ancienne un WARNING apparaît dans la log. Ceci est une bonne chose car cela vous permet de repérer d’éventuelles coupures (truncations) de vos données.

Dans certains cas cependant, vous savez pertinemment que le nombre de caractères dans données est au plus X et que dès lors elles ne seront pas coupées en réduisant la longueur.

Vous pouvez vous épargner le warning en encadrant votre étape data des options globales VARLENCHK=nowarn et VALENCHK=warm.

Je vous conseille d’appliquer cette option localement afin de pouvoir continuer à repérer d’autres coupures potentielles non prévues.

data two;
length x $32;
x=‘A’;
run;

data two_a;
length x $1;
set two;
run;

WARNING : Multiple lengths were specified for the variable x by input data set(s). This may cause truncation of data.

options varlenchk=nowarn;
data two_b
length x $1;
set two;
run;
options varlenchk=warn;

Notez cependant, qu’avec SAS 9.1.3 ou SAS 9.2, un warning apparaît dès lors que la variable est donnée dans une instruction BY. L’option VARLENCHK de SAS 9.2 ne vous enlèvera pas le warning. Je vous conseille donc de changer votre longueur au préalable si vous ne voulez pas ce WARNING.

data two_b;
length x $1;
set two;
by x;
run;

WARNING: Multiple lengths were specified for the BY variable x by input data sets and LENGTH, FORMAT, INFORMAT statements. This may cause unexpected results.

Lectures complémentaires :

h1

Protégé : Une option SAS 9.2 pour ODS PDF : répéter une valeur groupée sur plusieurs pages

août 3, 2010

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

h1

Structurer ses travaux à l’aide de pages HTML

juillet 25, 2010

Joë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

Joë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.