このマクロ文字列比較は、私にとって謎の方法で動作します。明らかなのは、%test1(intotest)
と%test2(intotest)
の結果が等しいことです。sasマクロの文字列比較は、同じ方法で同じではありません
%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;
出力は fromtable=b,test1=1,test2=0
それは%test1()
と同じ結果を与え、まだ入力としてDataTableの情報を使用するように、どのように私は%test2()
を書き換えるでしょうか?ありますか
これはマクロコードの恐ろしい使用です。これを使わないでください。これが学問的な運動でない限り、あなたは本当に何をしようとしていますか? Proc fcmpは関数用です。 – Reeza
'%mend EAF'はどういう意味ですか?引数なしで '%mend'を使用したり、終了したいマクロの名前だけを使用しました。 –
@ StigEide "警告:マクロ定義TEST1の場合、%MEND文の余分なテキストが無視されました。" –