SUBROUTINE MA_CLD1 ( marrpt, ipt, iret ) C************************************************************************ C* MA_CLD1 * C* * C* This subroutine decodes the section 1 cloud group 8N(h)C(L)C(M)C(H). * C* The height of the lowest cloud level observed is determined from * C* the three levels. * C* * C* MA_CLD1 ( MARRPT, IPT, IRET ) * C* * C* Input parameters: * C* MARRPT CHAR* Report array * C* * C* Input and Output parameters: * C* IPT INTEGER On input, points to 'N' in 8NCCC* C* group; on output, to the last C * C* * C* Output parameters: * C* RIVALS(IRNCLO) REAL Number of layers of cloud data * C* RIVALS(IRVSSO) REAL Vertical significance as defined* C* in FM94 BUFR Table 0 08 002 * C* RIVALS(IRCLAM) REAL Cloud amount as defined in FM94 * C* BUFR Table 0 20 011 * C* RIVALS(IRCLTP) REAL Cloud type as defined in FM94 * C* BUFR Table 0 20 012 * C* RIVALS(IRCSEC) REAL Section number in FM13 report * C* of location of cloud data * C* IRET INTEGER Return code * C* 0 = normal return * C* 1 = problems * C* * C** * C* Log: * C* R. Hollern/NCEP 6/96 * C* R. Hollern/NCEP 12/96 Replaced ST_C2R with ST_INTG * C* D. Kidwell/NCEP 4/97 Removed interface calls, reorganized * C* header and comments * C* D. Kidwell/NCEP 10/97 Changed interface * C* R. Hollern/NCEP 11/99 Changed cloud interface variable set * C* C. Caruso Magee/NCEP 01/02 Remove code which was setting * C* rivals(irhocb). For Sec. 1 clouds, only * C* the hgt of base of lowest cloud is set * C* (now in mnemonic HBLC). rivals(irhocb) * C* is set to missing by default for Sec. 1 * C* clouds. * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'macmn.cmn' C* CHARACTER*(*) marrpt C* CHARACTER fld1*1 C------------------------------------------------------------------------ iret = 0 C IF ( marrpt ( ipt:ipt+3 ) .ne. '////' ) THEN C C* Define the vertical significance for the cloud data C* in section 1 of the report. C rivals ( irvsso ( 1 ) ) = 7. rivals ( irvsso ( 2 ) ) = 8. rivals ( irvsso ( 3 ) ) = 9. C C* Indicate the report section of these cloud data. C rivals ( ircsec ( 1 ) ) = 1. rivals ( ircsec ( 2 ) ) = 1. rivals ( ircsec ( 3 ) ) = 1. ELSE ipt = ipt + 3 RETURN END IF C C* Get amount of the low clouds or middle clouds present. C IF ( marrpt ( ipt:ipt ) .ne. '/' ) THEN fld1 = marrpt ( ipt:ipt ) CALL ST_INTG ( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN xcfrl = FLOAT ( ival ) END IF ELSE C C* Cloud amount is indiscernible. C* Set to 15.0 (see WMO BUFR table 0 20 011). C xcfrl = 15. END IF C iflag = 0 C C* Get low-level cloud data. C ipt = ipt + 1 C IF ( marrpt ( ipt:ipt ) .ne. '/' ) THEN fld1 = marrpt ( ipt:ipt ) CALL ST_INTG ( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN rivals ( ircltp ( 1 ) ) = FLOAT ( ival ) + 30. IF ( marrpt ( ipt:ipt ) .ne. '0' ) THEN iflag = 1 rivals ( irclam ( 1 ) ) = xcfrl END IF END IF ELSE C C* Clouds are invisible owing to darkness, fog, etc. C* Set type to 62.0 (see WMO BUFR table 0 20 012). C rivals ( ircltp ( 1 ) ) = 62. END IF C C* Get middle-level cloud data. C ipt = ipt + 1 C IF ( marrpt ( ipt:ipt ) .ne. '/' ) THEN fld1 = marrpt ( ipt:ipt ) CALL ST_INTG ( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN rivals ( ircltp ( 2 ) ) = FLOAT ( ival ) + 20. IF ( marrpt (ipt:ipt) .ne. '0' .and. iflag .eq. 0 ) THEN iflag = 1 rivals ( irclam ( 2 ) ) = xcfrl END IF END IF ELSE C C* Clouds are invisible owing to darkness, fog, etc. C* Set type to 61.0 (see WMO BUFR table 0 20 012). C rivals ( ircltp ( 2 ) ) = 61. END IF C C* Get high-level cloud data. C ipt = ipt + 1 rivals ( irvsso ( 3 ) ) = 9. IF ( marrpt ( ipt:ipt ) .ne. '/' ) THEN fld1 = marrpt ( ipt:ipt ) CALL ST_INTG ( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN rivals ( ircltp ( 3 ) ) = FLOAT ( ival ) + 10. IF ( marrpt (ipt:ipt) .ne. '0' .and. iflag .eq. 0 ) THEN END IF END IF ELSE C C* Clouds are invisible owing to darkness, fog, etc. C* Set type to 60.0 (see WMO BUFR table 0 20 012). C rivals ( ircltp ( 3 ) ) = 60. END IF C C* Store number of layers of cloud data. C rivals ( irnclo ) = 3.0 C* RETURN END