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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.