Aucune donnée externe n'est utilisée. Le script utilise un `DATA _NULL_` pour évaluer la fonction `LIBNAME()` et afficher ses codes de retour et messages, illustrant la capture d'erreurs au niveau des fonctions SAS.
1 Bloc de code
MACRO/OPTIONS
Explication : Ce bloc est une routine de réinitialisation. Il efface la sortie des procédures précédentes via `proc printto`, puis initialise les variables système `sysrc`, `sysfilrc`, et `syslibrc` à zéro. Il affiche également l'état de ces variables pour confirmer la réinitialisation.
Explication : Tente de définir une librairie SAS ('y') vers un chemin non valide ou inexistant (`c:\re`), ce qui est censé provoquer une erreur. Après la tentative, le script désactive temporairement l'affichage du code (`nosource`) pour mettre en évidence les valeurs des variables système d'erreur (`sysrc`, `syserr`, `sysfilrc`, `syslibrc`) qui reflètent le statut de l'opération.
options nosource ; %put ; %put ===> Detect an error in a LIBNAME statement ; %put ;
3
%put sysrc = &sysrc ;
4
%put syserr = &syserr ;
5
%put sysfilrc = &sysfilrc ;
6
%put syslibrc = &syslibrc ;
7
%put ; %put ; options SOURCE ;
3 Bloc de code
DATA STEP Data
Explication : Ce `DATA _NULL_` utilise la fonction `LIBNAME()` pour tenter de créer une librairie de manière programmatique. Il capture le code de retour (`sysrc`) de l'opération et le message système correspondant (`sysmsg`), puis les affiche dans le log. C'est une méthode alternative pour gérer les erreurs de définition de librairie.
Copié !
data _null_ ;
sysrc=libname('y','c:\re') ;
sysmsg=sysmsg() ;
put sysrc= sysmsg= ;
run ;
1
DATA _null_ ;
2
sysrc=LIBNAME('y','c:e') ;
3
sysmsg=sysmsg() ;
4
put sysrc= sysmsg= ;
5
RUN ;
4 Bloc de code
MACRO/OPTIONS
Explication : Réinitialisation des variables système d'erreur, similaire au premier bloc, pour préparer la prochaine démonstration d'erreur.
Explication : Les instructions `filename x;` sans chemin effacent ou réinitialisent la référence de fichier `x`. Bien que ces instructions spécifiques ne génèrent généralement pas d'erreurs, ce bloc est conçu pour montrer comment les variables système d'erreur (`sysrc`, `syserr`, `sysfilrc`, `syslibrc`) seraient utilisées pour détecter une erreur si une instruction `filename` incorrecte avait été exécutée.
Copié !
filename x ;
filename x ;
options nosource ; %put ; %put ===> Detect an error in a filename statement ; %put ;
%put sysrc = &sysrc ;
%put syserr = &syserr ;
%put sysfilrc = &sysfilrc ;
%put syslibrc = &syslibrc ;
%put ; %put ; options source ;
1
filename x ;
2
filename x ;
3
options nosource ; %put ; %put ===> Detect an error in a filename statement ; %put ;
4
%put sysrc = &sysrc ;
5
%put syserr = &syserr ;
6
%put sysfilrc = &sysfilrc ;
7
%put syslibrc = &syslibrc ;
8
%put ; %put ; options SOURCE ;
6 Bloc de code
MACRO/OPTIONS
Explication : Réinitialisation des variables système d'erreur pour la prochaine démonstration d'erreur.
Explication : Tente d'exécuter une procédure SAS inexistante (`proc unknown`), ce qui provoque une erreur fatale dans SAS. Le script affiche ensuite les variables système d'erreur pour observer leur état après cette erreur de procédure.
Explication : Ce bloc tente d'exécuter une commande système inexistante (`zzz`) via `%sysexec`. Les options `xsync` et `noxwait` sont activées pour s'assurer que SAS attend la fin de l'exécution de la commande système et que les erreurs sont correctement propagées. Ensuite, les variables système d'erreur sont affichées pour montrer la détection de l'erreur de commande externe.
Copié !
options xsync noxwait ;
%sysexec zzz ;
options xsync xwait ;
options nosource ; %put ; %put ===> Detect an error in a system command ; %put ===> You need XSYNC otherwise it does not work ; %put ;
%put sysrc = &sysrc ;
%put syserr = &syserr ;
%put sysfilrc = &sysfilrc ;
%put syslibrc = &syslibrc ;
%put ; %put ; options source ;
1
options xsync noxwait ;
2
%sysexec zzz ;
3
options xsync xwait ;
4
options nosource ; %put ; %put ===> Detect an error in a system command ; %put ===> You need XSYNC otherwise it does not work ; %put ;
5
%put sysrc = &sysrc ;
6
%put syserr = &syserr ;
7
%put sysfilrc = &sysfilrc ;
8
%put syslibrc = &syslibrc ;
9
%put ; %put ; options SOURCE ;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Au sein d'une étape DATA, l'utilisation de la fonction LIBNAME() est souvent préférable à l'instruction globale. Elle permet non seulement de récupérer un code retour numérique dans une variable, mais aussi de capturer le message d'erreur textuel exact via la fonction SYSMSG(), facilitant ainsi la création de logs d'erreurs personnalisés et explicites. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.