Это макро-сравнение строк работает для меня. Очевидным для меня было бы то, что результат %test1(intotest)
и %test2(intotest)
равны.sas macro string-сравнение не одинаково аналогично
%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
Как бы переписать %test2()
так, что она дает тот же результат, как %test1()
и до сих пор используют информацию в DataTable в качестве входных данных?
Это ужасное использование макрокода. Пожалуйста, не используйте это. Если это не академическое упражнение, что вы действительно пытаетесь сделать? Proc fcmp предназначен для функций. – Reeza
Что означает '% mend EAF'? Я использовал «% mend» без аргументов или имя макроса, который вы хотите завершить. –
@StigEide "ПРЕДУПРЕЖДЕНИЕ: Посторонний текст в% MEND-инструкции игнорируется для определения макроса TEST1." –