Hard to tell what you want. Looks like you want one variable for each value in the first argument and the value is a concatenation of each of the words in the second list. But it is really not clear to me what separator you wanted between the generated words, as I could not figure out the purpose of "hh", so I just used space as the delimiter. So if I call it with %create_string(a b,x y z); Then it will create XA = ax ay az and XB=bx by bz. %macro create_string(inf, varlist); %local p i a w sep ; %do p=1 %to %sysfunc(countw(&inf.)); %let a = %scan(&inf.,&p.); %global X&a ; %let w= ; %let sep= ; %do i=1 %to %sysfunc(countw(&varlist.)); %let w=&w.&sep.&a.%scan(&varlist.,&i.); %let sep=%str( ); %end; %let X&a = %unquote(&w) ; %end; %mend create_string;
... View more