I have the following code for generating date intervals. options intervalds=(BankingDays=work.BankDayDS); data BankDayDS (keep=BEGIN ); start = '01DEC2018'D; stop = '01JAN2030'D; nwkdays = INTCK('WEEKDAY',start,stop); do i = 0 to nwkdays; BEGIN = INTNX('WEEKDAY',start,i); BEGIN_PERIOD = INTNX('WEEKDAY',start,i); year = YEAR(BEGIN); if BEGIN ne HOLIDAY('NEWYEAR',year) and BEGIN ne HOLIDAY('MLK',year) and BEGIN ne HOLIDAY('USPRESIDENTS',year) and BEGIN ne HOLIDAY('MEMORIAL',year) and BEGIN ne HOLIDAY('USINDEPENDENCE',year) and BEGIN ne HOLIDAY('LABOR',year) and BEGIN ne HOLIDAY('VETERANS',year) and BEGIN ne HOLIDAY('THANKSGIVING',year) and BEGIN ne HOLIDAY('CHRISTMAS',year) then output; end; format BEGIN DATE.; format BEGIN_PERIOD MONYY.; run; It works when I use it in intnx or intck in a data step. But when I try to use it inside a macro, I get, "WARNING: Argument 1 to function INTNX referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range." options minoperator; %macro velocity()/mindelimiter=','; /*** Cycle through week one workday at a time ***/ %let first_date = %sysfunc(inputn(01JAN2019,date9.)); /*%sysfunc(intnx(month, %sysfunc(today()), -1,b)); */ %let end_date = %sysfunc(inputn(01APR2019,date9.)); %let i = 1; %put first_date = &first_date.; %do %while(&first_date. < &end_date.); %put first_date = &first_date; %let year1 = %sysfunc(intnx(BankingDays, &first_date, -4), year.); %let year2 = %sysfunc(intnx(BankingDays, &first_date, 0), year.); Is there another option I need to use to get this to work?
... View more