
Une fonction LIBREF au résultat inattendu
mars 23, 2010La fonction LIBREF vérifie l’existence d’une bibliothèque. Vu que la réponse attentue est oui ou non, on pourrait s’attendre à une résultat binaire avec zéro pour non et un pour oui. Dans les faits, cette fonction retourne zéro pour oui et toute autre valeur signifie non.
Voici un exemple.
1. Contexte, exemple
Vous cherchez à savoir si le chemin d’accès défini dans un paramètre de macro peut servir de bibliothèque. Une solution est de tenter de créer la bibliothèque et ensuite de vérifier si la bibliothèque a été créée ou non.
2. Le programme
Dans l’exemple qui suit, une macro TEST est créée. Elle a un paramètre DSNPATH=. Le chemin d’accès donné dans ce paramètre est utilisé pour créé la bibliothèque INLIB.
Ensuite pour les besoins de l’exemple, un message est ajouté dans la log au moyen des instructions %PUT.
- Tout d’abord, est indiqué dans la log la valeur prise par le paramètre de macro DSNPATH.
- Puis, la valeur prise par la fonction LIBREF est affiché dans la log.
Afin de pouvoir utiliser cette fonction hors d’une étape data ou d’une procédure PROC SQL, il faut l’englober dans une macro fonction %SYSFUNC().
En fin de macro la référence à la bibliothèque est supprimée.
%macro test(dsnpath=);
libname inlib « &dsnpath. »;
%put MESSAGE: DSNPATH= &dsnpath.;
%put MESSAGE: Voir le résultat de la fonction LIBREF dans la log: %sysfunc(libref(inlib));
libname inlib;
%mend test;
Le premier appel de macro se fait avec un chemin d’accès valid. Tandis que le second appel de macro utilise un chemin d’accès erroné.
%test (dsnpath=C:/sasref);
%test (dsnpath=C:/sasre);
3. La log
Lorsque le chemin d’accès est correct, la fonction LIBREF retourne la valeur 0.
Quand le chemin d’accès n’est pas correct, la fonction LIBREF retourne une valeur différente de zéro. Dans l’exemple, il s’agit de la valeur -70008.
Lectures complémentaires
Autres articles sur %SYSFUNC
- Récupérer la valeur d’une option système, %SYSFUNC(GETOPTION())
- Evaluer le critère performance TEMPS d’un programme (%SYSFUNC, %SYSEVALF)
- Ajouter une date dans un nom de fichier Excel, Word…
- Combien d’observations dans mon data set ?
SAS Online Doc
- Summary Descriptions and Syntax
- LIBREF Function
Votre commentaire