Looks like you have handled the missing values fine. INPUT will treat a single period as missing for both numeric and character variables.
It is the date, datetime and character variables that you have not told the INPUT statement how to handle correctly.
Plus for the datetime value you might need to read in as character initially so you can capture the strange ;57 at the end of the value and decide what to do with that.
input
Obs org_code cust_no i:$30.
nd_vip cust_id :$10.
id_type industrial_code occu_code
dob_relation_level :date.
batch_date :date.
last_update_type :$8.
last_update_datetime :datetime.
eff_from_date :date.
eff_to_date :date.
POSTAL_CODE :$10.
RACE :$20.
STATE_CODE :$8.
NATIONALITY :$10.
NID_ISSUE_COUNTRY :$8.
;
format dob_relation_level batch_date eff_from_date eff_to_date date9.
last_update_datetime datetime19.
;
... View more