Modify check for global grid for Gaussian and lat/lon grids in rd_grib1.F.
[WPS-merge.git] / ungrib / src / g1print.F
blobd0ceda6806e9bc29246a4743e3c534632a673a04
2 ! Print information about a grib1 file.
3 !  Usage: "g1print [-v] [-V] filename"
5 !  Originally from gribscan.
6
7 program g1print
8   use module_grib
9   interface
10      subroutine parse_args(err, a1, h1, i1, l1, a2, h2, i2, l2,&
11           a3, h3, i3, l3, hlast)
12        integer :: err
13        character(len=*) , optional :: a1, a2, a3
14        character(len=*), optional :: h1, h2, h3
15        integer , optional :: i1, i2, i3
16        logical, optional :: l1, l2, l3
17        character(len=*), optional :: hlast
18      end subroutine parse_args
19   end interface
21   character(len=120) :: flnm
22   character(len=30) :: hopt
23   real, allocatable, dimension(:) :: datarray
24   integer :: ierr, igherr
25   integer :: cc
26   character(len=100) :: fmt = '(I4,1X, &
27        & I3,1x, A5,1x, &
28        & I4, &
29        & 2(1x,I4),2x,I4.4,2("-",I2.2),"_",I2.2,":",&
30        & I2.2, 1x, "+", i3.2)'
31   logical :: ivb = .FALSE.
32   logical :: idb = .FALSE.
33   integer :: year
34   character(len=5) :: field
35   integer :: ec_rec_len
37   ec_rec_len = 0
38 ! ec_rec_len = 26214508
39   flnm = ' '
40   call parse_args(ierr, a1='v', l1=ivb, a2='V', l2=idb, hlast=flnm)
41   if (ierr.ne.0) then
42      call getarg(0, hopt)
43      write(*,'(//,"Usage: ", A, " [-v] [-V] file",/)') trim(hopt)
44      write(*,'("     -v   : Print more information about the GRIB records")')
45      write(*,'("     -V   : Print way too much information about the GRIB&
46           & records")')
47      write(*,'("     file : GRIB file to read"//)')
48       stop
49 !    stop
50   endif
52   if (idb) ivb = .TRUE.
54   call c_open(idum, munit, flnm, 1, ierr, 1)
56   if (.not. ivb) then
57      write(*,'(52("-"))')
58      write(*,'(" rec GRIB GRIB  Lvl  Lvl  Lvl         Time      Fcst")')
59      write(*,'(" Num Code name  Code one  two                   hour")')
60      write(*,'(52("-"))')
61   endif 
63   irec = 0
64   call gribget(munit, ierr, ec_rec_len)
65   do while (ierr.eq.0) 
66      irec = irec + 1
67      call gribheader(0,igherr, ec_rec_len)
68      if (igherr /= 0) then
69         call deallogrib
70         call gribget(munit, ierr, ec_rec_len)
71         cycle
72      endif
74      call fieldname(sec1(2), sec1(3), sec1(4), sec1(7), sec1(24), field)
76      if (ivb) then
77         call gribprint(0)
78         call gribprint(1)
79         call gribprint(2)
80         call gribprint(3)
81         call gribprint(4)
82            if (sec2(4).eq.50) then
83               ndat = (infogrid(1)+1)*(infogrid(2)+1)
84            else
85               ndat = (infogrid(1)*infogrid(2))
86            endif
87            allocate(datarray(ndat))
88            call gribdata(datarray, ndat)
89            fldmax = datarray(1)
90            fldmin = datarray(1)
91            do j = 1, ndat
92              if (datarray(j).gt.fldmax) fldmax=datarray(j)
93              if (datarray(j).lt.fldmin) fldmin=datarray(j)
94            enddo
95         write(*,*) "  "
96         write(*,*) "  ",field," : "
97         write(*,'(5x,"Minimum Data Value ",t45,":",g14.5)') fldmin
98         write(*,'(5x,"Maximum Data Value ",t45,":",g14.5)') fldmax
99         write(*,'(//,70("*"))')
100         if (idb) then
101            print*, 'Datarray = ', Datarray
102         endif
103            deallocate(datarray)
104      else
105         CC = sec1(22)
106         year = (cc-1)*100 + sec1(11)
107         if ( sec1(16) .eq. 254) then
108           ifcst = sec1(17)/3600.
109         else
110           ifcst = sec1(17)
111         endif
112         write(*,FMT) irec, sec1(7), field, sec1(8:10), year,sec1(12:15),ifcst
113      endif
115      call deallogrib
117      call gribget(munit, ierr, ec_rec_len)
118   enddo
119   if (ierr.eq.1) write(*,'(/,"***** End-Of-File on C unit ", I3,/)') munit
120   call c_close( munit, 0, ierr)
122 end program g1print
124 subroutine parse_args(err, a1, h1, i1, l1, a2, h2, i2, l2, a3, h3, i3, l3, &
125      hlast)
126   integer :: err
127   character(len=*) , optional :: a1, a2, a3
128   character(len=*), optional :: h1, h2, h3
129   integer , optional :: i1, i2, i3
130   logical, optional :: l1, l2, l3
131   character(len=*), optional :: hlast
133   character(len=100) :: hold
134   integer :: ioff = 0
136   if (present(hlast)) then
137      ioff = -1
138   endif
140   err = 0
142   narg = iargc()
143   numarg = narg + ioff
145   i = 1
146   LOOP : do while ( i <= numarg)
148      ierr = 1
149      if (present(i1)) then
150         call checkiarg(i, a1, i1, ierr)
151      elseif (present(h1)) then
152         call checkharg(i, a1, h1, ierr)
153      elseif (present(l1)) then
154         call checklarg(i, a1, l1, ierr)
155      endif
156      if (ierr.eq.0) cycle LOOP
158      if (present(i2)) then
159         call checkiarg(i, a2, i2, ierr)
160      elseif (present(h2)) then
161         call checkharg(i, a2, h2, ierr)
162      elseif (present(l2)) then
163         call checklarg(i, a2, l2, ierr)
164      endif
165      if (ierr.eq.0) cycle LOOP
167      if (present(i3)) then
168         call checkiarg(i, a3, i3, ierr)
169      elseif (present(h3)) then
170         call checkharg(i, a3, h3, ierr)
171      elseif (present(l3)) then
172         call checklarg(i, a3, l3, ierr)
173      endif
174      if (ierr.eq.0) cycle LOOP
176      err = 1
177      call getarg(1, hold)
178      write(*, '("arg = ", A)') trim(hold)
180      exit LOOP
182   enddo LOOP
184   if (present(hlast)) then
185      if (narg.eq.0) then
186         err = 1
187      else
188         call getarg(narg, hlast)
189      endif
190   endif
192 contains
193   subroutine checkiarg(c, a, i, ierr)
194     integer :: c
195     character(len=*) :: a
196     integer :: i
198     character(len=100) :: hold
199     ierr = 1
201     call getarg(c, hold)
203     if ('-'//a.eq.trim(hold)) then
204        c = c + 1
205        call getarg(c, hold)
206        read(hold, *) i
207        c = c + 1
208        ierr = 0
209     elseif ('-'//a .eq. hold(1:len_trim(a)+1)) then
210        hold = hold(len_trim(a)+2: len(hold))
211        read(hold, *) i
212        c = c + 1
213        ierr = 0
214     endif
215         
216   end subroutine checkiarg
217   subroutine checkharg(c, a, h, ierr)
218     integer :: c
219     character(len=*) :: a
220     character(len=*) :: h
222     character(len=100) :: hold
223     ierr = 1
225     call getarg(c, hold)
227     if ('-'//a.eq.trim(hold)) then
228        c = c + 1
229        call getarg(c, hold)
230        h = trim(hold)
231        c = c + 1
232        ierr = 0
233     elseif ('-'//a .eq. hold(1:len_trim(a)+1)) then
234        hold = hold(len_trim(a)+2: len(hold))
235        h = trim(hold)
236        c = c + 1
237        ierr = 0
238     endif
239         
240   end subroutine checkharg
242   subroutine checklarg(c, a, l, ierr)
243     integer :: c
244     character(len=*) :: a
245     logical :: l
247     character(len=100) :: hold
248     ierr = 1
250     call getarg(c, hold)
251     if ('-'//a.eq.trim(hold)) then
252        l = .TRUE.
253        c = c + 1
254        ierr = 0
255     endif
256         
257   end subroutine checklarg
259 end subroutine parse_args
261   subroutine fieldname(ptv, centerid, procid, param, subc, field)
263 ! This routine contains the tables for the various grib parameters
264 ! Each individual parameter contains the info to identify itself.
265 ! We don't have the complete tables here, just enough for normal wrf use.
266 ! wgrib has more complete NCEP tables. (look in WRFV3/external/io_grib1/WGRIB)
268 !  ptv - parameter table version
269 !  centerid - id number ofthe originating center
270 !  procid - process id
271 !  param - parameter number
272 !  subc - sub center
273 !  field - 5-character field name (returned)
275     integer, intent(in) :: ptv, centerid, procid, param, subc
276     logical :: first=.true.
277     character (len=5), intent(out) :: field
278     character(len=5) :: table2(255), table129(255), afwa(255), ecmwf(255), &
279       table130(255), table131(255), table132(255)
280     common /paramids/ table2, table129, table130, table131, table132, afwa, ecmwf
282      field = '     '
283      if (first) call init_tables
284      first = .false.
285      if ( centerid .eq. 7 .and. ptv .eq. 2 ) then
286        field = table2(param)
287      else if ( centerid .eq. 7 .and. ptv .eq. 129 ) then
288        field = table129(param)
289      else if ( centerid .eq. 7 .and. ptv .eq. 130 ) then
290        field = table130(param)
291      else if ( centerid .eq. 7 .and. ptv .eq. 131 ) then
292        field = table131(param)
293      else if ( centerid .eq. 7 .and. ptv .eq. 132 ) then
294        field = table132(param)
295      else if ( centerid .eq. 57 ) then
296        field = afwa(param)
297      else if ( centerid .eq. 58 .and. ptv .eq. 2 ) then    ! navysst
298        field = table2(param)
299      else if ( centerid .eq. 59 .and. ptv .eq. 2 ) then    ! GSD
300        field = table2(param)
301      else if ( centerid .eq. 59 .and. ptv .eq. 129 ) then
302        field = table129(param)
303      else if ( centerid .eq. 98 .and. ptv .eq. 128 ) then  ! ECMWF
304        field = ecmwf(param)
305      else if ( ptv .eq. 2 ) then  ! previous default behavior - assume table 2 is ncep table 2
306        field = table2(param)
307      else
308        field = '     '
309      endif
310      return
311 end subroutine fieldname 
313      subroutine init_tables
314     character(len=5) :: table2(255), table129(255), afwa(255), ecmwf(255), &
315       table130(255), table131(255),  table132(255)
316     common /paramids/ table2, table129, table130, table131, table132, afwa, ecmwf
318        ! afwa
319        do i = 1, 127
320          afwa(i) = table2(i)
321        enddo
322        do i = 128, 254
323          afwa(i) = '     '
324        enddo
325        afwa(144) = 'DNWLR'
326        afwa(145) = 'INSWR'
327        afwa(155) = 'GDHFX'
328        afwa(157) = 'XTRAJ'
329        afwa(158) = 'YTRAJ'
330        afwa(159) = 'PTRAJ'
331        afwa(160) = 'TERID'
332        afwa(161) = 'MDLTN'
333        afwa(174) = 'SNOWD'
334        afwa(175) = 'SNOAG'
335        afwa(176) = 'SNOCL'
336        afwa(177) = 'VSBLY'
337        afwa(178) = 'CURWX'
338        afwa(179) = 'CLAMT'
339        afwa(180) = 'CLBAS'
340        afwa(181) = 'CLTOP'
341        afwa(182) = 'CLTYP'
342        afwa(183) = 'UTIME'
343        afwa(184) = 'SRCDT'
344        afwa(196) = 'EPCDF'
345        afwa(197) = 'EPALL'
346        afwa(198) = 'EPGEO'
347        afwa(199) = 'EPVAL'
348        afwa(200) = 'SOILR'
349        afwa(201) = 'SOILW'
350        afwa(205) = 'TYPSL'
351        afwa(206) = 'VLASH'
352        afwa(207) = 'CANWT'
353        afwa(208) = 'PEVAP'
354        afwa(209) = 'WNDRN'
355        afwa(210) = 'RHTMN'
356        afwa(211) = 'SOILL'
357        afwa(212) = 'VEGTP'
358        afwa(213) = 'GREEN'
359        afwa(234) = 'BGRUN'
360        afwa(235) = 'SSRUN'
362      ! ECMWF
363 ! from http://www.ecmwf.int/services/archive/d/parameters/order=grib_parameter/table=128/
364        do i = 1, 254
365          ecmwf(i) = '     '
366        enddo
367          ecmwf(1) = 'STRF '
368          ecmwf(2) = 'VPOT '
369          ecmwf(3) = 'PT   '
370          ecmwf(4) = 'EQPT '
371          ecmwf(5) = 'SEPT '
372          ecmwf(8) = 'SRO  '
373          ecmwf(9) = 'SSRO '
374          ecmwf(10) = 'WS   '
375          ecmwf(26) = 'CL   '
376          ecmwf(27) = 'CVL  '
377          ecmwf(28) = 'CVH  '
378          ecmwf(29) = 'TVL  '
379          ecmwf(30) = 'TVH  '
380          ecmwf(31) = 'CI   '
381          ecmwf(32) = 'ASN  '
382          ecmwf(33) = 'RSN  '
383          ecmwf(34) = 'SSTK '
384          ecmwf(35) = 'ISTL1'
385          ecmwf(36) = 'ISTL2'
386          ecmwf(37) = 'ISTL3'
387          ecmwf(38) = 'ISTL4'
388          ecmwf(39) = 'SWVL1'
389          ecmwf(40) = 'SWVL2'
390          ecmwf(41) = 'SWVL3'
391          ecmwf(42) = 'SWVL4'
392          ecmwf(43) = 'SLT  '
393          ecmwf(44) = 'ES   '
394          ecmwf(45) = 'SMLT '
395          ecmwf(60) = 'PV   '
396          ecmwf(74) = 'SDFOR'
397          ecmwf(75) = 'CRWC '
398          ecmwf(76) = 'CSWC '
399          ecmwf(77) = 'ETADT'
400          ecmwf(78) = 'TCLW '
401          ecmwf(79) = 'TCIW '
402          ecmwf(121) = 'MX2T6'
403          ecmwf(122) = 'MN2T6'
404          ecmwf(123) = '10FG6'
405          ecmwf(124) = 'EMIS '
406          ecmwf(127) = 'AT   '
407          ecmwf(128) = 'BV   '
408          ecmwf(129) = 'Z    '
409          ecmwf(130) = 'T    '
410          ecmwf(131) = 'U    '
411          ecmwf(132) = 'V    '
412          ecmwf(133) = 'Q    '
413          ecmwf(134) = 'SP   '
414          ecmwf(135) = 'W    '
415          ecmwf(136) = 'TCW  '
416          ecmwf(137) = 'TCWV '
417          ecmwf(138) = 'VO   '
418          ecmwf(139) = 'STL1 '
419          ecmwf(140) = 'SWL1 '
420          ecmwf(141) = 'SD   '
421          ecmwf(142) = 'LSP  '
422          ecmwf(143) = 'CP   '
423          ecmwf(144) = 'SF   '
424          ecmwf(145) = 'BLD  '
425          ecmwf(146) = 'SSHF '
426          ecmwf(147) = 'SLHF '
427          ecmwf(148) = 'CHNK '
428          ecmwf(149) = 'SNR  '
429          ecmwf(150) = 'TNR  '
430          ecmwf(151) = 'MSL  '
431          ecmwf(152) = 'LNSP '
432          ecmwf(153) = 'SWHR '
433          ecmwf(154) = 'LWHR '
434          ecmwf(155) = 'D    '
435          ecmwf(156) = 'GH   '
436          ecmwf(157) = 'R    '
437          ecmwf(159) = 'BLH  '
438          ecmwf(160) = 'SDOR '
439          ecmwf(161) = 'ISOR '
440          ecmwf(162) = 'ANOR '
441          ecmwf(163) = 'SLOR '
442          ecmwf(164) = 'TCC  '
443          ecmwf(165) = '10U  '
444          ecmwf(166) = '10V  '
445          ecmwf(167) = '2T   '
446          ecmwf(168) = '2D   '
447          ecmwf(169) = 'SSRD '
448          ecmwf(170) = 'STL2 '
449          ecmwf(171) = 'SWL2 '
450          ecmwf(172) = 'LSM  '
451          ecmwf(173) = 'SR   '
452          ecmwf(174) = 'AL   '
453          ecmwf(175) = 'STRD '
454          ecmwf(176) = 'SSR  '
455          ecmwf(177) = 'STR  '
456          ecmwf(178) = 'TSR  '
457          ecmwf(179) = 'TTR  '
458          ecmwf(180) = 'EWSS '
459          ecmwf(181) = 'NSSS '
460          ecmwf(182) = 'E    '
461          ecmwf(183) = 'STL3 '
462          ecmwf(184) = 'SWL3 '
463          ecmwf(185) = 'CCC  '
464          ecmwf(186) = 'LCC  '
465          ecmwf(187) = 'MCC  '
466          ecmwf(188) = 'HCC  '
467          ecmwf(189) = 'SUND '
468          ecmwf(194) = 'BTMP '
469          ecmwf(195) = 'LGWS '
470          ecmwf(196) = 'MGWS '
471          ecmwf(197) = 'GWD  '
472          ecmwf(198) = 'SRC  '
473          ecmwf(199) = 'VEG  '
474          ecmwf(200) = 'VSO  '
475          ecmwf(201) = 'MX2T '
476          ecmwf(202) = 'MN2T '
477          ecmwf(203) = 'O3   '
478          ecmwf(204) = 'PAW  '
479          ecmwf(205) = 'RO   '
480          ecmwf(206) = 'TCO3 '
481          ecmwf(207) = '10SI '
482          ecmwf(208) = 'TSRC '
483          ecmwf(209) = 'TTRC '
484          ecmwf(210) = 'SSRC '
485          ecmwf(211) = 'STRC '
486          ecmwf(212) = 'TISR '
487          ecmwf(213) = 'VIMD '
488          ecmwf(214) = 'DHR  '
489          ecmwf(227) = 'CRNH '
490          ecmwf(229) = 'IEWS '
491          ecmwf(230) = 'INSS '
492          ecmwf(231) = 'ISHF '
493          ecmwf(232) = 'IE   '
494          ecmwf(233) = 'ASQ  '
495          ecmwf(234) = 'LSRH '
496          ecmwf(235) = 'SKT  '
497          ecmwf(236) = 'STL4 '
498          ecmwf(237) = 'SWL4 '
499          ecmwf(238) = 'TSN  '
500          ecmwf(239) = 'CSF  '
501          ecmwf(240) = 'LSF  '
502          ecmwf(248) = 'CC   '
503 end subroutine init_tables
505     block data  ptables
506     character(len=5) :: table2(255), table129(255), afwa(255), ecmwf(255), &
507       table130(255), table131(255), table132(255)
508     common /paramids/ table2, table129, table130, table131, table132, afwa, ecmwf
510   data table2 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
511        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
512        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
513        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
514        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
515        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
516        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
517        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
518        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
519        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
520        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
521        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
522        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
523        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
524        'WMIXE','IMG D',&
525 ! 128-254 for use by originating center. NWS/NCEP Table 2 is coded here.
526        'MSLSA','MSLMA','MSLET','LFT X','4LFTX','K X','S X','MCONV','VW SH',&
527        'TSLSA','BVF 2','PV MW','CRAIN','CFRZR','CICEP','CSNOW','SOILW',&
528        'PEVPR','CWORK','U-GWD','V-GWD','PV','COVMZ','COVTZ','COVTM','CLWMR',&
529        'O3MR','GFLUX','CIN','CAPE','TKE','CONDP','CSUSF','CSDSF','CSULF',&
530        'CSDLF','CFNSF','CFNLF','VBDSF','VDDSF','NBDSF','NDDSF','RWMR',&
531        'SNMR','M FLX','LMH','LMV','MLYNO','NLAT','ELON','ICMR','GRMR','GUST',&
532        'LPS X','LPS Y','HGT X','HGT Y','TPFI','TIPD','LTNG','RDRIP','VPTMP','HLCY',&
533        'PROB','PROBN','POP','CPOFP','CPOZP','USTM','VSTM','NCIP','EVBS','EVCW',&
534        'ICWAT','CWDI','VAFTD','DSWRF','DLWRF','UVI','MSTAV','SFEXC','MIXLY','TRANS',&
535        'USWRF','ULWRF','CDLYR','CPRAT','TTDIA','TTRAD','TTPHY','PREIX','TSD1D',&
536        'NLGSP','HPBL','5WAVH','CNWAT','SOTYP','VGTYP','BMIXL','AMIXL','PEVAP',&
537        'SNOHF','5WAVA','MFLUX','DTRF','UTRF','BGRUN','SSRUN','SIPD','O3TOT',&
538        'SNOWC','SNOT','COVTW','LRGHR','CNVHR','CNVMR','SHAHR','SHAMR','VDFHR',&
539        'VDFUA','VDFVA','VDFMR','SWHR','LWHR','CD','FRICV','RI','  '/
540   data table129 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
541        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
542        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
543        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
544        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
545        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
546        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
547        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
548        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
549        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
550        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
551        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
552        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
553        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
554        'WMIXE','IMG D',&
555 ! All NCEP tables use the Table 2 values for the first 127 entries
556 ! 128-254 for Table129
557        'PAOT','PAOP','CWR','FRAIN','FICE','FRIME','CUEFI','TCOND','TCOLW',&
558        'TCOLI','TCOLR','TCOLS','TCOLC','PLPL','HLPL','CEMS','COPD',&
559        'PSIZ','TCWAT','TCICE','WDIF','WSTP','PTAN','PTNN','PTBN','PPAN',&
560        'PPNN','PPBN','PMTC','PMTF','AETMP','AEDPT','AESPH','AEUWD','AEVWD',&
561        'LPMTF','LIPMF','REFZR','REFZI','REFZC','TCLSW','TCOLM','ELRDI',&
562        'TSEC','TSECA','NUM','AEPRS','ICSEV','ICPRB','LAVNI','HAVNI','FLGHT','OZCON',&
563        'OZCAT','VEDH','SIGV','EWGT','CICEL','CIVIS','CIFLT','LAVV','LOVV','USCT',&
564        'VSCT','LAUV','LOUV','TCHP','DBSS','ODHA','OHC','SSHG','SLTFL','DUVB',&
565        'CDUVB','THFLX','UVAR','VVAR','UVVCC','MCLS','LAPP','LOPP','     ','REFO',&
566        'REFD','REFC','SBT22','SBT23','SBT24','SBT25','MINRH','MAXRH','CEIL',&
567        'PBLRE','SBC23','SBC24','RPRAT','SPRAT','FPRAT','IPRAT','UPHL','SURGE',&
568        'ETSRG','RHPW','OZMAX1','OZMAX8','PDMAX1','PDMAX24','MAXREF','MXUPHL','MAXUVV',&
569        'MAXDVV','MAXVIG','RETOP','VRATE','TCSRG20','TCSRG30','TCSRG40','TCSRG50','TCSRG60',&
570        'TCSRG70','TCSRG80','TCSRG90','HINDX','DIFTEN','PSPCP','MAXUW','MAXVW','255'/
571   data table130 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
572        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
573        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
574        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
575        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
576        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
577        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
578        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
579        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
580        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
581        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
582        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
583        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
584        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
585        'WMIXE','IMG D',&
586 ! Table 130    LSM 
587 ! 128-143 not yet assigned
588        '     ','     ','     ','     ','     ','   ','   ','     ','     ',&
589        '     ','     ','     ','     ','     ','     ','     ','SOILW',&
590        'PEVPR','VEGT ','BARET','AVSFT','RADT','SSTOR','LSOIL','EWATR','     ',&
591        'LSPA ','GFLUX','CIN','CAPE','TKE','MXSAL','SOILL','ASNOW','ARAIN',&
592        'GWREC','QREC ','SNOWT','VBDSF','VDDSF','NBDSF','NDDSF','SNFALB',&
593        'RLYRS','M FLX','   ','   ','     ','NLAT','ELON','FLDCAP','ACOND','SNOAG',&
594        'CCOND','LAI','SFCRH','SALBD','    ','    ','NDVI','DRIP','VBSALB','VWSALB',&
595        'NBSALB','NWSALB','FRZR','FROZR','TSNOW','MTERH','   ','SBSNO','EVBS','EVCW',&
596        'VTCIN','VTCAPE','RSMIN','DSWRF','DLWRF','   ','MSTAV','SFEXC','     ','TRANS',&
597        'USWRF','ULWRF','     ','     ','     ','     ','     ','     ','WILT',&
598        'FLDCP','HPBL','SLTYP','CNWAT','SOTYP','VGTYP','BMIXL','AMIXL','PEVAP',&
599        'SNOHF','SMREF','SMDRY','    ','    ','BGRUN','SSRUN','    ','     ',&
600        'SNOWC','SNOT','POROS','SBT112','SBT113','SBT114','SBT115','     ','RCS',&
601        'RCT','RCQ','RCSOL','    ','    ','CD','FRICV','RI','  '/
602   data table131 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
603        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
604        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
605        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
606        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
607        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
608        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
609        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
610        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
611        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
612        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
613        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
614        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
615        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
616        'WMIXE','IMG D',&
617 ! Table 131    NARR
618        'MSLSA','     ','MSLET','LFT X','4LFTX','     ','PRESN','MCONV','VW SH',&
619        '     ','     ','PVMWW','CRAIN','CFRZR','CICEP','CSNOW','SOILW',&
620        'PEVPR','VEGT ','BARET','AVSFT','RADT','SSTOR','LSOIL','EWATR','CLWMR',&
621        '    ','GFLUX','CIN','CAPE','TKE','MXSAL','SOILL','ASNOW','ARAIN',&
622        'GWREC','QREC ','SNOWT','VBDSF','VDDSF','NBDSF','NDDSF','SNFAL',&
623        'RLYRS','M FLX','LMH','LMV','MLYNO','NLAT','ELON','ICMR','ACOND','SNOAG',&
624        'CCOND','LAI  ','SFCRH','SALBD','    ','    ','NDVI','DRIP','LANDN','HLCY',&
625        'NLATN','ELONN','   ','CPOFP','     ','USTM','VSTM','SBSNO','EVBS','EVCW',&
626        '     ','APCPN','RSMIN','DSWRF','DLWRF','ACPCP','MSTAV','SFEXC','     ','TRANS',&
627        'USWRF','ULWRF','CDLYR','CPRAT','     ','TTRAD','     ','HGTN ','WILT ',&
628        'FLDCP','HPBL','SLTYP','CNWAT','SOTYP','VGTYP','BMIXL','AMIXL','PEVAP',&
629        'SNOHF','SMREF','SMDRY','WVINC','WCINC','BGRUN','SSRUN','    ','WVCON',&
630        'SNOWC','SNOT','POROS','WCCON','WVUFL','WVVFL','WCUFL','WCVFL','RCS  ',&
631        'RCT','RCQ','RCSOL','SWHR','LWHR','CD','FRICV','RI','  '/
632   data table132 /'PRES','PRMSL','PTEND','PVORT','ICAHT','GP','HGT','DIST',&
633        'HSTDV','TOZNE','TMP','VTMP','POT','EPOT','T MAX','T MIN','DPT',&
634        'DEPR','LAPR','VIS','RDSP1','RDSP2','RDSP3','PLI','TMP A','PRESA',&
635        'GP A','WVSP1','WVSP2','WVSP3','WDIR','WIND','U GRD','V GRD','STRM',&
636        'V POT','MNTSF','SGCVV','V VEL','DZDT','ABS V','ABD D','REL V','REL D',&
637        'VUCSH','VVCSG','DIR C','SP C','UOGRD','VOGRD','SPF H','R H','MIXR',&
638        'P WAT','VAPP','SAT D','EVP','C ICE','PRATE','TSTM','A PCP','NCPCP',&
639        'ACPCP','SRWEQ','WEASD','SNO D','MIXHT','TTHDP','MTHD','MTH A','T CDC',&
640        'CDCON','L CDC','M CDC','H CDC','C WAT','BLI','SNO C','SNO L','WTMP',&
641        'LAND','DSL M','SFC R','ALBDO','TSOIL','SOILM','VEG','SALTY','DEN',&
642        'WATR','ICE C','ICETK','DICED','SICED','U ICE','V ICE','ICE G','ICE D',&
643        'SNO M','HTSGW','WVDIR','WVHGT','WVPER','SWDIR','SWELL','SWPER','DIRPW',&
644        'PERPW','DIRSW','PERSW','NSWRS','NLWRS','NSWRT','NLWRT','LWAVR','SWAVR',&
645        'GRAD','BRTMP','LWRAD','SWRAD','LHTFL','SHTFL','BLYDP','U FLX','V FLX',&
646        'WMIXE','IMG D',&
647 ! Table 132    NCEP2  originally the same as table 2, but they diverged.
648        'MSLSA','MSLMA','MSLET','LFT X','4LFTX','K X','S X','MCONV','VW SH',&
649        'TSLSA','BVF 2','PV MW','CRAIN','CFRZR','CICEP','CSNOW','SOILW',&
650        'PEVPR','CWORK','U-GWD','V-GWD','PV','     ','     ','     ','MFXDV',&
651        '    ','GFLUX','CIN','CAPE','TKE','CONDP','CSUSF','CSDSF','CSULF',&
652        'CSDLF','CFNSF','CFNLF','VBDSF','VDDSF','NBDSF','NDDSF','USTR',&
653        'VSTR','M FLX','LMH','LMV','SGLYR','NLAT','ELON','UMAS','VMAS','XPRATE',&
654        'LPS X','LPS Y','HGT X','HGT Y','STDZ','STDU','STDV','STDQ','STDTP','CBUW',&
655        'CBVW','CBUQN','CBVQ','CBTW ','CBQW ','CBMZW','CBTZW','CBTMW','STDRH','SDTZ',&
656        'ICWAT','SDTU','SDTV','DSWRF','DLWRF','SDTQ','MSTAV','SFEXC','MIXLY','SDTT',&
657        'USWRF','ULWRF','CDLYR','CPRAT','TTDIA','TTRAD','TTPHY','PREIX','TSD1D',&
658        'NLGSP','SDTRH','5WAVH','CNWAT','PLTRS','RHCLD','BMIXL','AMIXL','PEVAP',&
659        'SNOHF','SNOEV','MFLUX','DTRF','UTRF','BGRUN','SSRUN','    ','O3TOT',&
660        'SNOWC','SNOT','GLCR ','LRGHR','CNVHR','CNVMR','SHAHR','SHAMR','VDFHR',&
661        'VDFUA','VDFVA','VDFMR','SWHR','LWHR','CD','FRICV','RI','  '/
663     end