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