VALDGRE% PowerBASIC Function |
VALDGRE% function is a predicate (logical function evaluating to "true" or "false") that evaluates to "true" (-1), if its parameter represents the valid date in Gregorian calendar, or to "false" (0), if it doesn't. Date field delimiters are expected to be in the fixed positions 3 and 5; values of delimiters are insignificant. Direct dependencies:
VALDGRE% Source Program Debugging program Debugging logout |
' VALDGRE%(0.0) Check Date for Valid Gregorian Value 04/28/1997-02/02/2010 ' ------------------------------------------------------------------------------ ' Copyright (C) 1997-2010 by Vladimir Veytsel www.davar.net ' Type ------------------------------------------------------------------------- ' Function (predicate) ' Description ------------------------------------------------------------------ ' VALDGRE% function is a predicate that returns validity characteristic ' of the specified date in Gregorian calendar system. ' Parameter -------------------------------------------------------------------- ' Spec_Date$ - Specified date in the form of MM-DD-YY or MM-DD-CCYY ' Value ------------------------------------------------------------------------ ' IF specified date is either EMPTY or valid, i.e: ' it has length either of 8 or 10 characters and ' it is DIGITAL (with the exception of date field delimiters) and ' month value lies within 1-12 and ' day number lies within range valid for the specified month ' (considering specified year leap characteristic when ' evaluating day range for February), ' THEN -1 (true) is returned to the point of function invocation, ' ELSE 0 (false) is returned to the point of function invocation. ' Notes ------------------------------------------------------------------------ ' - Delimiters of parameter date fields are irrelevant and can be any ' symbols. Date fields are extracted from FIXED positions. ' - EMPTY date is considered to be a valid date, since in date programs ' this is an indication to use CURRENT date (default). ' Examples --------------------------------------------------------------------- ' VALDGRE%("" )=-1 ' VALDGRE%("11-11-1" )= 0 ' VALDGRE%("11-11-111" )= 0 ' VALDGRE%("11-11-11111")= 0 ' VALDGRE%("*1-11-11" )= 0 ' VALDGRE%("11-*1-11" )= 0 ' VALDGRE%("11-11-*1" )= 0 ' VALDGRE%("00-01-00" )= 0 ' VALDGRE%("13-01-00" )= 0 ' VALDGRE%("01-00-00" )= 0 ' VALDGRE%("01-32-00" )= 0 ' VALDGRE%("02-29-1900" )= 0 ' VALDGRE%("02-30-2000" )= 0 ' VALDGRE%("02-27-1900" )=-1 ' VALDGRE%("02-28-2000" )=-1 ' VALDGRE%("01-01-2001" )=-1 ' VALDGRE%("06-15-2002" )=-1 ' VALDGRE%("12-15-9999" )=-1 ' External Functions ----------------------------------------------------------- #INCLUDE ONCE "DIGITAL" #INCLUDE ONCE "LEAP" ' Start Function --------------------------------------------------------------- DEFINT A-Z ' All defaulted variables are integer FUNCTION VALDGRE%(Spec_Date$) ' Check Specified Date for Empty Value ----------------------------------------- IF (LEN(Spec_Date$)=0) THEN VALDGRE%=-1 EXIT FUNCTION END IF ' Check Specified Date for Valid Length (8 or 10 Characters) ------------------- IF ((LEN(Spec_Date$)<> 8) AND _ (LEN(Spec_Date$)<>10)) THEN VALDGRE%=0 EXIT FUNCTION END IF ' Check Specified Date for Digital Value --------------------------------------- IF (DIGITAL%(LEFT$(Spec_Date$,2) + _ MID$(Spec_Date$,4,2) + _ MID$(Spec_Date$,7),"")) THEN Month=VAL(LEFT$(Spec_Date$,2)) Day =VAL( MID$(Spec_Date$,4,2)) Year$= MID$(Spec_Date$,7) ELSE VALDGRE%=0 EXIT FUNCTION END IF ' Check Month and Day for Lying within Proper Borders -------------------------- IF ((Month>0) AND _ (Month<13)) THEN VALDGRE%=((Day>0)AND _ (Day<(VAL(MID$("322932313231323231323132",Month*2-1,2))+ _ (Month=2)*LEAP%(Year$)))) ELSE VALDGRE%=0 END IF ' Finish.Function -------------------------------------------------------------- END FUNCTION
VALDGRE% Debugging Program Source program Debugging logout |
' VALDGRE%(0.0) Check Date for Valid Gregorian Value 04/28/1997-02/02/2010 ' ------------------------------------------------------------------------------ #INCLUDE "VALDGRE" FUNCTION PBMAIN PRINT "VALDGRE%(0.0) Check Date for Valid Gregorian Value ";DATE$; PRINT " ";LEFT$(TIME$,5) PRINT STRING$(70,"-") PRINT PRINT "VALDGRE%('' )="; VALDGRE%(""); "' - Today "; DATE$ PRINT "VALDGRE%('11-11-1' )="; _ VALDGRE%("11-11-1" ) PRINT "VALDGRE%('11-11-111' )="; _ VALDGRE%("11-11-111" ) PRINT "VALDGRE%('11-11-11111')="; _ VALDGRE%("11-11-11111") PRINT "VALDGRE%('*1-11-11' )="; _ VALDGRE%("*1-11-11" ) PRINT "VALDGRE%('11-*1-11' )="; _ VALDGRE%("11-*1-11" ) PRINT "VALDGRE%('11-11-*1' )="; _ VALDGRE%("11-11-*1" ) PRINT "VALDGRE%('00-01-00' )="; _ VALDGRE%("00-01-00" ) PRINT "VALDGRE%('13-01-00' )="; _ VALDGRE%("13-01-00" ) PRINT "VALDGRE%('01-00-00' )="; _ VALDGRE%("01-00-00" ) PRINT "VALDGRE%('01-32-00' )="; _ VALDGRE%("01-32-00" ) PRINT "VALDGRE%('02-29-1900' )="; _ VALDGRE%("02-29-1900" ) PRINT "VALDGRE%('02-30-2000' )="; _ VALDGRE%("02-30-2000" ) PRINT "VALDGRE%('02-27-1900' )="; _ VALDGRE%("02-27-1900" ) PRINT "VALDGRE%('02-28-2000' )="; _ VALDGRE%("02-28-2000" ) PRINT "VALDGRE%('01-01-2001' )="; _ VALDGRE%("01-01-2001" ) PRINT "VALDGRE%('06-15-2002' )="; _ VALDGRE%("06-15-2002" ) PRINT "VALDGRE%('12-15-9999' )="; _ VALDGRE%("12-15-9999" ) END FUNCTION
VALDGRE% Debugging Logout Source program   Debugging program |
VALDGRE%(0.0) Check Date for Valid Gregorian Value 09-18-2016 15:58 ---------------------------------------------------------------------- VALDGRE%('' )=-1 ' - Today 09-18-2016 VALDGRE%('11-11-1' )= 0 VALDGRE%('11-11-111' )= 0 VALDGRE%('11-11-11111')= 0 VALDGRE%('*1-11-11' )= 0 VALDGRE%('11-*1-11' )= 0 VALDGRE%('11-11-*1' )= 0 VALDGRE%('00-01-00' )= 0 VALDGRE%('13-01-00' )= 0 VALDGRE%('01-00-00' )= 0 VALDGRE%('01-32-00' )= 0 VALDGRE%('02-29-1900' )= 0 VALDGRE%('02-30-2000' )= 0 VALDGRE%('02-27-1900' )=-1 VALDGRE%('02-28-2000' )=-1 VALDGRE%('01-01-2001' )=-1 VALDGRE%('06-15-2002' )=-1 VALDGRE%('12-15-9999' )=-1 |
View [and save] VALDGRE.BAS text View [and save] ZVALDGRE.BAS text (Use [Back] button or [Alt]+[CL] to return here from the viewed text) Copyright © 1997–2010 by Go to: Davar site entry | Site contents | Site index | Personal Computer | PowerBASIC | Text top |