SUBROUTINE KO_BUFR ( iubfmn, irundt, corn, iret ) C************************************************************************ C* KO_BUFR * C* * C* This subroutine retrieves data from the interface arrays, converts * C* it into BUFR output, and then writes the BUFR output to the BUFR * C* output stream. * C* * C* KO_BUFR ( IUBFMN, IRUNDT, CORN, IRET ) * C* * C* Input parameters: * C* IUBFMN INTEGER Logical unit number of messages * C* file for BUFR output stream * C* IRUNDT (5) INTEGER Run date-time * C* (YYYY, MM, DD, HH, MM) * C* CORN REAL Bulletin correction indicator * C* * C* Output parameters: * C* IRET INTEGER Return code: * C* 0 = normal return * C** * C* Log: * C* C. Caruso Magee/NCEP 07/07 * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'kocmn.cmn' C* CHARACTER bfstyp*8, bfltmn*5, bflnmn*5 C* REAL*8 r8ary (7) REAL corn C* INTEGER irundt (5) C* INCLUDE 'ERMISS.FNC' C*----------------------------------------------------------------------- iret = 0 C C* Set the BUFR message date-time. C year = rivals ( iryear ) rmth = rivals ( irmnth ) days = rivals ( irdays ) hour = rivals ( irhour ) IF ( ( ERMISS ( year ) ) .or. ( ERMISS ( rmth ) ) .or. + ( ERMISS ( days ) ) .or. ( ERMISS ( hour ) ) ) THEN RETURN END IF ibfdt = ( INT ( year ) * 1000000 ) + ( INT ( rmth ) * 10000 ) + + ( INT ( days ) * 100 ) + INT ( hour ) C C* Set the BUFR message subtype. C bfstyp = 'NC004011' C C* Open a BUFR message for output. C CALL OPENMB ( iubfmn, bfstyp, ibfdt ) C C* Report date-time. C CALL UT_RIBF ( iubfmn, 'YEAR', rivals ( iryear ), ierrbf ) CALL UT_RIBF ( iubfmn, 'MNTH', rivals ( irmnth ), ierrbf ) CALL UT_RIBF ( iubfmn, 'DAYS', rivals ( irdays ), ierrbf ) CALL UT_RIBF ( iubfmn, 'HOUR', rivals ( irhour ), ierrbf ) CALL UT_RIBF ( iubfmn, 'MINU', rivals ( irminu ), ierrbf ) CALL UT_RIBF ( iubfmn, 'SECO', rivals ( irseco ), ierrbf ) C C* Aircraft tail number. C CALL UT_CIBF ( iubfmn, 'ACRN', civals ( icacrn ), 8, iercbf ) C C* Latitude and longitude. C CALL UT_RIBF ( iubfmn, 'CLATH', rivals ( irslat ), ierrbf ) CALL UT_RIBF ( iubfmn, 'CLONH', rivals ( irslon ), ierrbf ) C C* Receipt date-time. C CALL UT_RIBF ( iubfmn, 'RCYR', FLOAT ( irundt (1) ), ierrbf ) CALL UT_RIBF ( iubfmn, 'RCMO', FLOAT ( irundt (2) ), ierrbf ) CALL UT_RIBF ( iubfmn, 'RCDY', FLOAT ( irundt (3) ), ierrbf ) CALL UT_RIBF ( iubfmn, 'RCHR', FLOAT ( irundt (4) ), ierrbf ) CALL UT_RIBF ( iubfmn, 'RCMI', FLOAT ( irundt (5) ), ierrbf ) CALL UT_RIBF ( iubfmn, 'RCTS', 0., ierrbf ) C C* Observation sequence number. C CALL UT_RIBF ( iubfmn, 'OSQN', rivals ( irosqn ), ierrbf ) C C* Flight Level. C CALL UT_RIBF ( iubfmn, 'FLVLST', rivals ( irflvl ), ierrbf ) C C* Detailed phase of flight. C CALL UT_RIBF ( iubfmn, 'DPOF', rivals ( irdpof ), ierrbf ) C C* Wind direction. C CALL UT_RIBF ( iubfmn, 'WDIR', rivals ( irwdir ), ierrbf ) C C* Wind speed. C CALL UT_RIBF ( iubfmn, 'WSPD', rivals ( irwspd ), ierrbf ) C C* Degree of turbulence. C CALL UT_RIBF ( iubfmn, 'DGOT', rivals ( irdgot ), ierrbf ) C C* Derived equivalent vertical gust speed. C CALL UT_RIBF ( iubfmn, 'MDEVG', rivals ( irdevg ), ierrbf ) C C* Temperature/dry-bulb temperature. C CALL UT_RIBF ( iubfmn, 'TMDB', rivals ( irtmdb ), ierrbf ) C C* ACARS interpolated values. C CALL UT_RIBF ( iubfmn, 'INTV', rivals ( irintv ), ierrbf ) C C* Aircraft roll-angle quality. C CALL UT_RIBF ( iubfmn, 'ROLQ', rivals ( irrolq ), ierrbf ) C C* Corrected report indicator. Corn may have been set to non-zero C* in KO_DCOD, so only check here to see if it's still zero and C* then set it if BBB indicates corrected bulletin. C* Comment out until we receive these in bulletin form! C IF ( corn .eq. 0.0 ) THEN C IF ( bbb (1:1) .eq. 'C' ) THEN C corn = 1.0 C END IF END IF CALL UT_RIBF ( iubfmn, 'CORN', corn, ierrbf ) C CALL UT_WBFR ( iubfmn, 'kamdar', 0, ierwbf ) C* RETURN END