When did these values get turned into numeric values in SAS?
Likely culprits are incorrect reading of external files, proc import a possible candidate.
The original values should have been read and kept as character.
The precision in SAS is such that anything with more than 16 digits is very problematic as to whether they are stored correctly.
The largest value for an 8-bytel numeric is
9,007,199,254,740,992 which is 16 digits. Anything larger is problematic for correct storage and display
data example;
x=11111111111111111;
put x comma23.;
run;
You best bet may be to go back in your process and ensure the value never gets treated as numeric at all. Once the conversion has been made the initial values may be corrupt.
Controlling variable types and lengths generally means reading from a text file with a character informat as long as the longest expected value.
Or if the value came from a database with longer integer values then create a version on the database case to character of appropriate length before reading with SAs.