SUBROUTINE BT_LTLG ( report, ipt, iret ) C************************************************************************ C* BT_LTLG * C* * C* This subroutine gets the latitude and longitude location of the * C* report data. * C* * C* BT_LTLG ( 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 latitude * C* group on input, to start of * C* group following longitude group* C* on output * C* * C* Output parameters: * C* RIVALS(IRSLAT) REAL Latitude in degrees * C* RIVALS(IRSLON) REAL Longitude in degrees * C* IRET INTEGER Return code * C* 0 = Normal return * C* 1 = Problems * C* * C** * C* Log: * C* R. Hollern/NCEP 11/98 * C************************************************************************ INCLUDE 'btcmn.cmn' C* CHARACTER*(*) report C* CHARACTER fld1*1 C------------------------------------------------------------------------ iret = 0 ip = ipt C C* Get quadrant of the globe. C ip = ip + 2 fld1 = report ( ip:ip ) CALL ST_INTG ( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN iquad = ival ELSE iret = 1 RETURN END IF C C* Get the degrees part of the latitude. C ip = ip + 1 C CALL ST_INTG ( report ( ip:ip+1 ), ival, ier ) IF ( ier .eq. 0 ) THEN xldeg = FLOAT ( ival ) ELSE iret = 1 RETURN END IF C IF ( xldeg .gt. 90.0 ) THEN iret = 1 RETURN END IF C C* Get the minutes part of the latitude. C ip = ip + 2 C CALL ST_INTG ( report ( ip:ip+1 ), ival, ier ) IF ( ier .eq. 0 ) THEN xlmins = FLOAT ( ival ) ELSE iret = 1 RETURN END IF C IF ( xlmins .gt. 60.0 ) THEN iret = 1 RETURN END IF C xlat = xldeg + ( xlmins / 60. ) C C* Get longitude. C C* Get the degrees part of the longitude. C ip = ip + 3 C CALL ST_INTG ( report ( ip:ip+2 ), ival, ier ) IF ( ier .eq. 0 ) THEN xldeg = FLOAT ( ival ) ELSE iret = 1 RETURN END IF C IF ( xldeg .gt. 180.0 ) THEN iret = 1 RETURN END IF C C* Get the minutes part of the longitude. C ip = ip + 3 C CALL ST_INTG ( report ( ip:ip+1 ), ival, ier ) IF ( ier .eq. 0 ) THEN xlmins = FLOAT ( ival ) ELSE iret = 1 RETURN END IF C IF ( xlmins .gt. 60.0 ) THEN iret = 1 RETURN END IF C xlong = xldeg + ( xlmins / 60. ) C ip = ip + 3 C C* Determine the sign of the lat/long from quadrant of globe. C IF ( iquad .eq. 7 ) THEN xlong = -xlong ELSE IF ( iquad .eq. 5 ) THEN xlat = -xlat xlong = -xlong ELSE IF ( iquad .eq. 3 ) THEN xlat = -xlat ELSE IF ( iquad .eq. 1 ) THEN ELSE iret = 1 RETURN END IF C rivals ( irslat ) = xlat rivals ( irslon ) = xlong C ipt = ip C* RETURN END