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