Sorry, we can tell nothing from what you have posted. Follow the guidance below the Post button when you start a new thread - Post test data in the form of a datastep (use the {i} above the window to post code). Post your full code, especially shogin where macro variables and such like are created. Explain the logic. Post examples of what you want out (if applicable). Also posting log of the relevant area would be ideal in this case. Fro what you post, the array is meaningless in this code snippet. &earnq1; <- these could mean anything, no definiton. Also, good idea to avoid coding all in upper case, and please always finish macro variables with the '.': &earnq1.; This may not matter in some examplpes, but in others it really does, so good practice to always put them in. Sorry, I would prefer not to post the full code. The variables earnq1-4 are created in a separate macros file: %let earnq1 = 0.999 ; /* Uprating factor for earnings - Q1 */
%let earnq2 = 1.002 ; /* Uprating factor for earnings - Q2 */
%let earnq3 = 0.998 ; /* Uprating factor for earnings - Q3 */
%let earnq4 = 0.997 ; /* Uprating factor for earnings - Q4 */ The log is 6156 IF quarter=1 THEN DO;
--
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6157 efac=&earnq1.;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6158 END;
---
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6159 ELSE IF quarter=2 THEN DO;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6160 efac=&earnq2.;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6161 END;
---
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6162 ELSE IF quarter=3 THEN DO;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6163 efac=&earnq3.;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6164 END;
---
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6165 ELSE IF quarter=4 THEN DO;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6166 efac=&earnq4.;
----
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
6167 END;
---
180
ERROR 180-322: Statement is not valid or it is used out of proper order. Thank you for all the other replies. I tried efac = resolve(cats('&earnq', quarter)); although I still got the same error message.
... View more