First of all you need no quotes and commas:
%macro m_test(
keyN= /* numeric key variables */
,keyC= /* character key variables */
);
data test;
if 0 then set sashelp.cars;
length FAKE_NUM 8 FAKE_CHAR $ 1;
drop FAKE_NUM FAKE_CHAR;
array a[*] FAKE_NUM &keyN.;
array b[*] $ FAKE_CHAR &keyC.;
declare hash found_keys();
do i = 2 to dim(A);
found_keys.definekey(vname(A[i]));
end;
do i = 2 to dim(B);
found_keys.definekey(vname(B[i]));
end;
found_keys.definedone();
do while (not done);
set sashelp.cars end=done;
rc=found_keys.add();
output;
end;
rc = found_keys.output(dataset:"test123");
stop;
run;
%mend;
%m_test(keyC=Make Model, keyN=Invoice);
%m_test(keyN=Invoice);
%m_test(keyC=Make Model);
%m_test(keyC=Make);
Bart