BookmarkSubscribeRSS Feed
kishore415
Calcite | Level 5

Hi..

I have arithmetic expressions in a character field in a dataset as below...

example:

exp

701*10 ** 6

460*10 ** 6

6.22 * 10**-4

2*10**-3

Am unable to evaluate the expressions and keep them in a numeric variable..Can anyone please help me in this regard..

Thanks

7 REPLIES 7
LinusH
Tourmaline | Level 20

I suggest that you use the Call Execute routine for this.

Data never sleeps
Ksharp
Super User

How about:

data have;
input exp $20.;
cards;
701*10 ** 6
460*10 ** 6
6.22 * 10**-4
2*10**-3
;
run;
data want;
 set have;
 result=resolve(cats('%sysevalf(',exp,')'));
run;

Ksharp

LinusH
Tourmaline | Level 20

Neat!Smiley Happy

Data never sleeps
Ksharp
Super User

LinusH,

You still didn't go to sleep ?

At Sweden , It should be very late.

But At China, It is afternoon.

Ksharp

Smiley Happy

LinusH
Tourmaline | Level 20

I had sleep, but is 9 AM in sweden right now, and I 'm back to work!Smiley Happy Thanx for your concern...

Data never sleeps
MikeZdeb
Rhodochrosite | Level 12

Hi ... great solution.  One extra thing, I think the poster wants a numeric result ...

"Am unable to evaluate the expressions and keep them in a numeric variable"

So maybe ...

data want;

set have;

result=input(resolve(cats('%sysevalf(',exp,')')), 12.);

run;

Ksharp
Super User

You are welcome. In fact , this skill I learned is from this Forum .

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 3882 views
  • 1 like
  • 4 in conversation