To find the next business day , use INTNX('WEEKDAY',...) - see code below.
if Thisdate = intnx('WEEKDAY',Thisdate,0) then NextWorkday=Thisdate; else NextWorkday=intnx('weekday',Thisdate,1);
To find the previous business day, simply use
PreviousBusinessday = intnx('weekday',Thisdate,0) ;
This does not take into account holidays, only Saturday & Sunday.
In Saudi Arabia, where weekend is on Thursday & Friday, use this code instead
intnx('weekday56w',Thisdate,0) ; see SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition
Yes, SAS does have a holiday function
http://www.sascommunity.org/wiki/Generating_Holiday_Lists
Ron Fehd sas.comm.wiki maven
And, if you need to expand the holiday function to incorporate holidays that aren't already included in the holiday function, take a look at the customizable holiday function at: http://www.sascommunity.org/wiki/Sometimes_One_Needs_an_Option_with_Unusual_Dates
proc fcmp outlib = work.funcs.dt;
/*use the function compiler procedure*/
function nextworkday(startday, interval);/*define a custom function*/
x= intnx("weekday1w",startday,interval);/*interval is the number of days after which you want to check for a business day*/
if x not in &holidays then
return(x);
else return(nextworkday(x,interval-(interval-1)));/*use recursion to check if day next day after interval falls on a holiday*/
endsub;
quit;
options cmplib=work.dt;
%let holidays=("01JAN2018"d, "16FEB2018"D, "17FEB2018"D, "30MAR2018"D, "01MAY2018"D, "29MAY2018"D, "15JUN2018"D, "09AUG2018"D, "22AUG2018"D, "06NOV2018"D, "25DEC2018"D);/*These are singapore holidays for FY '18*/
%let startdate="01jan2018"d;
%let enddate="31dec2018"d;
data test;
do i= intnx("month",&startdate,0,"b") to intnx("month",&enddate,0,"e");
j=put(i,date9.);
z=nextworkday(i,3);
format z date9.;
output;
end;
run;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.