C  =====================================================================
C  pgm: SH3DT8 .. Get data date relative increment for "DR" keyword
C
C  use:     CALL SH3DT8(KHAR,KHPOS)
C
C  i/o: KHAR ...... last buffer char obtained - CHAR*1
C  i/o: KHPOS ..... last char loc: 2=eol,1=err-eol,0=eof,neg=err - INT
C
C  rqd: SHGETK,SHERR,SH2NUM,SHSAVM
C  =====================================================================
      SUBROUTINE SH3DT8(KHAR,KHPOS)

      EXTERNAL       SHGETK,SHERR,SH2NUM,SHSAVM

      CHARACTER*1    KHAR,KGOOD
      INTEGER        KHPOS,MYR,MMO,MDA,MHR,MMN,MSE,MEN
      INTEGER        NOD,ISIGN,NUM,III
C
C    ================================= RCS keyword statements ==========
      CHARACTER*68     RCSKW1,RCSKW2
      DATA             RCSKW1,RCSKW2 /                                 '
     .$Source: /fs/hseb/ob5/rfc/ofs/src/shefpars_driv/RCS/sh3dt8.f,v $
     . $',                                                             '
     .$Id: sh3dt8.f,v 1.4 2000/03/14 19:13:04 dws Exp $
     . $' /
C    ===================================================================
C

        IF (KHPOS .GT. 2 ) THEN
          CALL SHGETK(KHAR,KHPOS)

          IF     (KHAR.EQ.'Y' .OR. KHAR.EQ.'M' .OR. KHAR.EQ.'D') THEN
            KGOOD = KHAR
          ELSEIF (KHAR.EQ.'H' .OR. KHAR.EQ.'N' .OR. KHAR.EQ.'S') THEN
            KGOOD = KHAR
          ELSEIF (KHAR.EQ.'E' .OR. KHAR.EQ.'C') THEN
            KGOOD = KHAR
          ELSE
            KGOOD = ' '
            CALL SHERR('E',27,KHPOS,KHAR)
          ENDIF

          IF (KGOOD .NE. ' ') THEN
            CALL SHGETK(KHAR,KHPOS)
            ISIGN = 1
            IF (KHAR.EQ.'-')                  ISIGN = -1
            IF (KHAR.EQ.'-' .OR. KHAR.EQ.'+') CALL SHGETK(KHAR,KHPOS)
            CALL SH2NUM(KHAR,KHPOS,4,NOD,NUM)

            IF (NOD.GT.0 .AND. NOD.LE.2) THEN
              CALL SHSAVM('G',III,MYR,MMO,MDA,MHR,MMN,MSE,MEN)

              NUM = ISIGN*NUM
              IF     (KGOOD .EQ. 'Y') THEN
                MYR = NUM
              ELSEIF (KGOOD .EQ. 'M') THEN
                MMO = NUM
              ELSEIF (KGOOD .EQ. 'D') THEN
                MDA = NUM
              ELSEIF (KGOOD .EQ. 'H') THEN
                MHR = NUM
              ELSEIF (KGOOD .EQ. 'N') THEN
                MMN = NUM
              ELSEIF (KGOOD .EQ. 'S') THEN
                MSE = NUM
              ELSEIF (KGOOD .EQ. 'E') THEN
                MEN = NUM
              ELSEIF (KGOOD .EQ. 'C') THEN
                MYR = 100*NUM
              ENDIF

              CALL SHSAVM('P',III,MYR,MMO,MDA,MHR,MMN,MSE,MEN)
            ELSE
              CALL SHERR('E',28,KHPOS,KHAR)
            ENDIF

          ENDIF
        ENDIF

      RETURN
      END