c c **************************** c *** Subroutine MJLcGR *** c *** 1984/12/06/10-07 *** c **************************** c Subroutine MJLcGR(mjl,fmjl, iyear,imon,iday,ihr,imin,seci) *********************************************************************** * * * Purpose: Given the modified Julian date in days and fraction * * of days (mjl, fmjl). * * * * Compute the Gregorian date (i.e., the present day * * calendar date) represented by * * iyear, imon, iday, ihr, imin, seci. * * * * The modified Julian date is obtained from the * * Julian date by computing * * (mjl, fmjl) = (jl-2400000, fjl-0.5) * * * * The Julian date is a continuous count of days and * * fractional days from -4712 b.C. january 1 at * * 0.5 hours UT. * * * * * * Parameters Type I/O Function * * * * mjl i*4 I days of modified Julian * * date * * fmjl r*8 I fractional part of days * * of modified Julian date * * * * iyear i*4 O year * * imon i*4 O month * * iday i*4 O day * * ihr i*4 O hours * * imin i*4 O minutes * * seci r*8 O seconds * * * * * * Examples * * * * Input: mjl = 45699, fmjl = 0.9999898548239468 * * Represents: 1983/12/31/23/59/59.1234567890 * * Output: iyear = 83, imon = 12, iday = 31, ihr = 23, imin = 59, * * seci = 59.1234567890 * * * * Input: mjl = 45700, fmjl = 0.0 * * Represents: 1984/01/01/00/00/00.0 * * Output: iyear = 84, imon = 1, iday = 1, ihr = 0, imin = 0, * * seci = 0.0000000000 * * * * Input: mjl = 45700, fmjl = 0.0000115740740740 * * Represents: 1984/01/01/00/00/01.0000000000 * * Output: iyear = 84, imon = 1, iday = 1, ihr = 0, imin = 0, * * seci = 1.0000000000 * * * * Input: mjl = 45980, fmjl = 0.6459736511202435 * * Represents: 1984/10/07/15/30/12.1234567890 * * Output: iyear = 84, imon = 10, iday = 7, ihr = 15, imin = 30, * * seci = 12.1234567890 * * * * * * B. Hofmann-Wellenhof, B. Remondi * * * *********************************************************************** implicit real*8(a-h,o-z) c c Input data test. c c I changed 36204 to 15385; 36204=yr1958 whereas 15385=yr1901. Ben. if(mjl .lt. 15385 .or. mjl .gt. 88069) + stop ' MJLcGR: "mjl" must be 15385 <= mjl <= 88069' if(fmjl .lt. 0.d0 .or. fmjl .ge. 1.d0) + stop ' MJLcGR: "fmjl" must be 0.0 <= fmjl < 1.0' c call MJLcYD(mjl,fmjl, iyear,idayy,fdayy) call YDcGR(iyear,idayy,fdayy, imon,iday,ihr,imin,seci) return c c End of Subroutine MJLcGR c c ***************************************************************** end