Dieser Makro-String-Vergleich funktioniert auf mysteriöse Weise für mich. Das offensichtliche für mich wäre, dass das Ergebnis von %test1(intotest)
und %test2(intotest)
gleich ist.sas Makro-String-Vergleich entspricht nicht
%macro test1(intotest=);
%str(&intotest) = %str("b");
%mend;
%macro test2(intotest);
%if %str(&intotest) = %str("b") %then
1;
%else 0;
%mend EAF;
data datatable;
fromtable = 'b';
test1 = %test1(intotest=fromtable);
test2 = %test2(intotest=fromtable);
run;
Der Ausgang ist fromtable=b,test1=1,test2=0
Wie würde ich %test2()
so umschreiben, dass es das gleiche Ergebnis wie %test1()
gibt und immer noch die Informationen in der Datentabelle als Eingabe verwenden?
Dies ist eine schreckliche Verwendung von Makro-Code. Bitte benutze das nicht. Wenn es sich nicht um eine akademische Übung handelt, was versuchen Sie wirklich? Proc fcmp ist für Funktionen. – Reeza
Was bedeutet "% mend EAF"? Ich habe nur '% mend' ohne Argumente oder den Namen des Makros verwendet, das Sie beenden möchten. –
@StigEide "Warnung: Fremdtext in% MEND-Anweisung ignoriert für Makrodefinition TEST1." –