Publié le :
Débogage CREATION_INTERNE

Erreurs d'exécution

Snippet validé
Les erreurs d'exécution se produisent lorsque SAS© exécute un programme qui traite des valeurs de données. La plupart de ces erreurs se traduisent par des messages d'avertissement ou des notes dans le journal SAS©, mais permettent au programme de continuer à s'exécuter. L'emplacement d'une erreur d'exécution est généralement indiqué par les numéros de ligne et de colonne dans une note ou un message d'erreur. Les erreurs courantes incluent les arguments de fonction invalides, les opérations mathématiques invalides (par exemple, division par 0), les observations dans le mauvais ordre pour le traitement par groupe BY, la référence à un membre inexistant d'un tableau (lorsque l'indice du tableau est hors de portée), les erreurs d'ouverture et de fermeture sur les jeux de données SAS© et autres fichiers dans les instructions INFILE et FILE, et les instructions INPUT qui ne correspondent pas aux lignes de données. Des erreurs peuvent également survenir en cas de manque de ressources (disque plein, mémoire insuffisante), où SAS© peut demander la permission de libérer des ressources temporaires.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines).

1 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple démontre une erreur d'exécution due à une division par zéro. Dans la deuxième observation, 'UnitsOnHand' est égal à 0, ce qui rend le calcul de 'UnitCost' impossible. SAS émet une note dans le journal, affecte une valeur manquante à 'UnitCost' pour cette observation, mais continue le traitement. Le PROC PRINT affiche le jeu de données résultant avec la valeur manquante.
Copié !
1DATA inventory;
2 INPUT Item $ 1-14 TotalCost 15-20
3 UnitsOnHand 21-23;
4 UnitCost=TotalCost/UnitsOnHand;
5 DATALINES;
6Hammers 440 55
7Nylon cord 35 0
8Ceiling fans 1155 30
9;
10 
11PROC PRINT DATA=inventory;
12 FORMAT TotalCost dollar8.2 UnitCost dollar8.2;
13RUN;
2 Bloc de code
DATA STEP / PROC PRINT Data
Explication :
Cet exemple illustre une erreur d'exécution due à un indice de tableau hors limites. Le tableau 'all' est défini avec 3 éléments (x1-x3). Dans la deuxième observation, la variable 'I' est manquante (.), ce qui entraîne une tentative d'accès à un élément de tableau avec un indice invalide (hors limites). SAS arrête le traitement de l'étape DATA en raison de cette erreur.
Copié !
1DATA test;
2 array all{*} x1-x3;
3 INPUT I measure;
4 IF measure > 0 THEN
5 all{I} = measure;
6 DATALINES;
71 1.5
8. 3
92 4.5
10;
11 
12PROC PRINT DATA=test;
13RUN;
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.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved


Documentation liée : Débogage

Sujet / Mot-cléLien vers la ressource
DOC Erreurs liées aux macros fr/sampleCode/ERREUR6CA6
DOC Définitions des types d'erreurs dans SAS fr/sampleCode/DEFINI9A72
Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« Ne négligez jamais une "Note" ou un "Warning" dans le journal, même si le programme se termine. Utilisez des structures de contrôle comme if UnitsOnHand > 0 then... ou vérifiez la validité de vos indices de tableaux avant l'affectation. Une exécution sans erreur de syntaxe ne garantit pas la justesse de vos résultats. »