@STEDEMI
Your observation is correct. That's how it's documented and how SAS works.
I do agree with everything @Kurt_Bremser writes and for production worthy code you want to have full control over your variable attributes and such length mismatches shouldn't happen in first place.
Now for your adhoc type stuff: Your guess that you might get around the issue via SQL is correct. It's a bit less known but when using a SQL OUTER UNION CORR to combine source tables into a NEW target table (that's NOT appending a source table to another already existing table) then the SQL actually analyses all the variables first and the length of the resulting variable for the combined data will have the max length from all the source tables.
Consider below code sample
data one;
length var $3;
var='ABC';
run;
data two;
length var $5;
var='ABCDE';
run;
proc sql;
create table want as
select * from one
outer union corr
select * from two
;
quit;
proc contents data=want;
run;
... View more