SUBROUTINE RDEQHR(KFILDO,KFILEQ,IP18,EQNNAM,IOPER,NDATE,
     1                  MTANDS,IDTAND,ND15,IER)
C
C        JUNE      2018   GLAHN   MDL   MOS-2000
C                                 PULLED FROM RDEQNM
C
C        PURPOSE
C            TO READ THE 3-RECORD HEADER OF EQUATIONS, INCLUDING THE
C            NUMBER OF PREDICTANDS.  EACH PROJECTION WILL BE ON A
C            SEPARATE FILE WITH HEADERS, BUT PROBABILITY EQUATIONS
C            FOR ONE PREDICTAND WILL BE ON ONE FILE AS WELL AS
C            REGIONAL EQUATIONS, IF MORE THAN ONE REGION.
C   
C        DATA SET USE
C            KFILDO    - UNIT NUMBER OF OUTPUT (PRINT) FILE.  (OUTPUT)
C            KFILEQ    - UNIT NUMBER FOR READING EQUATION FILE.
C                        (INPUT)
C            IP18      - INDICATES WHETHER (>0) OR NOT (=0)
C                        ELEMENTS OF THE EQUATIONS WILL BE WRITTEN
C                        ON UNIT IP18.  (INPUT)
C
C        VARIABLES
C              KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE.  (INPUT)
C              KFILEQ = UNIT NUMBER FOR READING EQUATION FILE.  (INPUT)
C                IP18 = INDICATES WHETHER (>0) OR NOT (=0)
C                       EQUATIONS READ IN RDEQNM WILL BE WRITTEN 
C                       TO IP18 IN RDEQNM.  (INPUT)
C              EQNNAM = NAME OF FILE CORRESPONDING TO KFILEQ.  (INPUT)
C               IOPER = 1 FOR OPERATIONS; 0 FOR DEVELOPMENT.  CONTROLS
C                       HOW HEADER IS READ AND USED.
C               NDATE = FOR OPERATIONS, MUST FALL WITHIN DATES 
C                       SPECIFIED FOR THE EQUAITONS.  FOR DEVELOPMENT,
C                       HR MUST AGREE WITH CYCLE FOR THE EQUATIONS.
C                       (INPUT)
C              MTANDS = THE NUMBER OF PREDICTANDS FOR THIS SET OF 
C                       EQUATIONS.  (OUTPUT)
C        IDTAND(J,NN) = THE PREDICTAND ID'S (J=1,4) AND PREDICTAND NN 
C                       (NN=1,MTANDS) FOR THIS EQUATION SET.  (OUTPUT)
C                ND15 = MAXIMUM NUMBER OF PREDICTANDS IN ANY EQUATION.
C                       USED AS DIMENSION OF IDTAND( , ).  (INPUT)
C                 IER = STATUS RETURN.
C                         0 = GOOD RETURN.         
C                       165 = EXTERNAL AND INTERNAL FILE NAMES DON'T
C                             MATCH IN OPTION 1 HEADER.
C                       166 = NDATE DOES NOT FIT WITHIN STARTING AND
C                             ENDING DATES OF EQUATIONS FOR OPERATIONS
C                             OR MATCH THE RUN HOUR OF THE RUN DATE
C                             FOR DEVELOPMENT.
C                       168 = SYSTEM ERROR READING OR END OF FILE.
C                       195 = NUMBER OF PREDICTANDS = ZERO OR GT ND15.
C        1         2         3         4         5         6         7 X
C
C        NONSYSTEM SUBROUTINES USED 
C            IERX
C     
      CHARACTER*4 STATE,UTC
      CHARACTER*9 CYCLE
      CHARACTER*60 EQNNAM,EQNCHK
C
      DIMENSION IDTAND(4,ND15+1)
C
      CALL TIMPR(KFILDO,KFILDO,'START RDEQHR        ')
      IER=0

C        READ AND WRITE THE FILE NAME.
C
      IF(IOPER.EQ.0)THEN
C
C           READ AND CHECK THE FILE NAME.  THIS IS FOR 
C           DEVELOPMENT AND OPTION 1 EQUATION HEADER.
C
         STATE=' 110'
         READ(KFILEQ,110,IOSTAT=IOS,ERR=900,END=900)EQNCHK,
     1                                              CYCLE,NCYCLE
 110     FORMAT(' ',A60,A9,I2)
C
CCCC         WRITE(KFILDO,1105)CYCLE,NCYCLE
CCCC 1105    FORMAT(/' AT 1105 IN RDEQHR--CYCLE,NCYCLE  ',A9,I4)
C
         IF(EQNCHK.NE.EQNNAM)THEN
            WRITE(KFILDO,111)EQNNAM,EQNCHK
 111        FORMAT(/,' ****INPUT EQUATION FILE NAME     ',A60,/,
     1               '     DOES NOT MATCH INTERNAL NAME ',A60,
     2               ' AT 111 IN RDEQHR.',/,
     2               '     READING OF EQUATIONS ABORTED.')
            IER=165
            GO TO 950
         ELSE
            IHR=MOD(NDATE,100)
C
            IF(NCYCLE.NE.IHR)THEN
               WRITE(KFILDO,1112)NCHCLE,IHR
 1112          FORMAT(/' ****INPUT CYCLE =',I4,
     1                 ' NOT EQUAL TO HOUR IN INPUT DATE =',I4,
     2                 ' AT 1112 IN RDEQHR.'/
     3                 '     READING OF EQUATIONS ABORTED.')
               IER=166
               GO TO 950
            ENDIF
C
         ENDIF
C
      ELSE
C
C           READ AND CHECK THE DATE.  THIS IS FOR OPERATIONS
C           AND OPTION 2 EQUATION HEADER.  FOR MULTIPLE 
C           PROJECTIONS FOR OPERATIONS, THE NEXT RECORD
C           MAY BE A TERMINATOR ENDING THE LAST SET OF EQUATIONS.
C
         STATE=' 111'
         write(KFILDO,*)'adam, check the header date'
         READ(KFILEQ,1115,IOSTAT=IOS,ERR=900,END=900)
     1        IHOUR,UTC,MONDAS,MONDAE
 1115    FORMAT(I5,A4,2I5)
C
         CALL DOY(NDATE,JY,JM,JD,JH,MDAY)
C
         IF(IHOUR.EQ.JH*100)THEN
C
            IF(MONDAS.LE.MONDAE)THEN
               IF(JM*100+JD.GE.MONDAS.AND.
     1            JM*100+JD.LE.MONDAE)GO TO 1119
            ELSE
               IF(JM*100+JD.LE.MONDAE.OR.
     1            JM*100+JD.GE.MONDAS)GO TO 1119
            ENDIF
C 
         ENDIF
C                           
         WRITE(KFILDO,1117)IHOUR,MONDAS,MONDAE,JY,JM,JD,JH,EQNNAM
 1117    FORMAT(/,' ****EQUATION SET FOR HOUR',I4.2,
     1            '  STARTING AND ENDING DATES',2I6.4,
     2            '  DOES NOT MATCH NDATE',I6,I3.2,I2.2,I3.2,/,
     3            '     ON OPERATIONAL FILE ',A60)
         IER=166
         GO TO 950
      ENDIF
C    
C        READ NUMBER OF PREDICTANDS.
C
 1119 STATE=' 112'
      READ(KFILEQ,112,IOSTAT=IOS,ERR=900,END=900)MTANDS
 112  FORMAT(1X,I4)
C
      IF(MTANDS.EQ.0)THEN
         WRITE(KFILDO,113)EQNNAM
 113     FORMAT(/,' ****NUMBER OF PREDICTANDS EQUALS ZERO AT 113',
     1            ' IN RDEQHR FOR FILE ',A60,/,
     2            '     READING OF EQUATIONS ABORTED.')
         IER=195
         GO TO 950
C
      ELSEIF(MTANDS.GT.ND15)THEN
         WRITE(KFILDO,1130)MTANDS,ND15,EQNNAM
 1130    FORMAT(/,' ****NUMBER OF PREDICTANDS =',I4,' GT ND15 =',I4,
     1            ' AT 1130 IN RDEQHR FOR FILE ',A60,/,
     2            '     READING OF EQUATIONS ABORTED.')
         IER=195
         GO TO 950
C
      ELSE
         WRITE(KFILDO,1132)MTANDS
 1132    FORMAT(/' NUMBER OF EQUATIONS, MTANDS =',I4)
      ENDIF
C
C        READ PREDICTAND DEFINITIONS.
C
      WRITE(KFILDO,1135)EQNNAM
 1135 FORMAT(/,' PREDICTANDS FOR EQUATION SET ON FILE ',A60)
      IF(IP18.NE.0.AND.IP18.NE.KFILDO)WRITE(IP18,1135)EQNNAM
C
      STATE=' 114'
C
      DO 115 N=1,MTANDS
      READ(KFILEQ,114,IOSTAT=IOS,ERR=900,END=900)
     1             (IDTAND(J,N),J=1,4)
 114  FORMAT(1X,I9,2I10,I11)
 115  CONTINUE
C
      IDTAND(1,MTANDS+1)=0
C        THIS IS TO FACILITATE TESTING IN CALLING ROUTINE.
C        ARRAY IS ND15+1, SO THERE IS ALWAYS ROOM.
C
      DO 120 N=1,MTANDS
      WRITE(KFILDO,117)(IDTAND(J,N),J=1,4)
 117  FORMAT(3(1X,I9.9),1X,I10.3)
      IF(IP18.NE.0.AND.IP18.NE.KFILDO)
     1     WRITE(IP18,117)(IDTAND(J,N),J=1,4)
C
 120  CONTINUE
      GO TO 950
C
 900  CALL IERX(KFILDO,KFILDO,IOS,'RDEQHR',STATE)
      IER=168
C
 950  CONTINUE      
C
      CALL TIMPR(KFILDO,KFILDO,'END RDEQHR          ')
C
      RETURN
      END