jdater.f
44 lines
| 1.0 KiB
| text/x-fortran
|
FortranFixedLexer
r0 | C $Id: jdater.f 3304 2011-01-17 15:25:59Z brideout $ | |||
C | ||||
SUBROUTINE JDATER(JDAYNO,DAY,MONTH,YEAR,IER) | ||||
C | ||||
C Returns DAY, MONTH, YEAR from Julian day (See JDAY for inverse). | ||||
C | ||||
C Input: | ||||
C JDAYNO - Julian day (e.g. 2447892) | ||||
C | ||||
C Output: | ||||
C DAY - Day of month (1-31) | ||||
C MONTH - Month of year (1-12) | ||||
C YEAR - Year (e.g. 1977) | ||||
C IER - If (IER.NE.0) an error has occurred. | ||||
C | ||||
C .. Scalar Arguments .. | ||||
INTEGER DAY,IER,JDAYNO,MONTH,YEAR | ||||
C .. | ||||
C .. Local Scalars .. | ||||
INTEGER J | ||||
C .. | ||||
IF (JDAYNO.LT.0) GO TO 20 | ||||
J = JDAYNO - 1721119 | ||||
YEAR = (4*J-1)/146097 | ||||
J = 4*J - 1 - 146097*YEAR | ||||
DAY = J/4 | ||||
J = (4*DAY+3)/1461 | ||||
DAY = 4*DAY + 3 - 1461*J | ||||
DAY = (DAY+4)/4 | ||||
MONTH = (5*DAY-3)/153 | ||||
DAY = 5*DAY - 3 - 153*MONTH | ||||
DAY = (DAY+5)/5 | ||||
YEAR = 100*YEAR + J | ||||
IER = 0 | ||||
IF (MONTH.GE.10) GO TO 10 | ||||
MONTH = MONTH + 3 | ||||
RETURN | ||||
10 MONTH = MONTH - 9 | ||||
YEAR = YEAR + 1 | ||||
RETURN | ||||
20 IER = 1 | ||||
RETURN | ||||
C | ||||
END | ||||