Here is a SQL based solution . Just change dataset name and library name as indicated. proc sql;
SELECT catx( " " ,catt(A,'*',B ,' AS ' ), Varlist) into : myvar separated by ', '
FROM (
SELECT a.Vlist as A,
b.Vlist as B,
cats(a.Vlist,'_',b.Vlist) as Varlist
FROM( select name as vlist
from dictionary.columns
where memname = upcase("have") /*DATASET NAME*/
and libname =upcase("Work") /*LiBRARY NAME*/
and name like 'p%' ) a
CROSS JOIN
( select name as vlist
from dictionary.columns
where memname = upcase("have") /*DATASET NAME*/
and libname =upcase("Work") /*LiBRARY NAME*/
and name like 'p%' ) b
WHERE a.vlist ne b.vlist
)
;quit;
PROC SQL;
Create table want as
SELECT family,stock,port1,port2,port3,port4,&myvar
from have;
Run;
... View more