Thanks, @FreelanceReinh. It works great! I found a global forum paper showing yet another way for capturing metadata without using proc contents. Both are improvements to the original. Thanks again. %macro varexist(dsn=,varname=);
%local dsid vnum;
%let vnum=0;
%let dsid = %sysfunc(open(&dsn));
%if &dsid %then %do;
%let vnum = %sysfunc(varnum(&dsid,&varname));
%let dsid = %sysfunc(close(&dsid));
%end;
&vnum
%mend varexist;
/* Check for existence of timeid in dsn, and assign same date format as dsn and timeid provided in macro */
%macro dateformat(dsn=,timeid=);
%local dsid;
%let dsid= %sysfunc(open(&dsn));
%if %varexist(dsn=&dsn,varname=&timeid) %then %do;
%let fmt=%sysfunc(varfmt(&dsid,%sysfunc(varnum(&dsid,&timeid))));
%let dsid= %sysfunc(close(&dsid));
%end;
&fmt
%mend;
%put date format = %dateformat(dsn=have,timeid=date1); data new; set sashelp.air; format date %dateformat(dsn=have,timeid=date3); run;
... View more