Looks like it is doing what you asked. Consider this little program.
data test;
input x;
year=year(x);
month=month(x);
day=day(x);
put (_all_) (= comma12.);
cards;
01082012
04112007
;
x=1,082,012 year=4,922 month=6 day=14
x=4,112,007 year=13,218 month=4 day=20
So one million days since 1960 is in the middle of the year 4922. 4 million days is after the start of the year 13,218!
First convert the value to an actual date (at least for the numbers that are valid dates). Then you can use the value as a date and attach any date format you want to use when display the values. Personally I avoid MMDDYY or DDMMYY format as whichever one you pick half of your audience will be confused.
fixed=input(put(transaction_date,Z8.),mmddyy8.);
format fixed yymmdd10.;