If &DATE resolves to 17998, there's no conversion needed, just the appropriate format.
Just X=&DATE will do the job.
Actualy DATE9. is a numeric format.
17998 and '11APR2009'd are the same.
To see X as DATE9, just apply the format DATE9. to the X, or use formatted print (put X date9.;)
For example:
data _null_;
X=17998;
put X date9.;
run;
and you will see the NUMERIC value 17998 formated with the NUMERIC format date9.
Hope it helps.
ps: btw the call resolve("&DATE") is useless "&DATE" just will do.
Greetings from Portugal.
Daniel Santos at
www.cgd.pt