SUBROUTINE VMJD ( * * inputs * : TIME, * * outputs * : MJD, STATUS) * * Module Number: * * Module Name: * * Keyphrase: * ---------- * Calculate Modified Julian day from the date/time character string in HSP * GEIS file's group parameter (FPKTTIME and LPKTTIME) * * Description: * ------------ * Calculate the Modified Julian day from a CHAR*24 string which looks like * 01-JAN-1986 12:00:00.00 * * FORTRAN Name: VMJD.FOR * * Keywords of Accessed Files and Tables: * -------------------------------------- * Name I/O Description / Comments * None * * Subroutines Called: * ------------------- * CDBS: * CDMJD * SDAS: * None * OTHERS: * None * * History: * -------- * Version Date Author Description * 1 10-10-86 J.-C. Hsu Design and coding * 2 08-10-87 J.-C. Hsu F77 standard * 3 04-10-89 J.-C. Hsu change from since J1900 to MJD *------------------------------------------------------------------------------- * *== input: * --date/time character string CHARACTER*(*) TIME * *== output: * --Modified Julian day DOUBLE PRECISION MJD * --error status INTEGER STATUS * *== local: * --month in characters CHARACTER*3 M * --Gregorian year INTEGER YEAR, * --gregorian month : MONTH, * --day of the month : DAY, * --hour of the day (24 hour system) : HOUR, * --minute, second : MIN, SEC, * --fraction of second : SECFRA * --day of the month (includes fraction) DOUBLE PRECISION D *=========================begin hsp.inc========================================= * --status return code INTEGER OK, ERRNUM(20) INTEGER DEST, PRIO DATA OK /0/ DATA ERRNUM /701, 702, 703, 704, 705, 706, 707, 708, 709, 710, : 711, 712, 713, 714, 715, 716, 717, 718, 719, 720/ * --message destination and priority DATA DEST, PRIO /1, 0/ *=========================end hsp.inc=========================================== *------------------------------------------------------------------------------ * * convert month from character to integer * M = TIME(4:6) IF (M .EQ. 'JAN') THEN MONTH = 1 ELSE IF (M .EQ. 'FEB') THEN MONTH = 2 ELSE IF (M .EQ. 'MAR') THEN MONTH = 3 ELSE IF (M .EQ. 'APR') THEN MONTH = 4 ELSE IF (M .EQ. 'MAY') THEN MONTH = 5 ELSE IF (M .EQ. 'JUN') THEN MONTH = 6 ELSE IF (M .EQ. 'JUL') THEN MONTH = 7 ELSE IF (M .EQ. 'AUG') THEN MONTH = 8 ELSE IF (M .EQ. 'SEP') THEN MONTH = 9 ELSE IF (M .EQ. 'OCT') THEN MONTH = 10 ELSE IF (M .EQ. 'NOV') THEN MONTH = 11 ELSE IF (M .EQ. 'DEC') THEN MONTH = 12 ELSE STATUS = ERRNUM(1) GO TO 999 END IF * * convert day, year, hour, minute, second, fraction second from character * to integer * READ (UNIT = TIME(1:2), FMT = '(BN, I2)') DAY READ (UNIT = TIME(8:11), FMT = '(BN, I4)') YEAR READ (UNIT = TIME(13:14), FMT = '(BN, I2)') HOUR READ (UNIT = TIME(16:17), FMT = '(BN, I2)') MIN READ (UNIT = TIME(19:20), FMT = '(BN, I2)') SEC READ (UNIT = TIME(22:23), FMT = '(BN, I2)') SECFRA * * convert hour, minute, second to fractional day * D = (((FLOAT(SECFRA) / 100. + FLOAT(SEC)) / 60. + FLOAT(MIN)) : /60. + FLOAT(HOUR)) / 24. + FLOAT(DAY) * * calculate Modified Julian day * CALL CDMJD (YEAR, MONTH, D, MJD) * STATUS = OK GO TO 1000 * 999 CONTINUE * 1000 RETURN END