You have it backwards.
Let's look at your statement.
anncmt2 = input(put(anncmt, Date9.), BEST12.);
This says to treat the number 19,990,209 as the number of days since 1960 and generate a string that is in the format ddMONyyyy. Note that 19 million days since 1960 would be in the year 56,690. SAS cannot process dates that large. Plus even if it could a string like 01JAN56690 could not be interpreted by SAS as a number since it would contain letters for the month of the year. (PS The concept of a "best" informat doesn't make sense. SAS will just use the normal 12. informat if you ask for the best12. informat.)
You can use the YYMMDD informat to convert your digits into a date, but first you need to convert the number into a string. Informats always convert strings to values. Formats convert values to strings.
anncmt2 = input(put(anncmt, 8.), yymmdd8.);
... View more