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.
Important Disclaimer
The codes and examples provided on WeAreCAS.eu are for educational purposes. It is imperative not to blindly copy-paste them into your production environments. The best approach is to understand the logic before applying it. We strongly recommend testing these scripts in a test environment (Sandbox/Dev). WeAreCAS accepts no responsibility for any impact or data loss on your systems.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.