I had an additional thought about this. You may not need macro variables in order to check the type of a DATASET variable. For example, the VTYPE and VTYPEX functions will return the type of a variable -- they each work slightly differently. They are documented here:
http://support.sas.com/documentation/cdl/en/lrdict/62618/HTML/default/a000245993.htm
http://support.sas.com/documentation/cdl/en/lrdict/62618/HTML/default/a000245994.htm
The program below creates some fake data -- with 2 character variables C_AGE and C_HEIGHT. Then the type of those 2 variables is checked and new variables are created based on the result of using VTYPE.
cynthia
[pre]
** all variables in WORK.NEWCLASS are character except for WEIGHT var;
** need some fake data to work with;
data newclass(keep=name c_age c_height weight);
length c_age c_height $8;
set sashelp.class;
c_age = put(age,2.0);
c_height = put(height,4.1);
run;
** use VTYPE function;
data whattype;
set work.newclass;
if vtype(c_age) = 'C' then do;
newage = input(c_age,best8.);
end;
if vtype(c_height) = 'C' then do;
newheight = input(c_height,best8.);
end;
if vtype(weight) = 'N' then do;
putlog "Weight Variable is already numeric";
end;
run;
** show results of conversion;
ods listing;
proc print data=whattype;
title 'Creating numeric variables, if needed';
run;
[/pre]