SUBROUTINE W3FS26(JLDAYN,IYEAR,MONTH,IDAY,IDAYWK,IDAYYR) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C C SUBPROGRAM: W3FS26 YEAR, MONTH, DAY FROM JULIAN DAY NUMBER C AUTHOR: JONES,R.E. ORG: W342 DATE: 87-03-29 C C ABSTRACT: COMPUTES YEAR (4 DIGITS), MONTH, DAY, DAY OF WEEK, DAY C OF YEAR FROM JULIAN DAY NUMBER. THIS SUBROUTINE WILL WORK C FROM 1583 A.D. TO 3300 A.D. C C PROGRAM HISTORY LOG: C 87-03-29 R.E.JONES C 89-10-25 R.E.JONES CONVERT TO CRAY CFT77 FORTRAN C C USAGE: CALL W3FS26(JLDAYN,IYEAR,MONTH,IDAY,IDAYWK,IDAYYR) C C INPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C JLDAYN ARG LIST INTEGER JULIAN DAY NUMBER C C OUTPUT VARIABLES: C NAMES INTERFACE DESCRIPTION OF VARIABLES AND TYPES C ------ --------- ----------------------------------------------- C IYEAR ARG LIST INTEGER YEAR (4 DIGITS) C MONTH ARG LIST INTEGER MONTH C IDAY ARG LIST INTEGER DAY C IDAYWK ARG LIST INTEGER DAY OF WEEK (1 IS SUNDAY, 7 IS SAT) C IDAYYR ARG LIST INTEGER DAY OF YEAR (1 TO 366) C C REMARKS: A JULIAN DAY NUMBER CAN BE COMPUTED BY USING ONE OF THE C FOLLOWING STATEMENT FUNCTIONS. A DAY OF WEEK CAN BE COMPUTED C FROM THE JULIAN DAY NUMBER. A DAY OF YEAR CAN BE COMPUTED FROM C A JULIAN DAY NUMBER AND YEAR. C C IYEAR (4 DIGITS) C C JDN(IYEAR,MONTH,IDAY) = IDAY - 32075 C & + 1461 * (IYEAR + 4800 + (MONTH - 14) / 12) / 4 C & + 367 * (MONTH - 2 - (MONTH -14) / 12 * 12) / 12 C & - 3 * ((IYEAR + 4900 + (MONTH - 14) / 12) / 100) / 4 C C IYR (4 DIGITS) , IDYR(1-366) DAY OF YEAR C C JULIAN(IYR,IDYR) = -31739 + 1461 * (IYR + 4799) / 4 C & -3 * ((IYR + 4899) / 100) / 4 + IDYR C C DAY OF WEEK FROM JULIAN DAY NUMBER, 1 IS SUNDAY, 7 IS SATURDAY. C C JDAYWK(JLDAYN) = MOD((JLDAYN + 1),7) + 1 C C DAY OF YEAR FROM JULIAN DAY NUMBER AND 4 DIGIT YEAR. C C JDAYYR(JLDAYN,IYEAR) = JLDAYN - C & (-31739+1461*(IYEAR+4799)/4-3*((IYEAR+4899)/100)/4) C C THE FIRST FUNCTION WAS IN A LETTER TO THE EDITOR COMMUNICATIONS C OF THE ACM VOLUME 11 / NUMBER 10 / OCTOBER, 1968. THE 2ND C FUNCTION WAS DERIVED FROM THE FIRST. THIS SUBROUTINE WAS ALSO C INCLUDED IN THE SAME LETTER. JULIAN DAY NUMBER 1 IS C JAN 1,4713 B.C. A JULIAN DAY NUMBER CAN BE USED TO REPLACE A C DAY OF CENTURY, THIS WILL TAKE CARE OF THE DATE PROBLEM IN C THE YEAR 2000, OR REDUCE PROGRAM CHANGES TO ONE LINE CHANGE C OF 1900 TO 2000. JULIAN DAY NUMBERS CAN BE USED FOR FINDING C RECORD NUMBERS IN AN ARCHIVE OR DAY OF WEEK, OR DAY OF YEAR. C C ATTRIBUTES: C LANGUAGE: CRAY CFT77 FORTRAN C MACHINE: CRAY Y-MP8/864 C C$$$ C L = JLDAYN + 68569 N = 4 * L / 146097 L = L - (146097 * N + 3) / 4 I = 4000 * (L + 1) / 1461001 L = L - 1461 * I / 4 + 31 J = 80 * L / 2447 IDAY = L - 2447 * J / 80 L = J / 11 MONTH = J + 2 - 12 * L IYEAR = 100 * (N - 49) + I + L IDAYWK = MOD((JLDAYN + 1),7) + 1 IDAYYR = JLDAYN - & (-31739 +1461 * (IYEAR+4799) / 4 - 3 * ((IYEAR+4899)/100)/4) RETURN END