SUBROUTINE LS_OBST ( lsfrpt, ipt, iret ) C************************************************************************ C* LS_OBST * C* * C* This subroutine decodes the time of observation group 9GGgg. * C* Adjustments to the date/time data will be made if the 9-group obs * C* hour differs from the obs hour in the group YYGGi. The obs hour/mins* C* in the 9-group will have priority over the obs hour in the YYGGi * C* group. * C* * C* LS_OBST ( LSFRPT, IPT, IRET ) * C* * C* Input parameters: * C* LSFRPT CHAR* Report array * C* * C* Input and Output parameters: * C* IPT INTEGER On input, points to first 'G' * C* in 9GGgg; on output, points to * C* last g * C* * C* Output parameters: * C* IRPTDT (*) INTEGER Report date-time * C* (YYYY, MM, DD, HH, MM) * 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 10/96 Added range check on time values * C* R. Hollern/NCEP 1/98 Changes based on MA_WSPD * C* A. Hardy/GSC 1/98 Added GEMINC * C* R. Hollern/NCEP 1/00 Added report time to interface array * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'lscmn.cmn' C* CHARACTER*(*) lsfrpt C* INTEGER jrptdt(5) CHARACTER fld2*2 C------------------------------------------------------------------------ iret = 0 C fld2 = lsfrpt ( ipt:ipt+1 ) CALL ST_INTG ( fld2, ival, ier ) ipt = ipt + 2 IF ( ier .eq. 0 .and. + ( ival .ge. 0 .and. ival .le. 23 ) ) THEN iobshr = ival ELSE ipt = ipt + 2 RETURN END IF C fld2 = lsfrpt ( ipt:ipt+1 ) CALL ST_INTG ( fld2, ival, ier ) ipt = ipt + 2 IF ( ier .eq. 0 .and. + ( ival .ge. 0 .and. ival .le. 59 ) ) THEN iobmin = ival ELSE RETURN END IF C IF ( iobshr .gt. irptdt ( 4 ) ) THEN C C* Observation occurred in previous day. Backdate 1 day. C CALL TI_SUBD ( irptdt, jrptdt, jret ) C irptdt ( 1 ) = jrptdt ( 1 ) irptdt ( 2 ) = jrptdt ( 2 ) irptdt ( 3 ) = jrptdt ( 3 ) irptdt ( 4 ) = iobshr irptdt ( 5 ) = iobmin ELSE irptdt ( 4 ) = iobshr irptdt ( 5 ) = iobmin END IF C C* Save date/time data in interface array C rivals(iryear) = float ( irptdt(1) ) rivals(irmnth) = float ( irptdt(2) ) rivals(irdays) = float ( irptdt(3) ) rivals(irhour) = float ( irptdt(4) ) rivals(irminu) = float ( irptdt(5) ) C* RETURN END