【发布时间】:2021-07-05 04:21:02
【问题描述】:
我正在尝试从开始日期和结束日期开始循环,如下所示:
错误:
在表达式中找不到必需的运算符:YEAR(INTNX('MONTH', MDY(2,1,2020), 3, 'SAME'))*100+MONTH(INTNX('MONTH', MDY(2,1) ,2020), 3, '相同'))
代码:
%LET ENDING_YEAR = 2021;
%LET ENDING_MONTH = 3;
%LET STARTING_YEAR = 2020;
%LET STARTING_MONTH = 2;
DATA COUNT;
START_DATE = MDY(&STARTING_MONTH.,1,&STARTING_YEAR.);
END_DATE = MDY(&ENDING_MONTH.,1,&ENDING_YEAR.);
COUNT_MONTH = INTCK('MONTH',START_DATE,END_DATE)+1;
COUNT_MONTH_4 = COUNT_MONTH - 4;
COUNT_MONTH_3 = COUNT_MONTH - 3;
call symputx('NUM_MONTH', COUNT_MONTH);
call symputx('NUM_MONTH_4', COUNT_MONTH_4);
call symputx('NUM_MONTH_3', COUNT_MONTH_3);
RUN;
%MACRO FINAL_DATA;
%DO i = 0 %TO &NUM_MONTH_4.;
%LET ADDITION = %EVAL(&i.+3);
%LET TARGET_DB=INTNX('MONTH', MDY(&STARTING_MONTH.,1,&STARTING_YEAR.), &ADDITION., 'SAME');
%LET TARGET_DB_MONTH = MONTH(&TARGET_DB.);
%LET TARGET_DB_YEAR = YEAR(&TARGET_DB.);
%LET DB = %EVAL(&TARGET_DB_YEAR.*100+&TARGET_DB_MONTH.);
LIBNAME TETRIS "/actuary/Commercial/Monthend/&DB.";
%LET TARGET_EFF =INTNX('MONTH', MDY(&STARTING_MONTH.,1,&STARTING_YEAR.), &i., 'SAME');
%LET TARGET_EFF_MONTH = MONTH(&TARGET_EFF.);
%LET TARGET_EFF_YEAR = YEAR(&TARGET_EFF.);
%EXTRACTION(INFORCE, &TARGET_EFF_YEAR.,&TARGET_EFF_MONTH.);
%END;
%DO j = &NUM_MONTH_3. %TO &NUM_MONTH.;
%LET DB = %EVAL(&ENDING_YEAR.*100+&ENDING_MONTH.);
LIBNAME TETRIS "/actuary/Commercial/Monthend/&DB.";
%LET TARGET_EFF =INTNX('MONTH', MDY(&STARTING_MONTH.,1,&STARTING_YEAR.), &j., 'SAME');
%LET TARGET_EFF_MONTH = MONTH(&TARGET_EFF.);
%LET TARGET_EFF_YEAR = YEAR(&TARGET_EFF.);
%EXTRACTION(INFORCE, &TARGET_EFF_YEAR.,&TARGET_EFF_MONTH.);
%END;
%MEND;
%FINAL_DATA;
我是 SAS 新手。任何建议将不胜感激。
谢谢。
【问题讨论】:
-
显示的代码与错误消息不一致。是您提取宏的错误吗?请添加宏调试选项并发布更多日志。 `options mprint mlogic';
标签: sas