Cet article vous explique comment distinguer une macro variable vide (null) d'une macro variable contenant un point, et comment effectuer ces tests correctement.
Il est crucial de comprendre la nature de votre variable :
Macro variable vide (Null) : Elle ne contient aucun caractère.
Exemple : %let maVar = ;
Macro variable contenant un point : Elle contient le caractère ".". Pour le macro processeur, c'est une chaîne de caractères de longueur 1, pas une valeur manquante.
Exemple : %let maVar = .;
Si vous testez %if &maVar = ., vous vérifiez littéralement si la variable contient le caractère "point", et non si elle est vide.
Méthode 1 : Utiliser la fonction %LENGTH (Recommandée)
La méthode la plus robuste pour vérifier si une macro variable est "vide" ou "null" est de tester sa longueur.
Pour vérifier si une variable est vide :
%if %length(&maVar) = 0 %then %do;
%put La variable est vide.;
%end;
1
%IF %LENGTH(&maVar) = 0 %THEN %DO;
2
3
%put La variable est vide.;
4
5
%END;
6
Pour vérifier si une variable contient une valeur (non-vide) :
Un point (.) est un caractère, pas une valeur manquante au sens macro.
Utilisez %if %length(&var) = 0 pour tester une valeur nulle (vide).
Pour approfondir le sujet des valeurs manquantes et logiques dans les macros, les travaux de Chung et King sur le sujet sont des références techniques solides.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.