Hello, I have to compare 2 tables inside the macros and then run this macro with a set of parameters, but calling PROC COMPARE in different ways (direct call on two tables, calling macro via %MACRO_NAME, and calling macro from data step via call execute) gives different results data t1;
input a $ b;
datalines;
a 1
b 2
c 3
run;
data t2;
input a $ b;
datalines;
a 1
b 2
c 3
d 4
run;
proc compare base=t1
compare=t2 noprint;
run;
%put WARNING: direct compare &=sysinfo;
%macro compar(table1, table2, comment='');
proc compare base=&table1
compare=&table2 noprint;
run;
%put WARNING: &comment &=sysinfo;
%mend;
%compar(t1,t2,comment=direct macro invoke);
data compare_table;
input a $ b $;
datalines;
t1 t2
run;
data null;
set compare_table;
call execute('%compar(' || a||','||b||',comment=macro invoke from data step)'); call execute('%compar(t1,t2,comment=macro invoke from data step full copy)');
run; The direct call on two tables, calling macro via %MACRO_NAME obviously shows that tables are different BUT calling macro from data step via call execute shows that tables are equal, even CALL EXECUTE('%MACRO') shows the wrong result. Some remarks if any way around exists: I have to compare 2 tables in macro to be able to use %if %then to choose the behavior of the program depending on the equity of tables I have to call macros several times with the parameters storing in the table
... View more