home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / fortran / weekday.for < prev   
Text File  |  1994-03-04  |  1KB  |  39 lines

  1.         PROGRAM TEST
  2.         INTEGER DATE, MONTH, YEAR, DOW, DAY
  3.  
  4.         YEAR = 1989
  5.         DO 10 MONTH = 1, 12, 1
  6.         DO 10 DATE = 1, 31, 1
  7.         DAY = DOW(DATE, MONTH, YEAR)
  8.         WRITE(5,20)MONTH, DATE, YEAR, DAY
  9. 10      CONTINUE
  10. 20      FORMAT(1X, 4I)
  11.         STOP
  12.         END
  13. C
  14. C       DOW COMPUTES THE DAY OF THE WEEK BASED UPON THE GIVEN DATE,
  15. C       MONTH AND YEAR.  IT USES THE ZELLER CONGRUENCE ALGORITHIM.
  16. C       DATE IS THE DAY OF THE MONTH, 1 - 31
  17. C       MONTH IS THE MONTH OF THE YEAR, 1 - 12
  18. C       YEAR IS THE YEAR, E.G., 1989
  19. C       IT RETURNS 1 FOR SUNDAY, 2 FOR MONDAY, ETC.
  20. C
  21.         INTEGER FUNCTION DOW(DATE, MONTH, YEAR)
  22.         INTEGER DATE, MONTH, YEAR
  23.         INTEGER DAY, YR, MN
  24.  
  25.         YR = YEAR
  26.         MN = MONTH
  27. C
  28. C       IF JANUARY OR FEBRUARY, ADJUST MONTH AND YEAR
  29. C
  30.         IF (MN.GT.2)GO TO 10
  31.         MN = MN + 12
  32.         YR = YR - 1
  33. 10      N1 = (26 * (MN + 1)) / 10
  34.         N2 = (125 * YR) / 100
  35.         DAY = (DATE + N1 + N2 - (YR / 100) + (YR / 400) - 1)
  36.         DOW = MOD(DAY, 7) + 1
  37.         RETURN
  38.         END
  39.