SUBROUTINE SY_PRWX ( iubfma, iubfmn ) C************************************************************************ C* SY_PRWX * C* * C* This routine gets and stores the present and past weather data. * C* * C* SY_PRWX ( 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** * C* Log: * C* J. Ator/NCEP 01/13 * C* J. Ator/NCEP 06/23 Process 3-07-092 messages * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'sycmn.cmn' C* REAL*8 r8prwx (4) C* CHARACTER tagpr*10 C*----------------------------------------------------------------------- C C* Get the data. C IF ( gots96 .or. gots92 ) THEN DO ii = 1, 4 r8prwx (ii) = r8bfms END DO CALL GETTAGPR ( iubfma, 'PRWE', 1, tagpr, ierctg ) IF ( ierctg .eq. 0 ) THEN CALL UFBSEQ ( iubfma, r8wk, MXMN, MXLV, nlv, tagpr ) IF ( nlv .eq. 1 ) THEN IF ( gots92 ) THEN r8prwx (1) = r8wk (4,1) ELSE r8prwx (1) = r8wk (1,1) r8prwx (2) = r8wk (5,1) r8prwx (3) = r8wk (6,1) r8prwx (4) = r8wk (7,1) END IF END IF END IF ELSE IF ( gots91 ) THEN CALL UFBSEQ ( iubfma, r8prwx, 4, 1, nlv, 'PREPSTWX' ) IF ( IBFMS ( r8prwx (2) ) .eq. 0 ) THEN C C* Convert TPMI to TPHR. C r8prwx (2) = FLOAT( IDNINT( r8prwx (2) / 60. ) ) END IF ELSE CALL UFBSEQ ( iubfma, r8prwx, 4, 1, nlv, 'PWEATHER' ) END IF C C* Store the data, unless it's missing. C IF ( ( IBFMS ( r8prwx (1) ) .eq. 0 ) .or. + ( IBFMS ( r8prwx (3) ) .eq. 0 ) .or. + ( IBFMS ( r8prwx (4) ) .eq. 0 ) ) THEN CALL DRFINI ( iubfmn, 1, 1, '<PWEATHER>' ) CALL UFBSEQ ( iubfmn, r8prwx, 4, 1, nlv, 'PWEATHER' ) END IF C* RETURN END