home *** CD-ROM | disk | FTP | other *** search
- * -----------------------------------------------------------------------------
- * Program Name : VALDATE.TST
- * Author : Keith R. Plossl
- * Date Written : January 1982
- * -----------------------------------------------------------------------------
- * Program to Obtain and Validate the Date if System Date is Not Set
- *
- * dBase II has date checking if it has been set already bypass
- * everything else -- set OK to T and MM = 0 to bypass it all
- *
- if DATE() = '00/00/00'
- store F to OK
- else
- store T to OK
- store 0 to MM
- endif
- do while .not. OK
- *
- * Initialize Loop Variables
- *
- store $(BLNKS,1,8) to DATE:VAR
- store $(BLNKS,1,42) to ERRX
- *
- * Get Date Input
- *
- @ 18,15 say 'Enter Date as MM/DD/YY '
- @ 18,43 get DATE:VAR picture '##/##/##'
- read
- *
- * Initialize Month, Day and Year Variables
- *
- store val($(DATE:VAR,1,2)) to MM
- store val($(DATE:VAR,4,2)) to DD
- store val($(DATE:VAR,7,2)) to YY
- *
- * Date Validation Routine
- *
- do case
- *
- * If Month or Day exceeds 12 or 31 or is less than 1 or if
- * Year is less than 1980 then Error Results
- *
- case MM<1 .or. MM>12 .or. DD<1 .or. DD>31 .or. YY<80
- store ' Invalid Date - Reenter' to ERRX
- *
- * If the Month is Apr., Jun., Sep. or Nov. Test Number of
- * days for over 30. If over Set Error Message
- *
- case MM=4 .or. MM=6 .or. MM=9 .or. MM=11
- if DD>30
- store 'Thirty Days hath September, etc. - Reenter' to ERRX
- else
- store T to OK
- endif
- *
- * If the Month is Feb. Check for Number of Days and Leap Year
- * if not leap year and Days = 29 then Set Error Message
- *
- case MM=2 .and. DD>28 .and. ((1900 + YY)/4)<>int(((1900 + YY)/4))
- store ' Not a leap year - Try Again' to ERRX
- *
- * If the Month is Feb. and the Days exceed 29 Set Error Message
- *
- case MM=2 .and. DD>29
- store 'February has a Maximum of 29 Days - Reenter' to ERRX
- *
- * If none of the above apply the date is OK - Set Flag and Loop out
- *
- otherwise
- @ 20,00
- store T to OK
- loop
- endcase
- @ 20,00
- @ 20,15 say ERRX
- enddo (.not. OK)
- *
- * If Valid Date Was Entered at dBase II start Bypass Variable
- * release and Date Set. Month is > Zero if not set at start.
- *
- if MM>0
- release ERRX, OK, MM, DD, YY
- set date to &DATE:VAR
- clear gets
- endif
- return
- *
- * End of Date Validation Program
- *