If the above code works, then I gave a pretty weak explanation.
To have any comparison work in a DATA step, without macro variables you need something like this
if range eq "Upper" then amount=4000;
This assumes range is a character variable and you want to test to see if its value is "Upper". Single quotes work here too. This is an important first step, getting code to work in one situation without using macro and without macro variables. If you don't have this working, then STOP RIGHT THERE and get this to work. If you don't have this working, then anything you do with macro will not work either.
Now that you have that working, to use the macro variable, you must use double-quotes and you place the macro variable inside the double quotes
if range eq "&category" then amount=4000;
--
Paige Miller