SUBROUTINE CG_GTWX ( string, iret ) C************************************************************************ C* CG_GTWX * C* * C* This subroutine decodes the weather data in one report. If there * C* are multiple weather codes included with the report, only the most * C* significant will be saved (see the IF block in this subroutine for * C* order of significance). * C* * C* CG_GTWX ( STRING, IRET ) * C* * C* Input parameters: * C* STRING CHAR* string containing sky cover data* C* * C* Output parameters passed via common: * C* RIVALS(IRWWMO) REAL weather from a manned station * C* * C* Output parameters: * C* IRET INTEGER Return code * C* 0 = Normal return * C** * C* Log: * C* C. Caruso Magee/NCEP 4/00 Original Author. * C* C. Caruso Magee/NCEP 7/00 Added metar wx codes for KEKA obs. * C* C. Caruso Magee/NCEP 2/01 Added codes for R- and L-. * C* C. Caruso Magee/NCEP 3/01 Added codes for SP (snow pellets). * C* Fixed typos (TRGS to TSGS; TRSS to TSSS)* C************************************************************************ INCLUDE 'GEMPRM.PRM' INCLUDE 'cgcmn.cmn' character*(*) string integer iret iret = 0 IF ( index(string,'TSTM') .ne. 0 .or. * index(string,'TSRA') .ne. 0 .or. * index(string,'TSSN') .ne. 0 .or. * index(string,'TRW') .ne. 0) THEN rivals(irwwmo) = 95. ELSEIF ( index(string,'TSGR') .ne. 0 .or. * index(string,'TSGS') .ne. 0) THEN rivals(irwwmo) = 96. ELSEIF ( index(string,'TSDS') .ne. 0 .or. * index(string,'TSSS') .ne. 0) THEN rivals(irwwmo) = 98. ELSEIF ( index(string,'SQ') .ne. 0) THEN rivals(irwwmo) = 18. ELSEIF ( index(string,'FC') .ne. 0) THEN rivals(irwwmo) = 19. ELSEIF ( index(string,'ZL') .ne. 0 .or. * index(string,'FZDZ') .ne.0 ) THEN rivals(irwwmo) = 57. ELSEIF ( index(string,'DS') .ne. 0 .or. * index(string,'SS') .ne.0 ) THEN rivals(irwwmo) = 31. ELSEIF ( index(string,'BR') .ne. 0) THEN rivals(irwwmo) = 10. ELSEIF ( index(string,'SR') .ne. 0 .or. * index(string,'RS') .ne. 0 .or. * index(string,'RASN') .ne. 0 .or. * index(string,'SNRA') .ne. 0 .or. * index(string,'DZSN') .ne. 0 .or. * index(string,'SNDZ') .ne. 0) THEN rivals(irwwmo) = 69. ELSEIF ( index(string,'LR') .ne. 0 .or. * index(string,'RL') .ne. 0 .or. * index(string,'RADZ') .ne. 0 .or. * index(string,'DZRA') .ne. 0) THEN rivals(irwwmo) = 59. ELSEIF ( index(string,'FZRA') .ne. 0 .or. * index(string,'ZR') .ne. 0 ) THEN rivals(irwwmo) = 67. ELSEIF ( index(string,'SHGS') .ne. 0 .or. * index(string,'GS') .ne. 0 .or. * index(string,'SP') .ne. 0 ) THEN rivals(irwwmo) = 88. ELSEIF ( index(string,'SHGR') .ne. 0 .or. * index(string,'GR') .ne. 0 ) THEN rivals(irwwmo) = 90. ELSEIF ( index(string,'RW') .ne. 0 .or. * index(string,'SHRA') .ne. 0 ) THEN rivals(irwwmo) = 81. ELSEIF ( index(string,'R-') .ne. 0 ) THEN rivals(irwwmo) = 61. ELSEIF ( index(string,'RA') .ne. 0 .or. * index(string,'R') .ne. 0 ) THEN rivals(irwwmo) = 63. ELSEIF ( index(string,'SW') .ne. 0 .or. * index(string,'SHSN') .ne. 0 ) THEN rivals(irwwmo) = 86. ELSEIF ( index(string,'SG') .ne. 0) THEN rivals(irwwmo) = 77. ELSEIF ( index(string,'SN') .ne. 0 .or. * index(string,'S') .ne. 0 ) THEN rivals(irwwmo) = 73. ELSEIF ( index(string,'PL') .ne. 0 .or. * index(string,'PE') .ne. 0 ) THEN rivals(irwwmo) = 79. ELSEIF ( index(string,'L-') .ne. 0 ) THEN rivals(irwwmo) = 51. ELSEIF ( index(string,'L') .ne. 0 .or. * index(string,'DZ') .ne. 0 ) THEN rivals(irwwmo) = 53. ELSEIF ( index(string,'K') .ne. 0 .or. * index(string,'FU') .ne.0 ) THEN rivals(irwwmo) = 4. ELSEIF ( index(string,'FOG') .ne. 0 .or. * index(string,'FG') .ne.0 .or. * index(string,'F') .ne.0) THEN rivals(irwwmo) = 45. ELSEIF ( index(string,'HZ') .ne. 0 .or. * index(string,'H') .ne.0 ) THEN rivals(irwwmo) = 5. ELSEIF ( index(string,'IC') .ne. 0) THEN rivals(irwwmo) = 76. ELSEIF ( index(string,'DU') .ne. 0) THEN rivals(irwwmo) = 6. ELSEIF ( index(string,'PO') .ne. 0) THEN rivals(irwwmo) = 8. END IF RETURN END