Calculating Business Days Between Two Dates

Button: Check := @If(Startdate = ""; 1; EndDate = ""; 1; 0); @If(Check; @Do(@Prompt([OK]; "No Values"; "You must

enter starting and ending dates."); @Return("")); ""); HolidayList := @DbColumn(""; ""; "($Holidays)"; 2); @SetField("Holidays"; HolidayList); @Environment("HolidayList"; @Implode(HolidayList; ";")); @Environment("Iterations"; @Text(((EndDate - StartDate) / (24 * 60 * 60)) + 1)); @Environment("StartDate"; @Text(StartDate)); @Environment("SlidingDate"; @Text(StartDate)); @Environment("EndDate"; @Text(EndDate)); @Environment("WorkDays"; "0"); @Command([FileSave]); @Command([FileCloseWindow]); @Command([ToolsRunMacro]; "($Add-A-Day)") Execute-Once Macro "($Add-A-Day)": REM "ADD-A-DAY Macro"; REM "Recursive macro to check if dates fall on weekends "; REM "and holidays and increment a working day count."; REM "Retrieve all the environment variable"; Iterations := @TextToNumber(@Environment("Iterations")); Sdate := @TextToTime(@Environment("SlidingDate")); EndDate := @TextToTime(@Environment("EndDate")); WorkDays := @TextToNumber(@Environment("WorkDays")); Holidays := @Explode(@Environment("HolidayList"); ";"); REM "Calculate Add a Day - will be zero or one"; AddDay := @If(@Weekday(Sdate) = 1; 0; @Weekday(Sdate) = 7; 0; Sdate > EndDate; 0; @Text(Sdate) = Holidays; 0; 1); REM "Check if there are any more iterations to do"; REM "If not, call a macro to update the fields"; REM "If yes, then save the new values and call the recursion routine"; @If(Iterations = 0; @Do(@Command([ToolsRunMacro]; "($SetNumDaysField)"); @Command([EditDocument]; "1")); @Do(@Environment("Iterations"; @Text(Iterations - 1)); @Environment("SlidingDate"; @Text(@Adjust(Sdate; 0; 0; 1; 0; 0; 0))); @Environment("WorkDays"; @Text(WorkDays + AddDay)); @Command([ToolsRunMacro]; "($Recurs-Add)"))); SELECT @All Execute-Once Macro "($Recurs-Add)": @Command([ToolsRunMacro]; "($Add-A-Day)"); SELECT @All Filter Macro "($Recurs-Add)": FIELD NumDays := @Environment("WorkDays"); SELECT @All

This was first published in November 2000

Dig deeper on Domino Resources - Part 2



Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:



  • iSeries tutorials's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...