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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.