SUBROUTINE EA_PUED ( cdesc, ndesc, bfstot, crisn20, iret )
C************************************************************************
C* EA_PUED                                                              *
C*                                                                      *
C* This routine determines whether unknown or extra descriptors are     *
C* present within Section 3 of the input message, and if so prints them *
C* to the decoder log.							*
C*                                                                      *
C* EA_PUED ( CDESC, NDESC, BFSTOT, CRISN20, IRET )                      *
C*                                                                      *
C* Input parameters:                                                    *
C*      CDESC(*)        CHAR*6          Section 3 descriptors           *
C*      NDESC           INTEGER         Number of Section 3 descriptors *
C*      BFSTOT          CHAR*           BUFR output type/subtype        *
C*      CRISN20         LOGICAL         .TRUE. iff message contains	*
C*                                      NOAA20 CrIS FSR data	        *
C*                                                                      *
C* Output parameters:                                                   *
C*      IRET            INTEGER         Return code:                    *
C*                                        0 = normal return             *
C**                                                                     *
C* Log:                                                                 *
C* J. Ator/NCEP         08/20                                           *
C************************************************************************
        INCLUDE         'GEMPRM.PRM'
        INCLUDE         'BRIDGE.PRM'
        INCLUDE         'eacmn.cmn'
C
        CHARACTER       bfstot*(*), cdesc(*)*6
C*
        LOGICAL         crisn20
C*-----------------------------------------------------------------------
        iret = 0
C
        IF ( crisn20 ) THEN
          logmsg = 'message contains no Table D descriptor'
          CALL DC_WLOG ( 2, 'DC', 2, logmsg, ierwlg )
          IF ( ndesc .eq. 73 ) RETURN
        END IF
C
        SELECT CASE ( bfstot(6:8) )
          CASE ( "033", "034", "035", "036" )
            IF ( ( ndesc .eq. 2 ) .and.
     +          ( cdesc(2)(1:6) .eq. '025060' ) ) RETURN
            IF ( ( ndesc .ge. 9 ) .and.
     +          ( cdesc(2)(1:6) .eq. '222000' ) .and.
     +          ( cdesc(3)(1:6) .eq. '236000' ) .and.
     +          ( cdesc(5)(1:6) .eq. '031031' ) .and.
     +          ( cdesc(9)(1:6) .eq. '033089' ) ) THEN
              IF ( ndesc .eq. 9 ) RETURN
              IF ( ( ndesc .eq. 10 ) .and.
     +            ( cdesc(10)(1:6) .eq. '025060' ) ) RETURN
            END IF
        END SELECT
C
        IF ( bfstot(6:8) .eq. '???' ) THEN
          IF ( cdesc(1)(1:6) .eq. '340007' ) THEN
            logmsg = 'IASI (all-channel) not processed'
            CALL DC_WLOG ( 2, 'DC', 2, logmsg, ierwlg )
            RETURN
          END IF
          logmsg = 'message contains unknown descriptors:'
        ELSE
          IF ( ndesc .eq. 1 ) RETURN
          logmsg = 'message contains extra descriptors:'
        END IF
        CALL DC_WLOG ( 2, 'DC', 2, logmsg, ierwlg )
C
        DO ii = 1, ndesc
          WRITE ( logmsg, FMT = '(I6, A, A)' ) ii, ': ', cdesc(ii)
          CALL DC_WLOG ( 2, 'DC', 2, logmsg, ierwlg )
        END DO
C           
        RETURN
        END