JUL2GRE$ PowerBASIC Function |
JUL2GRE$ function evaluates to the date in Gregorian format (MM-DD-YY or MM-DD-CCYY) that corresponds to the Julian date specified as its parameter. Date should be specified in one of the formats YY-DDD or CCYY-DDD and should be a valid date in Julian calendar. If parameter doesn't represent a valid date, "" (empty string) is returned instead of Gregorian date value. Date field delimiter is expected to be in the fixed position 3 or 5; value of delimiter is insignificant. If parameter is empty, Gregorian 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:
JUL2GRE$ Source Program Debugging program Debugging logout |
' JUL2GRE$(0.0) Convert Julian Date to Gregorian Format 04/05/1988-01/05/2010 ' ------------------------------------------------------------------------------ ' Copyright (C) 1988-2010 by Vladimir Veytsel www.davar.net ' Type ------------------------------------------------------------------------- ' Function ' Description ------------------------------------------------------------------ ' JUL2GRE$ function converts Julian date into Gregorian date format. ' Declaration ------------------------------------------------------------------ ' DECLARE FUNCTION JUL2GRE$(Jul_Date$) ' Parameter -------------------------------------------------------------------- ' Jul_Date$ - Julian date in the form of YY-DDD or CCYY-DDD, ' where DDD is a day number within a year. ' Value ------------------------------------------------------------------------ ' IF specified Julian date is valid, i.e.: ' it is non-empty and ' it has length either of 6 or 8 characters and ' it is DIGITAL (with the exception of date field delimiter) and ' day number lies within range of 1-365 ' (or 1-366, considering specified year leap characteristic), ' THEN MM-DD-YY or MM-DD-CCYY (date in Gregorian format) is returned ' to the point of function invocation, ' ELSE "" (empty string) is returned to the point of invocation. ' Notes ------------------------------------------------------------------------ ' - Delimiter of parameter date fields is irrelevant and can be any symbol. ' Date fields are extracted from fixed positions. ' - EMPTY date is considered to be an INVALID one - Julian date is an internal ' format that doesn't require a default. ' Examples --------------------------------------------------------------------- ' JUL2GRE$("" )="" ' JUL2GRE$("87-31" )="" ' JUL2GRE$("1987-31" )="" ' JUL2GRE$("19*7-031")="" ' JUL2GRE$("1988-0#1")="" ' JUL2GRE$("87-000" )="" ' JUL2GRE$("87-366" )="" ' JUL2GRE$("1988-367")="" ' JUL2GRE$("87-031" )="01-31-87" ' JUL2GRE$("87-059" )="02-28-87" ' JUL2GRE$("87-090" )="03-31-87" ' JUL2GRE$("87-120" )="04-30-87" ' JUL2GRE$("87-151" )="05-31-87" ' JUL2GRE$("87-181" )="06-30-87" ' JUL2GRE$("87-212" )="07-31-87" ' JUL2GRE$("87-243" )="08-31-87" ' JUL2GRE$("87-273" )="09-30-87" ' JUL2GRE$("87-304" )="10-31-87" ' JUL2GRE$("87-334" )="11-30-87" ' JUL2GRE$("87-365" )="12-31-87" ' JUL2GRE$("1988-031")="01-31-1988" ' JUL2GRE$("1988-060")="02-29-1988" ' JUL2GRE$("1988-091")="03-31-1988" ' JUL2GRE$("1988-121")="04-30-1988" ' JUL2GRE$("1988-152")="05-31-1988" ' JUL2GRE$("1988-182")="06-30-1988" ' JUL2GRE$("1988-213")="07-31-1988" ' JUL2GRE$("1988-244")="08-31-1988" ' JUL2GRE$("1988-274")="09-30-1988" ' JUL2GRE$("1988-305")="10-31-1988" ' JUL2GRE$("1988-335")="11-30-1988" ' JUL2GRE$("1988-366")="12-31-1988" ' External Functions ---------------------------------------------------------- #INCLUDE ONCE "DIGITAL" #INCLUDE ONCE "LEAP" ' Start Function --------------------------------------------------------------- DEFINT A-Z ' All defaulted variables are integer FUNCTION JUL2GRE$(Jul_Date$) ' Constant --------------------------------------------------------------------- Month_Days$="31,28,31,30,31,30,31,31,30,31,30,31" ' Check Specified Date for Valid Length (6 or 8 Characters) -------------------- IF ((LEN(Jul_Date$)<>6) AND _ (LEN(Jul_Date$)<>8)) THEN JUL2GRE$="" EXIT FUNCTION END IF ' Check Specified Date for Digital Value --------------------------------------- IF (NOT(DIGITAL%(LEFT$(Jul_Date$,2-(LEN(Jul_Date$)=8))+ _ RIGHT$(Jul_Date$,3),""))) THEN JUL2GRE$="" EXIT FUNCTION END IF ' Parse Date to Be Converted --------------------------------------------------- Year$= LEFT$(Jul_Date$,2-2*(LEN(Jul_Date$)=8)) Day =VAL(RIGHT$(Jul_Date$,3)) ' Check Day for Lying within Proper Borders ------------------------------------ IF (NOT((Day>0) AND _ (Day<366-LEAP%(Year$)))) THEN JUL2GRE$="" EXIT FUNCTION END IF ' Adjust Number of February Days for the Leap Year ----------------------------- IF (LEAP%(Year$)) THEN MID$(Month_Days$,5,1)="9" ' Compute Gregorian Month Number and Day --------------------------------------- DD=Day FOR MM=1 TO 12 MM_Days=VAL(MID$(Month_Days$,3*MM-2,2)) IF (DD<=MM_Days) THEN EXIT FOR DD=DD-MM_Days NEXT MM ' Form and Return Gregorian Date Value to the Point of Invocation -------------- JUL2GRE$=RIGHT$("0"+LTRIM$(STR$(MM)),2)+"-"+ _ RIGHT$("0"+LTRIM$(STR$(DD)),2)+"-"+Year$ ' Finish Function -------------------------------------------------------------- END FUNCTION
JUL2GRE$ Debugging Program Source program Debugging logout |
' JUL2GRE$(0.0) Convert Julian Date to Gregorian Format 04/05/1988-02/05/2010 ' ------------------------------------------------------------------------------ #INCLUDE "JUL2GRE" FUNCTION PBMAIN PRINT "JUL2GRE$(0.0) Convert Julian Date to Gregorian Format ";DATE$; PRINT " ";LEFT$(TIME$,5) PRINT STRING$(73,"-") PRINT PRINT "JUL2GRE$('' )='"; _ JUL2GRE$("" );"'" PRINT "JUL2GRE$('87-31' )='"; _ JUL2GRE$("87-31" );"'" PRINT "JUL2GRE$('1987-31' )='"; _ JUL2GRE$("1987-31" );"'" PRINT "JUL2GRE$('19*7-031')='"; _ JUL2GRE$("19*7-031");"'" PRINT "JUL2GRE$('1988-0#1')='"; _ JUL2GRE$("1988-0#1");"'" PRINT "JUL2GRE$('87-000' )='"; _ JUL2GRE$("87-000" );"'" PRINT "JUL2GRE$('87-366' )='"; _ JUL2GRE$("87-366" );"'" PRINT "JUL2GRE$('1988-367')='"; _ JUL2GRE$("1988-367");"'" PRINT "JUL2GRE$('87-031' )='"; _ JUL2GRE$("87-031" );"'" PRINT "JUL2GRE$('87-059' )='"; _ JUL2GRE$("87-059" );"'" PRINT "JUL2GRE$('87-090' )='"; _ JUL2GRE$("87-090" );"'" PRINT "JUL2GRE$('87-120' )='"; _ JUL2GRE$("87-120" );"'" PRINT "JUL2GRE$('87-151' )='"; _ JUL2GRE$("87-151" );"'" PRINT "JUL2GRE$('87-181' )='"; _ JUL2GRE$("87-181" );"'" PRINT "JUL2GRE$('87-212' )='"; _ JUL2GRE$("87-212" );"'" PRINT "JUL2GRE$('87-243' )='"; _ JUL2GRE$("87-243" );"'" PRINT "JUL2GRE$('87-273' )='"; _ JUL2GRE$("87-273" );"'" PRINT "JUL2GRE$('87-304' )='"; _ JUL2GRE$("87-304" );"'" PRINT "JUL2GRE$('87-334' )='"; _ JUL2GRE$("87-334" );"'" PRINT "JUL2GRE$('87-365' )='"; _ JUL2GRE$("87-365" );"'" PRINT "JUL2GRE$('1988-031')='"; _ JUL2GRE$("1988-031");"'" PRINT "JUL2GRE$('1988-060')='"; _ JUL2GRE$("1988-060");"'" PRINT "JUL2GRE$('1988-091')='"; _ JUL2GRE$("1988-091");"'" PRINT "JUL2GRE$('1988-121')='"; _ JUL2GRE$("1988-121");"'" PRINT "JUL2GRE$('1988-152')='"; _ JUL2GRE$("1988-152");"'" PRINT "JUL2GRE$('1988-182')='"; _ JUL2GRE$("1988-182");"'" PRINT "JUL2GRE$('1988-213')='"; _ JUL2GRE$("1988-213");"'" PRINT "JUL2GRE$('1988-244')='"; _ JUL2GRE$("1988-244");"'" PRINT "JUL2GRE$('1988-274')='"; _ JUL2GRE$("1988-274");"'" PRINT "JUL2GRE$('1988-305')='"; _ JUL2GRE$("1988-305");"'" PRINT "JUL2GRE$('1988-335')='"; _ JUL2GRE$("1988-335");"'" PRINT "JUL2GRE$('1988-366')='"; _ JUL2GRE$("1988-366");"'" END FUNCTION
JUL2GRE$ Debugging Logout Source program Debugging program |
JUL2GRE$(0.0) Convert Julian Date to Gregorian Format 09-18-2016 21:24 ------------------------------------------------------------------------- JUL2GRE$('' )='' JUL2GRE$('87-31' )='' JUL2GRE$('1987-31' )='' JUL2GRE$('19*7-031')='' JUL2GRE$('1988-0#1')='' JUL2GRE$('87-000' )='' JUL2GRE$('87-366' )='' JUL2GRE$('1988-367')='' JUL2GRE$('87-031' )='01-31-87' JUL2GRE$('87-059' )='02-28-87' JUL2GRE$('87-090' )='03-31-87' JUL2GRE$('87-120' )='04-30-87' JUL2GRE$('87-151' )='05-31-87' JUL2GRE$('87-181' )='06-30-87' JUL2GRE$('87-212' )='07-31-87' JUL2GRE$('87-243' )='08-31-87' JUL2GRE$('87-273' )='09-30-87' JUL2GRE$('87-304' )='10-31-87' JUL2GRE$('87-334' )='11-30-87' JUL2GRE$('87-365' )='12-31-87' JUL2GRE$('1988-031')='01-31-1988' JUL2GRE$('1988-060')='02-29-1988' JUL2GRE$('1988-091')='03-31-1988' JUL2GRE$('1988-121')='04-30-1988' JUL2GRE$('1988-152')='05-31-1988' JUL2GRE$('1988-182')='06-30-1988' JUL2GRE$('1988-213')='07-31-1988' JUL2GRE$('1988-244')='08-31-1988' JUL2GRE$('1988-274')='09-30-1988' JUL2GRE$('1988-305')='10-31-1988' JUL2GRE$('1988-335')='11-30-1988' JUL2GRE$('1988-366')='12-31-1988' |
View [and save] JUL2GRE.BAS text View [and save] ZJUL2GRE.BAS text (Use [Back] button or [Alt]+[CL] to return here from the viewed text) Copyright © 1988–2010 by Go to: Davar site entry | Site contents | Site index | Personal Computer | PowerBASIC | Text top |