SUBROUTINE MF_DOXY ( iubfma, iubfmn, subtyp ) C************************************************************************ C* MF_DOXY * C* * C* This routine gets and stores the dissolved oxygen profile data. * C* * C* MF_DOXY ( IUBFMA, IUBFMN ) * C* * C* Input parameters: * C* IUBFMA INTEGER Logical unit number of messages * C* file for BUFR input stream * C* IUBFMN INTEGER Logical unit number of messages * C* file for BUFR output stream * C* SUBTYP CHARACTER*(*) BUFR output message type * C** * C* Log: * C* J. Ator/NCEP 07/16 * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'mfcmn.cmn' C* REAL*8 GETVALNB, r8i, r8m C* CHARACTER*(*) subtyp C* CHARACTER outtag*8, tagpr*10 C*----------------------------------------------------------------------- C CALL GETTAGPR ( iubfma, 'DOXY2', 1, tagpr, iertg ) IF ( iertg .eq. 0 ) THEN CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, tagpr ) IF ( subtyp .eq. 'NC031006' ) THEN outtag = 'DOXYPFDT' CALL UT_BFRI ( iubfma, 'SDOM', sdom, ier ) r8i = GETVALNB ( iubfma, 'SDOM', 1, 'IDGT', -1 ) r8m = GETVALNB ( iubfma, 'SDOM', 1, 'MDCL', 1 ) ELSE outtag = 'DOXYPF ' END IF CALL ST_LSTR ( outtag, lottag, ier ) CALL DRFINI ( iubfmn, 1, 1, '<' // outtag(1:lottag) // '>' ) IF ( subtyp .eq. 'NC031006' ) THEN CALL UT_RIBF ( iubfmn, 'SDOM', sdom, ier ) CALL SETVALNB ( iubfmn, 'SDOM', 1, 'IDGT', -1, r8i, ier) CALL SETVALNB ( iubfmn, 'SDOM', 1, 'MDCL', 1, r8m, ier) END IF CALL DRFINI ( iubfmn, nlv, 1, '(DOXYPFSQ)' ) CALL UFBSEQ ( iubfmn, r8in, MXMN, nlv, nlv2, 'DOXYPFSQ' ) END IF C* RETURN END