Dieser Artikel erklärt Ihnen, wie Sie eine leere (null) Makrovariable von einer Makrovariable, die einen Punkt enthält, unterscheiden und wie Sie diese Tests korrekt durchführen.
Es ist entscheidend, die Art Ihrer Variable zu verstehen:
Leere Makrovariable (Null): Sie enthält keine Zeichen.
Beispiel: %let maVar = ;
Makrovariable, die einen Punkt enthält: Sie enthält das Zeichen „.“. Für den Makroprozessor ist dies eine Zeichenkette der Länge 1, kein fehlender Wert.
Beispiel: %let maVar = .;
Wenn Sie %if &maVar = . testen, prüfen Sie buchstäblich, ob die Variable das Zeichen „Punkt“ enthält, und nicht, ob sie leer ist.
Methode 1: Verwendung der Funktion %LENGTH (Empfohlen)
Die robusteste Methode, um zu überprüfen, ob eine Makrovariable „leer“ oder „null“ ist, besteht darin, ihre Länge zu testen.
Um zu überprüfen, ob eine Variable leer ist:
%if %length(&maVar) = 0 %then %do;
%put Die Variable ist leer.;
%end;
1
%IF %LENGTH(&maVar) = 0 %THEN %DO;
2
3
%put Die Variable ist leer.;
4
5
%END;
6
Um zu überprüfen, ob eine Variable einen Wert enthält (nicht leer):
Ein Punkt (.) ist ein Zeichen, kein fehlender Wert im Sinne von Makros.
Verwenden Sie %if %length(&var) = 0, um auf einen Nullwert (leer) zu testen.
Um das Thema fehlender und logischer Werte in Makros zu vertiefen, sind die Arbeiten von Chung und King zu diesem Thema solide technische Referenzen.
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.