home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / clipper / gt_mdays.prg < prev    next >
Text File  |  1993-10-14  |  2KB  |  71 lines

  1. /*
  2.  * File......: GTMDAYS.PRG
  3.  * Author....: George Brennan
  4.  * BBS.......: The Dark Knight Returns
  5.  * Net/Node..: 050/069
  6.  * User Name.: George Brennan
  7.  * Date......: 23/03/93
  8.  * Revision..: 1.0
  9.  *
  10.  * This is an original work by George Brennan and is placed in the public
  11.  * domain.
  12.  *
  13.  * Modification history:
  14.  * ---------------------
  15.  *
  16.  * $Log$
  17.  *
  18.  */
  19.  
  20. // NOTE: This code has been written for and compiled with Clipper 5.01a
  21. //
  22.  
  23. /*  $DOC$
  24.  *  $FUNCNAME$
  25.  *        GT_MDAYS()
  26.  *  $CATEGORY$
  27.  *      Date
  28.  *  $ONELINER$
  29.  *        Days in the month
  30.  *  $SYNTAX$
  31.  *        GT_MDAYS( dValue ) -> nDaysInMonth
  32.  *
  33.  *  $ARGUMENTS$
  34.  *        <dValue>   is a valid Clipper date
  35.  *
  36.  *  $RETURNS$
  37.  *        A numeric value of the number of days in the month of the
  38.  *        parameter date
  39.  *
  40.  *    $DESCRIPTION$
  41.  *        GT_MDAYS() can be used to get the  number of days in the month for
  42.  *                   a given date
  43.  *
  44.  *  $EXAMPLES$
  45.  *
  46.  *      ? "Days in this month ", GT_MDAYS( DATE() )
  47.  *
  48.  *      result : Days in this month    31
  49.  *
  50.  *    $END$
  51.  */
  52.  
  53. #include "gt_lib.ch"         // used to pre-process DEFAULT
  54.  
  55. STATIC aDaysIn := {{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, ;
  56.                    { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }}
  57.  
  58. FUNCTION GT_MDAYS( dValue )
  59.  
  60. LOCAL nYear := 0
  61. LOCAL nLeap := 0
  62.  
  63.       DEFAULT dValue to date()
  64.  
  65.       nYear := YEAR( dValue )
  66.       nLeap := if( ((nYear % 4)   == 0)  .AND. ;
  67.                    (((nYear % 100) != 0) .OR.  ;
  68.                    ((nYear % 400) == 0)), 2, 1)
  69.  
  70. RETURN ( aDaysIn[ nLeap ][ MONTH( dValue ) ] )
  71.