rounding prevention of hex. in 'input' context

Reply
Contributor
Posts: 38

rounding prevention of hex. in 'input' context

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

Super User
Posts: 5,351

Re: rounding prevention of hex. in 'input' context

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.;

 

Contributor
Posts: 38

Re: rounding prevention of hex. in 'input' context

Thanks. Subsequent usage says that it is using 1000 instead of 1035, for example.
PROC Star
Posts: 1,667

Re: rounding prevention of hex. in 'input' context

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

 

 

Super User
Posts: 11,101

Re: rounding prevention of hex. in 'input' context

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;
Ask a Question
Discussion stats
  • 4 replies
  • 95 views
  • 0 likes
  • 4 in conversation