No, I don't think you can over-ride this behavior.
When you SET datasets together, SAS will throw an error if there is a variable that is numeric in one dataset and character in the other. This error is generated at compile time, before any records have been processed.
I agree with @Tom the best thing to do is probably to fix the root problem of why the dataset is being created with all numeric vars.
If you want a workaround, you might consider using the macro language to check whether or not a dataset is empty. You would end up a macro that conditionally generates the list of datasets to include on the SET statement, e.g.:
%macro ...;
data combined_file;
set
%if %anyobs(file1) %then file1 ;
%if %anyobs(file2) %then file2 ;
%if %anyobs(file3) %then file3 ;
;
run;
%mend;
If you want to try that workaround and want help writing %anyobs, just drop a comment and I'll post the one I use. It's based on Jack Hamilton's %MTANYOBS, as described in this paper: http://www2.sas.com/proceedings/sugi26/p095-26.pdf.
PROC IMPORTto guess what is in the files? Why not write your own data step to create them so that empty rows don't cause the format to change? - Tom