If the source data is an external flat file (not a SAS dataset, not a database table) then there may be another issue at hand.
Check how you are reading the records in, there may be a mis-match in the field identification/parsing/delimiting/alignment. I habe been nabbed by this on many occasions, where a field is missing, and SAS skips across the missing field and values are then shifted left causing the right most field(s) to be missing, and numeric fields may be missing because a text field was there instead.
Make sure you have sufficient logging options on to trap conversions and datatype errors. It is possible to tell SAS not to report on input errors, which greatly speeds up processing, but also can cause you to miss input errors.