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.
Aviso importante
Los códigos y ejemplos proporcionados en WeAreCAS.eu son con fines educativos. Es imperativo no copiarlos y pegarlos ciegamente en sus entornos de producción. El mejor enfoque es comprender la lógica antes de aplicarla. Recomendamos encarecidamente probar estos scripts en un entorno de prueba (Sandbox/Dev). WeAreCAS no acepta ninguna responsabilidad por cualquier impacto o pérdida de datos en sus sistemas.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.