SUBROUTINE WKDAY(IDOW,IMO,IDA,IYR) C C C COMPONENT: WKDAY C C DATE: 28-JUN-79 C C AUTHOR: GR JOHNSON C BATTELLE NORTHWEST C P O BOX 999 C RICHLAND WA 99352 C C SOURCE: FORTRAN IV-PLUS C C CALLING SEQUENCE: C C CALL WKDAY(IDOW,IMO,IDA,IYR) C CALL TODAY(IDOW) C C IDOW = VARIABLE TO RECEIVE AN INTEGER VALUE REPRESENTING C THE DAY-OF-WEEK. C (1=SUN,2=MON,3=TUE,4=WED,5=THU,6=FRI,7=SAT) C C IMO,IDA,IYR C C = DATE FOR WHICH DAY-OF-WEEK IS TO BE FOUND. C C C DESCRIPTION: C C "WKDAY" RETURNS AN INTEGER VALUE REPRESENTING THE DAY-OF-WEEK FOR C A SPECIFIED DATE. IF THE SUPPLIED DATE IS INVALID, A NEGATIVE VALUE IS C RETURNED IN IDOW. THE ENTRY POINT "TODAY" RETURNS THE CURRENT DAY-OF-WEEK. C C C PARAMETERS AND VARIABLES C INTEGER IDAYS(12) DATA IDAYS/31,28,31,30,31,30,31,31,30,31,30,31/ C C C ENTRY POINT WKDAY -- RETURN DAY-OF-WEEK FOR SPECIFIED DATE C IDOW=-1 JMO=IMO JDA=IDA JYR=MOD(IYR,100) IDAYS(2)=28 IF(MOD(JYR,4).EQ.0) IDAYS(2)=29 IF(JMO.LT.1.OR.JMO.GT.12) RETURN IF(JDA.LT.1.OR.JDA.GT.IDAYS(IMO)) RETURN GO TO 10 C C C ENTRY POINT TODAY -- RETURN CURRENT DAY-OF-WEEK C ENTRY TODAY(IDOW) CALL IDATE(JMO,JDA,JYR) C C C C COMPUTE DAY-OF-WEEK C 10 N0=0.6+1.0/JMO JYR=1900+JYR-N0 JMO=JMO+12*N0 X0=JYR/100.0 N4=X0/4.0 N3=X0 N2=5.0*JYR/4.0 N1=13.0*(JMO+1.0)/5.0 N0=N1+N2-N3+N4+JDA-1 IDOW=N0-(7*(N0/7))+1 C RETURN END