LEAP% PowerBASIC Function |
LEAP% function is a predicate that evaluates to "true" (-1), if its parameter represents the leap year in Gregorian calendar, or to "false", if it doesn't. If year specification is invalid (non-digital, or having length other than 2 or 4), leap characteristic is returned for the current year. Direct dependency:
LEAP% Source Program Debugging program Debugging logout |
' LEAP%(2.0) Check Year for Leap Value 09/30/1992-03/01/2002 ' -------------------------------------------------------------------------- ' Copyright (C) 1992-2002 by Vladimir Veytsel www.davar.net ' Type --------------------------------------------------------------------- ' Function ' Description -------------------------------------------------------------- ' Function is a predicate that returns the leap characteristic ' of the specified year. ' Declaration -------------------------------------------------------------- ' DECLARE FUNCTION LEAP%(Year$) ' Parameter ---------------------------------------------------------------- ' Year$ - Year to be checked for leap value ' Value -------------------------------------------------------------------- ' - "True" (-1) if specified year is leap ' - "False" (0) if specified year is non-leap ' Notes -------------------------------------------------------------------- ' - Year leap characteristic is determined according to Gregorian calendar ' rules: ' - On century border century number is multiple of 4; ' - Otherwise year number (it's sufficient to check only last 2 digits) ' is multiple of 4. ' - If specified year length is 2 characters, ' then CURRENT century is assumed (two digit of century get appended ' to Year$ head). ' - Specified year length should be either 2 or 4 characters and should be ' digital. These conditions should be checked by the calling program, ' lest LEAP function would substitute specified year for the CURRENT one, ' thus returning the leap characteristic for the current year instead of ' the specified. ' Examples ----------------------------------------------------------------- ' LEAP("" )=Leap value for CURRENT year ' LEAP("00" )=-1 ' LEAP("1988")=-1 ' LEAP("1989")= 0 ' LEAP("1900")= 0 ' LEAP("2000")=-1 ' External Function -------------------------------------------------------- DECLARE FUNCTION DIGITAL%(Strng$,Delim$) ' Start Function ----------------------------------------------------------- FUNCTION LEAP%(Year$) PUBLIC ' Preform Year Parameter (Adjust Length to 4 Characters) ------------------- SELECT CASE (LEN(Year$)) CASE (2) : Full.Year$=MID$(DATE$,7,2)+Year$ CASE (4) : Full.Year$=Year$ CASE ELSE: Full.Year$=RIGHT$(DATE$,4) END SELECT IF (NOT(DIGITAL%(Full.Year$,""))) THEN Full.Year$=RIGHT$(DATE$,4) END IF ' Form and Return Year Leap Value to the Point of Invocation --------------- Cent=VAL( LEFT$(Full.Year$,2)) ' Century Year=VAL(RIGHT$(Full.Year$,2)) ' Year within century LEAP%=(((Year= 0)AND _ ((Cent MOD 4)=0))OR _ ((Year<>0)AND _ ((Year MOD 4)=0))) ' Finish Function ---------------------------------------------------------- END FUNCTION
LEAP% Debugging Program Source program Debugging logout |
' LEAP%(2.0) Check Year for Leap Value 09/30/1992-03/01/2002 ' -------------------------------------------------------------------------- $INCLUDE "LEAP" $LINK "MODULE.PBL" DECLARE FUNCTION LEAP%(Year$) CLS PRINT "LEAP%(2.0) Check Year for Leap Value ";DATE$; PRINT " ";LEFT$(TIME$,5) PRINT STRING$(56,"-") PRINT PRINT "LEAP%('' )="; _ LEAP%("" ) PRINT "LEAP%('04' )="; _ LEAP%("04" ) PRINT "LEAP%('1988')="; _ LEAP%("1988") PRINT "LEAP%('1989')="; _ LEAP%("1989") PRINT "LEAP%('1900')="; _ LEAP%("1900") PRINT "LEAP%('2000')="; _ LEAP%("2000") PRINT "LEAP%('ABCD')="; _ LEAP%("ABCD") PRINT PRINT "Execution completed - hit [Enter] to continue..."
LEAP% Debugging Logout Source program Debugging program |
LEAP%(2.0) Check Year for Leap Value 03-29-2002 18:59 -------------------------------------------------------- LEAP%('' )= 0 LEAP%('04' )=-1 LEAP%('1988')=-1 LEAP%('1989')= 0 LEAP%('1900')= 0 LEAP%('2000')=-1 LEAP%('ABCD')= 0 Execution completed - hit [Enter] to continue... |
View [and save] LEAP.BAS text View [and save] ZLEAP.BAS text (Use [Back] button or [Alt]+[CL] to return here from the viewed text) Copyright © 1992–2002 by Go to: Davar site entry | Site contents | Site index | Personal Computer | PowerBASIC | Text top |