This is on Teradata specifically, but in general, is it possible for a macro to accept a list as a parameter? E.g.,
create macro myMacro ( incomingList ) AS
(
select foo
from tBar
where animal in (:incomingList );
);
...and then...
exec myMacro( ('chicken','pig','cow') );