home *** CD-ROM | disk | FTP | other *** search
- ********************
-
- FUNCTION Fox_date
-
- PARAMETERS _gddate, _gdrow, _gdcol
-
- IF PCOUNT() = 1
- _gdrow = ROW()
- _gdcol = COL()
- ENDIF
-
- PRIVATE _gdlevel, _dummy, _gd1, _gd2, _gd3
-
- _gdlevel = 2
-
- SET CURSOR OFF
- DO WHILE .T.
- @ _gdrow, _gdcol GET _gddate
- CLEAR GETS
- _dummy = INKEY(0)
- DO CASE
- CASE _dummy = 13 .OR. _dummy = 27 .OR. _dummy = 23 .OR. _dummy = 3
- EXIT
- CASE CHR(_dummy) $ "Mm"
- _gdlevel = 1
- CASE CHR(_dummy) $ "Dd"
- _gdlevel = 2
- CASE CHR(_dummy) $ "Yy"
- _gdlevel = 3
- CASE CHR(_dummy) $ "+-"
- _gd1 = MONTH(_gddate)
- _gd2 = DAY(_gddate)
- _gd3 = YEAR(_gddate)
- DO CASE
- CASE _gdlevel = 1
- _gd1 = _gd1 + IF(CHR(_dummy) = "+", 1, -1)
- _gd1 = IF(_gd1 < 1, 12, IF(_gd1 > 12, 1, _gd1))
- IF EMPTY(CTOD(STR(_gd1) + "/" + STR(_gd2) + "/" + SUBSTR(STR(_gd3), 3)))
- _gd2 = 1
- ENDIF
- CASE _gdlevel = 2
- _gd2 = _gd2 + IF(CHR(_dummy) = "+", 1, -1)
- IF _gd2 < 1 && Go to top of day for month
- _gd2 = EOM(_gd1, _gd3)
- ELSE
- IF _gd2 > 27 && Check to see if good date in month's range
- IF EMPTY(CTOD(STR(_gd1) + "/" + STR(_gd2) + "/" + SUBSTR(STR(_gd3), 3)))
- _gd2 = 1
- ENDIF
- ENDIF
- ENDIF
- OTHERWISE
- _gd3 = _gd3 + IF(CHR(_dummy) = "+", 1, -1)
- ENDCASE
- _gddate = CTOD(STR(_gd1) + "/" + STR(_gd2) + "/" + SUBSTR(STR(_gd3), 3))
-
- ENDCASE
- ENDDO
- SET CURSOR ON
- RETURN(_gddate)
-
- * End of File