メインプログラム:
PROGRAM JULIAN
**************************************************************
* Calculate cumulative days from an initial day to a final *
* day *
**************************************************************
*
* Initial date (I): YEAR1, MONTH1, DAY1
* Final date (F): YEAR2, MONTH2, DAY2
* Total days from I to F: TOTALD
*
**************************************************************
INTEGER YEAR1, YEAR2, MONTH1, MONTH2, DAY1, DAY2,
& NYDAY1, NYDAY2, DOFY1, DOFY2, TOTALD
LOGICAL LEAP1, LEAP2
**************************************************************
*
* Input and check an initial day and a final day
*
WRITE(*,*) ' Calculate cumulative days from an initial',
& ' day to a final day'
WRITE(*,*) ' '
10 CALL INPUT(YEAR1, MONTH1, DAY1, 'an initial')
CALL INPUT(YEAR2, MONTH2, DAY2, 'a final')
*
* Check the consistency of the two dates
*
IF (YEAR1 .GT. YEAR2) THEN
WRITE(*,*) '*** WARN in main:',
& ' Initial year must be smaller than final year'
WRITE(*,*) ' Re-enter the dates!'
WRITE(*,*) ' '
GOTO 10
ENDIF
*
* Calculate cumulative days from 1601.1/1 to the new
* year's eve of the year (12/31 of the previous year)
*
CALL DOFC(YEAR1, NYDAY1, LEAP1)
CALL DOFC(YEAR2, NYDAY2, LEAP2)
*
* Calculate cumulative days of the year
*
CALL DOFY(MONTH1, DAY1, LEAP1, DOFY1)
CALL DOFY(MONTH2, DAY2, LEAP2, DOFY2)
*
* Number of days from the initial day to the final day
*
TOTALD = (NYDAY2 + DOFY2) - (NYDAY1 + DOFY1) + 1
*
* Output total days
*
WRITE(*,*) ' ========================= '
WRITE(*,*) ' Calculate cumulative days '
WRITE(*,*) ' '
WRITE(*,600) ' From: ', YEAR1, '.', MONTH1, '/', DAY1
WRITE(*,600) ' To: ', YEAR2, '.', MONTH2, '/', DAY2
WRITE(*,*) ' --------------------- '
WRITE(*,*) ' '
WRITE(*,*) ' NYDAY1 =', NYDAY1, ', DOFY1 =', DOFY1
WRITE(*,*) ' NYDAY2 =', NYDAY2, ', DOFY2 =', DOFY2
WRITE(*,*) ' -------------------------------- '
WRITE(*,*) ' '
WRITE(*,*) ' Total days (including the init. day):',
& TOTALD
WRITE(*,*) ' ======== '
600 FORMAT(A,I5,A,I2,A,I2)
*
STOP
END