Hello Everyone,
I want 100.10 as a value of variable e. is it possible without using any format ?
data _null_;
b="100.1";
c=input(b,5.2);
d="100.10";
e=input(b,6.2);
put _all_;
run;
No, it's not possible. Numbers do not contain a set of characters in SAS. Numbers store a numeric value, not the form in which it is expressed. You can always add a FORMAT statement later, when printing the numeric variable.
Just for the record, your INPUT functions are treading on dangerous ground. You would be safer using:
b="100.1";
c=input(b,5.);
d="100.10";
e=input(b,6.);
To see why, try this (and read the documentation):
b="12345";
c=input(b,5.2);
@_sas wrote:
Hello Everyone,
I want 100.10 as a value of variable e. is it possible without using any format ?
SAS data step being turing-complete, it is of course possible. See here:
data test;
have = '100.10';
want = 0;
fr_count = .;
do i = 1 to length(have);
if substr(have,i,1) = '.'
then fr_count = 0;
else do;
want = want * 10 + rank(substr(have,i,1)) - 48;
if fr_count ne . then fr_count + 1;
end;
end;
if fr_count ne . then want = want / 10 ** fr_count;
run;
Note that I did this because sometimes I have enough time at hand to waste on stupid ideas 😉
data _null_;
b="100.1";
c=b+0;
put _all_;
run;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.
Ready to level-up your skills? Choose your own adventure.