home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
database
/
trl14db.zip
/
TRLPRG.EXE
/
INWKDAYS.PRG
< prev
next >
Wrap
Text File
|
1990-10-22
|
2KB
|
90 lines
***********
* INWKDAYS.PRG
* by Leonard Zerman and Tom Rettig
* Placed in the Public Domain by Tom Rettig Associates, 10/22/1990.
*
* SYNTAX: DO INWKDAYS WITH <start date>, <end date>
* RETURN: <expN> number of non-weekend days between two dates
* NOTE : Both parameters are <expD>, Includes both days.
*********
PARAMETERS par1,par2
PRIVATE tr_start, tr_end, tr_days, tr_comp, tr_wkdays
tr_start = par1
tr_end = par2
tr_days = 0
tr_comp = 0
DO CASE
CASE tr_start > tr_end
* Error -- start date is greater than end date
tr_retn = -1
IF (fox)
RETURN (tr_retn)
ELSE
RETURN
ENDIF
CASE tr_start = tr_end .AND. ( DOW( tr_end ) > 1 .AND. DOW( tr_end ) < 7 )
tr_retn = 1
IF (fox)
RETURN (tr_retn)
ELSE
RETURN
ENDIF
CASE tr_start = tr_end .AND. ( DOW( tr_end ) = 1 .OR. DOW( tr_end ) = 7 )
tr_retn = 0
IF (fox)
RETURN (tr_retn)
ELSE
RETURN
ENDIF
CASE (tr_end - tr_start) = 1 .AND. ;
( DOW( tr_start ) = 7.AND. DOW( tr_end ) = 1 )
tr_retn = 0
IF (fox)
RETURN (tr_retn)
ELSE
RETURN
ENDIF
ENDCASE
IF ( tr_end - tr_start < 6 )
DO WHILE ( tr_start <= tr_end )
IF .NOT. ( DOW( tr_start ) = 1 .OR. DOW( tr_start ) = 7 )
tr_comp = tr_comp + 1
ENDIF
tr_start = tr_start + 1
ENDDO
tr_retn = tr_comp
IF (fox)
RETURN (tr_retn)
ELSE
RETURN
ENDIF
ENDIF
DO WHILE DOW( tr_start ) = 1 .OR. DOW( tr_start ) = 7
tr_start = tr_start + 1
ENDDO
DO WHILE DOW( tr_start ) # 2 .AND. ( tr_start < tr_end )
tr_start = tr_start + 1
IF .NOT. ( DOW( tr_start ) = 1 .OR. DOW( tr_start ) = 7 )
tr_comp = tr_comp + 1
ENDIF
ENDDO
DO WHILE (DOW( tr_end ) = 1 .OR. DOW( tr_end ) = 7).AND.( tr_end > tr_start )
tr_end = tr_end - 1
ENDDO
DO WHILE DOW( tr_end ) # 2 .AND. ( tr_end > tr_start )
tr_end = tr_end -1
IF .NOT. ( DOW( tr_end ) = 1 .OR. DOW( tr_end ) = 7 )
tr_comp = tr_comp + 1
ENDIF
ENDDO
tr_days = ( tr_end - tr_start ) + 1
tr_wkdays = tr_days - ( INT( tr_days / 7 ) * 2 )
tr_retn = tr_wkdays + tr_comp
IF (fox)
RETURN (tr_retn)
ELSE
RETURN
ENDIF
* eof inwkdays *