2017-05-19 4 views
1

Ich versuche, die Doppelpunkt-Modifikator-Funktionalität in einem Makro zu verwenden, aber es scheint nicht auf die gleiche Weise wie in einem Datenschritt zu arbeiten. Ein Beispiel für das, was ich versuche zu tun, ist unten gezeigt.Doppelpunkt-Modifizierer in Makro

data _null_; 
str = "hello"; 
if str =: "h" then put "y"; 
else put "n"; 
run; 

Die if-statement wertet TRUE im Daten Schritt, aber wenn ich eine ähnliche Logik in der Makrosprache gelten diese wird nicht mehr zu arbeiten.

%let str = hello; 
%put %eval(&str =: h); 

Der obige Code wird jetzt als FALSE ausgewertet. Gibt es etwas, das mir hier fehlt, oder ist dieser Modifier in der Makrosprache nicht verfügbar? Ich weiß, ich könnte %eval(%substr(&str,1,1)=h) verwenden, aber ich bin mehr neugierig, ob die : funktioniert.

Antwort

2

Nein, die : ist nicht in der Liste der Makrooperatoren; Weitere Informationen finden Sie unter macro language reference.

Beachten Sie, dass =: auch an anderen Stellen nicht gültig ist, z. B. in PROC SQL. In diesen Kontexten ist eqt der äquivalente Operator, aber das funktioniert auch nicht in der Makrosprache.

+1

Danke für die Einsicht. Ich bin mir nicht sicher, ob es mit der SAS-Version zu tun hat, aber ich kann '=:' in einer 'WHERE'-Anweisung verwenden. Beispiel: 'proc print data = sashelp.class; wo name =: 'Al'; '. –

+0

@J_Lard Hmm, schätze ich irre mich - korrigiert. Vielen Dank. – Joe