Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/04/2011, 16h42   #1
Membre à l'essai
 
Homme Jean-François Marchand
Analyste d'exploitation
Inscription : octobre 2008
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Jean-François Marchand
Localisation : Canada

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : octobre 2008
Messages : 30
Points : 24
Points : 24
Par défaut Gestion des erreurs pour stopper le traitement

Bonjour,

je cherche des exemples de gestion des codes d'erreur en SAS afin de forcer l'arrêt du traitement au besoin. Je suis pas mal perdu à essayer de trapper les codes d'erreur. Quel est la meilleure façon de fonctionner pour arrêter le traitement s'il y a erreur...

Exemple : Erreur de password dans la fonction SIGNON...

Merci d'avance pour votre aide. J-F.
DEMMAR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2011, 09h17   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Bonjour Jean-François.
Je ne sais pas si c'est vraiment ta question, mais il y a 3 macro-variables qui contiennent des codes d'erreurs dans SAS :
* SYSERR qui contient le code de la dernière proc ou étape Data exécutée (4=warning, >4=erreur)
* SQLRC qui contient l'équivalent pour la proc SQL (mis à jour à chaque requête)
* SYSRC qui contient le code erreur pour les commandes externes (X, SYSTASK COMMAND, CALL SYSTEM)
Si tu veux récupérer d'autres codes il faudra ruser (c'était peut-être l'objet de ta question).
En v9.2 tu as des SYSWARNINGTEXT et SYSERRORTEXT en plus avec le libellé du message (attention à la langue de la session quand tu les traites).

Attention, ces macro-variables ne sont réinitialisées que quand leur valeur est évaluée à nouveau : ainsi on traîne des SYSERR à 4 tant qu'on ne fait pas de nouvelle proc / Data ; et on traîne des SYSERRORTEXT tant qu'on n'a pas un nouveau message d'erreur (ne pas en avoir ne remet pas la macro-variable à vide).

Comment s'en servir pour arrêter un traitement ?
1) dans un macro-programme, tu fais
Code :
%IF &macroVariable > 4 %THEN %ABORT ;
et tu arrêtes le macro-programme
2) hors d'un macro-programme, tu peux écrire
Code :
OPTION OBS=%SYSFUNC(IFC(&macroVariable > 4, 0, MAX)) ;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 10h01   #3
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Citation:
Envoyé par DEMMAR Voir le message
Exemple : Erreur de password dans la fonction SIGNON...
.
pour la connexion client serveur tu peux utiliser l'option CMACVAR=value, dont le détail est ici.

-autre alternative au statement ABORT qui est utilisé dans une étape ou %ABORT dans un macro programme comme l'a très bien expliqué Olivier.
Tu peux utiliser le Statement %GOTO dans un macro programme.
exemple de code :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
%macro erreurs;
	%let a= &syserr;
 
	%IF &a>0 %then %do;
		%put ERROR:  erreurs dans le programme;
		%goto sortie;
	%end;
 
	%sortie: 
%mend;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h21   #4
Membre à l'essai
 
Homme Jean-François Marchand
Analyste d'exploitation
Inscription : octobre 2008
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Jean-François Marchand
Localisation : Canada

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : octobre 2008
Messages : 30
Points : 24
Points : 24
Par défaut Merci pour vos réponses...

Bonjour à vous deux,

je vous remercie pour vos réponses, c'est très apprécié. Je vais faire un bout de chemin à partir de celles-ci quand j'aurai 2 minutes à y consacrer. Je vous reviens bientôt pour vous informer si je m'en suis sorti...

Merci encore, J-F.
DEMMAR est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h18.


 
 
 
 
Partenaires

Hébergement Web