SUBROUTINE MF_3106 ( iubfma, iubfmn, got157 ) C************************************************************************ C* MF_3106 * C* * C* This routine gets and stores additional data for NC031006 reports. * C* * C* MF_3106 ( IUBFMA, IUBFMN, GOT157 ) * 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* GOT157 LOGICAL .TRUE. iff the current input * C* message contains a '315007' * C* sequence descriptor in Section3 * C* Log: * C* J. Ator/NCEP 07/23 * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'mfcmn.cmn' REAL*8 GETVALNB, r8v LOGICAL got157 C*----------------------------------------------------------------------- C* Get and store the wind data. IF ( got157 ) THEN CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, 'WINDDAT3' ) ELSE DO ii = 1, 14 r8in(ii,1) = r8bfms END DO CALL UFBREP ( iubfma, r8wk, MXMN, MXLV, nlv, 'HSALG HSAWS' ) r8in(1,1) = r8wk(1,1) r8in(2,1) = r8wk(2,1) CALL UT_BFRI ( iubfma, 'TIWM', rval, ier ) r8in(3,1) = UT_RIBM ( rval ) CALL UT_BFRI ( iubfma, 'WDIR', rval, ier ) r8in(6,1) = UT_RIBM ( rval ) CALL UT_BFRI ( iubfma, 'WSPD', rval, ier ) r8in(7,1) = UT_RIBM ( rval ) END IF CALL UFBSEQ ( iubfmn, r8in, MXMN, 1, nlv, 'WINDDAT3' ) C* Get and store the temperature and humidity data. IF ( got157 ) THEN CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, 'TEHUDAT2' ) ELSE DO ii = 1, 7 r8in(ii,1) = r8bfms END DO r8in(1,1) = r8wk(1,2) r8in(2,1) = r8wk(2,2) CALL UT_BFRI ( iubfma, 'TMDB', rval, ier ) r8in(3,1) = UT_RIBM ( rval ) CALL UT_BFRI ( iubfma, 'TMDP', rval, ier ) r8in(6,1) = UT_RIBM ( rval ) END IF CALL UFBSEQ ( iubfmn, r8in, MXMN, 1, nlv, 'TEHUDAT2' ) C* Temperature/salinity profile. CALL MF_TMPF ( iubfma, iubfmn, got157 ) C* Get and store the surface current. IF ( got157 ) THEN CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, 'SFCCURNT' ) ELSE DO ii = 1, 5 r8in(ii,1) = r8bfms END DO CALL UT_BFRI ( iubfma, 'DTCC', rval, ier ) r8in(1,1) = UT_RIBM ( rval ) CALL UT_BFRI ( iubfma, 'MCMS', rval, ier ) IF ( INT ( rval ) .lt. 7 ) r8in(2,1) = UT_RIBM ( rval ) CALL UT_BFRI ( iubfma, 'DSSC', rval, ier ) r8in(4,1) = UT_RIBM ( rval ) CALL UT_BFRI ( iubfma, 'SSSC', rval, ier ) r8in(5,1) = UT_RIBM ( rval ) END IF CALL UFBSEQ ( iubfmn, r8in, MXMN, 1, nlv, 'SFCCURNT' ) C* Get and store the wave data. CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, 'DPHGTWAV' ) IF ( nlv .gt. 0 ) + CALL UFBSEQ ( iubfmn, r8in, MXMN, 1, nlv, 'DPHGTWAV' ) C* Get and store the sea-surface temperature. CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, 'SEATEMPH' ) CALL UFBSEQ ( iubfmn, r8in, MXMN, 1, nlv, 'SEATEMPH' ) C* Get and store any other required values. CALL UT_BFRI ( iubfma, 'IDPF', rval, ier ) CALL UT_RIBF ( iubfmn, 'IDPF', rval, ier ) CALL UT_BFRI ( iubfma, 'DOMO', rval, ier ) CALL UT_RIBF ( iubfmn, 'DOMO', rval, ier ) CALL UT_BFRI ( iubfma, 'SMMO', rval, ier ) CALL UT_RIBF ( iubfmn, 'SMMO', rval, ier ) CALL UT_BFRI ( iubfma, 'IMON', rval, ier ) CALL UT_RIBF ( iubfmn, 'IMON', rval, ier ) CALL UT_BFRI ( iubfma, 'AOOP', rval, ier ) CALL UT_RIBF ( iubfmn, 'AOOP', rval, ier ) CALL UT_BFRI ( iubfma, 'STNO', rval, ier ) CALL UT_RIBF ( iubfmn, 'STNO', rval, ier ) r8v = GETVALNB ( iubfma, 'WTEMPR', 1, 'IWTEMP', -1 ) CALL SETVALNB ( iubfmn, 'WTEMPR', 1, 'IWTEMP', -1, r8v, ier ) CALL UT_BFRI ( iubfma, 'WTEMPR', rval, ier ) CALL UT_RIBF ( iubfmn, 'WTEMPR', rval, ier ) CALL UT_BFRI ( iubfma, 'TOWD', rval, ier ) CALL UT_RIBF ( iubfmn, 'TOWD', rval, ier ) IF ( got157 ) THEN CALL UT_BFRI ( iubfma, 'OSQN', rval, ier ) CALL UT_RIBF ( iubfmn, 'OSQN', rval, ier ) CALL UFBSEQ ( iubfma, r8in, MXMN, MXLV, nlv, 'SFCSLNTY' ) CALL UFBSEQ ( iubfmn, r8in, MXMN, 1, nlv, 'SFCSLNTY' ) CALL MF_CRPF ( iubfma, iubfmn ) ELSE CALL UT_BFRI ( iubfma, 'XXLT', rval, ier ) CALL UT_RIBF ( iubfmn, 'XXLT', rval, ier ) CALL UT_BFRI ( iubfma, 'HXXL', rval, ier ) CALL UT_RIBF ( iubfmn, 'HXXL', rval, ier ) r8v = GETVALNB ( iubfma, 'DYEAR', 1, 'DATSIG', -1 ) CALL SETVALNB ( iubfmn, 'DYEAR', 1, 'DATSIG', -1, r8v, ier ) CALL UT_BFRI ( iubfma, 'DYEAR', rval, ier ) CALL UT_RIBF ( iubfmn, 'DYEAR', rval, ier ) CALL UT_BFRI ( iubfma, 'DMNTH', rval, ier ) CALL UT_RIBF ( iubfmn, 'DMNTH', rval, ier ) CALL UT_BFRI ( iubfma, 'DDAYS', rval, ier ) CALL UT_RIBF ( iubfmn, 'DDAYS', rval, ier ) END IF RETURN END