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* J. Ator/NCEP 05/24 Fix processing for DOXYPFF * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'mfcmn.cmn' REAL*8 GETVALNB, r8i, r8m CHARACTER*(*) subtyp CHARACTER outtag*8, tagpr*10 C*----------------------------------------------------------------------- CALL GETTAGPR ( iubfma, 'DOXY2', 1, tagpr, iertg ) IF ( iertg .eq. 0 ) THEN IF ( tagpr(1:8) .eq. 'DOXYPFF ' ) THEN C* The first occurrence of DOXY2 is a redefined reference C* value, so we want the parent of the second occurrence C* instead. CALL GETTAGPR ( iubfma, 'DOXY2', 2, tagpr, iertg ) CALL UFBSEQ ( iubfma, r8wk, MXMN, MXLV, nlv, tagpr ) DO jj = 1, nlv DO ii = 1, 3 r8in(ii,jj) = r8bfms ENDDO DO ii = 4, 9 r8in(ii,jj) = r8wk(ii-3,jj) ENDDO ENDDO ELSE CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, tagpr ) ENDIF 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 RETURN END