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
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Register now!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.
Browse our catalog!