BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Amy_W
Calcite | Level 5

Hello,

I created two macro variables using proc sql select into. My expectation is that I will get two numbers and then continue to next step. The part of my is below:

proc sql noprint;

  select min(mean),max(mean)

  INTO :mini,

  :maxes

  from plot1;

quit;

%LET low=%eval(&mini-10);

%LET upper=%eval(&maxes+10);

The error messages are:

ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric

       operand is required. The condition was: 290.6-10

ERROR: The macro PLOT will stop executing.

I know one way to use input function in data step but not sure how to achieve my goal in this situation.

Any suggestions are welcome and thanks for all.

1 ACCEPTED SOLUTION

Accepted Solutions
Haikuo
Onyx | Level 15

%eval is only good for integers. replace it with %sysevalf().

View solution in original post

7 REPLIES 7
Haikuo
Onyx | Level 15

%eval is only good for integers. replace it with %sysevalf().

Amy_W
Calcite | Level 5

Yes, that's it!

Thank you!

ballardw
Super User

How about

select (min(mean) -10),(max(mean)+10) into : low , :upper

and avoid the extra step?

Of course if you also need mini and maxes that's not needed.

Amy_W
Calcite | Level 5

That's really a good idea. Though I still need the %sysevalf function to convert it into numeric.

data_null__
Jade | Level 19

Why put the numbers into macro variables at all?  What is your "next step"?

Amy_W
Calcite | Level 5

I need to plot thousands of pics. Those two numbers are the upper and lower bound of axes.

data_null__
Jade | Level 19

For axis scaling I would look at the IML routine GSCALE.  I it takes min and max values and produces nice tick marks using some criteria that you can adjust, like Number of Ticks.

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 2695 views
  • 3 likes
  • 4 in conversation