SUBROUTINE LS_YYGG ( yyggi, istarr, nret ) C************************************************************************ C* LS_YYGG * C* * C* This subroutine decodes the YYGGi(w) group which is stored in the * C* yyggi array. This group follows the AAXX identification group in the * C* FM 12 SYNOP report. A bulletin containing FM 12 reports may have * C* several AAXX identification groups. The YYGGi group is located in * C* section 0 of the FM 14 SYNOP MOBIL report. * C* * C* LS_YYGG ( YYGGI, ISTARR, NRET ) * C* * C* Input parameters: * C* YYGGI CHAR* YYGGi(w) group in FM 12/14 * C* reports. * C* ISTARR (*) INTEGER System time - YYYY,MM,DD,HH,MM * C* * C* Output parameters: * C* RIVALS(IRYEAR) REAL Report year - YYYY * C* RIVALS(IRMNTH) REAL Report month - MM * C* RIVALS(IRDAYS) REAL Report day - DD * C* RIVALS(IRHOUR) REAL Report hour - HH * C* RIVALS(IRMINU) REAL Report minute - MM * C* RIVALS(IRISWS) REAL Indicator for source and * C* units of wind speed * C* (WMO Code Table 1855) * C* IHOUR INTEGER Hour of observation of report * C* IRPTDT (*) INTEGER Report date-time * C* (YYYY, MM, DD, HH, MM) * C* NRET INTEGER Return code * C* 0 = normal return * C* 1 = problems * C** * C* Log: * C* R. Hollern/NCEP 06/02 * C* R. Hollern/NCEP 08/02 LS_AAXX --> LS_YYGG and * C* renamed array iaaxx to yyggi * C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'lscmn.cmn' C* CHARACTER*(*) yyggi INTEGER istarr(*) C* CHARACTER fld2*2, fld1*1 C------------------------------------------------------------------------ nret = 0 C C* Get day of month of observation. C fld2 = yyggi(1:2) CALL ST_INTG ( fld2, ival, ier ) IF ( ier .eq. 0 ) THEN IF ( ival .gt. 0 .and. ival .lt. 32 ) THEN imnday = ival ELSE nret = 1 RETURN END IF ELSE nret = 1 RETURN END IF C C* Get hour of observation. C fld2 = yyggi ( 3:4 ) CALL ST_INTG ( fld2, ival, ier ) IF ( ier .eq. 0 ) THEN IF ( ival .ge. 0 .and. ival .lt. 24 ) THEN ihour = ival ELSE nret = 1 RETURN END IF ELSE nret = 1 RETURN END IF C C* Set minutes of obs hour to zero. C imins = 0 C C* Combine the run times and obs times into a report date-time. C ndays = 10 CALL DC_RTIM ( istarr, imnday, ihour, imins, ndays, + irptdt, ier ) C IF ( ier .ne. 0 ) THEN nret = 1 RETURN END IF C C* Save date/time data interface array C rivals(iryear) = float ( irptdt(1) ) rivals(irmnth) = float ( irptdt(2) ) rivals(irdays) = float ( irptdt(3) ) rivals(irhour) = float ( irptdt(4) ) rivals(irminu) = float ( irptdt(5) ) C C* Get indicator for source and units of wind speed C fld1 = yyggi ( 5:5 ) C IF ( fld1 .eq. '0' .or. fld1 .eq. '1' .or. + fld1 .eq. '3' .or. fld1 .eq. '4' ) THEN C CALL ST_INTG( fld1, ival, ier ) IF ( ier .eq. 0 ) THEN rivals ( irisws ) = FLOAT ( ival ) END IF END IF C* RETURN END