Here is one way using call execute:
data have;
a = "1"; b = "12.3"; c = "";
output;
run;
data _null_;
if 0 then set have;
array _c _character_;
length _l $200;
call execute ("data want; set have;");
do _i = 1 to dim(_c);
_l = cat("_", vname(_c{_i}), "=input(", vname(_c{_i}), ",best.);drop ",
vname(_c{_i}), ";rename _", vname(_c{_i}), "=", vname(_c{_i}), ";");
call execute (_l);
end;
call execute ("run;");
run;
It reads all your fields with the best. informat.
PG