SUBROUTINE TG_SC2C ( kray, mxrpt, mxrptsz, mxdatv, expdesc, + nmrpts, lenrpts, nmdatval, dataval, + nr, iret ) C************************************************************************ C* TG_SC2C * C* * C* This subroutine gets the meteorological parameters in the tide gauge * C* station report from the arrays holding the decoded Section 2 data * C* and stores these data into the interface arrays. * C* * C* TG_SC2C ( KRAY, MXRPT, MXRPTSZ, MXDATV, EXPDESC, NMRPTS, LENRPTS, * C* NMDATVAL, DATAVAL, NR, IRET ) * C* * C* * C* Input parameters: * C* KRAY ( MXDATV) INTGEGER Array locations indicate which * C* descriptors in expdesc have * C* already been processed * C* MXRPT INTEGER Maximum number of reports * C* expected in message * C* MXRPTSZ INTEGER Maximum report size expected * C* MXDATV REAL Maximum number of data values * C* expected in report * C* EXPDESC (MXDATV) * C* CHAR* List of descriptors which are * C* close to a one-to-one * C* correspondece with the data * C* values in dataval array * C* * C* NMRPTS INTEGER Number of reports in CREX msg * C* * C* LENRPTS (NMRPTS) * C* INTEGER Array to store the length of * C* each report * C* * C* NMDATVAL INTEGER Number of data values in * C* Section 2 of CREX message * C* * C* DATAVAL (MXRPT,MXDATV) * C* INTEGER Array to hold the Section 2 * C* decoded data values * C* NR INTEGER Pointer to where to get the data* C* in arrays for current report * C* * C* * C* Output parameters: * C* RIVALS(IRAMCK) REAL Tide station automated * C* meteorological data check * C* RIVALS(IRMMCK) REAL Tide station manual * C* meteorological data check * C* RIVALS(IRTMPC) REAL Air temperature in Celsius * C* RIVALS(IRPRLC) REAL Pressure in hectopascals * C* RIVALS(IRDRCT) REAL Wind direction in degrees true * C* RIVALS(IRSPED) REAL Wind speed in m/sec * C* IRET INTEGER Return code * C* 0 = normal return * C* * C** * C* Log: * C* R. Hollern/NCEP 8/00 * C************************************************************************ INCLUDE 'tgcmn.cmn' C* REAL*8 dataval ( mxrpt, mxdatv ) C* INTEGER lenrpts ( mxrpt ) INTEGER kray ( mxdatv ) C* CHARACTER expdesc ( mxdatv )*6 C* REAL rval INTEGER ival CHARACTER cval*8, misng*8 CHARACTER mdescr*6 C* DATA misng / '////////' / C------------------------------------------------------------------------ iret = 0 loglvl = 2 irepflg = 0 C C* Table B units for parameters are numeric. C idatty = 0 C C* Get the tide station automated meterological data check value. C mdescr = 'B22122' C CALL TG_GETV( kray, irepflg, mdescr, nr, loglvl, mxrpt, + mxrptsz, mxdatv, nmrpts, expdesc, nmdatval, + dataval, idatty, rval, cval, iret ) C IF ( iret .eq. 0 .AND. cval .ne. misng ) THEN rivals(iramck) = rval END IF C C* Get the tide station manual meterological data check value. C mdescr = 'B22123' C CALL TG_GETV( kray, irepflg, mdescr, nr, loglvl, mxrpt, + mxrptsz, mxdatv, nmrpts, expdesc, nmdatval, + dataval, idatty, rval, cval, iret ) C IF ( iret .eq. 0 .AND. cval .ne. misng ) THEN rivals(irmmck) = rval END IF C C* Get the air temperature. C mdescr = 'B12001' C CALL TG_GETV( kray, irepflg, mdescr, nr, loglvl, mxrpt, + mxrptsz, mxdatv, nmrpts, expdesc, nmdatval, + dataval, idatty, rval, cval, iret ) C IF ( iret .eq. 0 .AND. cval .ne. misng ) THEN rivals(irtmpc) = rval END IF C C* Get the pressure in Pascals. C mdescr = 'B07004' C CALL TG_GETV( kray, irepflg, mdescr, nr, loglvl, mxrpt, + mxrptsz, mxdatv, nmrpts, expdesc, nmdatval, + dataval, idatty, rval, cval, iret ) C IF ( iret .eq. 0 .AND. cval .ne. misng ) THEN C C* Convert from Paschals to millibars. C rivals(irprlc) = .01 * rval END IF C C* Get the wind direction. C mdescr = 'B11001' C CALL TG_GETV( kray, irepflg, mdescr, nr, loglvl, mxrpt, + mxrptsz, mxdatv, nmrpts, expdesc, nmdatval, + dataval, idatty, rval, cval, iret ) C IF ( iret .eq. 0 .AND. cval .ne. misng ) THEN rivals(irdrct) = rval END IF C C* Get the wind speed. C mdescr = 'B11002' C CALL TG_GETV( kray, irepflg, mdescr, nr, loglvl, mxrpt, + mxrptsz, mxdatv, nmrpts, expdesc, nmdatval, + dataval, idatty, rval, cval, iret ) C IF ( iret .eq. 0 .AND. cval .ne. misng ) THEN rivals(irsped) = rval END IF C* RETURN END