So klappt es:

d TestNum s 8 0 inz(19900522)
d TestDate s d

c/free
TestDate = %date(TestNum);
return;
/end-free

Der 2. Parameter von %date gibt das Ziel- und nicht das Quellformat an !!