Here's a small program that works with the sample data and code you provided. I removed the FORMAT statement for sh_date1 since this variable is dropped.
I don't call the STRIP function. If you see blanks where you expect a valid date, it could be that you're working with a missing value, which might result from an invalid date.
[pre]data ship_dates;
length ship_date $ 10;
input ship_date;
sh_date1 = input(ship_date, anydtdte10.);
sh_date2 = put(sh_date1, mmddyy10.);
drop ship_date sh_date1;
rename sh_date2 = ship_date;
datalines;
9/1/2009
10/27/09
09/10/2009
;
proc print data=ship_dates; run;
[/pre]
Output:
[pre]
Obs ship_date
1 09/01/2009
2 10/27/2009
3 09/10/2009
[/pre]