I've been poking around a bit with this multi-value case and it appears that the ootb EG macro %_eg_WhereParam() doesn't cover this case for a contains operator.
The prompt type you're using generates actually a set of separate macros. Below an example for a prompt with name MyPrompt:
/* macro variables created for MyPrompt with 3 values selected */
%let MYPROMPT0 =3;
%let MYPROMPT1 =Plumber;
%let MYPROMPT2 =Electrician;
%let MYPROMPT3 =Carpenter;
If you select operator in a list then macro %_eg_WhereParam() creates valid syntax. But it doesn't work for operator contains and I couldn't figure out "a hack" to get around this using the query builder.
You could of course write your own SAS code and then implement some macro logic which builds correct syntax from such a prompt.
Not sure if one should call this a defect or not. May be consider raising a SAS Tech Support track for this one.
What macro %_eg_WhereParam() does is to create a comma delimited list as required for an IN operator. It would need to create a list of separate OR conditions per prompt values for a contains operator to work.
... View more