Hi All,
I have a requirement where the input is coming from the Easytrieve in which the acceptable numeric format is 100.00-. I need to convert this into SAS numeric format. Can some one help me in achieving this?
Input Output
100.00- -100.00
This field is the variable one.
data x;
input x trailsgn32.;
cards;
100.00-
34.32-
29
64.89
;
run;
proc print;run;
You can define your own informat to read such numbers
/* Informat function to read numbers possibly suffixed with a
minus sign. */
proc fcmp outlib=work.fcmp.format;
function EasytrieveNumber(text $);
m = indexc(text, "-");
if m = length(text) then return (-input(substr(text,1,m-1), best.));
else return (input(text, best.));
endsub;
run;
options cmplib=(work.fcmp);
proc format;
invalue EasytrieveNumber(default=32)
OTHER = [EasytrieveNumber()];
run;
data have;
input a :EasytrieveNumber10.;
format a 8.2;
cards;
100.00-
100.00
;
proc print data=have; run;
Obs a 1 -100.00 2 100.00
data x;
input x trailsgn32.;
cards;
100.00-
34.32-
29
64.89
;
run;
proc print;run;
Hi Ksharp,
TRAILSGNw. will only work for numeric values. In this case the input is coming as 100.00- which in my knowledge will only be read as a character value.
Thanks!
Thank you @Ksharp @error_prone & @Reeza 🙂
@aadityapurohit3 wrote:
Yeah... But the question here is for converting the character data to a numeric format.
That's what @Ksharp solution does, you can use that format in the INPUT() statement.
data x;
input x $;
cards;
100.00-
34.32-
29
64.89
;
run;
data want;
set x;
char_x=input(x, trailsgn32.);
run;
proc print data=want;
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.