Removing Weekends

Gassett, Chris gassett@aavid.com
Wed, 27 Jan 1999 11:03:33 -0500


I am trying to remove the weekends with a calculation to give me the exact
number of actual working days between two dates.  The following code I am
attempting to develop is to replace the latter set of code below which is
really bulky.  This was written in quiz on an HP9000 running an Oracle
database.

;*****

> define prompted_start_date date =  &
>   parm prompt "STARTING DATE:  "
> 
> define prompted_end_date date =  &
>   parm prompt "ENDING DATE:    "
> 
> define total_days num*8 =  &
>   days(prompted_end_date) - days(prompted_start_date)
> 
> define work_days num*8 =  &
>   round((total_days / 7 * 5), 0, up)

;*****

DEFINE STARTDATE2 DATE = DATE-SENT
DEFINE ENDDATE2   DATE = ENG-DATE-SENT                          &
IF ENG-REJECTED < 19950101              &
ELSE ENG-REJECTED

DEFINE SDATE2    NUM*5 = DAYS(STARTDATE2)                       &
IF STARTDATE2 > 19950101                &
ELSE DAYS(SYSDATE)
DEFINE EDATE2    NUM*5 = DAYS(ENDDATE2)                         &
IF ENDDATE2 > 19950101                  &
ELSE DAYS(SYSDATE)

DEFINE DAYSTART2 NUM*1 = MOD(SDATE2, 7)  ;Starting day, ie. 1 = Monday
DEFINE DAYEND2   NUM*1 = MOD(EDATE2, 7)  ;Ending day,   ie. 5 = Friday

DEFINE DIFF2 NUM*3 = EDATE2 - SDATE2

DEFINE WEEKENDS2 NUM*2 = 18 IF DAYSTART2 <= 2 AND DIFF2 >= 62    &
ELSE 20 IF DAYSTART2 >= 3 AND DIFF2 >= 66    &
ELSE 16 IF DAYSTART2 <= 2 AND DIFF2 >= 55    &
ELSE 18 IF DAYSTART2 >= 3 AND DIFF2 >= 59    &
ELSE 14 IF DAYSTART2 <= 2 AND DIFF2 >= 48    &
ELSE 16 IF DAYSTART2 >= 3 AND DIFF2 >= 52    &
ELSE 12 IF DAYSTART2 <= 2 AND DIFF2 >= 41    &
ELSE 14 IF DAYSTART2 >= 3 AND DIFF2 >= 45    &
ELSE 10 IF DAYSTART2 <= 2 AND DIFF2 >= 34    &
ELSE 12 IF DAYSTART2 >= 3 AND DIFF2 >= 38    &
ELSE  8 IF DAYSTART2 <= 2 AND DIFF2 >= 27    &
ELSE 10 IF DAYSTART2 >= 3 AND DIFF2 >= 31    &
ELSE  6 IF DAYSTART2 <= 2 AND DIFF2 >= 20    &
ELSE  8 IF DAYSTART2 >= 3 AND DIFF2 >= 24    &
ELSE  4 IF DAYSTART2 <= 2 AND DIFF2 >= 13    &
ELSE  6 IF DAYSTART2 >= 3 AND DIFF2 >= 17    &
ELSE  2 IF DAYSTART2 <= 2 AND DIFF2 >= 10    &
ELSE  4 IF DAYSTART2 >= 3 AND DIFF2 >= 10    &
ELSE  2 IF DAYSTART2 <= 2 AND DIFF2 >=  6    &
ELSE  2 IF DAYSTART2 >= 3 AND DIFF2 >=  3    &
ELSE  0

DEFINE QUE2 NUM*3 = DIFF2 - WEEKENDS2

;*****
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Subscribe: "subscribe powerh-l" in message body to majordomo@lists.swau.edu
Unsubscribe: "unsubscribe powerh-l" in message to majordomo@lists.swau.edu
powerh-l@lists.swau.edu is gatewayed one-way to bit.listserv.powerh-l
This list is closed, thus to post to the list, you must be a subscriber.