HIVER 2009
TECHNOS-CONSEILS
Profil d'utilisateurs : Jim Burkhardt, Barry Hong et Craig McCulloch
À lire
Profil du service de la Formation : Sylvain Tremblay
À lire
Quoi de mieux que du café Starbucks ? Du café Starbucks GRATUIT !

Soumettez votre techno-conseil SAS à des fins de publication dans un futur numéro du bulletin Insights et REMPORTEZ une carte-cadeau Starbucks de 10 $.
Pour des détails sur tous les produits et solutions de SAS, cliquez ici.
Le blogue sascom : http://blogs.sas.com/sascom/
SAS Canada
Techno-conseil : Marquage de la date, de l'heure et du nom d'utilisateur dans les registres
Par Craig Kasper

Nous exécutions en mode différé certains de nos programmes SAS utilisés pour des processus continus. (C'est simple à partir de Windows : cliquez avec le bouton droit sur le fichier dans l'Explorateur Windows et sélectionnez l'option « Batch Submit with SAS 9.1 » dans le menu contextuel.) L'exécution des programmes en mode différé fait en sorte que le registre et les résultats du programme seront sauvegardés. Lorsque plus d'une personne peut exécuter un programme donné en mode différé à différents moments, il convient normalement d'inclure de l'information sur le moment où le programme a été exécuté, et par qui.

Les lignes de code macro suivantes peuvent être exécutées n'importe où à l'extérieur d'une procédure PROC ou d'une instruction DATA pour marquer la date, l'heure et le nom d'utilisateur sur le résultat.

Date :
%put NOTE: La date du jour est %scan(%sysfunc(date(),downame.),1), %scan(%sysfunc(date(),monname.),1) %scan(%sysfunc(date(),day2.),1), %scan(%sysfunc(date(),year4.),1).;

Heure :
%put NOTE: L'heure actuelle est %sysfunc(time(),tod8.).;

Nom d'utilisateur (Windows seulement) :
%put NOTE: L'utilisateur actuel est %sysget(username).;

À titre d'explication, la fonction %sysfunc fait appel à des fonctions SAS habituelles au sein du code macro. %put est une instruction macro qui permet de produire du texte ; il faut donc faire appel à des fonctions SAS telles que date() à l'aide de %sysfunc comme intermédiaire. (On pourrait en arriver au même résultat à l'aide d'une instruction DATA _null_ statement, mais celle-ci est plus compacte.) À noter également que downame, monname, day2 et year4 sont tous des formats de date, qui peuvent être remplacés par d'autres formats de date si vous le préférez ; il en va de même pour le format d'heure tod. (Lorsqu'une fonction appelée par %sysfunc retourne une valeur, la fonction %sysfunc applique d'abord le format SAS que vous précisez, quel qu'il soit).

De même, la fonction %sysget retourne la valeur d'une variable surveillée par le système d'exploitation. Les versions récentes de Windows rendent disponible le nom de l'utilisateur actuel dans la variable d'environnement NOMUTIL.

Éviter d'écraser les fichiers en générant des noms de fichier à la volée

Parce qu'il est possible d'utiliser des fonctions macro à l'intérieur de doubles guillemets dans des instructions SAS ordinaires, il existe de nombreuses façons de les utiliser pour créer des noms de fichier à la volée. En voici un qui est utile et qui fait suite à l'astuce précédente. L'instruction FILENAME suivante génère un nom de fichier comportant la date et l'heure d'exécution du fichier, que l'on peut ensuite utiliser avec PROC PRINTTO pour que le registre soit sauvegardé dans ce fichier.

filename saveto "C:\SAS Logs\Log of Prog1 run - Date %sysfunc(date(),yymmddn8.) - Time %sysfunc(hour(%sysfunc(time())),z2.)-%sysfunc(minute(%sysfunc(time())),z2.)-%sysfunc(second(%sysfunc(time())),z2.).txt";

Lorsque les valeurs de toutes les fonctions macro sont substituées, le nom de fichier ressemblera à ce qui suit :

Log of Prog1 run - Date 20081205 - time 10-13-22.txt

À noter que, lorsque la date est indiquée avant l'heure, l'heure était présentée sous forme d'année à quatre chiffres, de mois à deux chiffres et de jour à deux chiffres, les fichiers seront en ordre chronolgique lorsque triés selon le nom de fichier.

Ajouter vos propres fichiers d'aide au menu d'aide SAS

Si votre entreprise possède une bibliothèque de macros destinées à ses utilisateurs (tout comme nous), il peut être très utile de mettre à leur disposition des renseignements à propos des macros. À cette fin, je recommande de créer un fichier HTML contenant la documentation, puis de l'enregistrer sous forme de fichier d'aide dans votre fichier de configuration SAS. La création d'un fichier HTML contenant la documentation est suffisamment simple, puisque Word et la plupart des traitements de texte récents vous permettent d'enregistrer les documents en format HTML.

Pour enregistrer votre fichier d'aide, ajouter une ligne qui ressemble à la suivante dans votre fichier de configuration SAS, qui se trouve normalement dans votre répertoire d'installation SAS :

-helpregister "Text appearing in Help Menu" "C:\sample\location\of\file\Sample help file name.htm" "Status Line Text on Mouseover" "" HTML

Vous pouvez ajouter cette ligne n'importe où avant le “/* NE RIEN MODIFIER APRÈS CETTE LIGNE - INSTALLER les modifications à l'application après cette ligne */”. Vous pouvez ajouter de nombreux fichiers d'aide de cette façon, en ajouter plusieurs fois une ligne helpregister.

SAS et tous les autres noms de produits ou services de SAS Institute Inc. sont des marques de commerce ou des marques déposées de SAS Institute Inc. aux États-Unis et dans d'autres pays. Le symbole MD indique l’enregistrement de la marque aux États-Unis. Tous les autres noms de produit ou marques appartiennent à leur détenteur respectif. Copyright © 2009, SAS Institute Inc. Tous droits réservés.