C LAST REVISION 18032014 IP C PROGRAM FOR DATE CONVERSION: C MODIFIED JULIAN/YEAR,MO,DAY AND VICE VERSA C RAMADAN FINDING C PROGRAM DATUM C 1 CONTINUE WRITE(*,1010) 1010 FORMAT( ' 1-YRMODY 2-SMD 3-RAMADAN 4-END >>> '\) READ(*,*) LABEL GO TO (10,20,30,40,10),LABEL C 10 CONTINUE WRITE(*,1001) 1001 FORMAT(' YEAR -1900 >>> '\) READ(*,*) JJJ WRITE(*,1002) 1002 FORMAT(' MONTH >>> '\) READ(*,*) MM WRITE(*,1003) 1003 FORMAT(' DAY >>> '\) READ(*,*) IDD 111 IYR=JJJ MO=MM IDY=IDD CALL MJD(IYR,MO,IDY,RMJD) C 11 CALL DAY(RMJD,IDAY) WRITE(*,2)IDAY,JJJ,MM,IDD,RMJD 2 FORMAT(/1X,1A2,2X,'Y.MO.DY ',2(I4,1H.),I4,' MJD ',F6.0//) GO TO 1 C 20 CONTINUE WRITE(*,1004) 1004 FORMAT(' MODIFIED JULIAN DATE >>> '\) READ(*,*) RMJD CALL DATE(RMJD,IYR,MO,IDY) JJJ=IYR MM=MO IDD=IDY GO TO 11 C C RAMADAN CALCULATION C 30 CONTINUE WRITE(*,1005) 1005 FORMAT(' ENTER A YEAR-1900 FOR RAMADAN FINDING >>> '\) READ(*,*) IYR JJ=IYR IF(JJ.LE.75) JJ=JJ-1 MM=1 II=1 CALL MJD(JJ,MM,II,RMJD1) C RAMADAN BEG. 7.SEPT.1975, MJD=42662,PERIOD=354.33 DAYS RA=(RMJD1-42662.)/354.33 IRA=RA IRA=IRA+1 RMJD=42662.+FLOAT(IRA)*354.33 CALL DATE(RMJD,JJJ,MM,IDD) WRITE(*,31) 31 FORMAT(' <<< RAMADAN BEGINS >>> ') GO TO 111 C C END C 40 CONTINUE STOP 777 END C C SUBROUTINE MJD(IYR,MO,IDY,RMJD) C ************** C TRANSFERS THE YEAR:MONTH:DAY INTO MODIFIED JULIAN DATE C C R.N.1979 C IF (MO.GT.2) GO TO 1 MO=MO+9 IYR=IYR-1 GO TO 2 1 MO=MO-3 2 RMJD=15078. # +AINT(365.25*FLOAT(IYR))+AINT(30.6*FLOAT(MO)+0.4)+FLOAT(IDY) RETURN END C C SUBROUTINE DATE(RMJD,I,M,ID) C *************** C C ALGORITHM AN1978 FORTRAN CODE IP1981 C C CONVERTS THE MODIF. JULIAN DATE INTO YEAR:MONTH:DAY C X1=RMJD-15078. E=INT((4.*X1-1.)/1461.) X1=INT((4.*X1+3.-1461.*E)/4.) T=INT((5.*X1-3.)/153.) D=INT((5.*X1+2.-153.*T)/5.) IF(T.LT.10.) GO TO 6330 T=T-9. E=E+1901. GO TO 6350 6330 T=T+3. E=E+1900. 6350 CONTINUE I=E-1900. M=T ID=D RETURN END C SUBROUTINE DAY(RMJD,I) C ************** C IP1981 C CALCULATES THE DAY WITHIN A WEEK C INPUT RMJD ... MODIF. JULIAN DATE (REAL!) C OUTPUT I ... CONTAINS THE NAME OF THE DAY C DIMENSION IDAY(7) DATA IDAY/2HTH,2HFR,2HSA,2HSU,2HMO,2HTU,2HWE / I=AMOD(RMJD,7.) IF(I)1,1,2 1 I=I+7 2 I=IDAY(I) RETURN END C