Reeza, I apologize for all the questions, but could you point me to where my Macro went wrong? %Macro Transform(x);
When(&x.) do;
PreResYr_Consume =N_PreResYr&x.thM_CONSUME;
PreResYr_Durable =N_PreResYr&x.thM_DURABLE;
PreResYr_Trans =N_PreResYr&x.thM_TRANS;
PreResYr_Health =N_PreResYr&x.thM_HEALTH;
PreResYr_Insure =N_PreResYr&x.thM_INSURE;
PreResYr_Loan =N_PreResYr&x.thM_LOAN;
PreResYr_Tax =N_PreResYr&x.thM_TAX;
PreResYr_Educa =N_PreResYr&x.thM_EDUCA;
PreResYr_Gift =N_PreResYr&x.thM_GIFT;
PreResYr_Enter =N_PreResYr&x.thM_ENTER;
PreResYr_Recre =N_PreResYr&x.thM_RECRE;
PreResYr_Finplan =N_PreResYr&x.thM_FINPLAN;
PreResYr_Legala =N_PreResYr&x.thM_LEGALA;
PreResYr_IncomeTL =N_PreResYr&x.thM_INCOMETL;
end;
%Mend Transform;
data Tall2;
set Tall;
Select(Month);
When(1) do;
PreResYr_Consume =N_PreResYr1stM_CONSUME;
PreResYr_Durable =N_PreResYr1stM_DURABLE;
PreResYr_Trans =N_PreResYr1stM_TRANS;
PreResYr_Health =N_PreResYr1stM_HEALTH;
PreResYr_Insure =N_PreResYr1stM_INSURE;
PreResYr_Loan =N_PreResYr1stM_LOAN;
PreResYr_Tax =N_PreResYr1stM_TAX;
PreResYr_Educa =N_PreResYr1stM_EDUCA;
PreResYr_Gift =N_PreResYr1stM_GIFT;
PreResYr_Enter =N_PreResYr1stM_ENTER;
PreResYr_Recre =N_PreResYr1stM_RECRE;
PreResYr_Finplan =N_PreResYr1stM_FINPLAN;
PreResYr_Legala =N_PreResYr1stM_LEGALA;
PreResYr_IncomeTL =N_PreResYr1stM_INCOMETL;
end;
When(2) do;
PreResYr_Consume =N_PreResYr2ndM_CONSUME;
PreResYr_Durable =N_PreResYr2ndM_DURABLE;
PreResYr_Trans =N_PreResYr2ndM_TRANS;
PreResYr_Health =N_PreResYr2ndM_HEALTH;
PreResYr_Insure =N_PreResYr2ndM_INSURE;
PreResYr_Loan =N_PreResYr2ndM_LOAN;
PreResYr_Tax =N_PreResYr2ndM_TAX;
PreResYr_Educa =N_PreResYr2ndM_EDUCA;
PreResYr_Gift =N_PreResYr2ndM_GIFT;
PreResYr_Enter =N_PreResYr2ndM_ENTER;
PreResYr_Recre =N_PreResYr2ndM_RECRE;
PreResYr_Finplan =N_PreResYr2ndM_FINPLAN;
PreResYr_Legala =N_PreResYr2ndM_LEGALA;
PreResYr_IncomeTL =N_PreResYr2ndM_INCOMETL;
end;
When(3) do;
PreResYr_Consume =N_PreResYr3rdM_CONSUME;
PreResYr_Durable =N_PreResYr3rdM_DURABLE;
PreResYr_Trans =N_PreResYr3rdM_TRANS;
PreResYr_Health =N_PreResYr3rdM_HEALTH;
PreResYr_Insure =N_PreResYr3rdM_INSURE;
PreResYr_Loan =N_PreResYr3rdM_LOAN;
PreResYr_Tax =N_PreResYr3rdM_TAX;
PreResYr_Educa =N_PreResYr3rdM_EDUCA;
PreResYr_Gift =N_PreResYr3rdM_GIFT;
PreResYr_Enter =N_PreResYr3rdM_ENTER;
PreResYr_Recre =N_PreResYr3rdM_RECRE;
PreResYr_Finplan =N_PreResYr3rdM_FINPLAN;
PreResYr_Legala =N_PreResYr3rdM_LEGALA;
PreResYr_IncomeTL =N_PreResYr3rdM_INCOMETL;
end;
%Transform(4-11);
Otherwise do;
PreResYr_Consume =N_PreResYr12thM_CONSUME;
PreResYr_Durable =N_PreResYr12thM_DURABLE;
PreResYr_Trans =N_PreResYr12thM_TRANS;
PreResYr_Health =N_PreResYr12thM_HEALTH;
PreResYr_Insure =N_PreResYr12thM_INSURE;
PreResYr_Loan =N_PreResYr12thM_LOAN;
PreResYr_Tax =N_PreResYr12thM_TAX;
PreResYr_Educa =N_PreResYr12thM_EDUCA;
PreResYr_Gift =N_PreResYr12thM_GIFT;
PreResYr_Enter =N_PreResYr12thM_ENTER;
PreResYr_Recre =N_PreResYr12thM_RECRE;
PreResYr_Finplan =N_PreResYr12thM_FINPLAN;
PreResYr_Legala =N_PreResYr12thM_LEGALA;
PreResYr_IncomeTL =N_PreResYr12thM_INCOMETL;
end;
run; Can I not do a range from 4-11? I am getting 3 errors but i specified an "when" and "end" statement in the macro and the otherwise do is in context to the previous "select" : NOTE: Line generated by the macro variable "X".
92 N_PreResYr4-11thM_INCOMETL
____________
22
ERROR: Expecting "WHEN", "OTHERWISE", or "END".
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, IN,
LE, LT, MAX, MIN, NE, NG, NL, NOTIN, OR, ^=, |, ||, ~=.
93 end;
94 Otherwise do;
_________
161
ERROR 161-185: No matching DO/SELECT statement.
... View more