      SUBROUTINE SNO16GET(SCVH,IYR,IMN,IDY,   INSNOSAB, LIST) 
!                                             
! ABSTRACT: READS THE NESDIS IMS DAILY SNOW/ICE ANALYSIS ON THE
!           1/16TH MESH.
!           SCVH = 0 --- NO SNOW OR ICE
!                  1 --- WITH SNOW/ICE
!
!  INPUT ARGUMENTS:
!     INSNOSAB - UNIT NO. FOR NESDIS WEEKLY SNOW/ICE ANAL
!     LIST     - UNIT NO. FOR PRINT
!  OUTPUT ARGUMENTS:
!     SCVH - REAL SNOW/ICE ANAL FLAGS OF ZEROE'S AND ONE'S
!     IYR  - YEAR  OF ANAL
!     IMN  - MONTH OF ANAL
!     IDY  - DAY   OF ANAL
!  
      REAL SCVH(1024,1024), ICE(1024,1024)
      LOGICAL BITMAP(1024,1024)
      INTEGER KPDS(200), KGDS(200), JPDS(200), JGDS(200)
      INTEGER I
!
      JPDS = -1

      write(6,*) 'inside  SNO16GET'
      CALL BAOPENR(INSNOSAB,'imssnow.grb',IRETBA)

      CALL GETGB(INSNOSAB,0,1024*1024,0,JPDS,JGDS,KF,KNUM,KPDS,KGDS,  &
           BITMAP,ICE,IRET1)
      WRITE(6,*) 'AFTER GETGB FOR SAB ICE, IRET1=', IRET1
!
      JPDS = -1
      CALL GETGB(INSNOSAB,0,1024*1024,1,JPDS,JGDS,KF,KNUM,KPDS,KGDS,  &
           BITMAP,SCVH,IRET2)
      WRITE(6,*) 'AFTER GETGB FOR SAB SNOW, IRET2=', IRET2
!
      IF (IRET1.NE.0 .OR. IRET2.NE.0) THEN
         WRITE(LIST,*) 'READ ERROR FOR SAB SNOW/ICE, IRET1=',IRET1,  &
            ' IRET2=', IRET2
         CALL EXIT(16)
      ENDIF
!
      IYR2D = KPDS(8)
      IMN = KPDS(9)
      IDY = KPDS(10)
      ICENT = KPDS(21)
      IF(IYR2D.LT.100) THEN
       IYR = (ICENT - 1) * 100 + IYR2D
      ELSE
       IYR = ICENT * 100
      ENDIF
!
      DO 20 I = 1, 1024
        DO 10 J = 1, 1024
           IF (ICE(I,J).GT.0. .OR. SCVH(I,J) .GT.0.) THEN
              SCVH(I,J) = 1.
           ELSE
              SCVH(I,J) = 0.
           ENDIF
 10     CONTINUE
 20   CONTINUE  
      RETURN
      END
