I'm using the following command line:
SUBID_IN_HEX = input(SUBID_IN_HEX,hex.);
If I input as follows:
SUBID_IN_HEX = input('33b',hex.); SUBID_IN_HEX = 827 which is correct. However if I input
SUBID_IN_HEX = input('40b',hex.); SUBID_IN_HEX = 1E3 which should be 1035.
How do I correct the code to ensure no rounding/approximations occur? The digits may go to > 10.
Thanks for your time.
Steve
Steve,
So far, there is not conclusive evidence that any rounding has taken place. You may just need to user a wider format for printing the value of SUBID_IN_HEX. Try printing with:
format SUBID_IN_HEX 4.;
I agree with @ballardw. Formatting is likely to be the issue, not the value. Or you havent told us everything.
data _null_;
SUBID_IN_HEX = input('40b',hex.);
putlog SUBID_IN_HEX =;
run;
SUBID_IN_HEX=1035
You apparently have assigned a 3 column format to the variable somewhere. Please see:
data junk; v = input('40b',hex.); put 'Fixed 3 column format: ' + 1v= f3. +1 'Best format allowing 6 columns: ' +1v= best6.; run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.