|
I used my original code run is OK,
But run the nomad5's Macro code appear Error .
-----------------------------------------------------------
*/my original code/*
%_eg_conditional_dropds(WORK.H201103);
PROC SQL;
CREATE TABLE WORK.H201103 AS
SELECT t1.IND,
t1.'201103'n AS K1,
t1.'201104'n AS K2,
t1.'201105'n AS K3,
t1.'201106'n AS K4,
t1.'201107'n AS K5,
t1.'201108'n AS K6,
t1.'201109'n AS K7,
t1.'201110'n AS K8,
t1.'201111'n AS K9,
t1.'201112'n AS K10,
t1.'201201'n AS K11,
t1.'201202'n AS K12,
t1.'201203'n AS K13,
t1.'201204'n AS K14,
t1.'201205'n AS K15,
t1.'201206'n AS K16,
t1.'201207'n AS K17,
t1.'201208'n AS K18,
t1.'201209'n AS K19,
t1.'201210'n AS K20,
t1.'201211'n AS K21,
t1.'201212'n AS K22,
t1.'201301'n AS K23,
t1.'201302'n AS K24
FROM WORK.MONTHLY t1;
Quit;
---------------------------------------------------------------------------------------
*\The nomad5's Macro code\*
15 %macro m(v);
16 %let y=%substr(&v.,1,4);
17 %let m=%substr(&v.,5,2);
18 %do i=1 %to 24;
19 %let mf=%sysfunc(putn(%eval(&m.+&i.-1),z2.));
20 %if &mf.>24 %then %do;
21 %let mf=%sysfunc(putn(%eval(&mf.-24),z2.));
22 %let yf=%eval(&y.+2);
23 %end;
24 %else %if &mf.>12 %then %do;
25 %let mf=%sysfunc(putn(%eval(&mf.-12),z2.));
26 %let yf=%eval(&y.+1);
27 %end;
28 %else %let yf=&y.;
29 ,t1."&yf.&mf."n as K&i.;
30 %end;
31 %mend m;
32 %m(201103);
NOTE: Line generated by the invoked macro "M".
32 ,t1."&yf.&mf."n as K&i.;
ERROR 180-322: Statement is not valid or it is used out of proper order.
NOTE: Line generated by the invoked macro "M".
|