The value of macro variable InterestRate is the string acc_int_rate/12, which is not a number.
You want something like this:
%macro Payment(InterestRate = , TermInMonths = , LoanAmt = );
%if &InterestRate le 0 %then
&LoanAmt / &TermInMonths ;
%else
&LoanAmt * (&InterestRate/100) / (1-((1+(&InterestRate/100))**(-&TermInMonths))) ;
%mend;
data CUBE_05_;
retain ACC_INT_RATE TERMOFNOTEINMONTHS ACC_LOAN_AMT 1;
LOAN_REPAYMENT= input(resolve(cats('%sysevalf(%PAYMENT( InterestRate =', ACC_INT_RATE/12
,', TermInMonths =', TERMOFNOTEINMONTHS
,', LoanAmt =', ACC_LOAN_AMT, '))' )), 32.);
putlog LOAN_REPAYMENT=; run;
LOAN_REPAYMENT=1.0008333333
... View more