I'm hoping someone can help me debug this code (in SAS 9.3). I want to do a series of correlations between pairs of variables (ctfr1915-ctfr1974 and ratesemf_1992-ratesemf_2014) for multiple years using a third variable (mage1915-mage1974) to make the link. For example, mage1970=29 so I want to correlate ctfr1970 and ratesemf_1999 (1970+29=1999). I've been using the code below and it is obviously getting hung up on the 5th line because ma is a character. How can I pass the numeric value so that it will put whatever the value of ma1965 is into the code and give me in the index year for the second variable (ratesemf_)? I've also pasted the log output below. Thank you! options SYMBOLGEN MPRINT; %macro cohhous(fert, house,sy, ey); %do yf=&sy. %to &ey.; %let ma=mage&sy.; %let yh=%eval(ma+&sy.); proc corr data = temp1 outp=out&yf. ; var &fert.&yf. &house.&yh.; data outb&yf.; set out&yf.; corr=&fert.&yf.; year=&yf.; keep year corr ; if _n_=5; run; %end; %mend; run; %cohhous (ctfr,ratesemf_,1965,1974); run; 671 options SYMBOLGEN MPRINT; 672 %macro cohhous(fert, house,sy, ey); 673 %do yf=&sy. %to &ey.; 674 %let ma=mage&sy.; 675 %let yh=%eval(ma+&sy.); 676 proc corr data = temp1 outp=out&yf. ; 677 var &fert.&yf. &house.&yh.; 678 data outb&yf.; 679 set out&yf.; 680 corr=&fert.&yf.; 681 year=&yf.; 682 keep year corr ; 683 if _n_=5; 684 run; 685 %end; 686 %mend; 687 run; 688 689 %cohhous (ctfr,ratesemf_,1965,1974); SYMBOLGEN: Macro variable SY resolves to 1965 SYMBOLGEN: Macro variable EY resolves to 1974 SYMBOLGEN: Macro variable SY resolves to 1965 SYMBOLGEN: Macro variable SY resolves to 1965 ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: ma+1965 ERROR: The macro COHHOUS will stop executing. 690 run;
... View more