I am using a macro in SAS to loop over the data tables in a specific library. I put the metadata information in a data null step and make a comparison with a where statement and my macro variable.
My SQL step looks like:
proc sql;
select quote(trim(code)) into :procedures separated by ', ' from procedures;
quit;
Some values of code
contain values like "45.10" and "G0102", so cannot be coerced to numeric. The macro contains the line:
%macro filter_codes(indata, outdata);
data &outdata;
set &indata(where = (code in (&procedures)));
run;
%mend;
but the decimal values create an issue when double-quoted using the "quote" function.
Can I separate values with single quotes?
EDIT: The issue was caused by the fact that the filter_codes macro was run within a call execute step (over a range of datasets) and double quotes resolved in macro variables inside of double quotes would end the call execute.
'
from"
except in macro variable resolution, which doesn't seem relevant here from your question. A simple test on my side proved it to work fine, usingheight
fromsashelp.class
. Can you post some example data that shows this not working? – Joe