SUBROUTINE SKYLMP(KFILDO,XDATA,NVAL,IER)
C
C        DECEMBER  2019   GLAHN   MDL   MOS-2000
C                                 ADAPTED FROM SKYOBp
C        MARCH     2020   GLAHN   PERCENTS MADE CONSISTENT WITH
C                                 OBSERVATIONS IN SKYOBP
C
C        PURPOSE
C            TO REPROCESS LAMP SKY COVER FORECASTS IN 5 CATEGORIES
C            TO PERCENT FOR ANALYSIS.  PREVIOUSLY, SKY WAS ANALYZED
C            IN 5 CATEGORIES AND CONVERTED AT THE END TO PERCENT
C            FOR OUTPUT.  NOW THAT A MODEL IS USED OVER WATER
C            (PREVIOUSLY THE GRID WAS CLIPPED AND WATER WAS
C            UNIMPORTANT) AND IT IS IN PERCENT, SKY IS ANALYZED
C            IN PERCENT.
C
C            THE 5 CATEGORIES AND PERCENTS ARE DEFINED:
C
C            CATEGORY    OBSERVATION          PERCENT   DEFINITION
C                1        0   CLEAR (ASOS)         0
C                2        2   FEW                 15   (>0, <= 2/8) 
C                3        3   SCATTERED           44   (3/8 -  4/8)
C                4        6   BROKEN              75   (5/8 -  <8/8)
C                5        8   OVERCAST           100
C            THE ABOVE ARE CONSISTENT WITH SKYOBP FOR OBSERVATIONS.
C
C        DATA SET USE
C            KFILDO    - UNIT NUMBER OF OUTPUT (PRINT) FILE.  (OUTPUT)
C
C        VARIABLES
C              KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE.  (INPUT)
C            XDATA(K) = THE SKY FORECAST TO TRANSFORM TO PERCENT
C                       (K=1,NVAL).  (INPUT-OUTPUT)
C                NVAL = THE NUMBER OF VALUES IN XDATA( ) BEING DEALT
C                       WITH.  (INPUT)
C                 IER = ERROR RETURN.
C                       0 = GOOD RETURN.
C                       (OUTPUT)
C            TABLE(J) = HOLDS THE UPPER CATEGORY VALUES FOR THE
C                       NOCAT CATEGORIES OF SKY (J=1,NOCAT).  (INTERNAL)
C               NOCAT = THE NUMBER OF SKY CATEGORIES.  (INTERNAL)
C                 KER = 1 WHEN AN ERROR OCCURS, THEN IER SET = 666 FOR
C                       RETURN.  (INTERNAL)
C        1         2         3         4         5         6         7 X
C 
C        NONSYSTEM SUBROUTINES USED 
C            NONE
C
      PARAMETER(NOCAT=5)
C
      DIMENSION XDATA(NVAL)
      DIMENSION TABLE(NOCAT),STABLE(NOCAT)
C
      DATA TABLE/ 1.1, 2.1, 3.1, 4.1, 5.1/
      DATA STABLE/ 0., 15., 44., 75., 100./
C
      CALL TIMPR(KFILDO,KFILDO,'START SKYLMP        ')
      IER=0
      KER=0
C
D     WRITE(KFILDO,105)(K,XDATA(K),K=1,NVAL)
D105  FORMAT(/,' IN SKYLMP AT 105',/,(8(I7,F8.2)))
C
      DO 160 K=1,NVAL
C
      IF(XDATA(K).LT.9998.9)THEN
C
         DO_150: DO 150 J=1,NOCAT
C
         IF(NINT(XDATA(K)).LE.TABLE(J))THEN 
C
D           SAVEX=XDATA(K)
C
            XDATA(K)=STABLE(J)
C
D           WRITE(KFILDO,144)K,J,SAVEX,XDATA(K),TABLE(J)
D144        FORMAT(' IN SKYLMP--K,J,SAVEX,XDATA(K),TABLE(J)--',
D    1             2I6,F8.1,F12.5,F8.2) 
            EXIT DO_150
C
         ELSEIF(J.EQ.NOCAT)THEN
C              A NON-MISSING VALUE GT TABLE(NOCAT) SHOULD NOT OCCUR.
C              (THIS EXTRA IF TEST AND WEIRD CODING IS THE RESULT OF
c              BEING ENCOURAGED TO NOT USE GOTO'S.)
D           WRITE(KFILDO,155)XDATA(K)
D155        FORMAT(/' ****ERROR IN SKYLMP, FORECAST VALUE =',F10.1,
D    1              ' GT 10.,  VALUE SET TO MISSING.')
C
            XDATA(K)=9999.
            KER=KER+1                    
         ENDIF
C
 150     END DO DO_150
C
C           A MISSING VALUE IS LEFT AS SUCH.      
C
      ENDIF
C
 160  CONTINUE
C
      IF(KER.GE.1)THEN
         WRITE(KFILDO,161)KER
 161     FORMAT(/' ****SKY > 10',I7,' TIMES IN SKYLMP.')
         IER=666
      ENDIF  
C
      RETURN
      END