Если у вас не очень много переменных, вы можете вручную сгенерировать оператор длины для вашего комбинированного набора данных, как показано ниже. Обратите внимание, что существует ограничение в 32 КБ на длину значения макропеременной. Это также может испортить существующий порядок переменных.
/* test data */
data abc;
length a $2 b $1;
a = "aa";
b= "b";
run;
data def;
length a $1 b $2;
a = "a";
b= "bb";
run;
/* max lenghs for each and every char type var */
proc sql;
create view abcview as
select name, length
from dictionary.columns
where libname="WORK" and memname="ABC" and type="char";
create view defview as
select name, length
from dictionary.columns
where libname="WORK" and memname="DEF" and type="char";
select catx(" $", a.name, max(a.length, d.length))
into :lengths separated by " "
from abcview as a, defview as d
where a.name = d.name;
quit;
data ghi;
length &lengths;
set abc def;
run;
proc contents data=ghi;
run;
/* on lst - in part
# Variable Type Len
1 a Char 2
2 b Char 2
*/