Hello, I am trying to increment a macro variable, and keep getting the "A character operand was found in the %eval function or %if condition where numeric expected.... **create an incrementer, so you can rank things, and some macro variables, for rank creation; %global nihssbrankvar ninetyrankvar rank3mrankvar; %let rank3mrankvar = 1; %let ninetyrankvar = 1; %let nihssbrankvar = 1; **macro to increment my macrovariables; %macro incrementvar(vartoincrement); %let vartoincrement = %eval(&vartoincrement. + 1); %mend; **now lets generate a ranking for everyone, based on their rankin 3 month score; proc sort data=mydata; by rank3m; run; **now, let's apply this ranking; data myranked; set mydata; by rank3m; rank3m_rank = &rank3mrankvar.; if last.rank3m=1 then do; %incrementvar(rank3mrankvar); charRank3m = put(last.rank3m, 8.); *This is just a test line, to ensure that last.Rank3m is flagging when i expect it is; end; run; ugh I've been literally beating my head on a wall for a day, it is causing me some serious anxiety. There are a couple of other posts I have found, which helped point me towards using %eval in the first place (for example) but were not like my issue and I was unable to apply to my own. I want to simply increment an integer macro variable whenever I want to, and my macro to do so is expecting an integer? But, i verify in a datastep that my macro variable rank3m_rank (which is being set equal to my macro varible I am trying to increment, &rank3mrankingvar., is indeed a numeric and not a char) Thanks so much
... View more