home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / trl14db.zip / TRLPRG.EXE / INWKDAYS.PRG < prev    next >
Text File  |  1990-10-22  |  2KB  |  90 lines

  1. ***********
  2. * INWKDAYS.PRG
  3. * by Leonard Zerman and Tom Rettig
  4. * Placed in the Public Domain by Tom Rettig Associates, 10/22/1990.
  5. *
  6. * SYNTAX: DO INWKDAYS WITH <start date>, <end date> 
  7. * RETURN: <expN> number of non-weekend days between two dates
  8. * NOTE  : Both parameters are <expD>, Includes both days.
  9. *********
  10. PARAMETERS par1,par2
  11. PRIVATE tr_start, tr_end, tr_days, tr_comp, tr_wkdays
  12. tr_start = par1
  13. tr_end   = par2
  14. tr_days  = 0
  15. tr_comp  = 0
  16. DO CASE
  17.    CASE tr_start > tr_end
  18.       * Error -- start date is greater than end date
  19.       tr_retn = -1
  20.       IF (fox)
  21.          RETURN (tr_retn)
  22.       ELSE
  23.          RETURN
  24.       ENDIF
  25.    CASE tr_start = tr_end .AND. ( DOW( tr_end ) > 1 .AND. DOW( tr_end ) < 7 )
  26.       tr_retn = 1
  27.       IF (fox)
  28.          RETURN (tr_retn)
  29.       ELSE
  30.          RETURN
  31.       ENDIF
  32.    CASE tr_start = tr_end .AND. ( DOW( tr_end ) = 1 .OR.  DOW( tr_end ) = 7 )
  33.       tr_retn = 0
  34.       IF (fox)
  35.          RETURN (tr_retn)
  36.       ELSE
  37.          RETURN
  38.       ENDIF
  39.    CASE (tr_end - tr_start) = 1 .AND. ;
  40.                                ( DOW( tr_start ) = 7.AND. DOW( tr_end ) = 1 ) 
  41.        tr_retn = 0
  42.       IF (fox)
  43.          RETURN (tr_retn)
  44.       ELSE
  45.          RETURN
  46.       ENDIF
  47. ENDCASE
  48. IF ( tr_end - tr_start < 6 )
  49.    DO WHILE ( tr_start <= tr_end )
  50.       IF .NOT. ( DOW( tr_start ) = 1 .OR. DOW( tr_start ) = 7 )
  51.          tr_comp = tr_comp + 1
  52.       ENDIF
  53.       tr_start = tr_start + 1
  54.    ENDDO
  55.    tr_retn = tr_comp
  56.       IF (fox)
  57.          RETURN (tr_retn)
  58.       ELSE
  59.          RETURN
  60.       ENDIF
  61. ENDIF
  62. DO WHILE DOW( tr_start ) = 1 .OR. DOW( tr_start ) = 7
  63.    tr_start = tr_start + 1
  64. ENDDO
  65. DO WHILE DOW( tr_start ) # 2 .AND. ( tr_start < tr_end )
  66.    tr_start = tr_start + 1
  67.    IF .NOT. ( DOW( tr_start ) = 1 .OR.  DOW( tr_start ) = 7 )
  68.      tr_comp = tr_comp + 1
  69.    ENDIF
  70. ENDDO
  71. DO WHILE (DOW( tr_end ) = 1 .OR. DOW( tr_end ) = 7).AND.( tr_end > tr_start )
  72.    tr_end = tr_end - 1
  73. ENDDO
  74. DO WHILE DOW( tr_end ) # 2  .AND. ( tr_end > tr_start )
  75.    tr_end = tr_end -1
  76.    IF .NOT. ( DOW( tr_end ) = 1 .OR.  DOW( tr_end ) = 7 )
  77.       tr_comp = tr_comp + 1
  78.    ENDIF
  79. ENDDO
  80. tr_days   = ( tr_end - tr_start ) + 1
  81. tr_wkdays = tr_days - ( INT( tr_days  / 7 ) * 2 )
  82. tr_retn   = tr_wkdays + tr_comp
  83. IF (fox)
  84.    RETURN (tr_retn)
  85. ELSE
  86.    RETURN
  87. ENDIF
  88. * eof inwkdays *
  89.  
  90.