SUBROUTINE BT_RPTY( lenb, bulltn, numrpt, istrp, iret ) C************************************************************************ C* BT_RPTY * C* * C* This routine searches through the bulletin for JJYY, NNXX, and KKXX * C* reports. If it finds one, the report type and where the report * C* starts in the bulletin are saved in an array. * C* * C* BT_RPTY( LENB, BULLTN, JPOS, NUMRPT, ISTRP, IRET ) * C* * C* Input parameters: * C* LENB INTEGER Bulletin length * C* BULLTN CHAR* Bulletin to decode * C* * C* Output variables: * C* NUMRPT INTEGER Number of reports in bulletin * C* ISTRP(5,MXRPT) INTEGER Array containing the report * C* types and the location of the * C* reports in the bulletin * C* IRET INTEGER Return code * C* 0 = normal return * C* * C** * C* Log: * C* R. Hollern/NCEP 11/98 * C* R. Hollern/NCEP 01/99 Increased istrp array size to be able to* C* decode up to 100 reports per bulletin. * C* R. Hollern/NCEP 04/00 Added check for JJYY and KKYY ID letters* C* C. Caruso Magee/NCEP 01/03 Increased istrp array size to be able to* C* decode up to 540 reports per bulletin. * C* (see MXRPT in btcmn.cmn) * C************************************************************************ INCLUDE 'btcmn.cmn' C* CHARACTER*(*) bulltn C* INTEGER istrp(5,MXRPT) C----------------------------------------------------------------------- iret = 0 numrpt = 0 jend = lenb - 10 C DO i = 1,3 DO j = 1,MXRPT istrp(i,j) = 0 END DO END DO C i = 20 C DO WHILE ( i .lt. jend ) C IF ( bulltn(i:i+5) .eq. 'JJYY X' ) THEN C C* Japanese for some reason identify this as a bathy C* report when it is actually a trackob report. C numrpt = numrpt + 1 istrp(1,numrpt) = 3 istrp(2,numrpt) = i + 7 istrp(3,numrpt) = i ELSE IF ( bulltn(i:i+3) .eq. 'JJYY' ) THEN numrpt = numrpt + 1 istrp(1,numrpt) = 1 istrp(2,numrpt) = i + 5 istrp(3,numrpt) = i ELSE IF ( bulltn(i:i+3) .eq. 'NNXX' ) THEN numrpt = numrpt + 1 istrp(1,numrpt) = 3 istrp(2,numrpt) = i + 5 istrp(3,numrpt) = i ELSE IF ( bulltn(i:i+3) .eq. 'KKXX' ) THEN numrpt = numrpt + 1 istrp(1,numrpt) = 2 istrp(2,numrpt) = i + 5 istrp(3,numrpt) = i ELSE IF ( bulltn(i:i+3) .eq. 'JJVV' ) THEN C C* BATHY report with higher precision for the C* latitude and longitude location. C numrpt = numrpt + 1 istrp(1,numrpt) = 4 istrp(2,numrpt) = i + 5 istrp(3,numrpt) = i ELSE IF ( bulltn(i:i+3) .eq. 'KKYY' ) THEN C C* TESAC report with higher precision for the C* latitude and longitude location. C numrpt = numrpt + 1 istrp(1,numrpt) = 5 istrp(2,numrpt) = i + 5 istrp(3,numrpt) = i END IF C i = i + 1 C IF ( numrpt .eq. MXRPT ) THEN RETURN END IF C END DO C* RETURN END