(This question specifically ask us to create a new macro call amort) I tried but i cannot solve the problem by myself %macro amort; data _null_; set sasuser.Customer end=final; if int=. then int=0.02; if period=. then do; year=25; remainperiod=year*12; period=year*12; end; if final then call symputx('m_n', _n_); if not final then do; call symputx('m_ID'!!left(_n_), ID); call symputx('m_loanamt'!!left(_n_), loanamt); call symputx('m_loandate'!!left(_n_), loandate); call symputx('m_int'!!left(_n_), int); call symputx('m_remainperiod'!!left(_n_), remainperiod); call symputx('m_period'!!left(_n_), period); call symputx('m_name'!!left(_n_), name); end; run; %put _user_; %do i=1 %to &m_n; %cust(&&m_ID&i, &&m_loanamt&i, &&m_loandate&i, &&m_int&i, &&m_remainperiod&i, &&m_period&i); proc print data=&&m_ID&i label; title "Loan amortation for &&m_name&i"; var payment_date sch_pay total_int_paid balance paidint principal; format payment_date date9.; label payment_date='Date of payment'; run; %end; %mend amort; When I use %amort(), my program stopped here LOG: WARNING: Apparent invocation of macro CUST not resolved. %cust(&&m_ID&i, &&m_loanamt&i, &&m_loandate&i, &&m_int&i, &&m_remainperiod&i, &&m_period&i); _ 180 proc print data=&&m_ID&i label; title "Loan amortation for &&m_name&i"; var payment_date sch_pay ERROR 180-322: Statement is not valid or it is used out of proper order.
... View more