IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Gestion des erreurs pour stopper le traitement


Sujet :

SAS Base

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Points : 61
    Points
    61
    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.

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    %IF &macroVariable > 4 %THEN %ABORT ;
    et tu arrêtes le macro-programme
    2) hors d'un macro-programme, tu peux écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OPTION OBS=%SYSFUNC(IFC(&macroVariable > 4, 0, MAX)) ;
    Bon courage.
    Olivier

  3. #3
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Points : 3 403
    Points
    3 403
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

  4. #4
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Points : 61
    Points
    61
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008] Gestion des erreurs pour une source Excel
    Par phenomeno dans le forum SSIS
    Réponses: 1
    Dernier message: 06/04/2011, 14h45
  2. Gestion des erreurs : ou trouver les erreurs possibles pour une opération
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/10/2008, 14h33
  3. [SQL-SEVER2005] Gestion des erreurs pour les requêtes
    Par eagleleader dans le forum MS SQL Server
    Réponses: 22
    Dernier message: 16/10/2007, 09h59
  4. Gestion des erreurs pour runtime
    Par cbleas dans le forum Runtime
    Réponses: 1
    Dernier message: 09/12/2006, 14h18
  5. Réponses: 6
    Dernier message: 09/06/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo