GRE2JUL$ PowerBASIC Function |
GRE2JUL$ function evaluates to the date in Julian format (YY-DDD or CCYY-DDD) that corresponds to the Gregorian date specified as its parameter. Date should be specified in one of the formats MM-DD-YY or MM-DD-CCYY and should be a valid date in Gregorian calendar. If parameter doesn't represent a valid date, "" (empty string) is returned instead of Julian date value. Date field delimiters are expected to be in the fixed positions 3 and 5; values of delimiters are insignificant. If parameter is empty, Julian date value is returned for the current date. Julian date no doubt belongs completely to the mainframe past, and hardly is any longer used as a separate date format even in modern mainframes. However, its usage simplifies significantly all date calculations into which it inevitably gets incorporated. I prefer to use Julian format explicitly in order to make date conversion logic clear. Direct dependencies:
Indirect dependency:
GRE2JUL$ Source Program Debugging program Debugging logout |
' GRE2JUL$(0.0) Convert Gregorian Date to Julian 04/05/1988-09/30/2004 ' -------------------------------------------------------------------------- ' Copyright (C) 1988-2004 by Vladimir Veytsel www.davar.net ' Type --------------------------------------------------------------------- ' Function ' Description -------------------------------------------------------------- ' GRE2JUL$ function converts Gregorian date into Julian date format. ' Declaration -------------------------------------------------------------- ' DECLARE FUNCTION GRE2JUL$(Greg.Date$) ' Parameter ---------------------------------------------------------------- ' Greg.Date$ - Gregorian date in the form of MM-DD-YY or MM-DD-CCYY ' Value -------------------------------------------------------------------- ' If specified Gregorian 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 YY-DDD or CCYY-DDD (date in Julian format) is returned ' to the point of function invocation ' (where DDD is a day number within a year), ' else "" (empty string) is returned to the point of 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 one, and date in Julian ' format CCYY-DDD is returned for the CURRENT date (default). ' Examples ----------------------------------------------------------------- ' GRE2JUL$("" )=Current date in Julian format ' GRE2JUL$("02-29-1987")="" ' GRE2JUL$("01-01-87" )="87-001" ' GRE2JUL$("01-31-87" )="87-031" ' GRE2JUL$("02-28-87" )="87-059" ' GRE2JUL$("03-31-87" )="87-090" ' GRE2JUL$("04-30-87" )="87-120" ' GRE2JUL$("05-31-87" )="87-151" ' GRE2JUL$("06-30-87" )="87-181" ' GRE2JUL$("07-31-87" )="87-212" ' GRE2JUL$("08-31-87" )="87-243" ' GRE2JUL$("09-30-87" )="87-273" ' GRE2JUL$("10-31-87" )="87-304" ' GRE2JUL$("11-30-87" )="87-334" ' GRE2JUL$("12-31-87" )="87-365" ' GRE2JUL$("01-01-1988")="1988-001" ' GRE2JUL$("01-31-1988")="1988-031" ' GRE2JUL$("02-29-1988")="1988-060" ' GRE2JUL$("03-31-1988")="1988-091" ' GRE2JUL$("04-30-1988")="1988-121" ' GRE2JUL$("05-31-1988")="1988-152" ' GRE2JUL$("06-30-1988")="1988-182" ' GRE2JUL$("07-31-1988")="1988-213" ' GRE2JUL$("08-31-1988")="1988-244" ' GRE2JUL$("09-30-1988")="1988-274" ' GRE2JUL$("10-31-1988")="1988-305" ' GRE2JUL$("11-30-1988")="1988-335" ' GRE2JUL$("12-31-1988")="1988-366" ' External Functions ------------------------------------------------------- DECLARE FUNCTION LEAP% (Year$) DECLARE FUNCTION VALDGRE%(Spec.Date$) ' Start Function ----------------------------------------------------------- DEFINT A-Z ' All defaulted variables are integer FUNCTION GRE2JUL$(Greg.Date$) PUBLIC ' Check Date Validity and Handle Default Empty Date (Current) -------------- IF (LEN(Greg.Date$)=0) THEN DT$=DATE$ ELSEIF (VALDGRE%(Greg.Date$)) THEN DT$=Greg.Date$ ELSE GRE2JUL$="" EXIT FUNCTION END IF ' Parse Date to Be Converted ----------------------------------------------- Month=VAL(LEFT$(DT$,2)) Day =VAL( MID$(DT$,4,2)) Year$= MID$(DT$,7) ' Compute Julian Day Number ------------------------------------------------ DDD=Day+ _ VAL(MID$("000,031,059,090,120,151,181,212,243,273,304,334",4*Month-3,3))+ _ (Month>2)*(LEAP%(Year$)) ' Form and Return Julian Date Value to the Point of Invocation ------------- GRE2JUL$=Year$+"-"+RIGHT$("00"+LTRIM$(STR$(DDD)),3) ' Finish.Function ---------------------------------------------------------- END FUNCTION
GRE2JUL$ Debugging Program Source program Debugging logout |
' GRE2JUL$(0.0) Convert Gregorian Date to Julian 04/05/1988-09/30/2004 ' -------------------------------------------------------------------------- $INCLUDE "GRE2JUL" $LINK "MODULE.PBL" DECLARE FUNCTION GRE2JUL$(Greg.Date$) CLS PRINT "GRE2JUL$(0.0) Convert Gregorian Date to Julian Format ";DATE$; PRINT " ";LEFT$(TIME$,5) PRINT STRING$(73,"-") PRINT PRINT "GRE2JUL$('' )='"; _ GRE2JUL$("" );"' - Today ";DATE$ PRINT "GRE2JUL$('02-29-1987')='"; _ GRE2JUL$("02-29-1987");"'" PRINT "GRE2JUL$('01-01-87' )='"; _ GRE2JUL$("01-01-87" );"'" PRINT "GRE2JUL$('01-31-87' )='"; _ GRE2JUL$("01-31-87" );"'" PRINT "GRE2JUL$('02-28-87' )='"; _ GRE2JUL$("02-28-87" );"'" PRINT "GRE2JUL$('03-31-87' )='"; _ GRE2JUL$("03-31-87" );"'" PRINT "GRE2JUL$('04-30-87' )='"; _ GRE2JUL$("04-30-87" );"'" PRINT "GRE2JUL$('05-31-87' )='"; _ GRE2JUL$("05-31-87" );"'" PRINT "GRE2JUL$('06-30-87' )='"; _ GRE2JUL$("06-30-87" );"'" PRINT "GRE2JUL$('07-31-87' )='"; _ GRE2JUL$("07-31-87" );"'" PRINT "GRE2JUL$('08-31-87' )='"; _ GRE2JUL$("08-31-87" );"'" PRINT "GRE2JUL$('09-30-87' )='"; _ GRE2JUL$("09-30-87" );"'" PRINT "GRE2JUL$('10-31-87' )='"; _ GRE2JUL$("10-31-87" );"'" PRINT "GRE2JUL$('11-30-87' )='"; _ GRE2JUL$("11-30-87" );"'" PRINT "GRE2JUL$('12-31-87' )='"; _ GRE2JUL$("12-31-87" );"'" PRINT INPUT "Hit [Enter] to continue execution...",Var$ PRINT PRINT "GRE2JUL$('01-01-1988')='"; _ GRE2JUL$("01-01-1988");"'" PRINT "GRE2JUL$('01-31-1988')='"; _ GRE2JUL$("01-31-1988");"'" PRINT "GRE2JUL$('02-29-1988')='"; _ GRE2JUL$("02-29-1988");"'" PRINT "GRE2JUL$('03-31-1988')='"; _ GRE2JUL$("03-31-1988");"'" PRINT "GRE2JUL$('04-30-1988')='"; _ GRE2JUL$("04-30-1988");"'" PRINT "GRE2JUL$('05-31-1988')='"; _ GRE2JUL$("05-31-1988");"'" PRINT "GRE2JUL$('06-30-1988')='"; _ GRE2JUL$("06-30-1988");"'" PRINT "GRE2JUL$('07-31-1988')='"; _ GRE2JUL$("07-31-1988");"'" PRINT "GRE2JUL$('08-31-1988')='"; _ GRE2JUL$("08-31-1988");"'" PRINT "GRE2JUL$('09-30-1988')='"; _ GRE2JUL$("09-30-1988");"'" PRINT "GRE2JUL$('10-31-1988')='"; _ GRE2JUL$("10-31-1988");"'" PRINT "GRE2JUL$('11-30-1988')='"; _ GRE2JUL$("11-30-1988");"'" PRINT "GRE2JUL$('12-31-1988')='"; _ GRE2JUL$("12-31-1988");"'" PRINT PRINT "Execution completed - hit [Enter] to continue..."
GRE2JUL$ Debugging Logout Source program Debugging program |
GRE2JUL$(0.0) Convert Gregorian Date to Julian Format 10-07-2004 08:05 ------------------------------------------------------------------------- GRE2JUL$('' )='2004-281' - Today 10-07-2004 GRE2JUL$('02-29-1987')='' GRE2JUL$('01-01-87' )='87-001' GRE2JUL$('01-31-87' )='87-031' GRE2JUL$('02-28-87' )='87-059' GRE2JUL$('03-31-87' )='87-090' GRE2JUL$('04-30-87' )='87-120' GRE2JUL$('05-31-87' )='87-151' GRE2JUL$('06-30-87' )='87-181' GRE2JUL$('07-31-87' )='87-212' GRE2JUL$('08-31-87' )='87-243' GRE2JUL$('09-30-87' )='87-273' GRE2JUL$('10-31-87' )='87-304' GRE2JUL$('11-30-87' )='87-334' GRE2JUL$('12-31-87' )='87-365' Hit [Enter] to continue execution... GRE2JUL$('01-01-1988')='1988-001' GRE2JUL$('01-31-1988')='1988-031' GRE2JUL$('02-29-1988')='1988-060' GRE2JUL$('03-31-1988')='1988-091' GRE2JUL$('04-30-1988')='1988-121' GRE2JUL$('05-31-1988')='1988-152' GRE2JUL$('06-30-1988')='1988-182' GRE2JUL$('07-31-1988')='1988-213' GRE2JUL$('08-31-1988')='1988-244' GRE2JUL$('09-30-1988')='1988-274' GRE2JUL$('10-31-1988')='1988-305' GRE2JUL$('11-30-1988')='1988-335' GRE2JUL$('12-31-1988')='1988-366' Execution completed - hit [Enter] to continue... |
View [and save] GRE2JUL.BAS text View [and save] ZGRE2JUL.BAS text (Use [Back] button or [Alt]+[CL] to return here from the viewed text) Copyright © 1988–2004 by Go to: Davar site entry | Site contents | Site index | Personal Computer | PowerBASIC | Text top |