SUBROUTINE BT_OBST ( report, ipt, iret ) C************************************************************************ C* BT_OBST * C* * C* This subroutine gets the report GMT observation time. * C* * C* BT_OBST ( REPORT, IPT, IRET ) * C* * C* Input parameters: * C* REPORT CHAR* Report array * C* * C* Input and output parameters: * C* IPT INTEGER Points to start of date/time * C* group on input, to start of * C* latitude group on output * 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 11/98 * C* R. Hollern/NCEP 8/00 Removed y2k logic and added report * C* date/time to the interface array * C* C. Caruso Magee/NCEP 01/06 Save units digit of year only here. * C* Report year will be set in btdcod.f. * C************************************************************************ INCLUDE 'btcmn.cmn' C* CHARACTER*(*) report C* CHARACTER fld2*2, fld1*1 C------------------------------------------------------------------------ iret = 0 ip = ipt C C* Get day of month of observation. C fld2 = report ( ip:ip+1 ) CALL ST_INTG ( fld2, ival, ier ) IF ( ier .eq. 0 ) THEN ip = ip + 2 IF ( ival .gt. 0 .and. ival .lt. 32 ) THEN irptdt ( 3 ) = ival rivals ( irdays ) = FLOAT ( ival ) ELSE ierrno = 5 CALL BT_ERRS ( ierrno, report, kret ) iret = 1 RETURN END IF ELSE iret = 1 RETURN END IF C C* Get month of observation. C fld2 = report ( ip:ip+1 ) CALL ST_INTG ( fld2, ival, ier ) IF ( ier .eq. 0 ) THEN ip = ip + 2 IF ( ival .ge. 1 .and. ival .le. 12 ) THEN irptdt ( 2 ) = ival rivals ( irmnth ) = FLOAT ( ival ) ELSE ierrno = 4 CALL BT_ERRS ( ierrno, report, kret ) iret = 1 RETURN END IF ELSE iret = 1 RETURN END IF C C* Get year of observation - (units digit of year only). C* Report year is calculated within btdcod.f. C fld1 = report ( ip:ip ) CALL ST_INTG ( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN ip = ip + 2 rivals ( irydgt ) = FLOAT ( ival ) ELSE ierrno = 3 CALL BT_ERRS ( ierrno, report, kret ) iret = 1 RETURN END IF C C* Get hour of observation. C fld2 = report ( ip:ip+1 ) CALL ST_INTG ( fld2, ival, ier ) IF ( ier .eq. 0 ) THEN ip = ip + 2 IF ( ival .ge. 0 .and. ival .le. 23 ) THEN irptdt ( 4 ) = ival rivals ( irhour ) = FLOAT ( ival ) ELSE ierrno = 6 CALL BT_ERRS ( ierrno, report, kret ) iret = 1 RETURN END IF ELSE iret = 1 RETURN END IF C C* Get minutes of hour of observation. C fld2 = report ( ip:ip+1 ) CALL ST_INTG ( fld2, ival, ier ) IF ( ier .eq. 0 ) THEN ip = ip + 2 IF ( ival .ge. 0 .and. ival .le. 59 ) THEN irptdt ( 5 ) = ival rivals ( irminu ) = FLOAT ( ival ) ELSE ierrno = 7 CALL BT_ERRS ( ierrno, report, kret ) iret = 1 RETURN END IF ELSE iret = 1 RETURN END IF C ipt = ip C* RETURN END