caldat.f90
ユリウス日→西暦
subroutine caldat(JULIAN,IYYY,MONTH,DD)! Description:!! Author: am!! Host: aofd30! Directory: /work2/am/12.Work11/75.Mitsui/52.Vertical_Profile/src!! Revision history:! This file is created by /usr/local/mybin/nff.sh at 11:00 on 11-01-2011.! use! implicit none INTEGER,intent(in):: JULIAN integer,intent(out)::IYYY,MONTH,DD! ! NAME IN/OUT DESCRIPTION ! ! JULIAN I THE JULIAN DAY ! IYYY O THE YEAR ! MONTH O THE MONTH (1 TO 12) ! DD O THE DAY OF THE MONTH ! INTEGER IGREG PARAMETER (IGREG=2299161) INTEGER JALPHA,JA,JB,JC,JD,JE! IF (JULIAN .GE. IGREG) THEN JALPHA = INT(((JULIAN - 1867216) - 0.25)/36524.25) JA = JULIAN + 1 + JALPHA - INT(0.25*JALPHA) ELSE JA = JULIAN ENDIF JB = JA + 1524 JC = INT(6680. + ((JB - 2439870) - 122.1)/365.25) JD = 365*JC + INT(0.25*JC) JE = INT((JB - JD)/30.6001) DD = JB - JD - INT(30.6001*JE) MONTH = JE - 1 IF (MONTH .GT. 12) MONTH = MONTH - 12 IYYY = JC - 4715 IF (MONTH .GT. 2) IYYY = IYYY - 1 IF (IYYY .LE. 0) IYYY = IYYY - 1 RETURNend subroutine caldatjulday.f90
西暦→ユリウス日
INTEGER FUNCTION JULDAY(IYYY,MONTH,DD) INTEGER,intent(inout):: IYYY,MONTH,DD! ! NAME IN/OUT DESCRIPTION ! ! IYYY I YEAR ! MONTH I MONTH (1 TO 12) ! DD I DAY OF MONTH ! INTEGER IGREG PARAMETER (IGREG = 15 + 31*(10 + 12*1582)) INTEGER JY,JM,JA ! IF (IYYY .LT. 0) IYYY = IYYY + 1 IF (MONTH .GT. 2) THEN JY = IYYY JM = MONTH + 1 ELSE JY = IYYY - 1 JM = MONTH + 13 ENDIF JULDAY = INT(365.25*JY) + INT(30.6001*JM) + DD + 1720995 IF (DD + 31*(MONTH + 12*IYYY) .GE. IGREG) THEN JA = INT(0.01*JY) JULDAY = JULDAY + 2 - JA + INT(0.25*JA) ENDIF RETURN end function julday