Step 1: write code (without any macro function at all) that successfully converts one variable in one dataset. Once you have that working, replace variable and/or dataset names with macro variables and set those before the step. Once that works, wrap it in a macro where you supply the macro variables as parameters.
Everything else is just inviting pain for yourself.
I looks like you are trying to do something like this:
%let oldname= datetime_variable;
%let newname= date_variable;
data new ;
set old;
&newname = datepart(&oldname);
format &newname date9.;
run;
Since both a DATE and a DATETIME variable are numeric you could set both macro variables to the same dataset variable.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.