SUBROUTINE CG_SST ( cgrpt, mszrpt, ipt, iret ) C************************************************************************ C* CG_SST * C* * C* This subroutine decodes the air temperature in one report. * C* * C* CG_SST ( CGRPT, MSZRPT, IPT, IRET ) * C* * C* Input parameters: * C* MSZRPT INTEGER Length of report in bytes * C* CGRPT CHAR* Report array * C* * C* Output parameters passed via common: * C* RIVALS(IRSSTF) REAL sea surface temp. (deg F) * C* * C* Input and Output parameters: * C* IPT INTEGER Pointer to start of field. * C* * C* Output parameters: * C* IRET INTEGER Return code * C* 0 = Normal return * C* -1 = No / found in rest of rpt * C* -2 = Invalid field length * C** * C* Log: * C* C. Caruso Magee/NCEP 4/00 Original Author * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'cgcmn.cmn' character*(*) cgrpt character*100 stsst, outst logical found integer mszrpt integer length integer islash integer kret integer ist1 iret = 0 i = ipt found = .false. C C* look for '/' character. stop looping when the '/' we found is C* the field separator. C DO WHILE ( .not. found ) IF ( i .le. mszrpt ) THEN islash = index(cgrpt(i:i),'/') IF ( islash .eq. 0 ) THEN i = i + 1 ELSE iendsst = i - 1 found = .true. END IF ELSE iret = -1 RETURN END IF END DO C C* sst field lies between ipt and iendsst (inclusive). C* compress blanks out of sst field. C stsst = cgrpt(ipt:iendsst) CALL ST_RMBL ( stsst, outst, length, kret ) IF ( length .ge. 1 .and. length .le. 3 ) THEN IF ( outst .ne. 'M' ) THEN CALL ST_INTG ( outst(1:length), ist1, kret ) IF ( kret .eq. 0 ) THEN rivals(irsstf) = FLOAT(ist1) ELSE c c* Invalid field/bad format for sst. c logmsg = 'Invalid field/bad format '//outst(1:length)// * ' in sst field' CALL DC_WLOG ( 2, 'CG', 1, logmsg, ierwlg ) END IF END IF ELSEIF ( length .gt. 3 ) THEN c c* bad format for sst. toss the whole report since we may be off c* by a field in decoding. c logmsg = '(in sst) '//outst(1:length) CALL DC_WLOG ( 2, 'CG', -3, logmsg, ierwlg ) iret = -2 RETURN END IF ipt = iendsst + 2 RETURN END