C+ SUBROUTINE CDMJD (YEAR, MONTH, DAY, MJD) C CU Module Number: CU CU Module Name: CU CH CH Version 1.2A 4-OCT-85 12:57:01 BABST Authorized for baselining CH CU Keyphrase: CH Version 1.1C 12-SEP-85 18:07:35 BABST Passed system testing . CH Version 1.1B 17-JUL-85 12:40:43 HODGE Unit test inspection CU ---------- CU Convert year, month, day to Modified Julian Date CU CU Description: CU ------------ CU Convert year, month, day (Gregorian calendar) to Modified Julian Day Number. CU The day may have a fractional portion, and it may be zero or CU negative or greater than the number of days in the month. CU (e.g. 1983 Jan 0 = 1982 Dec 31). CU References: H. F. Fliegel & T. C. Van Flandern (1968), Comm. A.C.M., CU vol 11, p 657; CU Van Flandern & Pulkkinen (1979 Nov), Ap.J. Suppl., vol 41, 391-411. C CS FORTRAN Name: CDMJD CS ------------- CS CS CS Inputs: CS ------- CS Year . An integer CS Month . An integer CS Day . Not necessarily an integer CS CS Outputs: CS -------- CS Modified Julian_Day_Number . A REAL*8 value C CH Date Author Description CH MAR-1989 J.C. Hsu Subtract 2400001 and drop the 0.5 subtraction CH from Julian day number CH MAY-1985 P.E. Hodge Subtract 0.5 from Julian day number CH 31-MAY-1985 P.E. Hodge Update PDL C CP ... Use integer arithmetic while evaluating this expression, i.e. truncate CP .. toward zero after every division. CP . CP Assign Integer_Expression = / CP 367 * Year - 7 * [Year + (Month + 9)/12]/4 - / CP - 3 * {[Year + (Month - 9)/7]/100 + 1}/4 + 275 * Month/9 + 1721029 CP - 2400001 CP Assign Modified Julian_Day_Number = Integer_Expression + Day CP . CP RETURN C------------------------------------------------------------------------------ C *== inputs * --Input year and month INTEGER YEAR, MONTH * --Input day DOUBLE PRECISION DAY * *== outputs * --Output Modified Julian day number DOUBLE PRECISION MJD * *== local * --local integer expresion INTEGER INTEXP * * ------------------------ Start of executable code --------------------------- * INTEXP = 367 * YEAR - 7 * (YEAR + (MONTH + 9)/12) / 4 : - 3 * ((YEAR + (MONTH-9)/7) / 100 + 1) / 4 : + 275 * MONTH/9 + 1721029 - 2400001 * MJD = DBLE(INTEXP + DAY) * RETURN END