Can't seem to get a YYYY/-1(Q) Macro to work...
Below is the code I am using and works fine calculating a single value for the Previous Quarter.
I guess I could append the -1 Quarters to the current year, but for SAS seems like an odd way to accomplish the goal.
Thanks In Advance.
~J
/* Start Of Date Macro Built */ /*************************************/ Data _Null_; %let Date = %sysfunc(today(),mmddyy10.); %let CYear = %sysfunc(today(),Year4.); %let RuleYearCurrent = %sysfunc(today(),Year4.); %let CurrentYYYYQQ = %sysfunc(today(),yyqs8.);
/**********************************************************************************************************************/ /* Cant seem to figure out the SysFunc macro to subtract 1 quarter from current quarter */ /* I am looking for the current years previous quarter. */ /* CurrrentYYYYQQ = 2023/3 which is correct */ /* I am looking for this: PreviousYYYYQQ = 2023/2 */ /*********************************************************************************************************************/ /*%let PreviousYYYYQQ = %sysfunc(yyqs(%sysfunc(intnx(yyqs,%sysfunc(date()),-1)))); <- Problem Is Here */ /*********************************************************************************************************************/ %let CurrentQtr = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-0)))); %let CurrentQtr_m1 = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-1)))); %let CurrentQtr_m2 = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-2)))); %let CurrentQtr_m3 = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-3)))); %put >>>>> Current Year Quarter Is : &CurrentYYYYQQ; %put >>>>> High Level Dates: Current Quarter : &CurrentQtr.; %put >>>>> High Level Dates: Current Quarter -1 : &CurrentQtr_m1.; %put >>>>> High Level Dates: Current Quarter -2 : &CurrentQtr_m2.; %put >>>>> High Level Dates: Current Quarter -3 : &CurrentQtr_m3.; Run;
Below is SAS Log With Macro Display:
Data _Null_; %let Date = %sysfunc(today(),mmddyy10.); %let CYear = %sysfunc(today(),Year4.); %let RuleYearCurrent = %sysfunc(today(),Year4.); %let CurrentYYYYQQ = %sysfunc(today(),yyqs8.); /**********************************************************************************************************************/ /* Cant seem to figure out the SysFunc macro to subtract 1 quarter from current quarter */ /* I am looking for the current years previous quarter. */ /* CurrrentYYYYQQ = 2023/3 which is correct */ /* I am looking for this: PreviousYYYYQQ = 2023/2 */ /*********************************************************************************************************************/ /*%let PreviousYYYYQQ = %sysfunc(yyqs(%sysfunc(intnx(yyqs,%sysfunc(date()),-1))));*/ /*********************************************************************************************************************/ %let CurrentQtr = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-0)))); %let CurrentQtr_m1 = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-1)))); %let CurrentQtr_m2 = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-2)))); %let CurrentQtr_m3 = %sysfunc(qtr(%sysfunc(intnx(qtr,%sysfunc(date()),-3))));
%put >>>>> Current Year Quarter Is : &CurrentYYYYQQ; >>>>> Current Year Quarter Is : 2023/3 %put >>>>> High Level Dates: Current Quarter : &CurrentQtr.; >>>>> High Level Dates: Current Quarter : 3 %put >>>>> High Level Dates: Current Quarter -1 : &CurrentQtr_m1.; >>>>> High Level Dates: Current Quarter -1 : 2 %put >>>>> High Level Dates: Current Quarter -2 : &CurrentQtr_m2.; >>>>> High Level Dates: Current Quarter -2 : 1 %put >>>>> High Level Dates: Current Quarter -3 : &CurrentQtr_m3.; >>>>> High Level Dates: Current Quarter -3 : 4 Run;
... View more