SUBROUTINE EXTRAP(KFILDO,FIELD,NX,NY)
C
C        NOVEMBER 1994   GLAHN   TDL   MOS-2000 
C        APRIL    2018   SHAFER  MODIFIED TO CHECK FOR MISSING
C                                VALUES ON THE GRID.
C
C        PURPOSE 
C            TO LINEARLY EXTRAPOLATE TO THE OUTER ROWS AND COLUMNS
C            FROM THE INNER GRIDPOINTS.
C
C        DATA SET USE 
C            KFILDO - DEFAULT UNIT NUMBER FOR OUTPUT (PRINT) FILE.
c                     (OUTPUT) 
C 
C        VARIABLES 
C              KFILDO = DEFAULT UNIT NUMBER FOR OUTPUT (PRINT) FILE.
C                       (INPUT) 
C        FIELD(IX,JY) = FIELD TO EXTRAPOLATE TO OUTER ROW (LEFT AND RIGHT)
C                       AND COLUMN (TOP AND BOTTOM).  (IX=1,NX) (JY=1,NY).
C                       (INPUT-OUTPUT)
C                  NX = THE DIMENSION OF THE GRID IN THE IX DIRECTION.
C                       (INPUT).
C                  NY = THE DIMENSION OF THE GRID IN THE JY DIRECTION.
C                       (INPUT).
C 
C        NONSYSTEM SUBROUTINES CALLED 
C            NONE
C
      DIMENSION FIELD(NX,NY)
C
C        EXTRAPOLATE LINEARLY TO BOUNDARY POINTS.
C
      DO 280 IX=2,NX-1
         IF(FIELD(IX,2).NE.9999..AND.FIELD(IX,3).NE.9999.) THEN
            FIELD(IX,1)=2.*FIELD(IX,2)-FIELD(IX,3)
         ELSE
            FIELD(IX,1)=9999.
         ENDIF
         IF(FIELD(IX,NY-1).NE.9999..AND.FIELD(IX,NY-2).NE.9999.) THEN
            FIELD(IX,NY)=2.*FIELD(IX,NY-1)-FIELD(IX,NY-2)
         ELSE
            FIELD(IX,NY)=9999.
         ENDIF            
 280  CONTINUE
C
      DO 285 JY=1,NY
         IF(FIELD(2,JY).NE.9999..AND.FIELD(3,JY).NE.9999.) THEN
            FIELD(1,JY)=2.*FIELD(2,JY)-FIELD(3,JY)
         ELSE
            FIELD(1,JY)=9999.
         ENDIF
         IF(FIELD(NX-1,JY).NE.9999..AND.FIELD(NX-2,JY).NE.9999.) THEN
            FIELD(NX,JY)=2.*FIELD(NX-1,JY)-FIELD(NX-2,JY)
         ELSE
            FIELD(NX,JY)=9999.
         ENDIF
 285  CONTINUE
C
      RETURN
      END