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

  1. ***********
  2. * INMONTHS.PRG
  3. * by Tom Rettig and Leonard Zerman
  4. * Placed in the Public Domain by Tom Rettig Associates, 10/22/1990.
  5. *
  6. * SYNTAX: DO INMONTHS WITH <start date>, <end date> 
  7. * RETURN: <expN> number of months between two dates
  8. * NOTE  : Result is affected by the current state of SET DECIMALS
  9. ***********
  10. PARAMETERS tr_start, tr_end
  11. PRIVATE    tr_ld_st, tr_ld_nd
  12. DO CASE
  13.    CASE tr_start > tr_end
  14.       * Error -- start date is greater than end date
  15.       tr_retn = -1
  16.    CASE MONTH(tr_start) = MONTH(tr_end) .AND. YEAR(tr_start) = YEAR(tr_end)
  17.       * Start and end dates are the same month and year
  18.       DO LASTDAY WITH MONTH( tr_end ), YEAR( tr_end )
  19.       tr_retn = ( DAY( tr_end ) - DAY( tr_start ) + 1 ) / tr_retn
  20.    OTHERWISE
  21.       * Start and end dates are different MONTHs and/or years
  22.       PRIVATE tr_month
  23.       IF YEAR( tr_start ) = YEAR( tr_end )
  24.          tr_month = ( MONTH( tr_end ) - MONTH( tr_start )) - 1
  25.       ELSE
  26.          * Get months from first and last years
  27.          tr_month = ( 12 - MONTH( tr_start )) + ( MONTH( tr_end ) - 1 )
  28.          * Add in between years if any
  29.          IF ( YEAR( tr_end ) - YEAR( tr_start )) > 1
  30.             tr_month = tr_month + ( 12 * ( YEAR(tr_end) - YEAR(tr_start) - 1))
  31.          ENDIF
  32.       ENDIF
  33.       DO LASTDAY WITH MONTH( tr_start ), YEAR( tr_start )
  34.       tr_ld_st = tr_retn
  35.       DO LASTDAY WITH MONTH( tr_end ),   YEAR( tr_end )
  36.       tr_ld_nd = tr_retn
  37.       tr_retn = (((( tr_ld_st ) - ( DAY( tr_start ) -1 )) / tr_ld_st )) + ;
  38.                     tr_month + ( DAY( tr_end ) / tr_ld_nd )
  39.       * in between months = tr_month
  40.       * last month = ( DAY(tr_end) / LASTDAY(MONTH(tr_end), YEAR(tr_end)) )
  41. ENDCASE
  42. IF fox
  43.    RETURN (tr_retn)
  44. ENDIF
  45. * eof inmonths *
  46.