1 SUBROUTINE FM_DECODER (fm, platform, synop, ship , metar, &
3 satob, airep, gpspw, gpszd, &
7 qscat, profl, buoy , bogus, airs, tamdar)
8 !------------------------------------------------------------------------------!
9 ! Given the WMO code fm, return the observation platform type and increment
10 ! the corresponding counter if present.
12 ! Returned platforms are reduced to 13 output classes:
14 ! Name WMO Codes WMO Code names
15 ! synop 12,14 'SYNOP','SYNOP MOBIL'
17 ! metar 15,16 'METAR','SPECI'
19 ! pilot 32,33,34 'PILOT','PILOT SHIP','PILOT MOBIL'
20 ! sound 35,36,37,38 'TEMP','TEMP SHIP, 'TEMP DROP','TEMP MOBIL'
34 ! qscat 281 'Quikscat'
35 ! profl 132 'Profilers'
38 ! other Any other code 'UNKNOWN'
39 !------------------------------------------------------------------------------!
43 ! F. VANDENBERGHE, March 2001
45 ! 01/13/2003 - Updated for Profiler obs. S. R. H. Rizvi
47 ! 02/04/2003 - Updated for Buoy obs. S. R. H. Rizvi
49 ! 02/11/2003 - Reviewed and modified for Profiler
50 ! and Buoy obs. Y.-R. Guo
52 ! 05/23/2003 - GPS ZTD code added L. Cucurull
53 ! 06/30/2006 - Updated for AIRS retrievals Syed RH Rizvi
54 ! 11/09/2006 - Added for GPS Excess Phase Y.-R. Guo
55 !-----------------------------------------------------------------------------
58 INTEGER, INTENT (in) :: fm
59 CHARACTER (LEN = 40), INTENT (out) :: platform
60 INTEGER, INTENT (inout), OPTIONAL :: synop, ship, metar, &
61 pilot, sound, satem, &
62 satob, airep, gpspw, &
63 gpszd, gpsrf, gpsep, &
67 profl, buoy, airs, tamdar, other
68 !------------------------------------------------------------------------------!
71 ! Report of surface observations from a fixed land station
73 CASE (12) ; platform = 'SYNOP'
74 IF (PRESENT (synop)) synop = synop + 1
76 ! Report of surface observations from a sea station
78 CASE (13) ; platform = 'SHIP'
79 IF (PRESENT (ship)) ship = ship + 1
81 ! Report of surface observations from a mobile land station
83 CASE (14) ; platform = 'SYNOP MOBIL'
84 IF (PRESENT (synop)) synop = synop + 1
86 ! Aviation routine weather report (with/without trend forecast)
88 CASE (15) ; platform = 'METAR'
89 IF (PRESENT (metar)) metar = metar + 1
91 ! Aviation selected special weather report
92 ! (with/without trend forecast)
94 CASE (16) ; platform = 'SPECI'
95 IF (PRESENT (metar)) metar = metar + 1
97 ! Report of buoy observation
99 CASE (18,19) ; platform = 'BUOY'
100 IF (PRESENT (buoy)) buoy = buoy + 1
102 ! Report of ground radar weather observation
104 CASE (20) ; platform = 'RADOB'
105 IF (PRESENT (other)) other = other + 1
107 ! Radiological data report (monitored on a routine basis and/or
108 ! in case of accident
110 CASE (22) ; platform = 'RADREP'
111 IF (PRESENT (other)) other = other + 1
113 ! Upper-wind report from a fixed land station
115 CASE (32) ; platform = 'PILOT'
116 IF (PRESENT (pilot)) pilot = pilot + 1
118 ! Upper-wind report from a sea station
120 CASE (33) ; platform = 'PILOT SHIP'
121 IF (PRESENT (pilot)) pilot = pilot + 1
123 ! Upper-wind report from a mobile land station
125 CASE (34) ; platform = 'PILOT MOBIL'
126 IF (PRESENT (pilot)) pilot = pilot + 1
128 ! Upper-level pressure, temperature, humidity and wind report
129 ! from a fixed land station
131 CASE (35) ; platform = 'TEMP'
132 IF (PRESENT (sound)) sound = sound + 1
134 ! Upper-level pressure, temperature, humidity and wind report
137 CASE (135) ; platform = 'BOGUS'
138 IF (PRESENT (bogus)) bogus = bogus + 1
140 ! Upper-level pressure, temperature, humidity and wind report
141 ! from a bogus station
143 CASE (36) ; platform = 'TEMP SHIP'
144 IF (PRESENT (sound)) sound = sound + 1
146 ! Upper-level pressure, temperature, humidity and wind report
147 ! from a sonde released by carrier balloons and aircraft
149 CASE (37) ; platform = 'TEMP DROP'
150 IF (PRESENT (sound)) sound = sound + 1
152 ! Upper-level pressure, temperature, humidity and wind report
153 ! from a mobile land station
155 CASE (38) ; platform = 'TEMP MOBIL'
156 IF (PRESENT (sound)) sound = sound + 1
158 ! Upper-level temperature, wind and air density from a land
159 ! rocketsonde station
161 CASE (39) ; platform = 'ROCOB'
162 IF (PRESENT (other)) other = other + 1
164 ! Upper-level temperature, wind and air density from a
165 ! rocketsonde station on a ship
167 CASE (40) ; platform = 'ROCOB SHIP'
168 IF (PRESENT (other)) other = other + 1
170 ! Upper-air report from an aircraft
171 ! (other than weather reconnaissance aircraft)
173 CASE (41) ; platform = 'CODAR'
174 IF (PRESENT (other)) other = other + 1
176 ! Aircraft report (aircraft meteorological data relay)
178 CASE (42) ; platform = 'AMDAR'
179 IF (PRESENT (amdar)) amdar = amdar + 1
183 CASE (43) ; platform = 'ICEAN'
184 IF (PRESENT (other)) other = other + 1
186 ! Analysis in full form
188 CASE (45) ; platform = 'IAC'
189 IF (PRESENT (other)) other = other + 1
191 ! Analysis in abbreviated form
193 CASE (46) ; platform = 'IAC FLEET'
194 IF (PRESENT (other)) other = other + 1
196 ! Processed data in form of grid-point values
198 CASE (47) ; platform = 'GRID'
199 IF (PRESENT (other)) other = other + 1
201 ! Processed data in form of grid-point values (abbreviated code form)
203 CASE (49) ; platform = 'GRAF'
204 IF (PRESENT (other)) other = other + 1
206 ! Forecast upper wind and temperature for aviation
208 CASE (50) ; platform = 'WINTEM'
209 IF (PRESENT (other)) other = other + 1
213 CASE (51) ; platform = 'TAF'
214 IF (PRESENT (other)) other = other + 1
216 ! Area forecast for aviation
218 CASE (53) ; platform = 'ARFOR'
219 IF (PRESENT (other)) other = other + 1
221 ! Route forecast for aviation
223 CASE (54) ; platform = 'ROFOR'
224 IF (PRESENT (other)) other = other + 1
226 ! Radiological trajectory dose forecast
227 ! (defined time of arrival and location)
229 CASE (57) ; platform = 'RADOF'
230 IF (PRESENT (other)) other = other + 1
232 ! Forecast for shipping
234 CASE (61) ; platform = 'MAFOR'
235 IF (PRESENT (other)) other = other + 1
237 ! Report of marine surface observations along a ship's track
239 CASE (62) ; platform = 'TRACKOB'
240 IF (PRESENT (other)) other = other + 1
242 ! Report of bathymetrical observation
244 CASE (63) ; platform = 'BATHY'
245 IF (PRESENT (other)) other = other + 1
247 ! Temperature salinity and current report from a sea station
249 CASE (64) ; platform = 'TRESAC'
250 IF (PRESENT (other)) other = other + 1
252 ! Report of spectral wave information from sea station or from
253 ! a remote platform (airecraft or satellite)
255 CASE (65) ; platform = 'WAVEOB'
256 IF (PRESENT (other)) other = other + 1
258 ! Report of hydrological observations from a hydrological station
260 CASE (66) ; platform = 'HYDRA'
261 IF (PRESENT (other)) other = other + 1
263 ! Hydrological forecast
265 CASE (67) ; platform = 'HYFOR'
266 IF (PRESENT (other)) other = other + 1
268 ! Report of monthly values from a land station
270 CASE (71) ; platform = 'CLIMAT'
271 IF (PRESENT (other)) other = other + 1
273 ! Report of monthly means and total from an ocean weather station
275 CASE (72) ; platform = 'CLIMAT SHIP'
276 IF (PRESENT (other)) other = other + 1
278 ! Report of monthly means for an oceanic area
280 CASE (73) ; platform = 'NACLI CLINP SPLCI CLISA INCLI'
281 IF (PRESENT (other)) other = other + 1
283 ! Report of monthly aerological means from a land station
285 CASE (75) ; platform = 'CLIMAT TEMP'
286 IF (PRESENT (other)) other = other + 1
288 ! Report of monthly aerological means from an ocean weather station
290 CASE (76) ; platform = 'CLIMAT TEMP SHIP'
291 IF (PRESENT (other)) other = other + 1
293 ! Synoptic report of bearings of sources of atmospherics
295 CASE (81) ; platform = 'SFAZI'
296 IF (PRESENT (other)) other = other + 1
298 ! Synoptic report of the geographical location of sources of
301 CASE (82) ; platform = 'SFLOC'
302 IF (PRESENT (other)) other = other + 1
304 ! Detailed report of the distribution of sources of atmospherics
305 ! by bearings for any period up to including 24 hours
307 CASE (83) ; platform = 'SFAZU'
308 IF (PRESENT (other)) other = other + 1
310 ! Report of synoptic interpretation of cloud data obtained by a
311 ! meteorlogical satellite
313 CASE (85) ; platform = 'SAREP'
314 IF (PRESENT (other)) other = other + 1
316 ! Report of satellite remote upper-air soundings of
317 ! pressure, temperature and humidity
319 CASE (86) ; platform = 'SATEM'
320 IF (PRESENT (satem)) satem = satem + 1
322 ! Report of satellite clear radiance observations
324 CASE (87) ; platform = 'SARAD'
325 IF (PRESENT (other)) other = other + 1
327 ! Report of satellite remote upper-air soundings of
328 ! pressure, temperature and humidity
330 CASE (88) ; platform = 'SATOB'
331 IF (PRESENT (satob)) satob = satob + 1
333 ! Airep reports (not a WMO report)
335 CASE (96:97) ; platform = 'AIREP'
336 IF (PRESENT (airep)) airep = airep + 1
338 ! tamdar reports ( not a WMO report)
340 CASE (101) ; platform = 'TAMDAR'
341 IF (PRESENT (tamdar)) tamdar = tamdar + 1
343 ! GPS Precipitable Water Vapor (not a WMO report)
345 CASE (111) ; platform = 'GPSPW'
346 IF (PRESENT (gpspw)) gpspw = gpspw + 1
348 ! GPS Zenith Total Delay (not a WMO report)
350 CASE (114) ; platform = 'GPSZD'
351 IF (PRESENT (gpszd)) gpszd = gpszd + 1
353 ! GPS Refractivity (not a WMO report)
355 CASE (116) ; platform = 'GPSRF'
356 IF (PRESENT (gpsrf)) gpsrf = gpsrf + 1
358 ! GPS Excess Phase (not a WMO report)
360 CASE (118) ; platform = 'GPSEP'
361 IF (PRESENT (gpsep)) gpsep = gpsep + 1
363 ! DMSP SSM/T-1 (not a WMO report)
365 CASE (121) ; platform = 'SSMT1'
366 IF (PRESENT (ssmt1)) ssmt1 = ssmt1 + 1
368 ! DMSP SSM/T-2 (not a WMO report)
370 CASE (122) ; platform = 'SSMT2'
371 IF (PRESENT (ssmt2)) ssmt2 = ssmt2 + 1
373 ! DMSP SSMI (not a WMO report)
375 CASE (125,126) ; platform = 'SSMI'
376 IF (PRESENT (ssmi)) ssmi = ssmi + 1
378 ! NOAA TOVS (not a WMO report)
380 CASE (131) ; platform = 'TOVS'
381 IF (PRESENT (tovs)) tovs = tovs + 1
384 CASE (132) ; platform = 'PROFL'
385 IF (PRESENT (profl)) profl = profl + 1
387 CASE (133) ; platform = 'AIRSRET'
388 IF (PRESENT (airs)) airs = airs + 1
390 ! Quikscat (not a WMO report)
392 CASE (281) ; platform = 'QSCAT'
393 IF (PRESENT (qscat)) qscat = qscat + 1
399 IF (PRESENT (other)) other = other + 1
404 ! Reduce the platform name to one of the 15 classes
406 SELECT CASE (TRIM (platform))
408 CASE ('SYNOP','SYNOP MOBIL'); platform = "SYNOP";
409 CASE ('SHIP'); platform = "SHIP" ;
410 CASE ('BUOY'); platform = "BUOY" ;
411 CASE ('BOGUS'); platform = "BOGUS";
412 CASE ('METAR','SPECI'); platform = "METAR";
413 CASE ('PILOT','PILOT SHIP','PILOT MOBIL'); platform = "PILOT";
414 CASE ('TEMP','TEMP SHIP','TEMP DROP','TEMP MOBIL'); platform = "SOUND";
415 CASE ('SATEM'); platform = "SATEM";
416 CASE ('SATOB'); platform = "SATOB";
417 CASE ('AIREP'); platform = "AIREP";
418 CASE ('TAMDAR'); platform = "TAMDAR";
419 CASE ('GPSPW'); platform = "GPSPW";
420 CASE ('GPSZD'); platform = "GPSZD";
421 CASE ('GPSRF'); platform = "GPSRF";
422 CASE ('GPSEP'); platform = "GPSEP";
423 CASE ('SSMT1'); platform = "SSMT1";
424 CASE ('SSMT2'); platform = "SSMT2";
425 CASE ('TOVS'); platform = "TOVS" ;
426 CASE ('SSMI'); platform = "SSMI" ;
427 CASE ('Qscat'); platform = "QSCAT";
428 CASE ('PROFL'); platform = "PROFL";
429 CASE ('AIRSRET'); platform = "AIRSRET";
430 CASE ('UNKNOWN'); platform = "UNKONWN";
434 END SUBROUTINE fm_decoder