Logo Search packages:      
Sourcecode: grads version File versions  Download package

wgrib.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <math.h>
#include <float.h>
/* 
 * version 1.2.1 of grib headers  w. ebisuzaki 
 *         1.2.2 added access to spectral reference value l. kornblueh
 */

#ifndef INT2
#define INT2(a,b)   ((1-(int) ((unsigned) (a & 0x80) >> 6)) * (int) (((a & 0x7f) << 8) + b))
#endif

#define BDS_LEN(bds)          (ec_large_grib ? len_ec_bds : ((int) ((bds[0]<<16)+(bds[1]<<8)+bds[2])) )

#define BDS_Flag(bds)         (bds[3])

#define BDS_Grid(bds)         ((bds[3] & 128) == 0)
#define BDS_Harmonic(bds)     (bds[3] & 128)

#define BDS_Packing(bds)      ((bds[3] & 64) != 0)
#define BDS_SimplePacking(bds)      ((bds[3] & 64) == 0)
#define BDS_ComplexPacking(bds)     ((bds[3] & 64) != 0)

#define BDS_OriginalType(bds) ((bds[3] & 32) != 0)
#define BDS_OriginalFloat(bds)      ((bds[3] & 32) == 0)
#define BDS_OriginalInt(bds)  ((bds[3] & 32) != 0)

#define BDS_MoreFlags(bds)      ((bds[3] & 16) != 0)
#define BDS_UnusedBits(bds)   ((int) (bds[3] & 15))

#define BDS_BinScale(bds)     INT2(bds[4],bds[5])

#define BDS_RefValue(bds)     (ibm2flt(bds+6))
#define BDS_NumBits(bds)      ((int) bds[10])

#define BDS_Harmonic_RefValue(bds) (ibm2flt(bds+11))

#define BDS_DataStart(bds)      ((int) (11 + BDS_MoreFlags(bds)*3))

/* breaks if BDS_NumBits(bds) == 0 */
/*
#define BDS_NValues(bds)        (((BDS_LEN(bds) - BDS_DataStart(bds))*8 - \
                        BDS_UnusedBits(bds)) / BDS_NumBits(bds))
*/
/*
#define BDS_NValues(bds)        ((BDS_NumBits(bds) == 0) ? 0 : \
                        (((BDS_LEN(bds) - BDS_DataStart(bds))*8 - \
                        BDS_UnusedBits(bds)) / BDS_NumBits(bds)))
*/

#define BDS_P1(bds)           (bds[16] * 256 + bds[17])
#define BDS_P2(bds)           (bds[18] * 256 + bds[19])

/* undefined value -- if bitmap */
#define UNDEFINED       9.999e20

/* version 1.2 of grib headers  w. ebisuzaki */

#define BMS_LEN(bms)          ((bms) == NULL ? 0 : (bms[0]<<16)+(bms[1]<<8)+bms[2])
#define BMS_UnusedBits(bms)   ((bms) == NULL ? 0 : bms[3])
#define BMS_StdMap(bms)       ((bms) == NULL ? 0 : ((bms[4]<<8) + bms[5]))
#define BMS_bitmap(bms)       ((bms) == NULL ? NULL : (bms)+6)
#define BMS_nxny(bms)         ((((bms) == NULL) || BMS_StdMap(bms)) \
      ? 0 : (BMS_LEN(bms)*8 - 48 - BMS_UnusedBits(bms)))
/* cnames_file.c */

/* search order for parameter names
 *
 * #define P_TABLE_FIRST
 * look at external parameter table first
 *
 * otherwise use builtin NCEP-2 or ECMWF-160 first
 */
/* #define P_TABLE_FIRST */

/* search order for external parameter table
 * 1) environment variable GRIBTAB
 * 2) environment variable gribtab
 * 3) the file 'gribtab' in current directory
 */


/* cnames.c */
/* then default values */
char *k5toa(unsigned char *pds);
char *k5_comments(unsigned char *pds);
int setup_user_table(int center, int subcenter, int ptable);


00093 struct ParmTable {
      /* char *name, *comment; */
      char *name, *comment;
};
/* version 1.4.4 of grib headers  w. ebisuzaki */
/* this version is incomplete */
/* 5/00 - dx/dy or di/dj controlled by bit 1 of resolution byte */
/* 8/00 - dx/dy or di/dj for polar and lambert not controlled by res. byte */
/* Added headers for the triangular grid of the gme model of DWD
         Helmut P. Frank, 13.09.2001 */
/* Clean up of triangular grid properties access and added spectral information
         Luis Kornblueh, 27.03.2002 */
/* 8/08 - dx/dy (polar,lambert) controlled by bit 1 of resolution byte */

#ifndef INT3
#define INT3(a,b,c) ((1-(int) ((unsigned) (a & 0x80) >> 6)) * (int) (((a & 127) << 16)+(b<<8)+c))
#endif
#ifndef INT2
#define INT2(a,b)   ((1-(int) ((unsigned) (a & 0x80) >> 6)) * (int) (((a & 127) << 8) + b))
#endif

#ifndef UINT4
#define UINT4(a,b,c,d) ((int) ((a << 24) + (b << 16) + (c << 8) + (d)))
#endif

#ifndef UINT3
#define UINT3(a,b,c) ((int) ((a << 16) + (b << 8) + (c)))
#endif

#ifndef UINT2
#define UINT2(a,b) ((int) ((a << 8) + (b)))
#endif


#define GDS_Len1(gds)         (gds[0])
#define GDS_Len2(gds)         (gds[1])
#define GDS_Len3(gds)         (gds[2])
#define GDS_LEN(gds)          ((int) ((gds[0]<<16)+(gds[1]<<8)+gds[2]))

#define GDS_NV(gds)           (gds[3])
#define GDS_DataType(gds)     (gds[5])

#define GDS_LatLon(gds)       (gds[5] == 0)
#define GDS_Mercator(gds)     (gds[5] == 1)
#define GDS_Gnomonic(gds)     (gds[5] == 2)
#define GDS_Lambert(gds)      (gds[5] == 3)
#define GDS_Gaussian(gds)     (gds[5] == 4)
#define GDS_Polar(gds)        (gds[5] == 5)
#define GDS_RotLL(gds)        (gds[5] == 10)
#define GDS_Harmonic(gds)     (gds[5] == 50)
#define GDS_Triangular(gds)   (gds[5] == 192)
#define GDS_ssEgrid(gds)      (gds[5] == 201)   /* semi-staggered E grid */
#define GDS_fEgrid(gds)       (gds[5] == 202) /* filled E grid */
#define GDS_ss2dEgrid(gds)    (gds[5] == 203) /* semi-staggered E grid 2 d*/
#define GDS_ss2dBgrid(gds)      (gds[5] == 205) /* semi-staggered B grid 2 d*/

#define GDS_has_dy(mode)      ((mode) & 128)
#define GDS_LatLon_nx(gds)    ((int) ((gds[6] << 8) + gds[7]))
#define GDS_LatLon_ny(gds)    ((int) ((gds[8] << 8) + gds[9]))
#define GDS_LatLon_La1(gds)   INT3(gds[10],gds[11],gds[12])
#define GDS_LatLon_Lo1(gds)   INT3(gds[13],gds[14],gds[15])
#define GDS_LatLon_mode(gds)  (gds[16])
#define GDS_LatLon_La2(gds)   INT3(gds[17],gds[18],gds[19])
#define GDS_LatLon_Lo2(gds)   INT3(gds[20],gds[21],gds[22])

#define GDS_LatLon_dx(gds)      (gds[16] & 128 ? INT2(gds[23],gds[24]) : 0)
#define GDS_LatLon_dy(gds)      (gds[16] & 128 ? INT2(gds[25],gds[26]) : 0)
#define GDS_Gaussian_nlat(gds)  ((gds[25]<<8)+gds[26])

#define GDS_LatLon_scan(gds)  (gds[27])

#define GDS_Polar_nx(gds)     (gds[16] & 128 ? ((gds[6] << 8) + gds[7]) : 0)
#define GDS_Polar_ny(gds)     (gds[16] & 128 ? ((gds[8] << 8) + gds[9]) : 0)
#define GDS_Polar_La1(gds)    INT3(gds[10],gds[11],gds[12])
#define GDS_Polar_Lo1(gds)    INT3(gds[13],gds[14],gds[15])
#define GDS_Polar_mode(gds)   (gds[16])
#define GDS_Polar_Lov(gds)    INT3(gds[17],gds[18],gds[19])
#define GDS_Polar_scan(gds)   (gds[27])
#define GDS_Polar_Dx(gds)     INT3(gds[20], gds[21], gds[22])
#define GDS_Polar_Dy(gds)     INT3(gds[23], gds[24], gds[25])
#define GDS_Polar_pole(gds)   ((gds[26] & 128) == 128)

#define GDS_Lambert_nx(gds)   ((gds[6] << 8) + gds[7])
#define GDS_Lambert_ny(gds)   ((gds[8] << 8) + gds[9])
#define GDS_Lambert_La1(gds)  INT3(gds[10],gds[11],gds[12])
#define GDS_Lambert_Lo1(gds)  INT3(gds[13],gds[14],gds[15])
#define GDS_Lambert_mode(gds) (gds[16])
#define GDS_Lambert_Lov(gds)  INT3(gds[17],gds[18],gds[19])
#define GDS_Lambert_dx(gds)   INT3(gds[20],gds[21],gds[22])
#define GDS_Lambert_dy(gds)   INT3(gds[23],gds[24],gds[25])
#define GDS_Lambert_NP(gds)   ((gds[26] & 128) == 0)
#define GDS_Lambert_scan(gds)   (gds[27])
#define GDS_Lambert_Latin1(gds)     INT3(gds[28],gds[29],gds[30])
#define GDS_Lambert_Latin2(gds)     INT3(gds[31],gds[32],gds[33])
#define GDS_Lambert_LatSP(gds)      INT3(gds[34],gds[35],gds[36])
#define GDS_Lambert_LonSP(gds)      INT3(gds[37],gds[37],gds[37])

#define GDS_ssEgrid_n(gds)    UINT2(gds[6],gds[7])
#define GDS_ssEgrid_n_dum(gds)  UINT2(gds[8],gds[9])
#define GDS_ssEgrid_La1(gds)  INT3(gds[10],gds[11],gds[12])
#define GDS_ssEgrid_Lo1(gds)  INT3(gds[13],gds[14],gds[15])
#define GDS_ssEgrid_mode(gds) (gds[16])
#define GDS_ssEgrid_La2(gds)  UINT3(gds[17],gds[18],gds[19])
#define GDS_ssEgrid_Lo2(gds)  UINT3(gds[20],gds[21],gds[22])
#define GDS_ssEgrid_di(gds)   (gds[16] & 128 ? INT2(gds[23],gds[24]) : 0)
#define GDS_ssEgrid_dj(gds)   (gds[16] & 128 ? INT2(gds[25],gds[26]) : 0)
#define GDS_ssEgrid_scan(gds) (gds[27])

#define GDS_fEgrid_n(gds)     UINT2(gds[6],gds[7])
#define GDS_fEgrid_n_dum(gds)   UINT2(gds[8],gds[9])
#define GDS_fEgrid_La1(gds)   INT3(gds[10],gds[11],gds[12])
#define GDS_fEgrid_Lo1(gds)   INT3(gds[13],gds[14],gds[15])
#define GDS_fEgrid_mode(gds)  (gds[16])
#define GDS_fEgrid_La2(gds)   UINT3(gds[17],gds[18],gds[19])
#define GDS_fEgrid_Lo2(gds)   UINT3(gds[20],gds[21],gds[22])
#define GDS_fEgrid_di(gds)    (gds[16] & 128 ? INT2(gds[23],gds[24]) : 0)
#define GDS_fEgrid_dj(gds)    (gds[16] & 128 ? INT2(gds[25],gds[26]) : 0)
#define GDS_fEgrid_scan(gds)  (gds[27])

#define GDS_ss2dEgrid_nx(gds)     UINT2(gds[6],gds[7])
#define GDS_ss2dEgrid_ny(gds)     UINT2(gds[8],gds[9])
#define GDS_ss2dEgrid_La1(gds)    INT3(gds[10],gds[11],gds[12])
#define GDS_ss2dEgrid_Lo1(gds)    INT3(gds[13],gds[14],gds[15])
#define GDS_ss2dEgrid_mode(gds)   (gds[16])
#define GDS_ss2dEgrid_La2(gds)    INT3(gds[17],gds[18],gds[19])
#define GDS_ss2dEgrid_Lo2(gds)    INT3(gds[20],gds[21],gds[22])
#define GDS_ss2dEgrid_di(gds)     (gds[16] & 128 ? INT2(gds[23],gds[24]) : 0)
#define GDS_ss2dEgrid_dj(gds)     (gds[16] & 128 ? INT2(gds[25],gds[26]) : 0)
#define GDS_ss2dEgrid_scan(gds)   (gds[27])

#define GDS_ss2dBgrid_nx(gds)     UINT2(gds[6],gds[7])
#define GDS_ss2dBgrid_ny(gds)     UINT2(gds[8],gds[9])
#define GDS_ss2dBgrid_La1(gds)    INT3(gds[10],gds[11],gds[12])
#define GDS_ss2dBgrid_Lo1(gds)    INT3(gds[13],gds[14],gds[15])
#define GDS_ss2dBgrid_mode(gds)   (gds[16])
#define GDS_ss2dBgrid_La2(gds)    INT3(gds[17],gds[18],gds[19])
#define GDS_ss2dBgrid_Lo2(gds)    INT3(gds[20],gds[21],gds[22])
#define GDS_ss2dBgrid_di(gds)     (gds[16] & 128 ? INT2(gds[23],gds[24]) : 0)
#define GDS_ss2dBgrid_dj(gds)     (gds[16] & 128 ? INT2(gds[25],gds[26]) : 0)
#define GDS_ss2dBgrid_scan(gds)   (gds[27]) 


#define GDS_Merc_nx(gds)      UINT2(gds[6],gds[7])
#define GDS_Merc_ny(gds)      UINT2(gds[8],gds[9])
#define GDS_Merc_La1(gds)     INT3(gds[10],gds[11],gds[12])
#define GDS_Merc_Lo1(gds)     INT3(gds[13],gds[14],gds[15])
#define GDS_Merc_mode(gds)    (gds[16])
#define GDS_Merc_La2(gds)     INT3(gds[17],gds[18],gds[19])
#define GDS_Merc_Lo2(gds)     INT3(gds[20],gds[21],gds[22])
#define GDS_Merc_Latin(gds)   INT3(gds[23],gds[24],gds[25])
#define GDS_Merc_scan(gds)    (gds[27])
#define GDS_Merc_dx(gds)        (gds[16] & 128 ? INT3(gds[28],gds[29],gds[30]) : 0)
#define GDS_Merc_dy(gds)        (gds[16] & 128 ? INT3(gds[31],gds[32],gds[33]) : 0)

/* rotated Lat-lon grid */

#define GDS_RotLL_nx(gds)     UINT2(gds[6],gds[7])
#define GDS_RotLL_ny(gds)     UINT2(gds[8],gds[9])
#define GDS_RotLL_La1(gds)    INT3(gds[10],gds[11],gds[12])
#define GDS_RotLL_Lo1(gds)    INT3(gds[13],gds[14],gds[15])
#define GDS_RotLL_mode(gds)   (gds[16])
#define GDS_RotLL_La2(gds)    INT3(gds[17],gds[18],gds[19])
#define GDS_RotLL_Lo2(gds)    INT3(gds[20],gds[21],gds[22])
#define GDS_RotLL_dx(gds)       (gds[16] & 128 ? INT2(gds[23],gds[24]) : 0)
#define GDS_RotLL_dy(gds)       (gds[16] & 128 ? INT2(gds[25],gds[26]) : 0)
#define GDS_RotLL_scan(gds)   (gds[27])
#define GDS_RotLL_LaSP(gds)   INT3(gds[32],gds[33],gds[34])
#define GDS_RotLL_LoSP(gds)   INT3(gds[35],gds[36],gds[37])
#define GDS_RotLL_RotAng(gds) ibm2flt(&(gds[38]))

/* Triangular grid of DWD */
#define GDS_Triangular_ni2(gds)     INT2(gds[6],gds[7])
#define GDS_Triangular_ni3(gds)     INT2(gds[8],gds[9])
#define GDS_Triangular_ni(gds)      INT3(gds[13],gds[14],gds[15])
#define GDS_Triangular_nd(gds)  INT3(gds[10],gds[11],gds[12])

/* Harmonics data */
#define GDS_Harmonic_nj(gds)     ((int) ((gds[6] << 8) + gds[7])) 
#define GDS_Harmonic_nk(gds)     ((int) ((gds[8] << 8) + gds[9])) 
#define GDS_Harmonic_nm(gds)     ((int) ((gds[10] << 8) + gds[11])) 
#define GDS_Harmonic_type(gds)   (gds[12])
#define GDS_Harmonic_mode(gds)   (gds[13])

/* index of NV and PV */
#define GDS_PV(gds)           ((gds[3] == 0) ? -1 : (int) gds[4] - 1)
#define GDS_PL(gds)           ((gds[4] == 255) ? -1 : (int) gds[3] * 4 + (int) gds[4] - 1)

enum Def_NCEP_Table {rean, opn, rean_nowarn, opn_nowarn};

unsigned char *seek_grib(FILE *file, long *pos, long *len_grib, 
        unsigned char *buffer, unsigned int buf_len);

int read_grib(FILE *file, long pos, long len_grib, unsigned char *buffer);

long echack(FILE *file, long pos, long len_grib);

double ibm2flt(unsigned char *ibm);
 
void BDS_unpack(float *flt, unsigned char *bds, unsigned char *bitmap,
        int n_bits, int n, double ref, double scale);

int BDS_NValues(unsigned char *bds);

double int_power(double x, int y);

int flt2ieee(float x, unsigned char *ieee);

int wrtieee(float *array, int n, int header, FILE *output);
int wrtieee_header(unsigned int n, FILE *output);

void levels(int, int, int, int verbose);
 
void PDStimes(int time_range, int p1, int p2, int time_unit);

int missing_points(unsigned char *bitmap, int n);

void EC_ext(unsigned char *pds, char *prefix, char *suffix, int verbose);

int GDS_grid(unsigned char *gds, unsigned char *bds, int *nx, int *ny, 
             long int *nxny);

void GDS_prt_thin_lon(unsigned char *gds);

void GDS_winds(unsigned char *gds, int verbose);

int PDS_date(unsigned char *pds, int option, int verf_time);

int add_time(int *year, int *month, int *day, int *hour, int dtime, int unit);

int verf_time(unsigned char *pds, int *year, int *month, int *day, int *hour);

void print_pds(unsigned char *pds, int print_PDS, int print_PDS10, int verbose);
void print_gds(unsigned char *gds, int print_GDS, int print_GDS10, int verbose);

void ensemble(unsigned char *pds, int mode);
/* version 3.4 of grib headers  w. ebisuzaki */
/* this version is incomplete */
/* add center DWD    Helmut P. Frank */
/* 10/02 add center CPTEC */
/* 29/04/2005 add center CHM   Luiz Claudio M. Fonseca*/
/* 11/2008 add center LAMI   Davide Sacchetti */

#ifndef INT2
#define INT2(a,b)   ((1-(int) ((unsigned) (a & 0x80) >> 6)) * (int) (((a & 0x7f) << 8) + b))
#endif
#ifndef UINT4
#define UINT4(a,b,c,d) ((int) ((a << 24) + (b << 16) + (c << 8) + (d)))
#endif
#ifndef UINT2
#define UINT2(a,b) ((int) ((a << 8) + (b)))
#endif
#define __LEN24(pds)    ((pds) == NULL ? 0 : (int) ((pds[0]<<16)+(pds[1]<<8)+pds[2]))

#define PDS_Len1(pds)         (pds[0])
#define PDS_Len2(pds)         (pds[1])
#define PDS_Len3(pds)         (pds[2])
#define PDS_LEN(pds)          ((int) ((pds[0]<<16)+(pds[1]<<8)+pds[2]))
#define PDS_Vsn(pds)          (pds[3])
#define PDS_Center(pds)       (pds[4])
#define PDS_Model(pds)        (pds[5])
#define PDS_Grid(pds)         (pds[6])
#define PDS_HAS_GDS(pds)      ((pds[7] & 128) != 0)
#define PDS_HAS_BMS(pds)      ((pds[7] & 64) != 0)
#define PDS_PARAM(pds)        (pds[8])
#define PDS_L_TYPE(pds)       (pds[9])
#define PDS_LEVEL1(pds)       (pds[10])
#define PDS_LEVEL2(pds)       (pds[11])

#define PDS_KPDS5(pds)        (pds[8])
#define PDS_KPDS6(pds)        (pds[9])
#define PDS_KPDS7(pds)        ((int) ((pds[10]<<8) + pds[11]))

/* this requires a 32-bit default integer machine */
#define PDS_Field(pds)        ((pds[8]<<24)+(pds[9]<<16)+(pds[10]<<8)+pds[11])

#define PDS_Year(pds)         (pds[12])
#define PDS_Month(pds)        (pds[13])
#define PDS_Day(pds)          (pds[14])
#define PDS_Hour(pds)         (pds[15])
#define PDS_Minute(pds)       (pds[16])
#define PDS_ForecastTimeUnit(pds)   (pds[17])
#define PDS_P1(pds)           (pds[18])
#define PDS_P2(pds)           (pds[19])
#define PDS_TimeRange(pds)    (pds[20])
#define PDS_NumAve(pds)       ((int) ((pds[21]<<8)+pds[22]))
#define PDS_NumMissing(pds)   (pds[23])
#define PDS_Century(pds)      (pds[24])
#define PDS_Subcenter(pds)    (pds[25])
#define PDS_DecimalScale(pds) INT2(pds[26],pds[27])
/* old #define PDS_Year4(pds)   (pds[12] + 100*(pds[24] - (pds[12] != 0))) */
#define PDS_Year4(pds)          (pds[12] + 100*(pds[24] - 1))

/* various centers */
#define NMC             7
#define ECMWF                 98
#define DWD             78
#define CMC             54
#define CPTEC                 46
#define CHM             146
#define LAMI                  200

/* ECMWF Extensions */

#define PDS_EcLocalId(pds)    (PDS_LEN(pds) >= 41 ? (pds[40]) : 0)
#define PDS_EcClass(pds)      (PDS_LEN(pds) >= 42 ? (pds[41]) : 0)
#define PDS_EcType(pds)       (PDS_LEN(pds) >= 43 ? (pds[42]) : 0)
#define PDS_EcStream(pds)     (PDS_LEN(pds) >= 45 ? (INT2(pds[43], pds[44])) : 0)

#define PDS_EcENS(pds)        (PDS_LEN(pds) >= 52 && pds[40] == 1 && \
                        pds[43] * 256 + pds[44] == 1035 && pds[50] != 0)
#define PDS_EcFcstNo(pds)     (pds[49])
#define PDS_EcNoFcst(pds)     (pds[50])

#define PDS_Ec16Version(pds)  (pds + 45)
#define PDS_Ec16Number(pds)   (PDS_EcLocalId(pds) == 16 ? UINT2(pds[49],pds[50]) : 0)
#define PDS_Ec16SysNum(pds)   (PDS_EcLocalId(pds) == 16 ? UINT2(pds[51],pds[52]) : 0)
#define PDS_Ec16MethodNum(pds)      (PDS_EcLocalId(pds) == 16 ? UINT2(pds[53],pds[54]) : 0)
#define PDS_Ec16VerfMon(pds)  (PDS_EcLocalId(pds) == 16 ? UINT4(pds[55],pds[56],pds[57],pds[58]) : 0)
#define PDS_Ec16AvePeriod(pds)      (PDS_EcLocalId(pds) == 16 ? pds[59] : 0)
#define PDS_Ec16FcstMon(pds)  (PDS_EcLocalId(pds) == 16 ? UINT2(pds[60],pds[61]) : 0)

/* NCEP Extensions */

#define PDS_NcepENS(pds)      (PDS_LEN(pds) >= 44 && pds[25] == 2 && pds[40] == 1)
#define PDS_NcepFcstType(pds) (pds[41])
#define PDS_NcepFcstNo(pds)   (pds[42])
#define PDS_NcepFcstProd(pds) (pds[43])

/* time units */

#define MINUTE  0
#define HOUR    1
#define DAY     2
#define MONTH   3
#define YEAR    4
#define DECADE  5
#define NORMAL  6
#define CENTURY 7
#define HOURS3  10
#define HOURS6  11
#define HOURS12  12
#define MINUTES15 13
#define MINUTES30 14
#define SECOND  254



#define VERSION "v1.8.0.13f (3-10) Wesley Ebisuzaki\n\t\tDWD-tables 2,201-205 (11-28-2005) Helmut P. Frank\n\t\tspectral: Luis Kornblueh (MPI)"

#define CHECK_GRIB
/* #define DEBUG */

/*
 * wgrib.c is placed into the public domain.  While you could
 * legally do anything you want with the code, telling the world
 * that you wrote it would be uncool.  Selling it would be really
 * uncool.  The code was originally written for NMC/NCAR Reanalysis 
 * and handles most GRIB files except for the ECMWF spectral files.
 * (ECMWF's spectral->grid code are copyrighted and in FORTRAN.)
 * The code, as usual, is not waranteed to be fit for any purpose 
 * what so ever.  However, wgrib is operational NCEP code, so it
 * better work for our files.
 */

/*
 * wgrib.c extract/inventory grib records
 *
 *                              Wesley Ebisuzaki
 *
 * See Changes for update information
 *
 */

/*
 * MSEEK = I/O buffer size for seek_grib
 */

#define MSEEK 1024
#define BUFF_ALLOC0     40000


#ifndef min
#define min(a,b)  ((a) < (b) ? (a) : (b))
#define max(a,b)  ((a) < (b) ? (b) : (a))
#endif

#ifndef DEF_T62_NCEP_TABLE
#define DEF_T62_NCEP_TABLE    rean
#endif
enum Def_NCEP_Table def_ncep_table = DEF_T62_NCEP_TABLE;
int minute = 0;
int ncep_ens = 0;
int cmc_eq_ncep = 0;
int ec_large_grib = 0, len_ec_bds;

int main(int argc, char **argv) {

    unsigned char *buffer;
    float *array;
    double temp, rmin, rmax;
    int i, nx, ny, file_arg;
    long int len_grib, nxny, buffer_size, n_dump, count = 1;
    long unsigned pos = 0;
    unsigned char *msg, *pds, *gds, *bms, *bds, *pointer;
    FILE *input, *dump_file = NULL;
    char line[2000];
    enum {BINARY, TEXT, IEEE, GRIB, NONE} output_type = NONE;
    enum {DUMP_ALL, DUMP_RECORD, DUMP_POSITION, DUMP_LIST, INVENTORY} 
      mode = INVENTORY;
    enum {none, dwd, simple} header = simple;

    long int dump = -1;
    int verbose = 0, append = 0, v_time = 0, year_4 = 0, output_PDS_GDS = 0;
    int print_GDS = 0, print_GDS10 = 0, print_PDS = 0, print_PDS10 = 0;
    char *dump_file_name = "dump", open_parm[3];
    int return_code = 0;

    if (argc == 1) {
      fprintf(stderr, "\nPortable Grib decoder for %s etc.\n",
          (def_ncep_table == opn_nowarn || def_ncep_table == opn) ?
          "NCEP Operations" : "NCEP/NCAR Reanalysis");
      fprintf(stderr, "   it slices, dices    %s\n", VERSION);
      fprintf(stderr, "   usage: %s [grib file] [options]\n\n", argv[0]);

      fprintf(stderr, "Inventory/diagnostic-output selections\n");
      fprintf(stderr, "   -s/-v                   short/verbose inventory\n");
      fprintf(stderr, "   -V                      diagnostic output (not inventory)\n");
      fprintf(stderr, "   (none)                  regular inventory\n");

      fprintf(stderr, " Options\n");
      fprintf(stderr, "   -PDS/-PDS10             print PDS in hex/decimal\n");
      fprintf(stderr, "   -GDS/-GDS10             print GDS in hex/decimal\n");
      fprintf(stderr, "   -verf                   print forecast verification time\n");
      fprintf(stderr, "   -ncep_opn/-ncep_rean    default T62 NCEP grib table\n");
      fprintf(stderr, "   -4yr                    print year using 4 digits\n");
      fprintf(stderr, "   -min                    print minutes\n");
      fprintf(stderr, "   -ncep_ens               ensemble info encoded in ncep format\n");

      fprintf(stderr, "Decoding GRIB selection\n");
      fprintf(stderr, "   -d [record number|all]  decode record number\n");
      fprintf(stderr, "   -p [byte position]      decode record at byte position\n");
      fprintf(stderr, "   -i                      decode controlled by stdin (inventory list)\n");
      fprintf(stderr, "   (none)                  no decoding\n");

      fprintf(stderr, " Options\n");
      fprintf(stderr, "   -text/-ieee/-grib/-bin  convert to text/ieee/grib/bin (default)\n");
      fprintf(stderr, "   -nh/-h                  output will have no headers/headers (default)\n");
      fprintf(stderr, "   -dwdgrib                output dwd headers, grib (do not append)\n");
      fprintf(stderr, "   -H                      output will include PDS and GDS (-bin/-ieee only)\n");
      fprintf(stderr, "   -append                 append to output file\n");
      fprintf(stderr, "   -o [file]               output file name, 'dump' is default\n");
      fprintf(stderr, " Misc\n");
      fprintf(stderr, "   -cmc [file]             use NCEP tables for CMC (dangerous)\n");
      exit(8);
    }
    file_arg = 0;
    for (i = 1; i < argc; i++) {
      if (strcmp(argv[i],"-PDS") == 0) {
          print_PDS = 1;
          continue;
      }
      if (strcmp(argv[i],"-PDS10") == 0) {
          print_PDS10 = 1;
          continue;
      }
      if (strcmp(argv[i],"-GDS") == 0) {
          print_GDS = 1;
          continue;
      }
      if (strcmp(argv[i],"-GDS10") == 0) {
          print_GDS10 = 1;
          continue;
      }
      if (strcmp(argv[i],"-v") == 0) {
          verbose = 1;
          continue;
      }
      if (strcmp(argv[i],"-V") == 0) {
          verbose = 2;
          continue;
      }
      if (strcmp(argv[i],"-s") == 0) {
          verbose = -1;
          continue;
      }
      if (strcmp(argv[i],"-text") == 0) {
          output_type = TEXT;
          continue;
      }
      if (strcmp(argv[i],"-bin") == 0) {
          output_type = BINARY;
          continue;
      }
      if (strcmp(argv[i],"-ieee") == 0) {
          output_type = IEEE;
          continue;
      }
      if (strcmp(argv[i],"-grib") == 0) {
          output_type = GRIB;
          continue;
      }
      if (strcmp(argv[i],"-nh") == 0) {
          header = none;
          continue;
      }
      if (strcmp(argv[i],"-h") == 0) {
          header = simple;
          continue;
      }
      if (strcmp(argv[i],"-dwdgrib") == 0) {
          header = dwd;
          output_type = GRIB;
          continue;
      }
      if (strcmp(argv[i],"-append") == 0) {
          append = 1;
          continue;
      }
      if (strcmp(argv[i],"-verf") == 0) {
          v_time = 1;
          continue;
        }
      if (strcmp(argv[i],"-cmc") == 0) {
          cmc_eq_ncep = 1;
          continue;
        }
      if (strcmp(argv[i],"-d") == 0) {
          if (strcmp(argv[i+1],"all") == 0) {
              mode = DUMP_ALL;
          }
          else {
              dump = atol(argv[i+1]);
              mode = DUMP_RECORD;
          }
          i++;
          if (output_type == NONE) output_type = BINARY;
          continue;
      }
      if (strcmp(argv[i],"-p") == 0) {
          pos = atol(argv[i+1]);
          i++;
          dump = 1;
          if (output_type == NONE) output_type = BINARY;
          mode = DUMP_POSITION;
          continue;
      }
      if (strcmp(argv[i],"-i") == 0) {
          if (output_type == NONE) output_type = BINARY;
          mode = DUMP_LIST;
          continue;
      }
      if (strcmp(argv[i],"-H") == 0) {
          output_PDS_GDS = 1;
          continue;
      }
      if (strcmp(argv[i],"-NH") == 0) {
          output_PDS_GDS = 0;
          continue;
      }
      if (strcmp(argv[i],"-4yr") == 0) {
          year_4 = 1;
          continue;
      }
      if (strcmp(argv[i],"-ncep_opn") == 0) {
          def_ncep_table = opn_nowarn;
          continue;
      }
      if (strcmp(argv[i],"-ncep_rean") == 0) {
          def_ncep_table = rean_nowarn;
          continue;
      }
      if (strcmp(argv[i],"-o") == 0) {
          dump_file_name = argv[i+1];
          i++;
          continue;
      }
      if (strcmp(argv[i],"--v") == 0) {
          printf("wgrib: %s\n", VERSION);
          exit(0);
      }
      if (strcmp(argv[i],"-min") == 0) {
          minute = 1;
          continue;
      }
      if (strcmp(argv[i],"-ncep_ens") == 0) {
          ncep_ens = 1;
          continue;
      }
      if (file_arg == 0) {
          file_arg = i;
      }
      else {
          fprintf(stderr,"argument: %s ????\n", argv[i]);
      }
    }
    if (file_arg == 0) {
      fprintf(stderr,"no GRIB file to process\n");
      exit(8);
    }
    if ((input = fopen(argv[file_arg],"rb")) == NULL) {
        fprintf(stderr,"could not open file: %s\n", argv[file_arg]);
        exit(7);
    }

    if ((buffer = (unsigned char *) malloc(BUFF_ALLOC0)) == NULL) {
      fprintf(stderr,"not enough memory\n");
    }
    buffer_size = BUFF_ALLOC0;

    /* open output file */
    if (mode != INVENTORY) {
      open_parm[0] = append ? 'a' : 'w'; open_parm[1] = 'b'; open_parm[2] = '\0';
      if (output_type == TEXT) open_parm[1] = '\0';

      if ((dump_file = fopen(dump_file_name,open_parm)) == NULL) {
          fprintf(stderr,"could not open dump file\n");
          exit(8);
        }
      if (header == dwd && output_type == GRIB) wrtieee_header(0, dump_file);
    }

    /* skip dump - 1 records */
    for (i = 1; i < dump; i++) {
      msg = seek_grib(input, &pos, &len_grib, buffer, MSEEK);
      if (msg == NULL) {
          fprintf(stderr, "ran out of data or bad file\n");
          exit(8);
      }
      pos += len_grib;
    }
    if (dump > 0) count += dump - 1;
    n_dump = 0;

    for (;;) {
      if (n_dump == 1 && (mode == DUMP_RECORD || mode == DUMP_POSITION)) break;
      if (mode == DUMP_LIST) {
          if (fgets(line,sizeof(line), stdin) == NULL) break;
            line[sizeof(line) - 1] = 0;
            if (sscanf(line,"%ld:%lu:", &count, &pos) != 2) {
            fprintf(stderr,"bad input from stdin\n");
                fprintf(stderr,"   %s\n", line);
              exit(8);
          }
      }

      msg = seek_grib(input, &pos, &len_grib, buffer, MSEEK);
      if (msg == NULL) {
          if (mode == INVENTORY || mode == DUMP_ALL) break;
          fprintf(stderr,"missing GRIB record(s)\n");
          exit(8);
      }

        /* read all whole grib record */
        if (len_grib + msg - buffer > buffer_size) {
            buffer_size = len_grib + msg - buffer + 1000;
            buffer = (unsigned char *) realloc((void *) buffer, buffer_size);
            if (buffer == NULL) {
                fprintf(stderr,"ran out of memory\n");
                exit(8);
            }
        }
        if (read_grib(input, pos, len_grib, buffer) == 0) {
                fprintf(stderr,"error, could not read to end of record %ld\n",count);
                exit(8);
      }

      /* parse grib message */

      msg = buffer;
        pds = (msg + 8);
        pointer = pds + PDS_LEN(pds);
#ifdef DEBUG
      printf("LEN_GRIB= 0x%x\n", len_grib);
      printf("PDS_LEN= 0x%x: at 0x%x\n", PDS_LEN(pds),pds-msg);
#endif
        if (PDS_HAS_GDS(pds)) {
            gds = pointer;
            pointer += GDS_LEN(gds);
#ifdef DEBUG
          printf("GDS_LEN= 0x%x: at 0x%x\n", GDS_LEN(gds), gds-msg);
#endif
        }
        else {
            gds = NULL;
        }
#ifdef DEBUG
        printf("Has BMS=%d\n", PDS_HAS_BMS(pds));
#endif
        if (PDS_HAS_BMS(pds)) {
            bms = pointer;
            pointer += BMS_LEN(bms);
#ifdef DEBUG
          printf("BMS_LEN= 0x%x: at 0x%x\n", BMS_LEN(bms),bms-msg);
#endif
        }
        else {
            bms = NULL;
        }

        bds = pointer;
        pointer += BDS_LEN(bds);


#ifdef DEBUG
      printf("BDS_LEN= 0x%x\n", BDS_LEN(bds));
      printf("END_LEN= 0x%x: at 0x%x\n", 4,pointer-msg);
#endif
      if (pointer-msg+4 != len_grib) {
          fprintf(stderr,"Len of grib message is inconsistent.\n");
      }

        /* end section - "7777" in ascii */
        if (pointer[0] != 0x37 || pointer[1] != 0x37 ||
            pointer[2] != 0x37 || pointer[3] != 0x37) {
            fprintf(stderr,"\n\n    missing end section\n");
            fprintf(stderr, "%2x %2x %2x %2x\n", pointer[0], pointer[1], 
            pointer[2], pointer[3]);
#ifdef DEBUG
          printf("ignoring missing end section\n");
#else
          exit(8);
#endif
        }

      /* figure out size of array */
      if (gds != NULL) {
          GDS_grid(gds, bds, &nx, &ny, &nxny);
      }
      else if (bms != NULL) {
          nxny = nx = BMS_nxny(bms);
          ny = 1;
      }
      else {
          if (BDS_NumBits(bds) == 0) {
                nxny = nx = 1;
                fprintf(stderr,"Missing GDS, constant record .. cannot "
                    "determine number of data points\n");
          }
          else {
              nxny = nx = BDS_NValues(bds);
          }
          ny = 1;
      }
#ifdef CHECK_GRIB
      if (gds && ! GDS_Harmonic(gds)) {
      /* this grib check only works for simple packing */
      /* turn off if harmonic */
          if (BDS_NumBits(bds) != 0) {
              i = BDS_NValues(bds);
              if (bms != NULL) {
                  i += missing_points(BMS_bitmap(bms),nxny);
              }
              if (i != nxny) {
                  fprintf(stderr,"grib header at record %ld: two values of nxny %ld %d\n",
                  count,nxny,i);
                fprintf(stderr,"   LEN %d DataStart %d UnusedBits %d #Bits %d nxny %ld\n",
                  BDS_LEN(bds), BDS_DataStart(bds),BDS_UnusedBits(bds),
                  BDS_NumBits(bds), nxny);
                return_code = 15;
                nxny = nx = i;
                ny = 1;
              }
          }
 
        }
#endif
 
        if (verbose <= 0) {
          printf("%ld:%lu:d=", count, pos);
          PDS_date(pds,year_4,v_time);
          printf(":%s:", k5toa(pds));

            if (verbose == 0) printf("kpds5=%d:kpds6=%d:kpds7=%d:TR=%d:P1=%d:P2=%d:TimeU=%d:",
              PDS_PARAM(pds),PDS_KPDS6(pds),PDS_KPDS7(pds),
              PDS_TimeRange(pds),PDS_P1(pds),PDS_P2(pds),
                PDS_ForecastTimeUnit(pds));
          levels(PDS_KPDS6(pds), PDS_KPDS7(pds),PDS_Center(pds),verbose); printf(":");
          PDStimes(PDS_TimeRange(pds),PDS_P1(pds),PDS_P2(pds),
                PDS_ForecastTimeUnit(pds));
          if (PDS_Center(pds) == ECMWF) EC_ext(pds,"",":",verbose);
          ensemble(pds, verbose);
          printf("NAve=%d",PDS_NumAve(pds));
          if (print_PDS || print_PDS10) print_pds(pds, print_PDS, print_PDS10, verbose);
          if (gds && (print_GDS || print_GDS10)) print_gds(gds, print_GDS, print_GDS10, verbose);
            printf("\n");
       }
       else if (verbose == 1) {
          printf("%ld:%lu:D=", count, pos);
            PDS_date(pds, 1, v_time);
          printf(":%s:", k5toa(pds));
          levels(PDS_KPDS6(pds), PDS_KPDS7(pds), PDS_Center(pds),verbose); printf(":");
            printf("kpds=%d,%d,%d:",
              PDS_PARAM(pds),PDS_KPDS6(pds),PDS_KPDS7(pds));
          PDStimes(PDS_TimeRange(pds),PDS_P1(pds),PDS_P2(pds),
                PDS_ForecastTimeUnit(pds));
          if (PDS_Center(pds) == ECMWF) EC_ext(pds,"",":",verbose);
          ensemble(pds, verbose);
          GDS_winds(gds, verbose);
            printf("\"%s", k5_comments(pds));
          if (print_PDS || print_PDS10) print_pds(pds, print_PDS, print_PDS10, verbose);
          if (gds && (print_GDS || print_GDS10)) print_gds(gds, print_GDS, print_GDS10, verbose);
            printf("\n");
      }
        else if (verbose == 2) {
          printf("rec %ld:%lu:date ", count, pos);
          PDS_date(pds, 1, v_time);
          printf(" %s kpds5=%d kpds6=%d kpds7=%d levels=(%d,%d) grid=%d ", 
              k5toa(pds), PDS_PARAM(pds), PDS_KPDS6(pds), PDS_KPDS7(pds), 
                PDS_LEVEL1(pds), PDS_LEVEL2(pds), PDS_Grid(pds));
              levels(PDS_KPDS6(pds),PDS_KPDS7(pds),PDS_Center(pds),verbose);

          printf(" ");
          if (PDS_Center(pds) == ECMWF) EC_ext(pds,""," ",verbose);
          ensemble(pds, verbose);
          PDStimes(PDS_TimeRange(pds),PDS_P1(pds),PDS_P2(pds),
                 PDS_ForecastTimeUnit(pds));
          if (bms != NULL) 
            printf(" bitmap: %d undef", missing_points(BMS_bitmap(bms),nxny));
            printf("\n  %s=%s\n", k5toa(pds), k5_comments(pds));
      
            printf("  timerange %d P1 %d P2 %d TimeU %d  nx %d ny %d GDS grid %d "
            "num_in_ave %d missing %d\n", 
              PDS_TimeRange(pds),PDS_P1(pds),PDS_P2(pds), 
                PDS_ForecastTimeUnit(pds), nx, ny, 
                gds == NULL ? -1 : GDS_DataType(gds), 
                PDS_NumAve(pds), PDS_NumMissing(pds));

          printf("  center %d subcenter %d process %d Table %d", 
            PDS_Center(pds),PDS_Subcenter(pds),PDS_Model(pds),
                PDS_Vsn(pds));
          GDS_winds(gds, verbose);
          printf("\n");

          if (gds && GDS_LatLon(gds) && nx != -1) 
            printf("  latlon: lat  %f to %f by %f  nxny %ld\n"
                       "          long %f to %f by %f, (%d x %d) scan %d "
                       "mode %d bdsgrid %d\n",
              0.001*GDS_LatLon_La1(gds), 0.001*GDS_LatLon_La2(gds),
              0.001*GDS_LatLon_dy(gds), nxny, 0.001*GDS_LatLon_Lo1(gds),
              0.001*GDS_LatLon_Lo2(gds), 0.001*GDS_LatLon_dx(gds),
              nx, ny, GDS_LatLon_scan(gds), GDS_LatLon_mode(gds),
              BDS_Grid(bds));
          else if (gds && GDS_LatLon(gds) && nx == -1) {
            printf("  thinned latlon: lat  %f to %f by %f  nxny %ld\n"
                       "          long %f to %f, %ld grid pts   (%d x %d) scan %d"
                  " mode %d bdsgrid %d\n",
              0.001*GDS_LatLon_La1(gds), 0.001*GDS_LatLon_La2(gds),
              0.001*GDS_LatLon_dy(gds), nxny, 0.001*GDS_LatLon_Lo1(gds),
              0.001*GDS_LatLon_Lo2(gds),
              nxny, nx, ny, GDS_LatLon_scan(gds), GDS_LatLon_mode(gds),
              BDS_Grid(bds));
              GDS_prt_thin_lon(gds);
          }
          else if (gds && GDS_Gaussian(gds) && nx != -1)
            printf("  gaussian: lat  %f to %f\n"
                       "            long %f to %f by %f, (%d x %d) scan %d"
                  " mode %d bdsgrid %d\n",
              0.001*GDS_LatLon_La1(gds), 0.001*GDS_LatLon_La2(gds),
              0.001*GDS_LatLon_Lo1(gds), 0.001*GDS_LatLon_Lo2(gds), 
              0.001*GDS_LatLon_dx(gds),
              nx, ny, GDS_LatLon_scan(gds), GDS_LatLon_mode(gds),
              BDS_Grid(bds));
          else if (gds && GDS_Gaussian(gds) && nx == -1) {
            printf("  thinned gaussian: lat  %f to %f\n"
                       "          long %f to %f, %ld grid pts   (%d x %d) scan %d"
                  " mode %d bdsgrid %d\n",
              0.001*GDS_LatLon_La1(gds), 0.001*GDS_LatLon_La2(gds),
              0.001*GDS_LatLon_Lo1(gds), 0.001*GDS_LatLon_Lo2(gds),
              nxny, nx, ny, GDS_LatLon_scan(gds), GDS_LatLon_mode(gds),
              BDS_Grid(bds));
              GDS_prt_thin_lon(gds);
          }
          else if (gds && GDS_Polar(gds))
            printf("  polar stereo: Lat1 %f Long1 %f Orient %f\n"
                  "     %s pole (%d x %d) Dx %d Dy %d scan %d mode %d\n",
                0.001*GDS_Polar_La1(gds),0.001*GDS_Polar_Lo1(gds),
                0.001*GDS_Polar_Lov(gds),
                GDS_Polar_pole(gds) == 0 ? "north" : "south", nx,ny,
                GDS_Polar_Dx(gds),GDS_Polar_Dy(gds),
                GDS_Polar_scan(gds), GDS_Polar_mode(gds));
          else if (gds && GDS_Lambert(gds))
            printf("  Lambert Conf: Lat1 %f Lon1 %f Lov %f\n"
                       "      Latin1 %f Latin2 %f LatSP %f LonSP %f\n"
                       "      %s (%d x %d) Dx %f Dy %f scan %d mode %d\n",
                     0.001*GDS_Lambert_La1(gds),0.001*GDS_Lambert_Lo1(gds),
                     0.001*GDS_Lambert_Lov(gds),
                     0.001*GDS_Lambert_Latin1(gds), 0.001*GDS_Lambert_Latin2(gds),
                     0.001*GDS_Lambert_LatSP(gds), 0.001*GDS_Lambert_LonSP(gds),
                      GDS_Lambert_NP(gds) ? "North Pole": "South Pole",
                     GDS_Lambert_nx(gds), GDS_Lambert_ny(gds),
                     0.001*GDS_Lambert_dx(gds), 0.001*GDS_Lambert_dy(gds),
                     GDS_Lambert_scan(gds), GDS_Lambert_mode(gds));
          else if (gds && GDS_Mercator(gds))
            printf("  Mercator: lat  %f to %f by %f km  nxny %ld\n"
                       "          long %f to %f by %f km, (%d x %d) scan %d"
                  " mode %d Latin %f bdsgrid %d\n",
              0.001*GDS_Merc_La1(gds), 0.001*GDS_Merc_La2(gds),
              0.001*GDS_Merc_dy(gds), nxny, 0.001*GDS_Merc_Lo1(gds),
              0.001*GDS_Merc_Lo2(gds), 0.001*GDS_Merc_dx(gds),
              nx, ny, GDS_Merc_scan(gds), GDS_Merc_mode(gds), 
              0.001*GDS_Merc_Latin(gds), BDS_Grid(bds));
          else if (gds && GDS_ssEgrid(gds))
            printf("  Semi-staggered Arakawa E-Grid: lat0 %f lon0 %f nxny %d\n"
                       "    dLat %f dLon %f (%d x %d) scan %d mode %d\n",
              0.001*GDS_ssEgrid_La1(gds), 0.001*GDS_ssEgrid_Lo1(gds), 
                  GDS_ssEgrid_n(gds)*GDS_ssEgrid_n_dum(gds), 
                  0.001*GDS_ssEgrid_dj(gds), 0.001*GDS_ssEgrid_di(gds), 
                  GDS_ssEgrid_Lo2(gds), GDS_ssEgrid_La2(gds),
                  GDS_ssEgrid_scan(gds), GDS_ssEgrid_mode(gds));
            else if (gds && GDS_ss2dEgrid(gds))
                printf("  Semi-staggered Arakawa E-Grid (2D): lat0 %f lon0 %f nxny %d\n"
                       "    dLat %f dLon %f (tlm0d %f tph0d %f) scan %d mode %d\n",
                   0.001*GDS_ss2dEgrid_La1(gds), 0.001*GDS_ss2dEgrid_Lo1(gds),
                   GDS_ss2dEgrid_nx(gds)*GDS_ss2dEgrid_ny(gds),
                   0.001*GDS_ss2dEgrid_dj(gds), 0.001*GDS_ss2dEgrid_di(gds),
                   0.001*GDS_ss2dEgrid_Lo2(gds), 0.001*GDS_ss2dEgrid_La2(gds),
                   GDS_ss2dEgrid_scan(gds), GDS_ss2dEgrid_mode(gds));
            else if (gds && GDS_ss2dBgrid(gds))
                printf("  Semi-staggered Arakawa B-Grid (2D): lat0 %f lon0 %f nxny %d\n"
                       "    dLat %f dLon %f (tlm0d %f tph0d %f) scan %d mode %d\n",
                   0.001*GDS_ss2dBgrid_La1(gds), 0.001*GDS_ss2dBgrid_Lo1(gds),
                   GDS_ss2dBgrid_nx(gds)*GDS_ss2dBgrid_ny(gds),
                   0.001*GDS_ss2dBgrid_dj(gds), 0.001*GDS_ss2dBgrid_di(gds),
                   0.001*GDS_ss2dBgrid_Lo2(gds), 0.001*GDS_ss2dBgrid_La2(gds),
                   GDS_ss2dBgrid_scan(gds), GDS_ss2dBgrid_mode(gds)); 
          else if (gds && GDS_fEgrid(gds)) 
            printf("  filled Arakawa E-Grid: lat0 %f lon0 %f nxny %d\n"
                       "    dLat %f dLon %f (%d x %d) scan %d mode %d\n",
              0.001*GDS_fEgrid_La1(gds), 0.001*GDS_fEgrid_Lo1(gds), 
                  GDS_fEgrid_n(gds)*GDS_fEgrid_n_dum(gds), 
                  0.001*GDS_fEgrid_dj(gds), 0.001*GDS_fEgrid_di(gds), 
                  GDS_fEgrid_Lo2(gds), GDS_fEgrid_La2(gds),
                  GDS_fEgrid_scan(gds), GDS_fEgrid_mode(gds));
          else if (gds && GDS_RotLL(gds))
            printf("  rotated LatLon grid  lat %f to %f  lon %f to %f\n"
                   "    nxny %ld  (%d x %d)  dx %d dy %d  scan %d  mode %d\n"
                   "    transform: south pole lat %f lon %f  rot angle %f\n", 
               0.001*GDS_RotLL_La1(gds), 0.001*GDS_RotLL_La2(gds), 
               0.001*GDS_RotLL_Lo1(gds), 0.001*GDS_RotLL_Lo2(gds),
               nxny, GDS_RotLL_nx(gds), GDS_RotLL_ny(gds),
               GDS_RotLL_dx(gds), GDS_RotLL_dy(gds),
               GDS_RotLL_scan(gds), GDS_RotLL_mode(gds),
               0.001*GDS_RotLL_LaSP(gds), 0.001*GDS_RotLL_LoSP(gds),
               GDS_RotLL_RotAng(gds) );
          else if (gds && GDS_Gnomonic(gds))
            printf("  Gnomonic grid\n");
          else if (gds && GDS_Harmonic(gds))
            printf("  Harmonic (spectral):  pentagonal spectral truncation: nj %d nk %d nm %d\n",
                   GDS_Harmonic_nj(gds), GDS_Harmonic_nk(gds),
                   GDS_Harmonic_nm(gds));
            if (gds && GDS_Harmonic_type(gds) == 1)
              printf("  Associated Legendre polynomials\n");
            else if (gds && GDS_Triangular(gds))
                printf("  Triangular grid:  nd %d ni %d (= 2^%d x 3^%d)\n",
                GDS_Triangular_nd(gds), GDS_Triangular_ni(gds), 
                    GDS_Triangular_ni2(gds), GDS_Triangular_ni3(gds) );
          if (print_PDS || print_PDS10) 
                print_pds(pds, print_PDS, print_PDS10, verbose);
          if (gds && (print_GDS || print_GDS10)) 
                 print_gds(gds, print_GDS, print_GDS10, verbose);
      }

      if (mode != INVENTORY && output_type == GRIB) {
              if (header == dwd) wrtieee_header((int) len_grib, dump_file);
              fwrite((void *) msg, sizeof(char), len_grib, dump_file);
              if (header == dwd) wrtieee_header((int) len_grib, dump_file);
          n_dump++;
      }

      if ((mode != INVENTORY && output_type != GRIB) || verbose > 1) {
          /* decode numeric data */
 
            if ((array = (float *) malloc(sizeof(float) * nxny)) == NULL) {
                fprintf(stderr,"memory problems\n");
                exit(8);
            }

          temp = int_power(10.0, - PDS_DecimalScale(pds));

          BDS_unpack(array, bds, BMS_bitmap(bms), BDS_NumBits(bds), nxny,
                     temp*BDS_RefValue(bds),temp*int_power(2.0, BDS_BinScale(bds)));

          if (verbose > 1) {
            rmin = FLT_MAX;
            rmax = -FLT_MAX;
              for (i = 0; i < nxny; i++) {
                if (fabs(array[i]-UNDEFINED) > 0.0001*UNDEFINED) {
                      rmin = min(rmin,array[i]);
                      rmax = max(rmax,array[i]);
                }
              }
              printf("  min/max data %g %g  num bits %d "
                  " BDS_Ref %g  DecScale %d BinScale %d\n", 
                rmin, rmax, BDS_NumBits(bds), BDS_RefValue(bds),
                PDS_DecimalScale(pds), BDS_BinScale(bds));
          }

          if (mode != INVENTORY && output_type != GRIB) {
            /* dump code */
            if (output_PDS_GDS == 1) {
                /* insert code here */
                  if (output_type == BINARY || output_type == IEEE) {
                  /* write PDS */
                  i = PDS_LEN(pds) + 4;
                      if (header == simple && output_type == BINARY) 
                        fwrite((void *) &i, sizeof(int), 1, dump_file);
                      if (header == simple && output_type == IEEE) wrtieee_header(i, dump_file);
                      fwrite((void *) "PDS ", 1, 4, dump_file);
                      fwrite((void *) pds, 1, i - 4, dump_file);
                      if (header == simple && output_type == BINARY) 
                        fwrite((void *) &i, sizeof(int), 1, dump_file);
                      if (header == simple && output_type == IEEE) wrtieee_header(i, dump_file);

                  /* write GDS */
                  i = (gds) ?  GDS_LEN(gds) + 4 : 4;
                      if (header == simple && output_type == BINARY) 
                        fwrite((void *) &i, sizeof(int), 1, dump_file);
                      if (header == simple && output_type == IEEE) wrtieee_header(i, dump_file);
                      fwrite((void *) "GDS ", 1, 4, dump_file);
                      if (gds) fwrite((void *) gds, 1, i - 4, dump_file);
                      if (header == simple && output_type == BINARY) 
                        fwrite((void *) &i, sizeof(int), 1, dump_file);
                      if (header == simple && output_type == IEEE) wrtieee_header(i, dump_file);
                }
            } 

              if (output_type == BINARY) {
                  i = nxny * sizeof(float);
                  if (header == simple) fwrite((void *) &i, sizeof(int), 1, dump_file);
                  fwrite((void *) array, sizeof(float), nxny, dump_file);
                  if (header == simple) fwrite((void *) &i, sizeof(int), 1, dump_file);
              }
            else if (output_type == IEEE) {
                wrtieee(array, nxny, header, dump_file);
            }
              else if (output_type == TEXT) {
                  /* number of points in grid */
                  if (header == simple) {
                    if (nx <= 0 || ny <= 0 || nxny != nx*ny) {
                            fprintf(dump_file, "%ld %d\n", nxny, 1);
                  }
                  else {
                      fprintf(dump_file, "%d %d\n", nx, ny);
                  }
                }
                  for (i = 0; i < nxny; i++) {
                    fprintf(dump_file,"%g\n", array[i]);
                }
              }
              n_dump++;
          }
          free(array);
          if (verbose > 0) printf("\n");
      }
          
        pos += len_grib;
        count++;
    }

    if (mode != INVENTORY) {
      if (header == dwd && output_type == GRIB) wrtieee_header(0, dump_file);
      if (ferror(dump_file)) {
            fprintf(stderr,"error writing %s\n",dump_file_name);
            exit(8);
      }
    }
    fclose(input);
    return (return_code);
}

void print_pds(unsigned char *pds, int print_PDS, int print_PDS10, int verbose) {
    int i, j;

    j = PDS_LEN(pds);
    if (verbose < 2) {
        if (print_PDS && verbose < 2) {
            printf(":PDS=");
            for (i = 0; i < j; i++) {
                printf("%2.2x", (int) pds[i]);
            }
        }
        if (print_PDS10 && verbose < 2) {
            printf(":PDS10=");
            for (i = 0; i < j; i++) {
                printf(" %d", (int) pds[i]);
            }
        }
    }
    else {
        if (print_PDS) {
            printf("  PDS(1..%d)=",j);
            for (i = 0; i < j; i++) {
                if (i % 20 == 0) printf("\n    %4d:",i+1);
                printf(" %3.2x", (int) pds[i]);
            }
            printf("\n");
        }
        if (print_PDS10) {
            printf("  PDS10(1..%d)=",j);
            for (i = 0; i < j; i++) {
                if (i % 20 == 0) printf("\n    %4d:",i+1);
                printf(" %3d", (int) pds[i]);
            }
            printf("\n");
        }
    }
}

void print_gds(unsigned char *gds, int print_GDS, int print_GDS10, int verbose) {
    int i, j;

    j = GDS_LEN(gds);
    if (verbose < 2) {
        if (print_GDS && verbose < 2) {
            printf(":GDS=");
            for (i = 0; i < j; i++) {
                printf("%2.2x", (int) gds[i]);
            }
        }
        if (print_GDS10 && verbose < 2) {
            printf(":GDS10=");
            for (i = 0; i < j; i++) {
                printf(" %d", (int) gds[i]);
            }
        }
    }
    else {
        if (print_GDS) {
            printf("  GDS(1..%d)=",j);
            for (i = 0; i < j; i++) {
                if (i % 20 == 0) printf("\n    %4d:",i+1);
                printf(" %3.2x", (int) gds[i]);
            }
            printf("\n");
        }
        if (print_GDS10) {
            printf("  GDS10(1..%d)=",j);
            for (i = 0; i < j; i++) {
                if (i % 20 == 0) printf("\n    %4d:",i+1);
                printf(" %3d", (int) gds[i]);
            }
            printf("\n");
        }
    }
}
/*
 * find next grib header
 *
 * file = what do you think?
 * pos = initial position to start looking at  ( = 0 for 1st call)
 *       returns with position of next grib header (units=bytes)
 * len_grib = length of the grib record (bytes)
 * buffer[buf_len] = buffer for reading/writing
 *
 * returns (char *) to start of GRIB header+PDS
 *         NULL if not found
 *
 * adapted from SKGB (Mark Iredell)
 *
 * v1.1 9/94 Wesley Ebisuzaki
 * v1.2 3/96 Wesley Ebisuzaki handles short records at end of file
 * v1.3 8/96 Wesley Ebisuzaki increase NTRY from 3 to 100 for the folks
 *      at Automation decided a 21 byte WMO bulletin header wasn't long 
 *      enough and decided to go to an 8K header.  
 * v1.4 11/10/2001 D. Haalman, looks at entire file, does not try
 *      to read past EOF
 *      3/8/2010 echack added by Brian Doty
 */

#ifndef min
   #define min(a,b)  ((a) < (b) ? (a) : (b))
#endif

#define NTRY 100
/* #define LEN_HEADER_PDS (28+42+100) */
#define LEN_HEADER_PDS (28+8)

extern int ec_large_grib,  len_ec_bds;

unsigned char *seek_grib(FILE *file, long *pos, long *len_grib, 
        unsigned char *buffer, unsigned int buf_len) {

    int i, j, len;
    static int warn_grib2 = 0;
    long length_grib;

    j = 1;
    clearerr(file);
    while ( !feof(file) ) {

        if (fseek(file, *pos, SEEK_SET) == -1) break;
      i = fread(buffer, sizeof (unsigned char), buf_len, file);     
        if (ferror(file)) break;
        len = i - LEN_HEADER_PDS;
     
        for (i = 0; i < len; i++) {
            if (buffer[i] == 'G' && buffer[i+1] == 'R' && buffer[i+2] == 'I'
                && buffer[i+3] == 'B') {
            /* grib edition 1 */
            if (buffer[i+7] == 1) {
                    *pos = i + *pos;
                    *len_grib = length_grib = (buffer[i+4] << 16) + (buffer[i+5] << 8) +
                            buffer[i+6];

                /* small records don't have ECMWF hack */
                if ((length_grib & 0x800000) == 0) { ec_large_grib = 0; return (buffer + i); }

                /* potential for ECMWF hack */
                ec_large_grib = 1;
                *len_grib = echack(file, *pos, length_grib);
                    return (buffer+i);
            }

            /* grib edition 2 */
            else if (buffer[i+7] == 2) {
                if (warn_grib2++ < 5) fprintf(stderr,"grib2 message ignored (use wgrib2)\n");
            }

            }
        }

      if (j++ == NTRY) {
          fprintf(stderr,"found unidentified data \n");
           /* break; // stop seeking after NTRY records */  
        }

      *pos = *pos + (buf_len - LEN_HEADER_PDS);
    }

    *len_grib = 0;
    return (unsigned char *) NULL;
}


/* If the encoded grib record length is long enough, we may have an encoding
   of an even longer record length using the ecmwf hack.  To check for this
   requires getting the length of the binary data section.  To get this requires
   getting the lengths of the various sections before the bds.  To see if those
   sections are there requires checking the flags in the pds.  */

long echack(FILE *file, long pos, long len_grib) {

    int gdsflg, bmsflg, center;
    unsigned int pdslen, gdslen, bmslen, bdslen;
    unsigned char buf[8];
    long len;

    len = len_grib;

    /* Get pdslen */

    if (fseek(file, pos+8, SEEK_SET) == -1) return 0;
    if (fread(buf, sizeof (unsigned char), 8, file) != 8) return 0;
    pdslen = __LEN24(buf);

    center = buf[4];

    /* know that NCEP and CMC do not use echack */
    if (center == NMC || center == CMC) {
      ec_large_grib = 0;
        return len_grib;
    }


    gdsflg = buf[7] & 128;
    bmsflg = buf[7] & 64;

    gdslen=0;
    if (gdsflg) {
        if (fseek(file, pos+8+pdslen, SEEK_SET) == -1) return 0;
        if (fread(buf, sizeof (unsigned char), 3, file) != 3) return 0;
        gdslen = __LEN24(buf);
    }

    /* if there, get length of bms */

    bmslen = 0;
    if (bmsflg) {
       if (fseek(file, pos+8+pdslen+gdslen, SEEK_SET) == -1) return 0;
       if (fread(buf, sizeof (unsigned char), 3, file) != 3) return 0;
       bmslen = __LEN24(buf);
    }

    /* get bds length */

    if (fseek(file, pos+8+pdslen+gdslen+bmslen, SEEK_SET) == -1) return 0;
    if (fread(buf, sizeof (unsigned char), 3, file) != 3) return 0;
    bdslen = __LEN24(buf);

    /* Now we can check if this record is hacked */

    if (bdslen >= 120) {
      /* normal record */
      ec_large_grib = 0;
    }
    else {
        /* ECMWF hack */
        len_grib = (len & 0x7fffff) * 120 - bdslen + 4;
        len_ec_bds = len_grib - (12 + pdslen + gdslen + bmslen);
      ec_large_grib = 1;
    }
    return len_grib;
}

/* ibm2flt       wesley ebisuzaki
 *
 * v1.1 .. faster
 * v1.1 .. if mant == 0 -> quick return
 *
 */


double ibm2flt(unsigned char *ibm) {

      int positive, power;
      unsigned int abspower;
      long int mant;
      double value, exp;

      mant = (ibm[1] << 16) + (ibm[2] << 8) + ibm[3];
        if (mant == 0) return 0.0;

      positive = (ibm[0] & 0x80) == 0;
      power = (int) (ibm[0] & 0x7f) - 64;
      abspower = power > 0 ? power : -power;


      /* calc exp */
      exp = 16.0;
      value = 1.0;
      while (abspower) {
            if (abspower & 1) {
                  value *= exp;
            }
            exp = exp * exp;
            abspower >>= 1;
      }

      if (power < 0) value = 1.0 / value;
      value = value * mant / 16777216.0;
      if (positive == 0) value = -value;
      return value;
}
      
/*
 * read_grib.c
 *
 * reads grib message
 *
 * input: pos, byte position of grib message
 *        len_grib, length of grib message
 * output: *buffer, grib message
 *
 * note: call seek_grib first
 *
 * v1.0 9/94 Wesley Ebisuzaki
 *
 */

int read_grib(FILE *file, long pos, long len_grib, unsigned char *buffer) {

    int i;


    if (fseek(file, pos, SEEK_SET) == -1) {
          return 0;
    }

    i = fread(buffer, sizeof (unsigned char), len_grib, file);
    return (i == len_grib);
}

/*
 * w. ebisuzaki
 *
 *  return x**y
 *
 *
 *  input: double x
 *       int y
 */
double int_power(double x, int y) {

      double value;

      if (y < 0) {
            y = -y;
            x = 1.0 / x;
      }
      value = 1.0;

      while (y) {
            if (y & 1) {
                  value *= x;
            }
            x = x * x;
            y >>= 1;
      }
      return value;
}

/* cnames.c                         Wesley Ebisuzaki
 *
 * returns strings with either variable name or comment field
 * v1.4 4/98
 * reanalysis can use process 180 and subcenter 0
 *
 * Add DWD tables 2, 201, 202, 203      Helmut P. Frank, DWD, FE13
 *                                      Thu Aug 23 09:28:34 GMT 2001
 * add DWD tables 204, 205              H. Frank, 10-19-2005
 * LAMI => DWD                      11/2008 Davide Sacchetti 
 */


extern const  struct ParmTable parm_table_ncep_opn[256];
extern const  struct ParmTable parm_table_ncep_reanal[256];
extern const  struct ParmTable parm_table_nceptab_128[256];
extern const  struct ParmTable parm_table_nceptab_129[256];
extern const  struct ParmTable parm_table_nceptab_130[256];
extern const  struct ParmTable parm_table_nceptab_131[256];
extern const  struct ParmTable parm_table_nceptab_133[256];
extern const  struct ParmTable parm_table_nceptab_140[256];
extern const  struct ParmTable parm_table_nceptab_141[256];
extern const  struct ParmTable parm_table_mdl_nceptab[256];

extern const  struct ParmTable parm_table_ecmwf_128[256];
extern const  struct ParmTable parm_table_ecmwf_129[256];
extern const  struct ParmTable parm_table_ecmwf_130[256];
extern const  struct ParmTable parm_table_ecmwf_131[256];
extern const  struct ParmTable parm_table_ecmwf_132[256];
extern const  struct ParmTable parm_table_ecmwf_133[256];
extern const  struct ParmTable parm_table_ecmwf_140[256];
extern const  struct ParmTable parm_table_ecmwf_150[256];
extern const  struct ParmTable parm_table_ecmwf_151[256];
extern const  struct ParmTable parm_table_ecmwf_160[256];
extern const  struct ParmTable parm_table_ecmwf_162[256];
extern const  struct ParmTable parm_table_ecmwf_170[256];
extern const  struct ParmTable parm_table_ecmwf_171[256];
extern const  struct ParmTable parm_table_ecmwf_172[256];
extern const  struct ParmTable parm_table_ecmwf_173[256];
extern const  struct ParmTable parm_table_ecmwf_174[256];
extern const  struct ParmTable parm_table_ecmwf_180[256];
extern const  struct ParmTable parm_table_ecmwf_190[256];
extern const  struct ParmTable parm_table_ecmwf_200[256];
extern const  struct ParmTable parm_table_ecmwf_210[256];
extern const  struct ParmTable parm_table_ecmwf_211[256];
extern const  struct ParmTable parm_table_ecmwf_228[256];
extern struct ParmTable parm_table_user[256];
extern const  struct ParmTable parm_table_dwd_002[256];
extern const  struct ParmTable parm_table_dwd_201[256];
extern const  struct ParmTable parm_table_dwd_202[256];
extern const  struct ParmTable parm_table_dwd_203[256];
extern const  struct ParmTable parm_table_dwd_204[256];
extern const  struct ParmTable parm_table_dwd_205[256];
extern const  struct ParmTable parm_table_cptec_254[256];

extern enum Def_NCEP_Table def_ncep_table;
extern int cmc_eq_ncep;

/*
 * returns pointer to the parameter table
 */



static const struct ParmTable *Parm_Table(unsigned char *pds) {

    int i, center, subcenter, ptable, process;
    static int missing_count = 0, reanal_opn_count = 0;

    center = PDS_Center(pds);
    subcenter = PDS_Subcenter(pds);
    ptable = PDS_Vsn(pds);

    /* CMC (54) tables look like NCEP tables */
    if (center == CMC && cmc_eq_ncep) center = NMC;

#ifdef P_TABLE_FIRST
    i = setup_user_table(center, subcenter, ptable);
    if (i == 1) return &parm_table_user[0];
#endif
    /* figure out if NCEP opn or reanalysis */
    if (center == NMC && ptable <= 3) {
      if (subcenter == 1) return &parm_table_ncep_reanal[0];
      if (subcenter == 14) return &parm_table_mdl_nceptab[0];
        process = PDS_Model(pds);
      if (subcenter != 0 || (process != 80 && process != 180) || 
            (ptable != 1 && ptable != 2)) 
            return &parm_table_ncep_opn[0];

      /* at this point could be either the opn or reanalysis table */
      if (def_ncep_table == opn_nowarn) return &parm_table_ncep_opn[0];
      if (def_ncep_table == rean_nowarn) return &parm_table_ncep_reanal[0];
        if (reanal_opn_count++ == 0) {
          fprintf(stderr, "Using NCEP %s table, see -ncep_opn, -ncep_rean options\n",
               (def_ncep_table == opn) ?  "opn" : "reanalysis");
      }
        return (def_ncep_table == opn) ?  &parm_table_ncep_opn[0] 
            : &parm_table_ncep_reanal[0];
    }

    if (center == NMC) {
        if (ptable == 128) return &parm_table_nceptab_128[0];
        if (ptable == 129) return &parm_table_nceptab_129[0];
        if (ptable == 130) return &parm_table_nceptab_130[0];
        if (ptable == 131) return &parm_table_nceptab_131[0];
        if (ptable == 132) return &parm_table_ncep_reanal[0];
        if (ptable == 133) return &parm_table_nceptab_133[0];
        if (ptable == 140) return &parm_table_nceptab_140[0];
        if (ptable == 141) return &parm_table_nceptab_141[0];
    }
    if (center == ECMWF) {
        if (ptable == 128) return &parm_table_ecmwf_128[0];
        if (ptable == 129) return &parm_table_ecmwf_129[0];
        if (ptable == 130) return &parm_table_ecmwf_130[0];
        if (ptable == 131) return &parm_table_ecmwf_131[0];
        if (ptable == 132) return &parm_table_ecmwf_132[0];
        if (ptable == 133) return &parm_table_ecmwf_133[0];
        if (ptable == 140) return &parm_table_ecmwf_140[0];
        if (ptable == 150) return &parm_table_ecmwf_150[0];
        if (ptable == 151) return &parm_table_ecmwf_151[0];
        if (ptable == 160) return &parm_table_ecmwf_160[0];
        if (ptable == 162) return &parm_table_ecmwf_162[0];
        if (ptable == 170) return &parm_table_ecmwf_170[0];
        if (ptable == 171) return &parm_table_ecmwf_171[0];
        if (ptable == 172) return &parm_table_ecmwf_172[0];
        if (ptable == 173) return &parm_table_ecmwf_173[0];
        if (ptable == 174) return &parm_table_ecmwf_174[0];
        if (ptable == 180) return &parm_table_ecmwf_180[0];
        if (ptable == 190) return &parm_table_ecmwf_190[0];
        if (ptable == 200) return &parm_table_ecmwf_200[0];
        if (ptable == 210) return &parm_table_ecmwf_210[0];
        if (ptable == 211) return &parm_table_ecmwf_211[0];
        if (ptable == 228) return &parm_table_ecmwf_228[0];
    }
    /* if (center == DWD || center == CHM || center == LAMI) { */
    if (center == DWD || center == CHM) {
        if (ptable ==   2) return &parm_table_dwd_002[0];
        if (ptable == 201) return &parm_table_dwd_201[0];
        if (ptable == 202) return &parm_table_dwd_202[0];
        if (ptable == 203) return &parm_table_dwd_203[0];
        if (ptable == 204) return &parm_table_dwd_204[0];
        if (ptable == 205) return &parm_table_dwd_205[0];
    }
    if (center == CPTEC) {
      if (ptable == 254) return &parm_table_cptec_254[0];
    }

#ifndef P_TABLE_FIRST
    i = setup_user_table(center, subcenter, ptable);
    if (i == 1) return &parm_table_user[0];
#endif

    if ((ptable > 3 || (PDS_PARAM(pds)) > 127) && missing_count++ == 0) {
      fprintf(stderr,
            "\nUndefined parameter table (center %d-%d table %d), using NCEP-opn\n",
            center, subcenter, ptable);
    }
    return &parm_table_ncep_opn[0];
}

/*
 * return name field of PDS_PARAM(pds)
 */

char *k5toa(unsigned char *pds) {

    return (Parm_Table(pds) + PDS_PARAM(pds))->name;
}

/*
 * return comment field of the PDS_PARAM(pds)
 */

char *k5_comments(unsigned char *pds) {

    return (Parm_Table(pds) + PDS_PARAM(pds))->comment;
}

/* 1996                       wesley ebisuzaki
 *
 * Unpack BDS section
 *
 * input: *bits, pointer to packed integer data
 *        *bitmap, pointer to bitmap (undefined data), NULL if none
 *        n_bits, number of bits per packed integer
 *        n, number of data points (includes undefined data)
 *        ref, scale: flt[] = ref + scale*packed_int
 * output: *flt, pointer to output array
 *        undefined values filled with UNDEFINED
 *
 * note: code assumes an integer > 32 bits
 *
 * 7/98 v1.2.1 fix bug for bitmaps and nbit >= 25 found by Larry Brasfield
 * 2/01 v1.2.2 changed jj from long int to double
 * 3/02 v1.2.3 added unpacking extensions for spectral data 
 *             Luis Kornblueh, MPIfM 
 * 7/06 v.1.2.4 fixed some bug complex packed data was not set to undefined
 */

static unsigned int mask[] = {0,1,3,7,15,31,63,127,255};
static unsigned int map_masks[8] = {128, 64, 32, 16, 8, 4, 2, 1};
static double shift[9] = {1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0};

void BDS_unpack(float *flt, unsigned char *bds, unsigned char *bitmap,
      int n_bits, int n, double ref, double scale) {

    unsigned char *bits;

    int i, mask_idx, t_bits, c_bits, j_bits;
    unsigned int j, map_mask, tbits, jmask, bbits;
    double jj;


    if (BDS_ComplexPacking(bds)) {
      fprintf(stderr,"*** Cannot decode complex packed fields n=%d***\n", n);
      exit(8);
      for (i = 0; i < n; i++) {
          *flt++ = UNDEFINED;
      }
      return;
    }

    if (BDS_Harmonic(bds)) {
        bits = bds + 15;
        /* fill in global mean */
        *flt++ = BDS_Harmonic_RefValue(bds);
        n -= 1; 
    }
    else {
        bits = bds + 11;  
    }

    tbits = bbits = 0;

    /* assume integer has 32+ bits */
    if (n_bits <= 25) {
        jmask = (1 << n_bits) - 1;
        t_bits = 0;

        if (bitmap) {
          for (i = 0; i < n; i++) {
            /* check bitmap */
            mask_idx = i & 7;
            if (mask_idx == 0) bbits = *bitmap++;
              if ((bbits & map_masks[mask_idx]) == 0) {
                *flt++ = UNDEFINED;
                continue;
              }

              while (t_bits < n_bits) {
                  tbits = (tbits * 256) + *bits++;
                  t_bits += 8;
              }
              t_bits -= n_bits;
              j = (tbits >> t_bits) & jmask;
              *flt++ = ref + scale*j;
            }
        }
        else {
          for (i = 0; i < n; i++) {
            if (n_bits - t_bits > 8) {
                    tbits = (tbits << 16) | (bits[0] << 8) | (bits[1]);
                bits += 2;
                    t_bits += 16;
            }
                while (t_bits < n_bits) {
                    tbits = (tbits * 256) + *bits++;
                    t_bits += 8;
                }
                t_bits -= n_bits;
                flt[i] = (tbits >> t_bits) & jmask;
            }
          /* at least this vectorizes :) */
          for (i = 0; i < n; i++) {
            flt[i] = ref + scale*flt[i];
          }
        }
    }
    else {
      /* older unoptimized code, not often used */
        c_bits = 8;
        map_mask = 128;
        while (n-- > 0) {
          if (bitmap) {
              j = (*bitmap & map_mask);
              if ((map_mask >>= 1) == 0) {
                map_mask = 128;
                bitmap++;
              }
              if (j == 0) {
                *flt++ = UNDEFINED;
                continue;
              }
          }

          jj = 0.0;
          j_bits = n_bits;
          while (c_bits <= j_bits) {
              if (c_bits == 8) {
                jj = jj * 256.0  + (double) (*bits++);
                j_bits -= 8;
              }
              else {
                jj = (jj * shift[c_bits]) + (double) (*bits & mask[c_bits]);
                bits++;
                j_bits -= c_bits;
                c_bits = 8;
              }
          }
          if (j_bits) {
              c_bits -= j_bits;
              jj = (jj * shift[j_bits]) + (double) ((*bits >> c_bits) & mask[j_bits]);
          }
          *flt++ = ref + scale*jj;
        }
    }
    return;
}

/*
 * convert a float to an ieee single precision number v1.1
 * (big endian)
 *                      Wesley Ebisuzaki
 *
 * bugs: doesn't handle subnormal numbers
 * bugs: assumes length of integer >= 25 bits
 */

int flt2ieee(float x, unsigned char *ieee) {

      int sign, exp;
        unsigned int umant;
      double mant;

      if (x == 0.0) {
            ieee[0] = ieee[1] = ieee[2] = ieee[3] = 0;
            return 0;
      }

      /* sign bit */
      if (x < 0.0) {
            sign = 128;
            x = -x;
      }
      else sign = 0;
      mant = frexp((double) x, &exp);

        /* 2^24 = 16777216 */

      umant = mant * 16777216 + 0.5;
      if (umant >= 16777216) {
            umant = umant / 2;
            exp++;
        }
        /* bit 24 should be a 1 .. not used in ieee format */

      exp = exp - 1 + 127;

      if (exp < 0) {
            /* signed zero */
            ieee[0] = sign;
            ieee[1] = ieee[2] = ieee[3] = 0;
            return 0;
      }
      if (exp > 255) {
            /* signed infinity */
            ieee[0] = sign + 127;
            ieee[1] = 128;
                ieee[2] = ieee[3] = 0;
                return 0;
      }
      /* normal number */

      ieee[0] = sign + (exp >> 1);

        ieee[3] = umant & 255;
        ieee[2] = (umant >> 8) & 255;
        ieee[1] = ((exp & 1) << 7) + ((umant >> 16) & 127);
      return 0;
}


/* wesley ebisuzaki v1.3
 *
 * write ieee file -- big endian format
 *
 * input float *array         data to be written
 *     int n                  size of array
 *     int header       1 for f77 style header 0 for none
 *                      (header is 4 byte header
 *     FILE *output           output file
 *
 * v1.2 7/97 buffered, faster
 * v1.3 2/99 fixed (typo) error in wrtieee_header found by
 *     Bob Farquhar
 */

#define BSIZ 1024*4

int wrtieee(float *array, int n, int header, FILE *output) {

      unsigned long int l;
      int i, nbuf;
      unsigned char buff[BSIZ];
      unsigned char h4[4];

      nbuf = 0;
      if (header) {
            l = n * 4;
            for (i = 0; i < 4; i++) {
                  h4[i] = l & 255;
                  l >>= 8;
            }
            buff[nbuf++] = h4[3];
            buff[nbuf++] = h4[2];
            buff[nbuf++] = h4[1];
            buff[nbuf++] = h4[0];
      }
      for (i = 0; i < n; i++) {
            if (nbuf >= BSIZ) {
                fwrite(buff, 1, BSIZ, output);
                nbuf = 0;
            }
            flt2ieee(array[i], buff + nbuf);
            nbuf += 4;
      }
      if (header) {
            if (nbuf == BSIZ) {
                fwrite(buff, 1, BSIZ, output);
                nbuf = 0;
            }
            buff[nbuf++] = h4[3];
            buff[nbuf++] = h4[2];
            buff[nbuf++] = h4[1];
            buff[nbuf++] = h4[0];
      }
      if (nbuf) fwrite(buff, 1, nbuf, output);
      return 0;
}

/* write a big-endian 4 byte integer .. f77 IEEE  header */

int wrtieee_header(unsigned int n, FILE *output) {
      unsigned h4[4];

      h4[0] = n & 255;
      h4[1] = (n >> 8) & 255;
      h4[2] = (n >> 16) & 255;
      h4[3] = (n >> 24) & 255;

      putc(h4[3],output);
      putc(h4[2],output);
      putc(h4[1],output);
      putc(h4[0],output);

      return 0;
}


/* wesley ebisuzaki v1.0
 *
 * levels.c
 *
 * prints out a simple description of kpds6, kpds7
 *    (level/layer data)
 *  kpds6 = octet 10 of the PDS
 *  kpds7 = octet 11 and 12 of the PDS
 *    (kpds values are from NMC's grib routines)
 *  center = PDS_Center(pds) .. NMC, ECMWF, etc
 *
 * the description of the levels is 
 *   (1) incomplete
 *   (2) include some NMC-only values (>= 200?)
 *
 * v1.1 wgrib v1.7.3.1 updated with new levels
 * v1.2 added new level and new parameter
 * v1.2.1 modified level 117 pv units
 * v1.2.2 corrected level 141
 * v1.2.3 fixed layer 206 (was 205)
 * v1.2.4 layer 210: new wmo defn > NCEP version
 * v1.2.5 updated table 3/2007 to on388
 */

void levels(int kpds6, int kpds7, int center, int verbose) {

      int o11, o12;

      /* octets 11 and 12 */
      o11 = kpds7 / 256;
      o12 = kpds7 % 256;


      switch (kpds6) {

      case 1: printf("sfc");
            break;
      case 2: printf("cld base");
            break;
      case 3: printf("cld top");
            break;
      case 4: printf("0C isotherm");
            break;
      case 5: printf("cond lev");
            break;
      case 6: printf("max wind lev");
            break;
      case 7: printf("tropopause");
            break;
      case 8: printf("nom. top");
            break;
      case 9: printf("sea bottom");
            break;
      case 200:
      case 10: printf("atmos col");
            break;

      case 12:
      case 212: printf("low cld bot");
            break;
      case 13:
      case 213: printf("low cld top");
            break;
      case 14:
      case 214: printf("low cld lay");
            break;
      case 20: 
            if (verbose == 2) printf("temp=%fK", kpds7/100.0);
            else printf("T=%fK", kpds7/100.0);
            break;
      case 22:
      case 222: printf("mid cld bot");
            break;
      case 23:
      case 223: printf("mid cld top");
            break;
      case 24:
      case 224: printf("mid cld lay");
            break;
      case 32:
      case 232: printf("high cld bot");
            break;
      case 33:
      case 233: printf("high cld top");
            break;
      case 34:
      case 234: printf("high cld lay");
            break;

      case 201: printf("ocean column");
            break;
      case 204: printf("high trop freezing lvl");
            break;
      case 206: printf("grid-scale cld bot");
            break;
      case 207: printf("grid-scale cld top");
            break;
      case 209: printf("bndary-layer cld bot");
            break;
      case 210: 
                if (center == NMC) printf("bndary-layer cld top");
            else printf("%.2f mb",kpds7*0.01);
            break;
      case 211: printf("bndary-layer cld layer");
            break;
      case 215: printf("cloud ceiling");
            break;
      case 216: printf("Cb base");
            break;
      case 217: printf("Cb top");
            break;
      case 220: printf("planetary boundary layer (from Richardson no.)");
            break;
      case 235: if (kpds7 % 10 == 0)
            printf("%dC ocean isotherm level",kpds7/10);
            else printf("%.1fC ocean isotherm level",kpds7/10.0);
            break;
      case 236: printf("%d-%dm ocean layer",o11*10,o12*10);
            break;
      case 237: printf("ocean mixed layer bot");
            break;
      case 238: printf("ocean isothermal layer bot");
            break;
      case 239: printf("sfc-26C ocean layer");
            break;
      case 240: printf("ocean mixed layer");
            break;
      case 241: printf("ordered sequence of data");
            break;
      case 242: printf("convect-cld bot");
            break;
      case 243: printf("convect-cld top");
            break;
      case 244: printf("convect-cld layer");
            break;
      case 245: printf("lowest level of wet bulb zero");
            break;
      case 246: printf("max e-pot-temp lvl");
            break;
      case 247: printf("equilibrium lvl");
            break;
      case 248: printf("shallow convect-cld bot");
            break;
      case 249: printf("shallow convect-cld top");
            break;
      case 251: printf("deep convect-cld bot");
            break;
      case 252: printf("deep convect-cld top");
            break;
      case 253: printf("lowest bottom level of supercooled liequid water layer");
            break;
      case 254: printf("highest top level of supercooled liquid water layer");
            break;
      case 100: printf("%d mb",kpds7);
            break;
      case 101: printf("%d-%d mb",o11*10,o12*10);
            break;
      case 102: printf("MSL");
            break;
      case 103: printf("%d m above MSL",kpds7);
            break;
      case 104: printf("%d-%d m above msl",o11*100,o12*100);
            break;
      case 105: printf("%d m above gnd",kpds7);
            break;
      case 106: printf("%d-%d m above gnd",o11*100,o12*100);
            break;
      case 107: printf("sigma=%.4f",kpds7/10000.0);
            break;
      case 108: printf("sigma %.2f-%.2f",o11/100.0,o12/100.0);
            break;
      case 109: printf("hybrid lev %d",kpds7);
            break;
      case 110: printf("hybrid %d-%d",o11,o12);
            break;
      case 111: printf("%d cm down",kpds7);
            break;
      case 112: printf("%d-%d cm down",o11,o12);
            break;
      case 113: 
            if (verbose == 2) printf("pot-temp=%dK",kpds7);
            else printf("%dK",kpds7);
            break;
      case 114: printf("%d-%dK",475-o11,475-o12);
            break;
      case 115: printf("%d mb above gnd",kpds7);
            break;
      case 116: printf("%d-%d mb above gnd",o11,o12);
            break;
      case 117: printf("%d pv units",INT2(o11,o12)); /* units are suspect */
            break;
      case 119: printf("%.5f (ETA level)",kpds7/10000.0);
            break;
      case 120: printf("%.2f-%.2f (ETA levels)",o11/100.0,o12/100.0);
            break;
      case 121: printf("%d-%d mb",1100-o11,1100-o12);
            break;
      case 125: printf("%d cm above gnd",kpds7);
            break;
      case 126: 
            if (center == NMC) printf("%.2f mb",kpds7*0.01);
            break;
      case 128: printf("%.3f-%.3f (sigma)",1.1-o11/1000.0, 1.1-o12/1000.0);
            break;
      case 141: printf("%d-%d mb",o11*10,1100-o12);
            break;
      case 160: printf("%d m below sea level",kpds7);
            break;
      default:
            break;
      }
}

/*
 * PDStimes.c   v1.2 wesley ebisuzaki
 *
 * prints something readable for time code in grib file
 *
 * not all cases decoded
 * for NCEP/NCAR Reanalysis
 *
 * v1.2.1 1/99 fixed forecast time unit table
 * v1.2.2 10/01 add time_range = 11 (at DWD)  Helmut P. Frank
 * v1.2.3 10/05 add time units 13 = 15 min, 14 = 30 min, and
 *              time range 13 = nudging analysis, 14 = relabeled forecast
 *              (at DWD), Helmut P. Frank
 */

static char *units[] = {
      "min", "hr", "d", "mon", "yr",
      "decade", "normal", "century", "??", "??", " x3 hours", " x6 hours",
        " x12 hours",
        "x15 min", "x30 min", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", "??", "??", "??", "??", "??", "??", "??", "??", "??",
        "??", " sec"}; 

void PDStimes(int time_range, int p1, int p2, int time_unit) {

      char *unit;
      enum {anal, fcst, unknown} type;
      int fcst_len = 0;

      if (time_unit >= 0 && time_unit <= sizeof(units)/sizeof(char *))
             unit = units[time_unit];
      else unit = "";


        /* change x3/x6/x12 to hours */

        if (time_unit == HOURS3) {
          p1 *= 3; p2 *= 3;
          time_unit = HOUR;
        }
        else if (time_unit == HOURS6) {
          p1 *= 6; p2 *= 6;
          time_unit = HOUR;
        }
        else if (time_unit == HOURS12) {
          p1 *= 12; p2 *= 12;
          time_unit = HOUR;
        }
      else if (time_unit == MINUTES30) {
          p1 *= 30; p2 *= 30;
          time_unit = MINUTE;
        }
      else if (time_unit == MINUTES15) {
          p1 *= 15; p2 *= 15;
          time_unit = MINUTE;
        }
      if (time_unit == MINUTE && p1 % 60 == 0 && p2 % 60 == 0) {
          p1 /= 60; p2 /= 60;
          time_unit = HOUR;
        }

      if (time_unit >= 0 && time_unit <= sizeof(units)/sizeof(char *))
             unit = units[time_unit];
      else unit = "";

      /* figure out if analysis or forecast */
      /* in GRIB, there is a difference between init and uninit analyses */
      /* not case at NMC .. no longer run initialization */
      /* ignore diff between init an uninit analyses */

      switch (time_range) {

      case 0:
      case 1:
      case 113:
      case 114:
      case 118:
            if (p1 == 0) type = anal;
            else {
                  type = fcst;
                  fcst_len = p1;
            }
            break;
      case 10: /* way NMC uses it, should be unknown? */
            type = fcst;
            fcst_len = p1*256 + p2;
            if (fcst_len == 0) type = anal;
            break;

      case 51:
            type = unknown;
            break;
      case 123:
      case 124:
            type = anal;
            break;

      case 135:
            type = anal;
            break;

      default: type = unknown;
            break;
      }

      /* ----------------------------------------------- */

      if (type == anal) printf("anl:");
      else if (type == fcst) printf("%d%s fcst:",fcst_len,unit);


      if (time_range == 123 || time_range == 124) {
            if (p1 != 0) printf("start@%d%s:",p1,unit);
      }


      /* print time range */


      switch (time_range) {

      case 0:
      case 1:
      case 10:
            break;
      case 2: printf("valid %d-%d%s:",p1,p2,unit);
            break;
      case 3: printf("%d-%d%s ave:",p1,p2,unit);
            break;
      case 4: printf("%d-%d%s acc:",p1,p2,unit);
            break;
      case 5: printf("%d-%d%s diff:",p1,p2,unit);
            break;
        case 6: printf("-%d to -%d %s ave:", p1,p2,unit);
                break;
        case 7: printf("-%d to %d %s ave:", p1,p2,unit);
                break;
      case 11: if (p1 > 0) {
                printf("init fcst %d%s:",p1,unit);
            }
            else {
                  printf("time?:");
            }
            break;
      case 13: printf("nudge ana %d%s:",p1,unit);
            break;
      case 14: printf("rel. fcst %d%s:",p1,unit);
            break;
      case 51: if (p1 == 0) {
                /* printf("clim %d%s:",p2,unit); */
                printf("0-%d%s product:ave@1yr:",p2,unit);
            }
            else if (p1 == 1) {
                /* printf("clim (diurnal) %d%s:",p2,unit); */
                printf("0-%d%s product:same-hour,ave@1yr:",p2,unit);
            }
            else {
                printf("clim? p1=%d? %d%s?:",p1,p2,unit);
            }
            break;
      case 113:
      case 123:
            printf("ave@%d%s:",p2,unit);
            break;
      case 114:
      case 124:
            printf("acc@%d%s:",p2,unit);
            break;
      case 115:
            printf("ave of fcst:%d to %d%s:",p1,p2,unit);
            break;
      case 116:
            printf("acc of fcst:%d to %d%s:",p1,p2,unit);
            break;
      case 118: 
            printf("var@%d%s:",p2,unit);
            break;
      case 128:
            printf("%d-%d%s fcst acc:ave@24hr:", p1, p2, unit);
            break;
      case 129:
            printf("%d-%d%s fcst acc:ave@%d%s:", p1, p2, unit, p2-p1,unit);
            break;
      case 130:
            printf("%d-%d%s fcst ave:ave@24hr:", p1, p2, unit);
            break;
      case 131:
            printf("%d-%d%s fcst ave:ave@%d%s:", p1, p2, unit,p2-p1,unit);
            break;
            /* for CFS */
      case 132:
            printf("%d-%d%s anl:ave@1yr:", p1, p2, unit);
            break;
      case 133:
            printf("%d-%d%s fcst:ave@1yr:", p1, p2, unit);
            break;
      case 134:
            printf("%d-%d%s fcst-anl:rms@1yr:", p1, p2, unit);
            break;
      case 135:
            printf("%d-%d%s fcst-fcst_mean:rms@1yr:", p1, p2, unit);
            break;
      case 136:
            printf("%d-%d%s anl-anl_mean:rms@1yr:", p1, p2, unit);
            break;
      case 137:
            printf("%d-%d%s fcst acc:ave@6hr:", p1, p2, unit);
            break;
      case 138:
            printf("%d-%d%s fcst ave:ave@6hr:", p1, p2, unit);
            break;
      case 139:
            printf("%d-%d%s fcst acc:ave@12hr:", p1, p2, unit);
            break;
      case 140:
            printf("%d-%d%s fcst ave:ave@12hr:", p1, p2, unit);
            break;
            
      default: printf("time?:");
      }
}

/*
 *  number of missing data points w. ebisuzaki
 *
 *  v1.1: just faster my dear
 *  v1.2: just faster my dear
 *
 */

static int bitsum[256] = {
    8, 7, 7, 6, 7, 6, 6, 5, 7, 6, 6, 5, 6, 5, 5, 4, 
    7, 6, 6, 5, 6, 5, 5, 4, 6, 5, 5, 4, 5, 4, 4, 3, 
    7, 6, 6, 5, 6, 5, 5, 4, 6, 5, 5, 4, 5, 4, 4, 3, 
    6, 5, 5, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 3, 2, 
    7, 6, 6, 5, 6, 5, 5, 4, 6, 5, 5, 4, 5, 4, 4, 3, 
    6, 5, 5, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 3, 2, 
    6, 5, 5, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 3, 2, 
    5, 4, 4, 3, 4, 3, 3, 2, 4, 3, 3, 2, 3, 2, 2, 1, 
    7, 6, 6, 5, 6, 5, 5, 4, 6, 5, 5, 4, 5, 4, 4, 3, 
    6, 5, 5, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 3, 2, 
    6, 5, 5, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 3, 2, 
    5, 4, 4, 3, 4, 3, 3, 2, 4, 3, 3, 2, 3, 2, 2, 1, 
    6, 5, 5, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 3, 3, 2, 
    5, 4, 4, 3, 4, 3, 3, 2, 4, 3, 3, 2, 3, 2, 2, 1, 
    5, 4, 4, 3, 4, 3, 3, 2, 4, 3, 3, 2, 3, 2, 2, 1, 
    4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0};


int missing_points(unsigned char *bitmap, int n) {

    int count;
    unsigned int tmp;
    if (bitmap == NULL) return 0;

    count = 0;
    while (n >= 8) {
      tmp = *bitmap++;
      n -= 8;
        count += bitsum[tmp];
    }
    tmp = *bitmap | ((1 << (8 - n)) - 1);
    count += bitsum[tmp];

    return count;
}

/*
 * parameter table for NCEP (operations)
 * center = 7, subcenter != 2 parameter table = 1, 2, 3 etc
 * note: see reanalysis parameter table for problems
 * updated 3/2003
 */

const struct ParmTable parm_table_ncep_opn[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"PRES", "Pressure [Pa]"},
      /* 2 */ {"PRMSL", "Pressure reduced to MSL [Pa]"},
      /* 3 */ {"PTEND", "Pressure tendency [Pa/s]"},
      /* 4 */ {"PVORT", "Pot. vorticity [km^2/kg/s]"},
      /* 5 */ {"ICAHT", "ICAO Standard Atmosphere Reference Height [M]"},
      /* 6 */ {"GP", "Geopotential [m^2/s^2]"},
      /* 7 */ {"HGT", "Geopotential height [gpm]"},
      /* 8 */ {"DIST", "Geometric height [m]"},
      /* 9 */ {"HSTDV", "Std dev of height [m]"},
      /* 10 */ {"TOZNE", "Total ozone [Dobson]"},
      /* 11 */ {"TMP", "Temp. [K]"},
      /* 12 */ {"VTMP", "Virtual temp. [K]"},
      /* 13 */ {"POT", "Potential temp. [K]"},
      /* 14 */ {"EPOT", "Pseudo-adiabatic pot. temp. [K]"},
      /* 15 */ {"TMAX", "Max. temp. [K]"},
      /* 16 */ {"TMIN", "Min. temp. [K]"},
      /* 17 */ {"DPT", "Dew point temp. [K]"},
      /* 18 */ {"DEPR", "Dew point depression [K]"},
      /* 19 */ {"LAPR", "Lapse rate [K/m]"},
      /* 20 */ {"VIS", "Visibility [m]"},
      /* 21 */ {"RDSP1", "Radar spectra (1) [non-dim]"},
      /* 22 */ {"RDSP2", "Radar spectra (2) [non-dim]"},
      /* 23 */ {"RDSP3", "Radar spectra (3) [non-dim]"},
      /* 24 */ {"PLI", "Parcel lifted index (to 500 hPa) [K]"},
      /* 25 */ {"TMPA", "Temp. anomaly [K]"},
      /* 26 */ {"PRESA", "Pressure anomaly [Pa]"},
      /* 27 */ {"GPA", "Geopotential height anomaly [gpm]"},
      /* 28 */ {"WVSP1", "Wave spectra (1) [non-dim]"},
      /* 29 */ {"WVSP2", "Wave spectra (2) [non-dim]"},
      /* 30 */ {"WVSP3", "Wave spectra (3) [non-dim]"},
      /* 31 */ {"WDIR", "Wind direction [deg]"},
      /* 32 */ {"WIND", "Wind speed [m/s]"},
      /* 33 */ {"UGRD", "u wind [m/s]"},
      /* 34 */ {"VGRD", "v wind [m/s]"},
      /* 35 */ {"STRM", "Stream function [m^2/s]"},
      /* 36 */ {"VPOT", "Velocity potential [m^2/s]"},
      /* 37 */ {"MNTSF", "Montgomery stream function [m^2/s^2]"},
      /* 38 */ {"SGCVV", "Sigma coord. vertical velocity [/s]"},
      /* 39 */ {"VVEL", "Pressure vertical velocity [Pa/s]"},
      /* 40 */ {"DZDT", "Geometric vertical velocity [m/s]"},
      /* 41 */ {"ABSV", "Absolute vorticity [/s]"},
      /* 42 */ {"ABSD", "Absolute divergence [/s]"},
      /* 43 */ {"RELV", "Relative vorticity [/s]"},
      /* 44 */ {"RELD", "Relative divergence [/s]"},
      /* 45 */ {"VUCSH", "Vertical u shear [/s]"},
      /* 46 */ {"VVCSH", "Vertical v shear [/s]"},
      /* 47 */ {"DIRC", "Direction of current [deg]"},
      /* 48 */ {"SPC", "Speed of current [m/s]"},
      /* 49 */ {"UOGRD", "u of current [m/s]"},
      /* 50 */ {"VOGRD", "v of current [m/s]"},
      /* 51 */ {"SPFH", "Specific humidity [kg/kg]"},
      /* 52 */ {"RH", "Relative humidity [%]"},
      /* 53 */ {"MIXR", "Humidity mixing ratio [kg/kg]"},
      /* 54 */ {"PWAT", "Precipitable water [kg/m^2]"},
      /* 55 */ {"VAPP", "Vapor pressure [Pa]"},
      /* 56 */ {"SATD", "Saturation deficit [Pa]"},
      /* 57 */ {"EVP", "Evaporation [kg/m^2]"},
      /* 58 */ {"CICE", "Cloud Ice [kg/m^2]"},
      /* 59 */ {"PRATE", "Precipitation rate [kg/m^2/s]"},
      /* 60 */ {"TSTM", "Thunderstorm probability [%]"},
      /* 61 */ {"APCP", "Total precipitation [kg/m^2]"},
      /* 62 */ {"NCPCP", "Large scale precipitation [kg/m^2]"},
      /* 63 */ {"ACPCP", "Convective precipitation [kg/m^2]"},
      /* 64 */ {"SRWEQ", "Snowfall rate water equiv. [kg/m^2/s]"},
      /* 65 */ {"WEASD", "Accum. snow [kg/m^2]"},
      /* 66 */ {"SNOD", "Snow depth [m]"},
      /* 67 */ {"MIXHT", "Mixed layer depth [m]"},
      /* 68 */ {"TTHDP", "Transient thermocline depth [m]"},
      /* 69 */ {"MTHD", "Main thermocline depth [m]"},
      /* 70 */ {"MTHA", "Main thermocline anomaly [m]"},
      /* 71 */ {"TCDC", "Total cloud cover [%]"},
      /* 72 */ {"CDCON", "Convective cloud cover [%]"},
      /* 73 */ {"LCDC", "Low level cloud cover [%]"},
      /* 74 */ {"MCDC", "Mid level cloud cover [%]"},
      /* 75 */ {"HCDC", "High level cloud cover [%]"},
      /* 76 */ {"CWAT", "Cloud water [kg/m^2]"},
      /* 77 */ {"BLI", "Best lifted index (to 500 hPa) [K]"},
      /* 78 */ {"SNOC", "Convective snow [kg/m^2]"},
      /* 79 */ {"SNOL", "Large scale snow [kg/m^2]"},
      /* 80 */ {"WTMP", "Water temp. [K]"},
      /* 81 */ {"LAND", "Land cover (land=1;sea=0) [fraction]"},
      /* 82 */ {"DSLM", "Deviation of sea level from mean [m]"},
      /* 83 */ {"SFCR", "Surface roughness [m]"},
      /* 84 */ {"ALBDO", "Albedo [%]"},
      /* 85 */ {"TSOIL", "Soil temp. [K]"},
      /* 86 */ {"SOILM", "Soil moisture content [kg/m^2]"},
      /* 87 */ {"VEG", "Vegetation [%]"},
      /* 88 */ {"SALTY", "Salinity [kg/kg]"},
      /* 89 */ {"DEN", "Density [kg/m^3]"},
      /* 90 */ {"WATR", "Water runoff [kg/m^2]"},
      /* 91 */ {"ICEC", "Ice concentration (ice=1;no ice=0) [fraction]"},
      /* 92 */ {"ICETK", "Ice thickness [m]"},
      /* 93 */ {"DICED", "Direction of ice drift [deg]"},
      /* 94 */ {"SICED", "Speed of ice drift [m/s]"},
      /* 95 */ {"UICE", "u of ice drift [m/s]"},
      /* 96 */ {"VICE", "v of ice drift [m/s]"},
      /* 97 */ {"ICEG", "Ice growth rate [m/s]"},
      /* 98 */ {"ICED", "Ice divergence [/s]"},
      /* 99 */ {"SNOM", "Snow melt [kg/m^2]"},
      /* 100 */ {"HTSGW", "Sig height of wind waves and swell [m]"},
      /* 101 */ {"WVDIR", "Direction of wind waves [deg]"},
      /* 102 */ {"WVHGT", "Sig height of wind waves [m]"},
      /* 103 */ {"WVPER", "Mean period of wind waves [s]"},
      /* 104 */ {"SWDIR", "Direction of swell waves [deg]"},
      /* 105 */ {"SWELL", "Sig height of swell waves [m]"},
      /* 106 */ {"SWPER", "Mean period of swell waves [s]"},
      /* 107 */ {"DIRPW", "Primary wave direction [deg]"},
      /* 108 */ {"PERPW", "Primary wave mean period [s]"},
      /* 109 */ {"DIRSW", "Secondary wave direction [deg]"},
      /* 110 */ {"PERSW", "Secondary wave mean period [s]"},
      /* 111 */ {"NSWRS", "Net short wave (surface) [W/m^2]"},
      /* 112 */ {"NLWRS", "Net long wave (surface) [W/m^2]"},
      /* 113 */ {"NSWRT", "Net short wave (top) [W/m^2]"},
      /* 114 */ {"NLWRT", "Net long wave (top) [W/m^2]"},
      /* 115 */ {"LWAVR", "Long wave [W/m^2]"},
      /* 116 */ {"SWAVR", "Short wave [W/m^2]"},
      /* 117 */ {"GRAD", "Global radiation [W/m^2]"},
      /* 118 */ {"BRTMP", "Brightness temperature [K]"},
      /* 119 */ {"LWRAD", "Radiance with respect to wave no. [W/m/sr]"},
      /* 120 */ {"SWRAD", "Radiance with respect ot wave len. [W/m^3/sr]"},
      /* 121 */ {"LHTFL", "Latent heat flux [W/m^2]"},
      /* 122 */ {"SHTFL", "Sensible heat flux [W/m^2]"},
      /* 123 */ {"BLYDP", "Boundary layer dissipation [W/m^2]"},
      /* 124 */ {"UFLX", "Zonal momentum flux [N/m^2]"},
      /* 125 */ {"VFLX", "Meridional momentum flux [N/m^2]"},
      /* 126 */ {"WMIXE", "Wind mixing energy [J]"},
      /* 127 */ {"IMGD", "Image data []"},
      /* 128 */ {"MSLSA", "Mean sea level pressure (Std Atm) [Pa]"},
      /* 129 */ {"MSLMA", "Mean sea level pressure (MAPS) [Pa]"},
      /* 130 */ {"MSLET", "Mean sea level pressure (ETA model) [Pa]"},
      /* 131 */ {"LFTX", "Surface lifted index [K]"},
      /* 132 */ {"4LFTX", "Best (4-layer) lifted index [K]"},
      /* 133 */ {"KX", "K index [K]"},
      /* 134 */ {"SX", "Sweat index [K]"},
      /* 135 */ {"MCONV", "Horizontal moisture divergence [kg/kg/s]"},
      /* 136 */ {"VWSH", "Vertical speed shear [1/s]"},
      /* 137 */ {"TSLSA", "3-hr pressure tendency (Std Atmos Red) [Pa/s]"},
      /* 138 */ {"BVF2", "Brunt-Vaisala frequency^2 [1/s^2]"},
      /* 139 */ {"PVMW", "Potential vorticity (mass-weighted) [1/s/m]"},
      /* 140 */ {"CRAIN", "Categorical rain [yes=1;no=0]"},
      /* 141 */ {"CFRZR", "Categorical freezing rain [yes=1;no=0]"},
      /* 142 */ {"CICEP", "Categorical ice pellets [yes=1;no=0]"},
      /* 143 */ {"CSNOW", "Categorical snow [yes=1;no=0]"},
      /* 144 */ {"SOILW", "Volumetric soil moisture [fraction]"},
      /* 145 */ {"PEVPR", "Potential evaporation rate [W/m^2]"},
      /* 146 */ {"CWORK", "Cloud work function [J/kg]"},
      /* 147 */ {"U-GWD", "Zonal gravity wave stress [N/m^2]"},
      /* 148 */ {"V-GWD", "Meridional gravity wave stress [N/m^2]"},
      /* 149 */ {"PV", "Potential vorticity [m^2/s/kg]"},
      /* 150 */ {"COVMZ", "Covariance between u and v [m^2/s^2]"},
      /* 151 */ {"COVTZ", "Covariance between u and T [K*m/s]"},
      /* 152 */ {"COVTM", "Covariance between v and T [K*m/s]"},
      /* 153 */ {"CLWMR", "Cloud water [kg/kg]"},
      /* 154 */ {"O3MR", "Ozone mixing ratio [kg/kg]"},
      /* 155 */ {"GFLUX", "Ground heat flux [W/m^2]"},
      /* 156 */ {"CIN", "Convective inhibition [J/kg]"},
      /* 157 */ {"CAPE", "Convective Avail. Pot. Energy [J/kg]"},
      /* 158 */ {"TKE", "Turbulent kinetic energy [J/kg]"},
      /* 159 */ {"CONDP", "Lifted parcel condensation pressure [Pa]"},
      /* 160 */ {"CSUSF", "Clear sky upward solar flux [W/m^2]"},
      /* 161 */ {"CSDSF", "Clear sky downward solar flux [W/m^2]"},
      /* 162 */ {"CSULF", "Clear sky upward long wave flux [W/m^2]"},
      /* 163 */ {"CSDLF", "Clear sky downward long wave flux [W/m^2]"},
      /* 164 */ {"CFNSF", "Cloud forcing net solar flux [W/m^2]"},
      /* 165 */ {"CFNLF", "Cloud forcing net long wave flux [W/m^2]"},
      /* 166 */ {"VBDSF", "Visible beam downward solar flux [W/m^2]"},
      /* 167 */ {"VDDSF", "Visible diffuse downward solar flux [W/m^2]"},
      /* 168 */ {"NBDSF", "Near IR beam downward solar flux [W/m^2]"},
      /* 169 */ {"NDDSF", "Near IR diffuse downward solar flux [W/m^2]"},
      /* 170 */ {"RWMR", "Rain water mixing ratio [kg/kg]"},
      /* 171 */ {"SNMR", "Snow mixing ratio [kg/kg]"},
      /* 172 */ {"MFLX", "Momentum flux [N/m^2]"},
      /* 173 */ {"LMH", "Mass point model surface [non-dim]"},
      /* 174 */ {"LMV", "Velocity point model surface [non-dim]"},
      /* 175 */ {"MLYNO", "Model layer number (from bottom up) [non-dim]"},
      /* 176 */ {"NLAT", "Latitude (-90 to +90) [deg]"},
      /* 177 */ {"ELON", "East longitude (0-360) [deg]"},
      /* 178 */ {"ICMR", "Ice mixing ratio [kg/kg]"},
      /* 179 */ {"GRMR", "Graupel mixing ratio [kg/kg]"},
      /* 180 */ {"GUST", "Surface wind gust [m/s]"},
      /* 181 */ {"LPSX", "x-gradient of log pressure [1/m]"},
      /* 182 */ {"LPSY", "y-gradient of log pressure [1/m]"},
      /* 183 */ {"HGTX", "x-gradient of height [m/m]"},
      /* 184 */ {"HGTY", "y-gradient of height [m/m]"},
      /* 185 */ {"TURB", "Turbulence SIGMET/AIRMET [non-dim]"},
      /* 186 */ {"ICNG", "Icing SIGMET/AIRMET [non-dim]"},
      /* 187 */ {"LTNG", "Lightning [non-dim]"},
      /* 188 */ {"DRIP", "Rate of water dropping from canopy to gnd [kg/m^2]"},
      /* 189 */ {"VPTMP", "Virtual pot. temp. [K]"},
      /* 190 */ {"HLCY", "Storm relative helicity [m^2/s^2]"},
      /* 191 */ {"PROB", "Prob. from ensemble [non-dim]"},
      /* 192 */ {"PROBN", "Prob. from ensemble norm. to clim. expect. [non-dim]"},
      /* 193 */ {"POP", "Prob. of precipitation [%]"},
      /* 194 */ {"CPOFP", "Prob. of frozen precipitation [%]"},
      /* 195 */ {"CPOZP", "Prob. of freezing precipitation [%]"},
      /* 196 */ {"USTM", "u-component of storm motion [m/s]"},
      /* 197 */ {"VSTM", "v-component of storm motion [m/s]"},
      /* 198 */ {"NCIP", "No. concen. ice particles []"},
      /* 199 */ {"EVBS", "Direct evaporation from bare soil [W/m^2]"},
      /* 200 */ {"EVCW", "Canopy water evaporation [W/m^2]"},
      /* 201 */ {"ICWAT", "Ice-free water surface [%]"},
      /* 202 */ {"CWDI", "Convective weather detection index []"},
      /* 203 */ {"VAFTAD", "VAFTAD?? [??]"},
      /* 204 */ {"DSWRF", "Downward short wave flux [W/m^2]"},
      /* 205 */ {"DLWRF", "Downward long wave flux [W/m^2]"},
      /* 206 */ {"UVI", "Ultraviolet index [W/m^2]"},
      /* 207 */ {"MSTAV", "Moisture availability [%]"},
      /* 208 */ {"SFEXC", "Exchange coefficient [(kg/m^3)(m/s)]"},
      /* 209 */ {"MIXLY", "No. of mixed layers next to surface [integer]"},
      /* 210 */ {"TRANS", "Transpiration [W/m^2]"},
      /* 211 */ {"USWRF", "Upward short wave flux [W/m^2]"},
      /* 212 */ {"ULWRF", "Upward long wave flux [W/m^2]"},
      /* 213 */ {"CDLYR", "Non-convective cloud [%]"},
      /* 214 */ {"CPRAT", "Convective precip. rate [kg/m^2/s]"},
      /* 215 */ {"TTDIA", "Temp. tendency by all physics [K/s]"},
      /* 216 */ {"TTRAD", "Temp. tendency by all radiation [K/s]"},
      /* 217 */ {"TTPHY", "Temp. tendency by non-radiation physics [K/s]"},
      /* 218 */ {"PREIX", "Precip index (0.0-1.00) [fraction]"},
      /* 219 */ {"TSD1D", "Std. dev. of IR T over 1x1 deg area [K]"},
      /* 220 */ {"NLGSP", "Natural log of surface pressure [ln(kPa)]"},
      /* 221 */ {"HPBL", "Planetary boundary layer height [m]"},
      /* 222 */ {"5WAVH", "5-wave geopotential height [gpm]"},
      /* 223 */ {"CNWAT", "Plant canopy surface water [kg/m^2]"},
      /* 224 */ {"SOTYP", "Soil type (Zobler) [0..9]"},
      /* 225 */ {"VGTYP", "Vegetation type (as in SiB) [0..13]"},
      /* 226 */ {"BMIXL", "Blackadar's mixing length scale [m]"},
      /* 227 */ {"AMIXL", "Asymptotic mixing length scale [m]"},
      /* 228 */ {"PEVAP", "Pot. evaporation [kg/m^2]"},
      /* 229 */ {"SNOHF", "Snow phase-change heat flux [W/m^2]"},
      /* 230 */ {"5WAVA", "5-wave geopot. height anomaly [gpm]"},
      /* 231 */ {"MFLUX", "Convective cloud mass flux [Pa/s]"},
      /* 232 */ {"DTRF", "Downward total radiation flux [W/m^2]"},
      /* 233 */ {"UTRF", "Upward total radiation flux [W/m^2]"},
      /* 234 */ {"BGRUN", "Baseflow-groundwater runoff [kg/m^2]"},
      /* 235 */ {"SSRUN", "Storm surface runoff [kg/m^2]"},
      /* 236 */ {"SIPD", "Supercooled large droplet (SLD) icing pot. diagn. []"},
      /* 237 */ {"O3TOT", "Total ozone [kg/m^2]"},
      /* 238 */ {"SNOWC", "Snow cover [%]"},
      /* 239 */ {"SNOT", "Snow temp. [K]"},
      /* 240 */ {"COVTW", "Covariance T and w [K*m/s]"},
      /* 241 */ {"LRGHR", "Large scale condensation heating [K/s]"},
      /* 242 */ {"CNVHR", "Deep convective heating [K/s]"},
      /* 243 */ {"CNVMR", "Deep convective moistening [kg/kg/s]"},
      /* 244 */ {"SHAHR", "Shallow convective heating [K/s]"},
      /* 245 */ {"SHAMR", "Shallow convective moistening [kg/kg/s]"},
      /* 246 */ {"VDFHR", "Vertical diffusion heating [K/s]"},
      /* 247 */ {"VDFUA", "Vertical diffusion zonal accel [m/s^2]"},
      /* 248 */ {"VDFVA", "Vertical diffusion meridional accel [m/s^2]"},
      /* 249 */ {"VDFMR", "Vertical diffusion moistening [kg/kg/s]"},
      /* 250 */ {"SWHR", "Solar radiative heating [K/s]"},
      /* 251 */ {"LWHR", "Longwave radiative heating [K/s]"},
      /* 252 */ {"CD", "Drag coefficient [non-dim]"},
      /* 253 */ {"FRICV", "Friction velocity [m/s]"},
      /* 254 */ {"RI", "Richardson number [non-dim]"},
      /* 255 */ {"var255", "undefined"},
};

/*
 * parameter table for the NCEP/NCAR Reanalysis Project
 * center = 7, subcenter = 0/2, parameter table = 1/2
 * in a SNAFU the operational and reanalysis tables diverged
 * and both retained the same parameter table numbers (1,2)
 *
 * some of the Reanalysis files have subcenter=2 while others
 * use subcenter=0  (subcenter field is not standard (7/97))
 *
 * Some ways to tell Reanalysis files from OPN files
 *  Reanalysis: always generated by process 80 - T62 28 level model
 * Original subcenter=0 Reanalysis files had 
 *  2.5x2.5 (144x73) lat-long grid or 192x94 Gaussian grid (PDS grid=255?)
 */

const struct ParmTable parm_table_ncep_reanal[256] = {
   /* 0 */ {"var0", "undefined"},
   /* 1 */ {"PRES", "Pressure [Pa]"},
   /* 2 */ {"PRMSL", "Pressure reduced to MSL [Pa]"},
   /* 3 */ {"PTEND", "Pressure tendency [Pa/s]"},
   /* 4 */ {"var4", "undefined"},
   /* 5 */ {"var5", "undefined"},
   /* 6 */ {"GP", "Geopotential [m^2/s^2]"},
   /* 7 */ {"HGT", "Geopotential height [gpm]"},
   /* 8 */ {"DIST", "Geometric height [m]"},
   /* 9 */ {"HSTDV", "Std dev of height [m]"},
   /* 10 */ {"HVAR", "Variance of height [m^2]"},
   /* 11 */ {"TMP", "Temp. [K]"},
   /* 12 */ {"VTMP", "Virtual temp. [K]"},
   /* 13 */ {"POT", "Potential temp. [K]"},
   /* 14 */ {"EPOT", "Pseudo-adiabatic pot. temp. [K]"},
   /* 15 */ {"TMAX", "Max. temp. [K]"},
   /* 16 */ {"TMIN", "Min. temp. [K]"},
   /* 17 */ {"DPT", "Dew point temp. [K]"},
   /* 18 */ {"DEPR", "Dew point depression [K]"},
   /* 19 */ {"LAPR", "Lapse rate [K/m]"},
   /* 20 */ {"VISIB", "Visibility [m]"},
   /* 21 */ {"RDSP1", "Radar spectra (1) [non-dim]"},
   /* 22 */ {"RDSP2", "Radar spectra (2) [non-dim]"},
   /* 23 */ {"RDSP3", "Radar spectra (3) [non-dim]"},
   /* 24 */ {"var24", "undefined"},
   /* 25 */ {"TMPA", "Temp. anomaly [K]"},
   /* 26 */ {"PRESA", "Pressure anomaly [Pa]"},
   /* 27 */ {"GPA", "Geopotential height anomaly [gpm]"},
   /* 28 */ {"WVSP1", "Wave spectra (1) [non-dim]"},
   /* 29 */ {"WVSP2", "Wave spectra (2) [non-dim]"},
   /* 30 */ {"WVSP3", "Wave spectra (3) [non-dim]"},
   /* 31 */ {"WDIR", "Wind direction [deg]"},
   /* 32 */ {"WIND", "Wind speed [m/s]"},
   /* 33 */ {"UGRD", "u wind [m/s]"},
   /* 34 */ {"VGRD", "v wind [m/s]"},
   /* 35 */ {"STRM", "Stream function [m^2/s]"},
   /* 36 */ {"VPOT", "Velocity potential [m^2/s]"},
   /* 37 */ {"MNTSF", "Montgomery stream function [m^2/s^2]"},
   /* 38 */ {"SGCVV", "Sigma coord. vertical velocity [/s]"},
   /* 39 */ {"VVEL", "Pressure vertical velocity [Pa/s]"},
   /* 40 */ {"DZDT", "Geometric vertical velocity [m/s]"},
   /* 41 */ {"ABSV", "Absolute vorticity [/s]"},
   /* 42 */ {"ABSD", "Absolute divergence [/s]"},
   /* 43 */ {"RELV", "Relative vorticity [/s]"},
   /* 44 */ {"RELD", "Relative divergence [/s]"},
   /* 45 */ {"VUCSH", "Vertical u shear [/s]"},
   /* 46 */ {"VVCSH", "Vertical v shear [/s]"},
   /* 47 */ {"DIRC", "Direction of current [deg]"},
   /* 48 */ {"SPC", "Speed of current [m/s]"},
   /* 49 */ {"UOGRD", "u of current [m/s]"},
   /* 50 */ {"VOGRD", "v of current [m/s]"},
   /* 51 */ {"SPFH", "Specific humidity [kg/kg]"},
   /* 52 */ {"RH", "Relative humidity [%]"},
   /* 53 */ {"MIXR", "Humidity mixing ratio [kg/kg]"},
   /* 54 */ {"PWAT", "Precipitable water [kg/m^2]"},
   /* 55 */ {"VAPP", "Vapor pressure [Pa]"},
   /* 56 */ {"SATD", "Saturation deficit [Pa]"},
   /* 57 */ {"EVP", "Evaporation [kg/m^2]"},
   /* 58 */ {"CICE", "Cloud Ice [kg/kg]"},
   /* 59 */ {"PRATE", "Precipitation rate [kg/m^2/s]"},
   /* 60 */ {"TSTM", "Thunderstorm probability [%]"},
   /* 61 */ {"APCP", "Total precipitation [kg/m^2]"},
   /* 62 */ {"NCPCP", "Large scale precipitation [kg/m^2]"},
   /* 63 */ {"ACPCP", "Convective precipitation [kg/m^2]"},
   /* 64 */ {"SRWEQ", "Snowfall rate water equiv. [kg/m^2/s]"},
   /* 65 */ {"WEASD", "Accum. snow [kg/m^2]"},
   /* 66 */ {"SNOD", "Snow depth [m]"},
   /* 67 */ {"MIXHT", "Mixed layer depth [m]"},
   /* 68 */ {"TTHDP", "Transient thermocline depth [m]"},
   /* 69 */ {"MTHD", "Main thermocline depth [m]"},
   /* 70 */ {"MTHA", "Main thermocline anomaly [m]"},
   /* 71 */ {"TCDC", "Total cloud cover [%]"},
   /* 72 */ {"CDCON", "Convective cloud cover [%]"},
   /* 73 */ {"LCDC", "Low level cloud cover [%]"},
   /* 74 */ {"MCDC", "Mid level cloud cover [%]"},
   /* 75 */ {"HCDC", "High level cloud cover [%]"},
   /* 76 */ {"CWAT", "Cloud water [kg/m^2]"},
   /* 77 */ {"var77", "undefined"},
   /* 78 */ {"SNOC", "Convective snow [kg/m^2]"},
   /* 79 */ {"SNOL", "Large scale snow [kg/m^2]"},
   /* 80 */ {"WTMP", "Water temp. [K]"},
   /* 81 */ {"LAND", "Land-sea mask [1=land; 0=sea]"},
   /* 82 */ {"DSLM", "Deviation of sea level from mean [m]"},
   /* 83 */ {"SFCR", "Surface roughness [m]"},
   /* 84 */ {"ALBDO", "Albedo [%]"},
   /* 85 */ {"TSOIL", "Soil temp. [K]"},
   /* 86 */ {"SOILM", "Soil moisture content [kg/m^2]"},
   /* 87 */ {"VEG", "Vegetation [%]"},
   /* 88 */ {"SALTY", "Salinity [kg/kg]"},
   /* 89 */ {"DEN", "Density [kg/m^3]"},
   /* 90 */ {"RUNOF", "Runoff [kg/m^2]"},
   /* 91 */ {"ICEC", "Ice concentration [ice=1;no ice=0]"},
   /* 92 */ {"ICETK", "Ice thickness [m]"},
   /* 93 */ {"DICED", "Direction of ice drift [deg]"},
   /* 94 */ {"SICED", "Speed of ice drift [m/s]"},
   /* 95 */ {"UICE", "u of ice drift [m/s]"},
   /* 96 */ {"VICE", "v of ice drift [m/s]"},
   /* 97 */ {"ICEG", "Ice growth rate [m/s]"},
   /* 98 */ {"ICED", "Ice divergence [/s]"},
   /* 99 */ {"SNOM", "Snow melt [kg/m^2]"},
   /* 100 */ {"HTSGW", "Sig height of wind waves and swell [m]"},
   /* 101 */ {"WVDIR", "Direction of wind waves [deg]"},
   /* 102 */ {"WVHGT", "Sig height of wind waves [m]"},
   /* 103 */ {"WVPER", "Mean period of wind waves [s]"},
   /* 104 */ {"SWDIR", "Direction of swell waves [deg]"},
   /* 105 */ {"SWELL", "Sig height of swell waves [m]"},
   /* 106 */ {"SWPER", "Mean period of swell waves [s]"},
   /* 107 */ {"DIRPW", "Primary wave direction [deg]"},
   /* 108 */ {"PERPW", "Primary wave mean period [s]"},
   /* 109 */ {"DIRSW", "Secondary wave direction [deg]"},
   /* 110 */ {"PERSW", "Secondary wave mean period [s]"},
   /* 111 */ {"NSWRS", "Net short wave (surface) [W/m^2]"},
   /* 112 */ {"NLWRS", "Net long wave (surface) [W/m^2]"},
   /* 113 */ {"NSWRT", "Net short wave (top) [W/m^2]"},
   /* 114 */ {"NLWRT", "Net long wave (top) [W/m^2]"},
   /* 115 */ {"LWAVR", "Long wave [W/m^2]"},
   /* 116 */ {"SWAVR", "Short wave [W/m^2]"},
   /* 117 */ {"GRAD", "Global radiation [W/m^2]"},
   /* 118 */ {"var118", "undefined"},
   /* 119 */ {"var119", "undefined"},
   /* 120 */ {"var120", "undefined"},
   /* 121 */ {"LHTFL", "Latent heat flux [W/m^2]"},
   /* 122 */ {"SHTFL", "Sensible heat flux [W/m^2]"},
   /* 123 */ {"BLYDP", "Boundary layer dissipation [W/m^2]"},
   /* 124 */ {"UFLX", "Zonal momentum flux [N/m^2]"},
   /* 125 */ {"VFLX", "Meridional momentum flux [N/m^2]"},
   /* 126 */ {"WMIXE", "Wind mixing energy [J]"},
   /* 127 */ {"IMGD", "Image data [integer]"},
   /* 128 */ {"MSLSA", "Mean sea level pressure (Std Atm) [Pa]"},
   /* 129 */ {"MSLMA", "Mean sea level pressure (MAPS) [Pa]"},
   /* 130 */ {"MSLET", "Mean sea level pressure (ETA model) [Pa]"},
   /* 131 */ {"LFTX", "Surface lifted index [K]"},
   /* 132 */ {"4LFTX", "Best (4-layer) lifted index [K]"},
   /* 133 */ {"KX", "K index [K]"},
   /* 134 */ {"SX", "Sweat index [K]"},
   /* 135 */ {"MCONV", "Horizontal moisture divergence [kg/kg/s]"},
   /* 136 */ {"VSSH", "Vertical speed shear [1/s]"},
   /* 137 */ {"TSLSA", "3-hr pressure tendency [Pa/s]"},
   /* 138 */ {"BVF2", "Brunt-Vaisala frequency^2 [1/s^2]"},
   /* 139 */ {"PVMW", "Potential vorticity (mass-weighted) [1/s/m]"},
   /* 140 */ {"CRAIN", "Categorical rain [yes=1;no=0]"},
   /* 141 */ {"CFRZR", "Categorical freezing rain [yes=1;no=0]"},
   /* 142 */ {"CICEP", "Categorical ice pellets [yes=1;no=0]"},
   /* 143 */ {"CSNOW", "Categorical snow [yes=1;no=0]"},
   /* 144 */ {"SOILW", "Volumetric soil moisture [fraction]"},
   /* 145 */ {"PEVPR", "Potential evaporation rate [W/m^2]"},
   /* 146 */ {"CWORK", "Cloud work function [J/kg]"},
   /* 147 */ {"U-GWD", "Zonal gravity wave stress [N/m^2]"},
   /* 148 */ {"V-GWD", "Meridional gravity wave stress [N/m^2]"},
   /* 149 */ {"PV___", "Potential vorticity [m^2/s/kg]"},
   /* 150 */ {"var150", "undefined"},
   /* 151 */ {"var151", "undefined"},
   /* 152 */ {"var152", "undefined"},
   /* 153 */ {"MFXDV", "Moisture flux divergence [gr/gr*m/s/m]"},
   /* 154 */ {"var154", "undefined"},
   /* 155 */ {"GFLUX", "Ground heat flux [W/m^2]"},
   /* 156 */ {"CIN", "Convective inhibition [J/kg]"},
   /* 157 */ {"CAPE", "Convective Avail. Pot. Energy [J/kg]"},
   /* 158 */ {"TKE", "Turbulent kinetic energy [J/kg]"},
   /* 159 */ {"CONDP", "Lifted parcel condensation pressure [Pa]"},
   /* 160 */ {"CSUSF", "Clear sky upward solar flux [W/m^2]"},
   /* 161 */ {"CSDSF", "Clear sky downward solar flux [W/m^2]"},
   /* 162 */ {"CSULF", "Clear sky upward long wave flux [W/m^2]"},
   /* 163 */ {"CSDLF", "Clear sky downward long wave flux [W/m^2]"},
   /* 164 */ {"CFNSF", "Cloud forcing net solar flux [W/m^2]"},
   /* 165 */ {"CFNLF", "Cloud forcing net long wave flux [W/m^2]"},
   /* 166 */ {"VBDSF", "Visible beam downward solar flux [W/m^2]"},
   /* 167 */ {"VDDSF", "Visible diffuse downward solar flux [W/m^2]"},
   /* 168 */ {"NBDSF", "Near IR beam downward solar flux [W/m^2]"},
   /* 169 */ {"NDDSF", "Near IR diffuse downward solar flux [W/m^2]"},
   /* 170 */ {"USTR", "U wind stress [N/m^2]"},
   /* 171 */ {"VSTR", "V wind stress [N/m^2]"},
   /* 172 */ {"MFLX", "Momentum flux [N/m^2]"},
   /* 173 */ {"LMH", "Mass point model surface [integer]"},
   /* 174 */ {"LMV", "Velocity point model surface [integer]"},
   /* 175 */ {"SGLYR", "Nearby model level [integer]"},
   /* 176 */ {"NLAT", "Latitude [deg]"},
   /* 177 */ {"ELON", "Longitude [deg]"},
   /* 178 */ {"UMAS", "Mass weighted u [gm/m*K*s]"},
   /* 179 */ {"VMAS", "Mass weighted v [gm/m*K*s]"},
   /* 180 */ {"XPRATE", "corrected precip [kg/m^2/s]"},
   /* 181 */ {"LPSX", "x-gradient of log pressure [1/m]"},
   /* 182 */ {"LPSY", "y-gradient of log pressure [1/m]"},
   /* 183 */ {"HGTX", "x-gradient of height [m/m]"},
   /* 184 */ {"HGTY", "y-gradient of height [m/m]"},
   /* 185 */ {"STDZ", "Std dev of Geop. hgt. [m]"},
   /* 186 */ {"STDU", "Std dev of zonal wind [m/s]"},
   /* 187 */ {"STDV", "Std dev of meridional wind [m/s]"},
   /* 188 */ {"STDQ", "Std dev of spec. hum. [gm/gm]"},
   /* 189 */ {"STDT", "Std dev of temp. [K]"},
   /* 190 */ {"CBUW", "Covar. u and omega [m/s*Pa/s]"},
   /* 191 */ {"CBVW", "Covar. v and omega [m/s*Pa/s]"},
   /* 192 */ {"CBUQ", "Covar. u and specific hum [m/s*gm/gm]"},
   /* 193 */ {"CBVQ", "Covar. v and specific hum [m/s*gm/gm]"},
   /* 194 */ {"CBTW", "Covar. T and omega [K*Pa/s]"},
   /* 195 */ {"CBQW", "Covar. spec. hum and omega [gm/gm*Pa/s]"},
   /* 196 */ {"CBMZW", "Covar. v and u [m^2/s^2]"},
   /* 197 */ {"CBTZW", "Covar. u and T [K*m/s]"},
   /* 198 */ {"CBTMW", "Covar. v and T [K*m/s]"},
   /* 199 */ {"STDRH", "Std dev of Rel. Hum. [%]"},
   /* 200 */ {"SDTZ", "Std dev of time tend of geop. hgt [m]"},
   /* 201 */ {"ICWAT", "Ice-free water surface [%]"},
   /* 202 */ {"SDTU", "Std dev of time tend of zonal wind [m/s]"},
   /* 203 */ {"SDTV", "Std dev of time tend of merid wind [m/s]"},
   /* 204 */ {"DSWRF", "Downward solar radiation flux [W/m^2]"},
   /* 205 */ {"DLWRF", "Downward long wave flux [W/m^2]"},
   /* 206 */ {"SDTQ", "Std dev of time tend of spec. hum [gm/gm]"},
   /* 207 */ {"MSTAV", "Moisture availability [%]"},
   /* 208 */ {"SFEXC", "Exchange coefficient [kg*m/m^3/s]"},
   /* 209 */ {"MIXLY", "No. of mixed layers next to sfc [integer]"},
   /* 210 */ {"SDTT", "Std dev of time tend of temp. [K]"},
   /* 211 */ {"USWRF", "Upward solar radiation flux [W/m^2]"},
   /* 212 */ {"ULWRF", "Upward long wave flux [W/m^2]"},
   /* 213 */ {"CDLYR", "Non-convective cloud [%]"},
   /* 214 */ {"CPRAT", "Convective precip. rate [kg/m^2/s]"},
   /* 215 */ {"TTDIA", "Temp. tendency by all physics [K/s]"},
   /* 216 */ {"TTRAD", "Temp. tendency by all radiation [K/s]"},
   /* 217 */ {"TTPHY", "Temp. tendency by nonrad physics [K/s]"},
   /* 218 */ {"PREIX", "Precipitation index [fraction]"},
   /* 219 */ {"TSD1D", "Std dev of IR T over 1x1 deg area [K]"},
   /* 220 */ {"NLSGP", "Natural log of surface pressure [ln(kPa)]"},
   /* 221 */ {"SDTRH", "Std dev of time tend of rel hum [%]"},
   /* 222 */ {"5WAVH", "5-wave geopotential height [gpm]"},
   /* 223 */ {"CNWAT", "Plant canopy surface water [kg/m^2]"},
   /* 224 */ {"PLTRS", "Max. stomato plant resistance [s/m]"},
   /* 225 */ {"RHCLD", "RH-type cloud cover [%]"},
   /* 226 */ {"BMIXL", "Blackadar's mixing length scale [m]"},
   /* 227 */ {"AMIXL", "Asymptotic mixing length scale [m]"},
   /* 228 */ {"PEVAP", "Pot. evaporation [kg/m^2]"},
   /* 229 */ {"SNOHF", "Snow melt heat flux [W/m^2]"},
   /* 230 */ {"SNOEV", "Snow sublimation heat flux [W/m^2]"},
   /* 231 */ {"MFLUX", "Convective cloud mass flux [Pa/s]"},
   /* 232 */ {"DTRF", "Downward total radiation flux [W/m^2]"},
   /* 233 */ {"UTRF", "Upward total radiation flux [W/m^2]"},
   /* 234 */ {"BGRUN", "Baseflow-groundwater runoff [kg/m^2]"},
   /* 235 */ {"SSRUN", "Storm surface runoff [kg/m^2]"},
   /* 236 */ {"var236", "undefined"},
   /* 237 */ {"OZONE", "Total column ozone [Dobson]"},
   /* 238 */ {"SNOWC", "Snow cover [%]"},
   /* 239 */ {"SNOT", "Snow temp. [K]"},
   /* 240 */ {"GLCR", "Permanent snow points [mask]"},
   /* 241 */ {"LRGHR", "Large scale condensation heating [K/s]"},
   /* 242 */ {"CNVHR", "Deep convective heating [K/s]"},
   /* 243 */ {"CNVMR", "Deep convective moistening [kg/kg/s]"},
   /* 244 */ {"SHAHR", "Shallow convective heating [K/s]"},
   /* 245 */ {"SHAMR", "Shallow convective moistening [kg/kg/s]"},
   /* 246 */ {"VDFHR", "Vertical diffusion heating [K/s]"},
   /* 247 */ {"VDFUA", "Vertical diffusion zonal accel [m/s^2]"},
   /* 248 */ {"VDFVA", "Vertical diffusion meridional accel [m/s^2]"},
   /* 249 */ {"VDFMR", "Vertical diffusion moistening [kg/kg/s]"},
   /* 250 */ {"SWHR", "Solar radiative heating [K/s]"},
   /* 251 */ {"LWHR", "Longwave radiative heating [K/s]"},
   /* 252 */ {"CD", "Drag coefficient [non-dim]"},
   /* 253 */ {"FRICV", "Friction velocity [m/s]"},
   /* 254 */ {"RI", "Richardson number [non-dim]"},
   /* 255 */ {"var255", "undefined"},
};

const struct ParmTable parm_table_nceptab_131[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"PRES", "Pressure [Pa]"},
      /* 2 */ {"PRMSL", "Mean sea level pressure (Shuell method) [Pa]"},
      /* 3 */ {"PTEND", "Pressure tendency [Pa/s]"},
      /* 4 */ {"PVORT", "Pot. vorticity [km^2/kg/s]"},
      /* 5 */ {"ICAHT", "ICAO Standard Atmosphere Reference Height [M]"},
      /* 6 */ {"GP", "Geopotential [m^2/s^2]"},
      /* 7 */ {"HGT", "Geopotential height [gpm]"},
      /* 8 */ {"DIST", "Geometric height [m]"},
      /* 9 */ {"HSTDV", "Std dev of height [m]"},
      /* 10 */ {"TOZNE", "Total ozone [Dobson]"},
      /* 11 */ {"TMP", "Temp. [K]"},
      /* 12 */ {"VTMP", "Virtual temp. [K]"},
      /* 13 */ {"POT", "Potential temp. [K]"},
      /* 14 */ {"EPOT", "Pseudo-adiabatic pot. temp. [K]"},
      /* 15 */ {"TMAX", "Max. temp. [K]"},
      /* 16 */ {"TMIN", "Min. temp. [K]"},
      /* 17 */ {"DPT", "Dew point temp. [K]"},
      /* 18 */ {"DEPR", "Dew point depression [K]"},
      /* 19 */ {"LAPR", "Lapse rate [K/m]"},
      /* 20 */ {"VIS", "Visibility [m]"},
      /* 21 */ {"RDSP1", "Radar spectra (1) [non-dim]"},
      /* 22 */ {"RDSP2", "Radar spectra (2) [non-dim]"},
      /* 23 */ {"RDSP3", "Radar spectra (3) [non-dim]"},
      /* 24 */ {"PLI", "Parcel lifted index (to 500 hPa) [K]"},
      /* 25 */ {"TMPA", "Temp. anomaly [K]"},
      /* 26 */ {"PRESA", "Pressure anomaly [Pa]"},
      /* 27 */ {"GPA", "Geopotential height anomaly [gpm]"},
      /* 28 */ {"WVSP1", "Wave spectra (1) [non-dim]"},
      /* 29 */ {"WVSP2", "Wave spectra (2) [non-dim]"},
      /* 30 */ {"WVSP3", "Wave spectra (3) [non-dim]"},
      /* 31 */ {"WDIR", "Wind direction [deg]"},
      /* 32 */ {"WIND", "Wind speed [m/s]"},
      /* 33 */ {"UGRD", "u wind [m/s]"},
      /* 34 */ {"VGRD", "v wind [m/s]"},
      /* 35 */ {"STRM", "Stream function [m^2/s]"},
      /* 36 */ {"VPOT", "Velocity potential [m^2/s]"},
      /* 37 */ {"MNTSF", "Montgomery stream function [m^2/s^2]"},
      /* 38 */ {"SGCVV", "Sigma coord. vertical velocity [/s]"},
      /* 39 */ {"VVEL", "Pressure vertical velocity [Pa/s]"},
      /* 40 */ {"DZDT", "Geometric vertical velocity [m/s]"},
      /* 41 */ {"ABSV", "Absolute vorticity [/s]"},
      /* 42 */ {"ABSD", "Absolute divergence [/s]"},
      /* 43 */ {"RELV", "Relative vorticity [/s]"},
      /* 44 */ {"RELD", "Relative divergence [/s]"},
      /* 45 */ {"VUCSH", "Vertical u shear [/s]"},
      /* 46 */ {"VVCSH", "Vertical v shear [/s]"},
      /* 47 */ {"DIRC", "Direction of current [deg]"},
      /* 48 */ {"SPC", "Speed of current [m/s]"},
      /* 49 */ {"UOGRD", "u of current [m/s]"},
      /* 50 */ {"VOGRD", "v of current [m/s]"},
      /* 51 */ {"SPFH", "Specific humidity [kg/kg]"},
      /* 52 */ {"RH", "Relative humidity [%]"},
      /* 53 */ {"MIXR", "Humidity mixing ratio [kg/kg]"},
      /* 54 */ {"PWAT", "Precipitable water [kg/m^2]"},
      /* 55 */ {"VAPP", "Vapor pressure [Pa]"},
      /* 56 */ {"SATD", "Saturation deficit [Pa]"},
      /* 57 */ {"EVP", "Evaporation [kg/m^2]"},
      /* 58 */ {"CICE", "Cloud Ice [kg/m^2]"},
      /* 59 */ {"PRATE", "Precipitation rate [kg/m^2/s]"},
      /* 60 */ {"TSTM", "Thunderstorm probability [%]"},
      /* 61 */ {"APCP", "Total precipitation [kg/m^2]"},
      /* 62 */ {"NCPCP", "Large scale precipitation [kg/m^2]"},
      /* 63 */ {"ACPCP", "Convective precipitation [kg/m^2]"},
      /* 64 */ {"SRWEQ", "Snowfall rate water equiv. [kg/m^2/s]"},
      /* 65 */ {"WEASD", "Accum. snow [kg/m^2]"},
      /* 66 */ {"SNOD", "Snow depth [m]"},
      /* 67 */ {"MIXHT", "Mixed layer depth [m]"},
      /* 68 */ {"TTHDP", "Transient thermocline depth [m]"},
      /* 69 */ {"MTHD", "Main thermocline depth [m]"},
      /* 70 */ {"MTHA", "Main thermocline anomaly [m]"},
      /* 71 */ {"TCDC", "Total cloud cover [%]"},
      /* 72 */ {"CDCON", "Convective cloud cover [%]"},
      /* 73 */ {"LCDC", "Low level cloud cover [%]"},
      /* 74 */ {"MCDC", "Mid level cloud cover [%]"},
      /* 75 */ {"HCDC", "High level cloud cover [%]"},
      /* 76 */ {"CWAT", "Cloud water [kg/m^2]"},
      /* 77 */ {"BLI", "Best lifted index (to 500 hPa) [K]"},
      /* 78 */ {"SNOC", "Convective snow [kg/m^2]"},
      /* 79 */ {"SNOL", "Large scale snow [kg/m^2]"},
      /* 80 */ {"WTMP", "Water temp. [K]"},
      /* 81 */ {"LAND", "Land cover (land=1;sea=0) [fraction]"},
      /* 82 */ {"DSLM", "Deviation of sea level from mean [m]"},
      /* 83 */ {"SFCR", "Surface roughness [m]"},
      /* 84 */ {"ALBDO", "Albedo [%]"},
      /* 85 */ {"TSOIL", "Soil temp. [K]"},
      /* 86 */ {"SOILM", "Soil moisture content [kg/m^2]"},
      /* 87 */ {"VEG", "Vegetation [%]"},
      /* 88 */ {"SALTY", "Salinity [kg/kg]"},
      /* 89 */ {"DEN", "Density [kg/m^3]"},
      /* 90 */ {"WATR", "Water runoff [kg/m^2]"},
      /* 91 */ {"ICEC", "Ice concentration (ice=1;no ice=0) [fraction]"},
      /* 92 */ {"ICETK", "Ice thickness [m]"},
      /* 93 */ {"DICED", "Direction of ice drift [deg]"},
      /* 94 */ {"SICED", "Speed of ice drift [m/s]"},
      /* 95 */ {"UICE", "u of ice drift [m/s]"},
      /* 96 */ {"VICE", "v of ice drift [m/s]"},
      /* 97 */ {"ICEG", "Ice growth rate [m/s]"},
      /* 98 */ {"ICED", "Ice divergence [/s]"},
      /* 99 */ {"SNOM", "Snow melt [kg/m^2]"},
      /* 100 */ {"HTSGW", "Sig height of wind waves and swell [m]"},
      /* 101 */ {"WVDIR", "Direction of wind waves [deg]"},
      /* 102 */ {"WVHGT", "Sig height of wind waves [m]"},
      /* 103 */ {"WVPER", "Mean period of wind waves [s]"},
      /* 104 */ {"SWDIR", "Direction of swell waves [deg]"},
      /* 105 */ {"SWELL", "Sig height of swell waves [m]"},
      /* 106 */ {"SWPER", "Mean period of swell waves [s]"},
      /* 107 */ {"DIRPW", "Primary wave direction [deg]"},
      /* 108 */ {"PERPW", "Primary wave mean period [s]"},
      /* 109 */ {"DIRSW", "Secondary wave direction [deg]"},
      /* 110 */ {"PERSW", "Secondary wave mean period [s]"},
      /* 111 */ {"NSWRS", "Net short wave (surface) [W/m^2]"},
      /* 112 */ {"NLWRS", "Net long wave (surface) [W/m^2]"},
      /* 113 */ {"NSWRT", "Net short wave (top) [W/m^2]"},
      /* 114 */ {"NLWRT", "Net long wave (top) [W/m^2]"},
      /* 115 */ {"LWAVR", "Long wave [W/m^2]"},
      /* 116 */ {"SWAVR", "Short wave [W/m^2]"},
      /* 117 */ {"GRAD", "Global radiation [W/m^2]"},
      /* 118 */ {"BRTMP", "Brightness temperature [K]"},
      /* 119 */ {"LWRAD", "Radiance with respect to wave no. [W/m/sr]"},
      /* 120 */ {"SWRAD", "Radiance with respect ot wave len. [W/m^3/sr]"},
      /* 121 */ {"LHTFL", "Latent heat flux [W/m^2]"},
      /* 122 */ {"SHTFL", "Sensible heat flux [W/m^2]"},
      /* 123 */ {"BLYDP", "Boundary layer dissipation [W/m^2]"},
      /* 124 */ {"UFLX", "Zonal momentum flux [N/m^2]"},
      /* 125 */ {"VFLX", "Meridional momentum flux [N/m^2]"},
      /* 126 */ {"WMIXE", "Wind mixing energy [J]"},
      /* 127 */ {"IMGD", "Image data []"},
      /* 128 */ {"MSLSA", "Mean sea level pressure (Std Atm) [Pa]"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"MSLET", "Mean sea level pressure (Mesinger method) [Pa]"},
      /* 131 */ {"LFTX", "Surface lifted index [K]"},
      /* 132 */ {"4LFTX", "Best (4-layer) lifted index [K]"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"PRESN", "Pressure (nearest grid point) [Pa]"},
      /* 135 */ {"MCONV", "Horizontal moisture divergence [kg/kg/s]"},
      /* 136 */ {"VWSH", "Vertical speed shear [1/s]"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"PVMW", "Potential vorticity (mass-weighted) [1/s/m]"},
      /* 140 */ {"CRAIN", "Categorical rain [yes=1;no=0]"},
      /* 141 */ {"CFRZR", "Categorical freezing rain [yes=1;no=0]"},
      /* 142 */ {"CICEP", "Categorical ice pellets [yes=1;no=0]"},
      /* 143 */ {"CSNOW", "Categorical snow [yes=1;no=0]"},
      /* 144 */ {"SOILW", "Volumetric soil moisture (frozen + liquid) [fraction]"},
      /* 145 */ {"PEVPR", "Potential evaporation rate [W/m^2]"},
      /* 146 */ {"VEGT", "Vegetation canopy temperature [K]"},
      /* 147 */ {"BARET", "Bare soil surface skin temperature [K]"},
      /* 148 */ {"AVSFT", "Average surface skin temperature [K]"},
      /* 149 */ {"RADT", "Effective radiative skin temperature [K]"},
      /* 150 */ {"SSTOR", "Surface water storage [kg/m^2]"},
      /* 151 */ {"LSOIL", "Liquid soil moisture content (non-frozen) [kg/m^2]"},
      /* 152 */ {"EWATR", "Open water evaporation (standing water) [W/m^2]"},
      /* 153 */ {"CLWMR", "Cloud water [kg/kg]"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"GFLUX", "Ground Heat Flux [W/m^2]"},
      /* 156 */ {"CIN", "Convective inhibition [J/kg]"},
      /* 157 */ {"CAPE", "Convective available potential energy [J/kg]"},
      /* 158 */ {"TKE", "Turbulent Kinetic Energy [J/kg]"},
      /* 159 */ {"MXSALB", "Maximum snow albedo [%]"},
      /* 160 */ {"SOILL", "Liquid volumetric soil moisture (non-frozen) [fraction]"},
      /* 161 */ {"ASNOW", "Frozen precipitation (e.g. snowfall) [kg/m^2]"},
      /* 162 */ {"ARAIN", "Liquid precipitation (rainfall) [kg/m^2]"},
      /* 163 */ {"GWREC", "Groundwater recharge [kg/m^2]"},
      /* 164 */ {"QREC", "Flood plain recharge [kg/m^2]"},
      /* 165 */ {"SNOWT", "Snow temperature, depth-avg [K]"},
      /* 166 */ {"VBDSF", "Visible beam downward solar flux [W/m^2]"},
      /* 167 */ {"VDDSF", "Visible diffuse downward solar flux [W/m^2]"},
      /* 168 */ {"NBDSF", "Near IR beam downward solar flux [W/m^2]"},
      /* 169 */ {"NDDSF", "Near IR diffuse downward solar flux [W/m^2]"},
      /* 170 */ {"SNFALB", "Snow-free albedo [%]"},
      /* 171 */ {"RLYRS", "Number of soil layers in root zone [non-dim]"},
      /* 172 */ {"FLX", "Momentum flux N/m2 [M]"},
      /* 173 */ {"LMH", "Mass point model surface [non-dim]"},
      /* 174 */ {"LMV", "Velocity point model surface [non-dim]"},
      /* 175 */ {"MLYNO", "Model layer number (from bottom up) [non-dim]"},
      /* 176 */ {"NLAT", "Latitude (-90 to +90) [deg]"},
      /* 177 */ {"ELON", "East longitude (0-360) [deg]"},
      /* 178 */ {"ICMR", "Ice mixing ratio [kg/kg]"},
      /* 179 */ {"ACOND", "Aerodynamic conductance [m/s]"},
      /* 180 */ {"SNOAG", "Snow age [s]"},
      /* 181 */ {"CCOND", "Canopy conductance [m/s]"},
      /* 182 */ {"LAI", "Leaf area index (0-9) [non-dim]"},
      /* 183 */ {"SFCRH", "Roughness length for heat [m]"},
      /* 184 */ {"SALBD", "Snow albedo (over snow cover area only) [%]"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"NDVI", "Normalized Difference Vegetation Index []"},
      /* 188 */ {"DRIP", "Rate of water dropping from canopy to gnd [kg/m^2]"},
      /* 189 */ {"LANDN", "Land cover (nearest neighbor) [sea=0,land=1]"},
      /* 190 */ {"HLCY", "Storm relative helicity [m^2/s^2]"},
      /* 191 */ {"NLATN", "Latitude (nearest neigbhbor) (-90 to +90) [deg]"},
      /* 192 */ {"ELONN", "East longitude (nearest neigbhbor) (0-360) [deg]"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"CPOFP", "Prob. of frozen precipitation [%]"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"USTM", "u-component of storm motion [m/s]"},
      /* 197 */ {"VSTM", "v-component of storm motion [m/s]"},
      /* 198 */ {"SBSNO", "Sublimation (evaporation from snow) [W/m^2]"},
      /* 199 */ {"EVBS", "Direct evaporation from bare soil [W/m^2]"},
      /* 200 */ {"EVCW", "Canopy water evaporation [W/m^2]"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"APCPN", "Total precipitation (nearest grid point) [kg/m^2]"},
      /* 203 */ {"RSMIN", "Minimal stomatal resistance [s/m]"},
      /* 204 */ {"DSWRF", "Downward shortwave radiation flux [W/m^2]"},
      /* 205 */ {"DLWRF", "Downward longwave radiation flux [W/m^2]"},
      /* 206 */ {"ACPCPN", "Convective precipitation (nearest grid point) [kg/m^2]"},
      /* 207 */ {"MSTAV", "Moisture availability [%]"},
      /* 208 */ {"SFEXC", "Exchange coefficient [(kg/m^3)(m/s)]"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"TRANS", "Transpiration [W/m^2]"},
      /* 211 */ {"USWRF", "Upward short wave radiation flux [W/m^2]"},
      /* 212 */ {"ULWRF", "Upward long wave radiation flux [W/m^2]"},
      /* 213 */ {"CDLYR", "Non-convective cloud [%]"},
      /* 214 */ {"CPRAT", "Convective precip. rate [kg/m^2/s]"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"TTRAD", "Temp. tendency by all radiation [K/s]"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"HGTN", "Geopotential Height (nearest grid point) [gpm]"},
      /* 219 */ {"WILT", "Wilting point [fraction]"},
      /* 220 */ {"FLDCP", "Field Capacity [fraction]"},
      /* 221 */ {"HPBL", "Planetary boundary layer height [m]"},
      /* 222 */ {"SLTYP", "Surface slope type [Index]"},
      /* 223 */ {"CNWAT", "Plant canopy surface water [kg/m^2]"},
      /* 224 */ {"SOTYP", "Soil type [Index]"},
      /* 225 */ {"VGTYP", "Vegetation type [Index]"},
      /* 226 */ {"BMIXL", "Blackadars mixing length scale [m]"},
      /* 227 */ {"AMIXL", "Asymptotic mixing length scale [m]"},
      /* 228 */ {"PEVAP", "Potential evaporation [kg/m^2]"},
      /* 229 */ {"SNOHF", "Snow phase-change heat flux [W/m^2]"},
      /* 230 */ {"SMREF", "Transpiration stress-onset (soil moisture) [fraction]"},
      /* 231 */ {"SMDRY", "Direct evaporation cease (soil moisture) [fraction]"},
      /* 232 */ {"WVINC", "water vapor added by precip assimilation [kg/m^2]"},
      /* 233 */ {"WCINC", "water condensate added by precip assimilaition [kg/m^2]"},
      /* 234 */ {"BGRUN", "Subsurface runoff (baseflow) [kg/m^2]"},
      /* 235 */ {"SSRUN", "Surface runoff (non-infiltrating) [kg/m^2]"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"WVCONV", "Water vapor flux convergence (vertical int) [kg/m^2]"},
      /* 238 */ {"SNOWC", "Snow cover [%]"},
      /* 239 */ {"SNOT", "Snow temperature [K]"},
      /* 240 */ {"POROS", "Soil porosity [fraction]"},
      /* 241 */ {"WCCONV", "Water condensate flux convergence (vertical int) [kg/m^2]"},
      /* 242 */ {"WVUFLX", "Water vapor zonal transport (vertical int)[kg/m]"},
      /* 243 */ {"WVVFLX", "Water vapor meridional transport (vertical int) [kg/m]"},
      /* 244 */ {"WCUFLX", "Water condensate zonal transport (vertical int) [kg/m]"},
      /* 245 */ {"WCVFLX", "Water condensate meridional transport (vertical int) [kg/m]"},
      /* 246 */ {"RCS", "Solar parameter in canopy conductance [fraction]"},
      /* 247 */ {"RCT", "Temperature parameter in canopy conductance [fraction]"},
      /* 248 */ {"RCQ", "Humidity parameter in canopy conductance [fraction]"},
      /* 249 */ {"RCSOL", "Soil moisture parameter in canopy conductance [fraction]"},
      /* 250 */ {"SWHR", "Solar radiative heating [K/s]"},
      /* 251 */ {"LWHR", "Longwave radiative heating [K/s]"},
      /* 252 */ {"CD", "Surface drag coefficient [non-dim]"},
      /* 253 */ {"FRICV", "Surface friction velocity [m/s]"},
      /* 254 */ {"RI", "Richardson number [non-dim]"},
      /* 255 */ {"var255", "undefined"},
};

const struct ParmTable parm_table_nceptab_130[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"PRES", "Pressure [Pa]"},
      /* 2 */ {"PRMSL", "Pressure reduced to MSL [Pa]"},
      /* 3 */ {"PTEND", "Pressure tendency [Pa/s]"},
      /* 4 */ {"PVORT", "Pot. vorticity [km^2/kg/s]"},
      /* 5 */ {"ICAHT", "ICAO Standard Atmosphere Reference Height [M]"},
      /* 6 */ {"GP", "Geopotential [m^2/s^2]"},
      /* 7 */ {"HGT", "Geopotential height [gpm]"},
      /* 8 */ {"DIST", "Geometric height [m]"},
      /* 9 */ {"HSTDV", "Std dev of height [m]"},
      /* 10 */ {"TOZNE", "Total ozone [Dobson]"},
      /* 11 */ {"TMP", "Temp. [K]"},
      /* 12 */ {"VTMP", "Virtual temp. [K]"},
      /* 13 */ {"POT", "Potential temp. [K]"},
      /* 14 */ {"EPOT", "Pseudo-adiabatic pot. temp. [K]"},
      /* 15 */ {"TMAX", "Max. temp. [K]"},
      /* 16 */ {"TMIN", "Min. temp. [K]"},
      /* 17 */ {"DPT", "Dew point temp. [K]"},
      /* 18 */ {"DEPR", "Dew point depression [K]"},
      /* 19 */ {"LAPR", "Lapse rate [K/m]"},
      /* 20 */ {"VIS", "Visibility [m]"},
      /* 21 */ {"RDSP1", "Radar spectra (1) [non-dim]"},
      /* 22 */ {"RDSP2", "Radar spectra (2) [non-dim]"},
      /* 23 */ {"RDSP3", "Radar spectra (3) [non-dim]"},
      /* 24 */ {"PLI", "Parcel lifted index (to 500 hPa) [K]"},
      /* 25 */ {"TMPA", "Temp. anomaly [K]"},
      /* 26 */ {"PRESA", "Pressure anomaly [Pa]"},
      /* 27 */ {"GPA", "Geopotential height anomaly [gpm]"},
      /* 28 */ {"WVSP1", "Wave spectra (1) [non-dim]"},
      /* 29 */ {"WVSP2", "Wave spectra (2) [non-dim]"},
      /* 30 */ {"WVSP3", "Wave spectra (3) [non-dim]"},
      /* 31 */ {"WDIR", "Wind direction [deg]"},
      /* 32 */ {"WIND", "Wind speed [m/s]"},
      /* 33 */ {"UGRD", "u wind [m/s]"},
      /* 34 */ {"VGRD", "v wind [m/s]"},
      /* 35 */ {"STRM", "Stream function [m^2/s]"},
      /* 36 */ {"VPOT", "Velocity potential [m^2/s]"},
      /* 37 */ {"MNTSF", "Montgomery stream function [m^2/s^2]"},
      /* 38 */ {"SGCVV", "Sigma coord. vertical velocity [/s]"},
      /* 39 */ {"VVEL", "Pressure vertical velocity [Pa/s]"},
      /* 40 */ {"DZDT", "Geometric vertical velocity [m/s]"},
      /* 41 */ {"ABSV", "Absolute vorticity [/s]"},
      /* 42 */ {"ABSD", "Absolute divergence [/s]"},
      /* 43 */ {"RELV", "Relative vorticity [/s]"},
      /* 44 */ {"RELD", "Relative divergence [/s]"},
      /* 45 */ {"VUCSH", "Vertical u shear [/s]"},
      /* 46 */ {"VVCSH", "Vertical v shear [/s]"},
      /* 47 */ {"DIRC", "Direction of current [deg]"},
      /* 48 */ {"SPC", "Speed of current [m/s]"},
      /* 49 */ {"UOGRD", "u of current [m/s]"},
      /* 50 */ {"VOGRD", "v of current [m/s]"},
      /* 51 */ {"SPFH", "Specific humidity [kg/kg]"},
      /* 52 */ {"RH", "Relative humidity [%]"},
      /* 53 */ {"MIXR", "Humidity mixing ratio [kg/kg]"},
      /* 54 */ {"PWAT", "Precipitable water [kg/m^2]"},
      /* 55 */ {"VAPP", "Vapor pressure [Pa]"},
      /* 56 */ {"SATD", "Saturation deficit [Pa]"},
      /* 57 */ {"EVP", "Evaporation [kg/m^2]"},
      /* 58 */ {"CICE", "Cloud Ice [kg/m^2]"},
      /* 59 */ {"PRATE", "Precipitation rate [kg/m^2/s]"},
      /* 60 */ {"TSTM", "Thunderstorm probability [%]"},
      /* 61 */ {"APCP", "Total precipitation [kg/m^2]"},
      /* 62 */ {"NCPCP", "Large scale precipitation [kg/m^2]"},
      /* 63 */ {"ACPCP", "Convective precipitation [kg/m^2]"},
      /* 64 */ {"SRWEQ", "Snowfall rate water equiv. [kg/m^2/s]"},
      /* 65 */ {"WEASD", "Accum. snow [kg/m^2]"},
      /* 66 */ {"SNOD", "Snow depth [m]"},
      /* 67 */ {"MIXHT", "Mixed layer depth [m]"},
      /* 68 */ {"TTHDP", "Transient thermocline depth [m]"},
      /* 69 */ {"MTHD", "Main thermocline depth [m]"},
      /* 70 */ {"MTHA", "Main thermocline anomaly [m]"},
      /* 71 */ {"TCDC", "Total cloud cover [%]"},
      /* 72 */ {"CDCON", "Convective cloud cover [%]"},
      /* 73 */ {"LCDC", "Low level cloud cover [%]"},
      /* 74 */ {"MCDC", "Mid level cloud cover [%]"},
      /* 75 */ {"HCDC", "High level cloud cover [%]"},
      /* 76 */ {"CWAT", "Cloud water [kg/m^2]"},
      /* 77 */ {"BLI", "Best lifted index (to 500 hPa) [K]"},
      /* 78 */ {"SNOC", "Convective snow [kg/m^2]"},
      /* 79 */ {"SNOL", "Large scale snow [kg/m^2]"},
      /* 80 */ {"WTMP", "Water temp. [K]"},
      /* 81 */ {"LAND", "Land cover (land=1;sea=0) [fraction]"},
      /* 82 */ {"DSLM", "Deviation of sea level from mean [m]"},
      /* 83 */ {"SFCR", "Surface roughness [m]"},
      /* 84 */ {"ALBDO", "Albedo [%]"},
      /* 85 */ {"TSOIL", "Soil temp. [K]"},
      /* 86 */ {"SOILM", "Soil moisture content [kg/m^2]"},
      /* 87 */ {"VEG", "Vegetation [%]"},
      /* 88 */ {"SALTY", "Salinity [kg/kg]"},
      /* 89 */ {"DEN", "Density [kg/m^3]"},
      /* 90 */ {"WATR", "Water runoff [kg/m^2]"},
      /* 91 */ {"ICEC", "Ice concentration (ice=1;no ice=0) [fraction]"},
      /* 92 */ {"ICETK", "Ice thickness [m]"},
      /* 93 */ {"DICED", "Direction of ice drift [deg]"},
      /* 94 */ {"SICED", "Speed of ice drift [m/s]"},
      /* 95 */ {"UICE", "u of ice drift [m/s]"},
      /* 96 */ {"VICE", "v of ice drift [m/s]"},
      /* 97 */ {"ICEG", "Ice growth rate [m/s]"},
      /* 98 */ {"ICED", "Ice divergence [/s]"},
      /* 99 */ {"SNOM", "Snow melt [kg/m^2]"},
      /* 100 */ {"HTSGW", "Sig height of wind waves and swell [m]"},
      /* 101 */ {"WVDIR", "Direction of wind waves [deg]"},
      /* 102 */ {"WVHGT", "Sig height of wind waves [m]"},
      /* 103 */ {"WVPER", "Mean period of wind waves [s]"},
      /* 104 */ {"SWDIR", "Direction of swell waves [deg]"},
      /* 105 */ {"SWELL", "Sig height of swell waves [m]"},
      /* 106 */ {"SWPER", "Mean period of swell waves [s]"},
      /* 107 */ {"DIRPW", "Primary wave direction [deg]"},
      /* 108 */ {"PERPW", "Primary wave mean period [s]"},
      /* 109 */ {"DIRSW", "Secondary wave direction [deg]"},
      /* 110 */ {"PERSW", "Secondary wave mean period [s]"},
      /* 111 */ {"NSWRS", "Net short wave (surface) [W/m^2]"},
      /* 112 */ {"NLWRS", "Net long wave (surface) [W/m^2]"},
      /* 113 */ {"NSWRT", "Net short wave (top) [W/m^2]"},
      /* 114 */ {"NLWRT", "Net long wave (top) [W/m^2]"},
      /* 115 */ {"LWAVR", "Long wave [W/m^2]"},
      /* 116 */ {"SWAVR", "Short wave [W/m^2]"},
      /* 117 */ {"GRAD", "Global radiation [W/m^2]"},
      /* 118 */ {"BRTMP", "Brightness temperature [K]"},
      /* 119 */ {"LWRAD", "Radiance with respect to wave no. [W/m/sr]"},
      /* 120 */ {"SWRAD", "Radiance with respect ot wave len. [W/m^3/sr]"},
      /* 121 */ {"LHTFL", "Latent heat flux [W/m^2]"},
      /* 122 */ {"SHTFL", "Sensible heat flux [W/m^2]"},
      /* 123 */ {"BLYDP", "Boundary layer dissipation [W/m^2]"},
      /* 124 */ {"UFLX", "Zonal momentum flux [N/m^2]"},
      /* 125 */ {"VFLX", "Meridional momentum flux [N/m^2]"},
      /* 126 */ {"WMIXE", "Wind mixing energy [J]"},
      /* 127 */ {"IMGD", "Image data []"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined 143"},
      /* 144 */ {"SOILW", "Volumetric soil moisture (frozen + liquid) [fraction]"},
      /* 145 */ {"PEVPR", "Potential evaporation rate [W/m^2]"},
      /* 146 */ {"VEGT", "Vegetation canopy temperature [K]"},
      /* 147 */ {"BARET", "Bare soil surface skin temperature [K]"},
      /* 148 */ {"AVSFT", "Average surface skin temperature [K]"},
      /* 149 */ {"RADT", "Effective radiative skin temperature [K]"},
      /* 150 */ {"SSTOR", "Surface water storage [Kg/m^2]"},
      /* 151 */ {"LSOIL", "Liquid soil moisture content (non-frozen) [Kg/m^2]"},
      /* 152 */ {"EWATR", "Open water evaporation (standing water) [W/m^2]"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"LSPA", "Land Surface Precipitation Accumulation [kg/m^2]"},
      /* 155 */ {"GFLUX", "Ground Heat Flux [W/m^2]"},
      /* 156 */ {"CIN", "Convective inhibition [J/Kg]"},
      /* 157 */ {"CAPE", "Convective available potential energy [J/Kg]"},
      /* 158 */ {"TKE", "Turbulent Kinetic Energy [J/Kg]"},
      /* 159 */ {"MXSALB", "Maximum snow albedo [%]"},
      /* 160 */ {"SOILL", "Liquid volumetric soil moisture (non-frozen) [fraction]"},
      /* 161 */ {"ASNOW", "Frozen precipitation (e.g. snowfall) [Kg/m^2]"},
      /* 162 */ {"ARAIN", "Liquid precipitation (rainfall) [Kg/m^2]"},
      /* 163 */ {"GWREC", "Groundwater recharge [Kg/m^2]"},
      /* 164 */ {"QREC", "Flood plain recharge [Kg/m^2]"},
      /* 165 */ {"SNOWT", "Snow temperature, depth-avg [K]"},
      /* 166 */ {"VBDSF", "Visible beam downward solar flux [W/m^2]"},
      /* 167 */ {"VDDSF", "Visible diffuse downward solar flux [W/m^2]"},
      /* 168 */ {"NBDSF", "Near IR beam downward solar flux [W/m^2]"},
      /* 169 */ {"NDDSF", "Near IR diffuse downward solar flux [W/m^2]"},
      /* 170 */ {"SNFALB", "Snow-free albedo [%]"},
      /* 171 */ {"RLYRS", "Number of soil layers in root zone [non-dim]"},
      /* 172 */ {"MFLX", "Momentum flux [N/m^2]"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"NLAT", "Latitude (-90 to +90) [deg]"},
      /* 177 */ {"ELON", "East longitude (0-360) [deg]"},
      /* 178 */ {"FLDCAP", "Field capacity [fraction]"},
      /* 179 */ {"ACOND", "Aerodynamic conductance [m/s]"},
      /* 180 */ {"SNOAG", "Snow age [s]"},
      /* 181 */ {"CCOND", "Canopy conductance [m/s]"},
      /* 182 */ {"LAI", "Leaf area index (0-9) [non-dim]"},
      /* 183 */ {"SFCRH", "Roughness length for heat [m]"},
      /* 184 */ {"SALBD", "Snow albedo (over snow cover area only) [%]"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"NDVI", "Normalized Difference Vegetation Index []"},
      /* 188 */ {"DRIP", "Canopy drip [Kg/m^2]"},
      /* 189 */ {"VBSALB", "Visible, black sky albedo [%]"},
      /* 190 */ {"VWSALB", "Visible, white sky albedo [%]"},
      /* 191 */ {"NBSALB", "Near IR, black sky albedo [%]"},
      /* 192 */ {"NWSALB", "Near IR, white sky albedo [%]"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"SBSNO", "Sublimation (evaporation from snow) [W/m^2]"},
      /* 199 */ {"EVBS", "Direct evaporation from bare soil [W/m^2]"},
      /* 200 */ {"EVCW", "Canopy water evaporation [W/m^2]"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"RSMIN", "Minimal stomatal resistance [s/m]"},
      /* 204 */ {"DSWRF", "Downward shortwave radiation flux [W/m^2]"},
      /* 205 */ {"DLWRF", "Downward longwave radiation flux [W/m^2]"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"MSTAV", "Moisture availability [%]"},
      /* 208 */ {"SFEXC", "Exchange coefficient [(Kg/m^3)(m/s)]"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"TRANS", "Transpiration [W/m^2]"},
      /* 211 */ {"USWRF", "Upward short wave radiation flux [W/m^2]"},
      /* 212 */ {"ULWRF", "Upward long wave radiation flux [W/m^2]"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"WILT", "Wilting point [fraction]"},
      /* 220 */ {"FLDCP", "Field Capacity [fraction]"},
      /* 221 */ {"HPBL", "Planetary boundary layer height [m]"},
      /* 222 */ {"SLTYP", "Surface slope type [Index]"},
      /* 223 */ {"CNWAT", "Plant canopy surface water [Kg/m^2]"},
      /* 224 */ {"SOTYP", "Soil type [Index]"},
      /* 225 */ {"VGTYP", "Vegetation type [Index]"},
      /* 226 */ {"BMIXL", "Blackadars mixing length scale [m]"},
      /* 227 */ {"AMIXL", "Asymptotic mixing length scale [m]"},
      /* 228 */ {"PEVAP", "Potential evaporation [Kg/m^2]"},
      /* 229 */ {"SNOHF", "Snow phase-change heat flux [W/m^2]"},
      /* 230 */ {"SMREF", "Transpiration stress-onset (soil moisture) [fraction]"},
      /* 231 */ {"SMDRY", "Direct evaporation cease (soil moisture) [fraction]"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"BGRUN", "Subsurface runoff (baseflow) [Kg/m^2]"},
      /* 235 */ {"SSRUN", "Surface runoff (non-infiltrating) [Kg/m^2]"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"SNOWC", "Snow cover [%]"},
      /* 239 */ {"SNOT", "Snow temperature [K]"},
      /* 240 */ {"POROS", "Soil porosity [fraction]"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"RCS", "Solar parameter in canopy conductance [fraction]"},
      /* 247 */ {"RCT", "Temperature parameter in canopy conductance [fraction]"},
      /* 248 */ {"RCQ", "Humidity parameter in canopy conductance [fraction]"},
      /* 249 */ {"RCSOL", "Soil moisture parameter in canopy conductance [fraction]"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"CD", "Surface drag coefficient [non-dim]"},
      /* 253 */ {"FRICV", "Surface friction velocity [m/s]"},
      /* 254 */ {"RI", "Richardson number [non-dim]"},
      /* 255 */ {"var255", "undefined"},
};

const struct ParmTable parm_table_nceptab_133[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"PRES", "Pressure [Pa]"},
      /* 2 */ {"PRMSL", "Pressure reduced to MSL [Pa]"},
      /* 3 */ {"PTEND", "Pressure tendency [Pa/s]"},
      /* 4 */ {"PVORT", "Pot. vorticity [km^2/kg/s]"},
      /* 5 */ {"ICAHT", "ICAO Standard Atmosphere Reference Height [M]"},
      /* 6 */ {"GP", "Geopotential [m^2/s^2]"},
      /* 7 */ {"HGT", "Geopotential height [gpm]"},
      /* 8 */ {"DIST", "Geometric height [m]"},
      /* 9 */ {"HSTDV", "Std dev of height [m]"},
      /* 10 */ {"TOZNE", "Total ozone [Dobson]"},
      /* 11 */ {"TMP", "Temp. [K]"},
      /* 12 */ {"VTMP", "Virtual temp. [K]"},
      /* 13 */ {"POT", "Potential temp. [K]"},
      /* 14 */ {"EPOT", "Pseudo-adiabatic pot. temp. [K]"},
      /* 15 */ {"TMAX", "Max. temp. [K]"},
      /* 16 */ {"TMIN", "Min. temp. [K]"},
      /* 17 */ {"DPT", "Dew point temp. [K]"},
      /* 18 */ {"DEPR", "Dew point depression [K]"},
      /* 19 */ {"LAPR", "Lapse rate [K/m]"},
      /* 20 */ {"VIS", "Visibility [m]"},
      /* 21 */ {"RDSP1", "Radar spectra (1) [non-dim]"},
      /* 22 */ {"RDSP2", "Radar spectra (2) [non-dim]"},
      /* 23 */ {"RDSP3", "Radar spectra (3) [non-dim]"},
      /* 24 */ {"PLI", "Parcel lifted index (to 500 hPa) [K]"},
      /* 25 */ {"TMPA", "Temp. anomaly [K]"},
      /* 26 */ {"PRESA", "Pressure anomaly [Pa]"},
      /* 27 */ {"GPA", "Geopotential height anomaly [gpm]"},
      /* 28 */ {"WVSP1", "Wave spectra (1) [non-dim]"},
      /* 29 */ {"WVSP2", "Wave spectra (2) [non-dim]"},
      /* 30 */ {"WVSP3", "Wave spectra (3) [non-dim]"},
      /* 31 */ {"WDIR", "Wind direction [deg]"},
      /* 32 */ {"WIND", "Wind speed [m/s]"},
      /* 33 */ {"UGRD", "u wind [m/s]"},
      /* 34 */ {"VGRD", "v wind [m/s]"},
      /* 35 */ {"STRM", "Stream function [m^2/s]"},
      /* 36 */ {"VPOT", "Velocity potential [m^2/s]"},
      /* 37 */ {"MNTSF", "Montgomery stream function [m^2/s^2]"},
      /* 38 */ {"SGCVV", "Sigma coord. vertical velocity [/s]"},
      /* 39 */ {"VVEL", "Pressure vertical velocity [Pa/s]"},
      /* 40 */ {"DZDT", "Geometric vertical velocity [m/s]"},
      /* 41 */ {"ABSV", "Absolute vorticity [/s]"},
      /* 42 */ {"ABSD", "Absolute divergence [/s]"},
      /* 43 */ {"RELV", "Relative vorticity [/s]"},
      /* 44 */ {"RELD", "Relative divergence [/s]"},
      /* 45 */ {"VUCSH", "Vertical u shear [/s]"},
      /* 46 */ {"VVCSH", "Vertical v shear [/s]"},
      /* 47 */ {"DIRC", "Direction of current [deg]"},
      /* 48 */ {"SPC", "Speed of current [m/s]"},
      /* 49 */ {"UOGRD", "u of current [m/s]"},
      /* 50 */ {"VOGRD", "v of current [m/s]"},
      /* 51 */ {"SPFH", "Specific humidity [kg/kg]"},
      /* 52 */ {"RH", "Relative humidity [%]"},
      /* 53 */ {"MIXR", "Humidity mixing ratio [kg/kg]"},
      /* 54 */ {"PWAT", "Precipitable water [kg/m^2]"},
      /* 55 */ {"VAPP", "Vapor pressure [Pa]"},
      /* 56 */ {"SATD", "Saturation deficit [Pa]"},
      /* 57 */ {"EVP", "Evaporation [kg/m^2]"},
      /* 58 */ {"CICE", "Cloud Ice [kg/m^2]"},
      /* 59 */ {"PRATE", "Precipitation rate [kg/m^2/s]"},
      /* 60 */ {"TSTM", "Thunderstorm probability [%]"},
      /* 61 */ {"APCP", "Total precipitation [kg/m^2]"},
      /* 62 */ {"NCPCP", "Large scale precipitation [kg/m^2]"},
      /* 63 */ {"ACPCP", "Convective precipitation [kg/m^2]"},
      /* 64 */ {"SRWEQ", "Snowfall rate water equiv. [kg/m^2/s]"},
      /* 65 */ {"WEASD", "Accum. snow [kg/m^2]"},
      /* 66 */ {"SNOD", "Snow depth [m]"},
      /* 67 */ {"MIXHT", "Mixed layer depth [m]"},
      /* 68 */ {"TTHDP", "Transient thermocline depth [m]"},
      /* 69 */ {"MTHD", "Main thermocline depth [m]"},
      /* 70 */ {"MTHA", "Main thermocline anomaly [m]"},
      /* 71 */ {"TCDC", "Total cloud cover [%]"},
      /* 72 */ {"CDCON", "Convective cloud cover [%]"},
      /* 73 */ {"LCDC", "Low level cloud cover [%]"},
      /* 74 */ {"MCDC", "Mid level cloud cover [%]"},
      /* 75 */ {"HCDC", "High level cloud cover [%]"},
      /* 76 */ {"CWAT", "Cloud water [kg/m^2]"},
      /* 77 */ {"BLI", "Best lifted index (to 500 hPa) [K]"},
      /* 78 */ {"SNOC", "Convective snow [kg/m^2]"},
      /* 79 */ {"SNOL", "Large scale snow [kg/m^2]"},
      /* 80 */ {"WTMP", "Water temp. [K]"},
      /* 81 */ {"LAND", "Land-sea coverage (land=1;sea=0) [fraction]"},
      /* 82 */ {"DSLM", "Deviation of sea level from mean [m]"},
      /* 83 */ {"SFCR", "Surface roughness [m]"},
      /* 84 */ {"ALBDO", "Albedo [%]"},
      /* 85 */ {"TSOIL", "Soil temp. [K]"},
      /* 86 */ {"SOILM", "Soil moisture content [kg/m^2]"},
      /* 87 */ {"VEG", "Vegetation [%]"},
      /* 88 */ {"SALTY", "Salinity [kg/kg]"},
      /* 89 */ {"DEN", "Density [kg/m^3]"},
      /* 90 */ {"WATR", "Water runoff [kg/m^2]"},
      /* 91 */ {"ICEC", "Ice concentration (ice=1;no ice=0) [fraction]"},
      /* 92 */ {"ICETK", "Ice thickness [m]"},
      /* 93 */ {"DICED", "Direction of ice drift [deg]"},
      /* 94 */ {"SICED", "Speed of ice drift [m/s]"},
      /* 95 */ {"UICE", "u of ice drift [m/s]"},
      /* 96 */ {"VICE", "v of ice drift [m/s]"},
      /* 97 */ {"ICEG", "Ice growth rate [m/s]"},
      /* 98 */ {"ICED", "Ice divergence [/s]"},
      /* 99 */ {"SNOM", "Snow melt [kg/m^2]"},
      /* 100 */ {"HTSGW", "Sig height of wind waves and swell [m]"},
      /* 101 */ {"WVDIR", "Direction of wind waves [deg]"},
      /* 102 */ {"WVHGT", "Sig height of wind waves [m]"},
      /* 103 */ {"WVPER", "Mean period of wind waves [s]"},
      /* 104 */ {"SWDIR", "Direction of swell waves [deg]"},
      /* 105 */ {"SWELL", "Sig height of swell waves [m]"},
      /* 106 */ {"SWPER", "Mean period of swell waves [s]"},
      /* 107 */ {"DIRPW", "Primary wave direction [deg]"},
      /* 108 */ {"PERPW", "Primary wave mean period [s]"},
      /* 109 */ {"DIRSW", "Secondary wave direction [deg]"},
      /* 110 */ {"PERSW", "Secondary wave mean period [s]"},
      /* 111 */ {"NSWRS", "Net short wave (surface) [W/m^2]"},
      /* 112 */ {"NLWRS", "Net long wave (surface) [W/m^2]"},
      /* 113 */ {"NSWRT", "Net short wave (top) [W/m^2]"},
      /* 114 */ {"NLWRT", "Net long wave (top) [W/m^2]"},
      /* 115 */ {"LWAVR", "Long wave [W/m^2]"},
      /* 116 */ {"SWAVR", "Short wave [W/m^2]"},
      /* 117 */ {"GRAD", "Global radiation [W/m^2]"},
      /* 118 */ {"BRTMP", "Brightness temperature [K]"},
      /* 119 */ {"LWRAD", "Radiance with respect to wave no. [W/m/sr]"},
      /* 120 */ {"SWRAD", "Radiance with respect ot wave len. [W/m^3/sr]"},
      /* 121 */ {"LHTFL", "Latent heat flux [W/m^2]"},
      /* 122 */ {"SHTFL", "Sensible heat flux [W/m^2]"},
      /* 123 */ {"BLYDP", "Boundary layer dissipation [W/m^2]"},
      /* 124 */ {"UFLX", "Zonal momentum flux [N/m^2]"},
      /* 125 */ {"VFLX", "Meridional momentum flux [N/m^2]"},
      /* 126 */ {"WMIXE", "Wind mixing energy [J]"},
      /* 127 */ {"IMGD", "Image data []"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"POZT", "Ozone production from T term"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"OMGALF", "omega divided by density"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"COVZZ", "Covariance between u and u"},
      /* 165 */ {"COVMM", "Covariance between v and v"},
      /* 166 */ {"COVQZ", "Covariance between q and u"},
      /* 167 */ {"COVQM", "Covariance between q and v"},
      /* 168 */ {"COVTVV", "Covariance between T and omega"},
      /* 169 */ {"COVQVV", "Covariance between q and omega"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"LRGMR", "Large scale moistening rate"},
      /* 174 */ {"VDFOZ", "Ozone vertical diffusion"},
      /* 175 */ {"POZ", "Ozone production"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"GWDU", "Gravity wave drag u acceleration"},
      /* 182 */ {"GWDV", "Gravity wave drag v acceleration"},
      /* 183 */ {"CNVU", "Convective u momentum mixing acceleration"},
      /* 184 */ {"CNVV", "Convective v momentum mixing acceleration"},
      /* 185 */ {"AKHS", "Sfc exchange coeff for T and Q divided by delta z"},
      /* 186 */ {"AKMS", "Sfc exchange coeff for U and V divided by delta z"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"TOZ", "Ozone tendency"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"SUNSD", "Sunshine duration [s]"},
      /* 192 */ {"MOSF", "Meridional overturning stream function [10^6m^3/s]"},
      /* 193 */ {"EPSR", "Radiative emiissivity"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"QZ0", "q at top of viscous sublayer"},
      /* 196 */ {"CNGWDU", "Convective gravity wave drag zonal acceleration"},
      /* 197 */ {"CNGWDV", "Convective gravity wave drag meridional acceleration"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"THZ0", "Theta at top of viscous sublayer"},
      /* 202 */ {"CNVUMF", "Convective updraft mass flux"},
      /* 203 */ {"COVPSPS", "Covariance between psfc and psfc"},
      /* 204 */ {"QMAX", "Maximum specific humidity at 2m"},
      /* 205 */ {"QMIN", "Minimum specific humidity at 2m"},
      /* 206 */ {"COVQQ", "Covariance between q and q"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"CNVDMF", "Convective downdraft mass flux"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"CNVDEMF", "Convective detrainment mass flux"},
      /* 220 */ {"COVVVVV", "Covariance between omega and omega"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"var228", "undefined"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"COVTT", "Covariance between T and T"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"WTEND", "Tendency of vertical velocity"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"POZO", "Ozone production from col ozone term"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "undefined"},
};

const struct ParmTable parm_table_nceptab_128[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"PRES", "Pressure [Pa]"},
      /* 2 */ {"PRMSL", "Pressure reduced to MSL [Pa]"},
      /* 3 */ {"PTEND", "Pressure tendency [Pa/s]"},
      /* 4 */ {"PVORT", "Pot. vorticity [km^2/kg/s]"},
      /* 5 */ {"ICAHT", "ICAO Standard Atmosphere Reference Height [M]"},
      /* 6 */ {"GP", "Geopotential [m^2/s^2]"},
      /* 7 */ {"HGT", "Geopotential height [gpm]"},
      /* 8 */ {"DIST", "Geometric height [m]"},
      /* 9 */ {"HSTDV", "Std dev of height [m]"},
      /* 10 */ {"TOZNE", "Total ozone [Dobson]"},
      /* 11 */ {"TMP", "Temp. [K]"},
      /* 12 */ {"VTMP", "Virtual temp. [K]"},
      /* 13 */ {"POT", "Potential temp. [K]"},
      /* 14 */ {"EPOT", "Pseudo-adiabatic pot. temp. [K]"},
      /* 15 */ {"TMAX", "Max. temp. [K]"},
      /* 16 */ {"TMIN", "Min. temp. [K]"},
      /* 17 */ {"DPT", "Dew point temp. [K]"},
      /* 18 */ {"DEPR", "Dew point depression [K]"},
      /* 19 */ {"LAPR", "Lapse rate [K/m]"},
      /* 20 */ {"VIS", "Visibility [m]"},
      /* 21 */ {"RDSP1", "Radar spectra (1) [non-dim]"},
      /* 22 */ {"RDSP2", "Radar spectra (2) [non-dim]"},
      /* 23 */ {"RDSP3", "Radar spectra (3) [non-dim]"},
      /* 24 */ {"PLI", "Parcel lifted index (to 500 hPa) [K]"},
      /* 25 */ {"TMPA", "Temp. anomaly [K]"},
      /* 26 */ {"PRESA", "Pressure anomaly [Pa]"},
      /* 27 */ {"GPA", "Geopotential height anomaly [gpm]"},
      /* 28 */ {"WVSP1", "Wave spectra (1) [non-dim]"},
      /* 29 */ {"WVSP2", "Wave spectra (2) [non-dim]"},
      /* 30 */ {"WVSP3", "Wave spectra (3) [non-dim]"},
      /* 31 */ {"WDIR", "Wind direction [deg]"},
      /* 32 */ {"WIND", "Wind speed [m/s]"},
      /* 33 */ {"UGRD", "u wind [m/s]"},
      /* 34 */ {"VGRD", "v wind [m/s]"},
      /* 35 */ {"STRM", "Stream function [m^2/s]"},
      /* 36 */ {"VPOT", "Velocity potential [m^2/s]"},
      /* 37 */ {"MNTSF", "Montgomery stream function [m^2/s^2]"},
      /* 38 */ {"SGCVV", "Sigma coord. vertical velocity [/s]"},
      /* 39 */ {"VVEL", "Pressure vertical velocity [Pa/s]"},
      /* 40 */ {"DZDT", "Geometric vertical velocity [m/s]"},
      /* 41 */ {"ABSV", "Absolute vorticity [/s]"},
      /* 42 */ {"ABSD", "Absolute divergence [/s]"},
      /* 43 */ {"RELV", "Relative vorticity [/s]"},
      /* 44 */ {"RELD", "Relative divergence [/s]"},
      /* 45 */ {"VUCSH", "Vertical u shear [/s]"},
      /* 46 */ {"VVCSH", "Vertical v shear [/s]"},
      /* 47 */ {"DIRC", "Direction of current [deg]"},
      /* 48 */ {"SPC", "Speed of current [m/s]"},
      /* 49 */ {"UOGRD", "u of current [m/s]"},
      /* 50 */ {"VOGRD", "v of current [m/s]"},
      /* 51 */ {"SPFH", "Specific humidity [kg/kg]"},
      /* 52 */ {"RH", "Relative humidity [%]"},
      /* 53 */ {"MIXR", "Humidity mixing ratio [kg/kg]"},
      /* 54 */ {"PWAT", "Precipitable water [kg/m^2]"},
      /* 55 */ {"VAPP", "Vapor pressure [Pa]"},
      /* 56 */ {"SATD", "Saturation deficit [Pa]"},
      /* 57 */ {"EVP", "Evaporation [kg/m^2]"},
      /* 58 */ {"CICE", "Cloud Ice [kg/m^2]"},
      /* 59 */ {"PRATE", "Precipitation rate [kg/m^2/s]"},
      /* 60 */ {"TSTM", "Thunderstorm probability [%]"},
      /* 61 */ {"APCP", "Total precipitation [kg/m^2]"},
      /* 62 */ {"NCPCP", "Large scale precipitation [kg/m^2]"},
      /* 63 */ {"ACPCP", "Convective precipitation [kg/m^2]"},
      /* 64 */ {"SRWEQ", "Snowfall rate water equiv. [kg/m^2/s]"},
      /* 65 */ {"WEASD", "Accum. snow [kg/m^2]"},
      /* 66 */ {"SNOD", "Snow depth [m]"},
      /* 67 */ {"MIXHT", "Mixed layer depth [m]"},
      /* 68 */ {"TTHDP", "Transient thermocline depth [m]"},
      /* 69 */ {"MTHD", "Main thermocline depth [m]"},
      /* 70 */ {"MTHA", "Main thermocline anomaly [m]"},
      /* 71 */ {"TCDC", "Total cloud cover [%]"},
      /* 72 */ {"CDCON", "Convective cloud cover [%]"},
      /* 73 */ {"LCDC", "Low level cloud cover [%]"},
      /* 74 */ {"MCDC", "Mid level cloud cover [%]"},
      /* 75 */ {"HCDC", "High level cloud cover [%]"},
      /* 76 */ {"CWAT", "Cloud water [kg/m^2]"},
      /* 77 */ {"BLI", "Best lifted index (to 500 hPa) [K]"},
      /* 78 */ {"SNOC", "Convective snow [kg/m^2]"},
      /* 79 */ {"SNOL", "Large scale snow [kg/m^2]"},
      /* 80 */ {"WTMP", "Water temp. [K]"},
      /* 81 */ {"LAND", "Land cover (land=1;sea=0) [fraction]"},
      /* 82 */ {"DSLM", "Deviation of sea level from mean [m]"},
      /* 83 */ {"SFCR", "Surface roughness [m]"},
      /* 84 */ {"ALBDO", "Albedo [%]"},
      /* 85 */ {"TSOIL", "Soil temp. [K]"},
      /* 86 */ {"SOILM", "Soil moisture content [kg/m^2]"},
      /* 87 */ {"VEG", "Vegetation [%]"},
      /* 88 */ {"SALTY", "Salinity [kg/kg]"},
      /* 89 */ {"DEN", "Density [kg/m^3]"},
      /* 90 */ {"WATR", "Water runoff [kg/m^2]"},
      /* 91 */ {"ICEC", "Ice concentration (ice=1;no ice=0) [fraction]"},
      /* 92 */ {"ICETK", "Ice thickness [m]"},
      /* 93 */ {"DICED", "Direction of ice drift [deg]"},
      /* 94 */ {"SICED", "Speed of ice drift [m/s]"},
      /* 95 */ {"UICE", "u of ice drift [m/s]"},
      /* 96 */ {"VICE", "v of ice drift [m/s]"},
      /* 97 */ {"ICEG", "Ice growth rate [m/s]"},
      /* 98 */ {"ICED", "Ice divergence [/s]"},
      /* 99 */ {"SNOM", "Snow melt [kg/m^2]"},
      /* 100 */ {"HTSGW", "Sig height of wind waves and swell [m]"},
      /* 101 */ {"WVDIR", "Direction of wind waves [deg]"},
      /* 102 */ {"WVHGT", "Sig height of wind waves [m]"},
      /* 103 */ {"WVPER", "Mean period of wind waves [s]"},
      /* 104 */ {"SWDIR", "Direction of swell waves [deg]"},
      /* 105 */ {"SWELL", "Sig height of swell waves [m]"},
      /* 106 */ {"SWPER", "Mean period of swell waves [s]"},
      /* 107 */ {"DIRPW", "Primary wave direction [deg]"},
      /* 108 */ {"PERPW", "Primary wave mean period [s]"},
      /* 109 */ {"DIRSW", "Secondary wave direction [deg]"},
      /* 110 */ {"PERSW", "Secondary wave mean period [s]"},
      /* 111 */ {"NSWRS", "Net short wave (surface) [W/m^2]"},
      /* 112 */ {"NLWRS", "Net long wave (surface) [W/m^2]"},
      /* 113 */ {"NSWRT", "Net short wave (top) [W/m^2]"},
      /* 114 */ {"NLWRT", "Net long wave (top) [W/m^2]"},
      /* 115 */ {"LWAVR", "Long wave [W/m^2]"},
      /* 116 */ {"SWAVR", "Short wave [W/m^2]"},
      /* 117 */ {"GRAD", "Global radiation [W/m^2]"},
      /* 118 */ {"BRTMP", "Brightness temperature [K]"},
      /* 119 */ {"LWRAD", "Radiance with respect to wave no. [W/m/sr]"},
      /* 120 */ {"SWRAD", "Radiance with respect ot wave len. [W/m^3/sr]"},
      /* 121 */ {"LHTFL", "Latent heat flux [W/m^2]"},
      /* 122 */ {"SHTFL", "Sensible heat flux [W/m^2]"},
      /* 123 */ {"BLYDP", "Boundary layer dissipation [W/m^2]"},
      /* 124 */ {"UFLX", "Zonal momentum flux [N/m^2]"},
      /* 125 */ {"VFLX", "Meridional momentum flux [N/m^2]"},
      /* 126 */ {"WMIXE", "Wind mixing energy [J]"},
      /* 127 */ {"IMGD", "Image data []"},
      /* 128 */ {"AVDEPTH", "Ocean depth - mean [m]"},
      /* 129 */ {"DEPTH", "Ocean depth - instantaneous [m]"},
      /* 130 */ {"ELEV", "Ocean surface elevation relative to geoid [m]"},
      /* 131 */ {"MXEL24", "Max ocean surface elevation in last 24 hours [m]"},
      /* 132 */ {"MNEL24", "Min ocean surface elevation in last 24 hours [m]"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"O2", "Oxygen (O2 (aq)) []"},
      /* 136 */ {"PO4", "PO4 [Mol/kg]"},
      /* 137 */ {"NO3", "NO3 [Mol/kg]"},
      /* 138 */ {"SiO4", "SiO4 [Mol/kg]"},
      /* 139 */ {"CO2aq", "CO2 (aq) [Mol/kg]"},
      /* 140 */ {"HCO3", "HCO3 - [Mol/kg]"},
      /* 141 */ {"CO3", "CO3 -- [Mol/kg]"},
      /* 142 */ {"TCO2", "TCO2 [Mol/kg]"},
      /* 143 */ {"TALK", "TALK [Mol/kg]"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"S11", "S11 - 1,1 component of ice stress tensor []"},
      /* 147 */ {"S12", "S12 - 1,2 component of ice stress tensor []"},
      /* 148 */ {"S22", "S22 - 2,2 component of ice stress tensor []"},
      /* 149 */ {"INV1", "T1 - First invariant of stress tensor []"},
      /* 150 */ {"INV2", "T2 - Second invariant of stress tensor []"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"WVRGH", "Wave Roughness[ ]"},
      /* 156 */ {"WVSTRS", "Wave Stresses []"},
      /* 157 */ {"WHITE", "Whitecap coverage []"},
      /* 158 */ {"SWDIRWID", "Swell direction width []"},
      /* 159 */ {"SWFREWID", "Swell frequency width []"},
      /* 160 */ {"WVAGE", "Wave age []"},
      /* 161 */ {"PWVAGE", "Physical Wave age []"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"LTURB", "Master length scale (turbulence) [m]"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"AIHFLX", "Net Air-Ice heat flux [W/m^2]"},
      /* 171 */ {"AOHFLX", "Net Air-Ocean heat flux [W/m^2]"},
      /* 172 */ {"IOHFLX", "Net Ice-Ocean heat flux [W/m^2]"},
      /* 173 */ {"IOSFLX", "Net Ice-Ocean salt flux kg/s]"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"OMLT", "Ocean Mixed Layer Temperature [K]"},
      /* 176 */ {"OMLS", "Ocean Mixed Layer Salinity [kg/kg]"},
      /* 177 */ {"OMLPOTDEN", "Ocean Mixed Layer Potential density (Referenced to 2000m) [kg/m^3]"},
      /* 178 */ {"OMLU", "U Velocity in mixed layer [m/s]"},
      /* 179 */ {"OMLV", "V Velocity in mixed layer [m/s]"},
      /* 180 */ {"ASHFL", "Assimilative Heat Flux [W/m^2]"},
      /* 181 */ {"ASSFL", "Assimilative Salt Flux [mm/day]"},
      /* 182 */ {"BOTLD", "Bottom Layer Depth [m]"},
      /* 183 */ {"UBARO", "Barotropic U Velocity [m/s]"},
      /* 184 */ {"VBARO", "Barotropic V Velocity [m/s]"},
      /* 185 */ {"INTFD", "Interface Depth [m]"},
      /* 186 */ {"WTMPC", "Temperature [C]"},
      /* 187 */ {"SALIN", "Salinity [psu]"},
      /* 188 */ {"EMNP", "Evaporation - Precipitation [cm/day]"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"KENG", "Kinetic Energy [J/kg]"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"LAYTH", "Layer Thickness[m]"},
      /* 193 */ {"SSTT", "Surface Temperature Trend [K/day]"},
      /* 194 */ {"SSST", "Surface Salinity Trend [psu/day]"},
      /* 195 */ {"OVHD", "Ocean vertical heat diffusivity [m^2/s]"},
      /* 196 */ {"OVSD", "Ocean vertical salt diffusivity [m^2/s]"},
      /* 197 */ {"OVMD", "Ocean vertical momementum diffusivity [m^2/s]"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"var228", "undefined"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"RERRVAR", "Relative Error Variance [pure number]"},
      /* 255 */ {"var255", "undefined"},
};

const struct ParmTable parm_table_ecmwf_128[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"STRF", "Stream function [m**2 s**-1]"},
      /* 2 */ {"VPOT", "Velocity potential [m**2 s**-1]"},
      /* 3 */ {"PT", "Potential temperature [K]"},
      /* 4 */ {"EQPT", "Equivalent potential temperature [K]"},
      /* 5 */ {"SEPT", "Saturated equivalent potential temperature [K]"},
      /* 6 */ {"SSFR", "Soil sand fraction [(0 - 1)]"},
      /* 7 */ {"SCFR", "Soil clay fraction [(0 - 1)]"},
      /* 8 */ {"SRO", "Surface runoff [m]"},
      /* 9 */ {"SSRO", "Sub-surface runoff [m]"},
      /* 10 */ {"WIND", "Wind speed [m s**-1]"},
      /* 11 */ {"UDVW", "U component of divergent wind [m s**-1]"},
      /* 12 */ {"VDVW", "V component of divergent wind [m s**-1]"},
      /* 13 */ {"URTW", "U component of rotational wind [m s**-1]"},
      /* 14 */ {"VRTW", "V component of rotational wind [m s**-1]"},
      /* 15 */ {"ALUVP", "UV visible albedo for direct radiation [(0 - 1)]"},
      /* 16 */ {"ALUVD", "UV visible albedo for diffuse radiation [(0 - 1)]"},
      /* 17 */ {"ALNIP", "Near IR albedo for direct radiation [(0 - 1)]"},
      /* 18 */ {"ALNID", "Near IR albedo for diffuse radiation [(0 - 1)]"},
      /* 19 */ {"UVCS", "Clear sky surface UV [W m**-2 s]"},
      /* 20 */ {"PARCS", "Clear sky surface PAR [W m**-2 s]"},
      /* 21 */ {"UCTP", "Unbalanced component of temperature [K]"},
      /* 22 */ {"UCLN", "Unbalanced component of logarithm of surface pressure []"},
      /* 23 */ {"UCDV", "Unbalanced component of divergence [s**-1]"},
      /* 24 */ {"var24", "Reserved for future unbalanced components []"},
      /* 25 */ {"var25", "Reserved for future unbalanced components []"},
      /* 26 */ {"CL", "Lake cover [(0 - 1)]"},
      /* 27 */ {"CVL", "Low vegetation cover [(0 - 1)]"},
      /* 28 */ {"CVH", "High vegetation cover [(0 - 1)]"},
      /* 29 */ {"TVL", "Type of low vegetation []"},
      /* 30 */ {"TVH", "Type of high vegetation []"},
      /* 31 */ {"CI", "Sea-ice cover [(0 - 1)]"},
      /* 32 */ {"ASN", "Snow albedo [(0 - 1)]"},
      /* 33 */ {"RSN", "Snow density [kg m**-3]"},
      /* 34 */ {"SSTK", "Sea surface temperature [K]"},
      /* 35 */ {"ISTL1", "Ice surface temperature layer 1 [K]"},
      /* 36 */ {"ISTL2", "Ice surface temperature layer 2 [K]"},
      /* 37 */ {"ISTL3", "Ice surface temperature layer 3 [K]"},
      /* 38 */ {"ISTL4", "Ice surface temperature layer 4 [K]"},
      /* 39 */ {"SWVL1", "Volumetric soil water layer 1 [m**3 m**-3]"},
      /* 40 */ {"SWVL2", "Volumetric soil water layer 2 [m**3 m**-3]"},
      /* 41 */ {"SWVL3", "Volumetric soil water layer 3 [m**3 m**-3]"},
      /* 42 */ {"SWVL4", "Volumetric soil water layer 4 [m**3 m**-3]"},
      /* 43 */ {"SLT", "Soil type []"},
      /* 44 */ {"ES", "Snow evaporation [m of water]"},
      /* 45 */ {"SMLT", "Snowmelt [m of water]"},
      /* 46 */ {"SDUR", "Solar duration [s]"},
      /* 47 */ {"DSRP", "Direct solar radiation [w m**-2]"},
      /* 48 */ {"MAGSS", "Magnitude of surface stress [N m**-2 s]"},
      /* 49 */ {"10FG", "10 metre wind gust [m s**-1]"},
      /* 50 */ {"LSPF", "Large-scale precipitation fraction [s]"},
      /* 51 */ {"MX2T24", "Maximum temperature at 2 metres since last 24 hours [K]"},
      /* 52 */ {"MN2T24", "Minimum temperature at 2 metres since last 24 hours [K]"},
      /* 53 */ {"MONT", "Montgomery potential [m**2 s**-2]"},
      /* 54 */ {"PRES", "Pressure [Pa]"},
      /* 55 */ {"MEAN2T24", "Mean temperature at 2 metres since last 24 hours [K]"},
      /* 56 */ {"MN2D24", "Mean 2 metre dewpoint temperature in past 24 hours [K]"},
      /* 57 */ {"UVB", "Downward UV radiation at the surface [w m**-2 s]"},
      /* 58 */ {"PAR", "Photosynthetically active radiation at the surface [w m**-2 s]"},
      /* 59 */ {"CAPE", "Convective available potential energy [J kg**-1]"},
      /* 60 */ {"PV", "Potential vorticity [K m**2 kg**-1 s**-1]"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"OBCT", "Observation count []"},
      /* 63 */ {"var63", "Start time for skin temperature difference [s]"},
      /* 64 */ {"var64", "Finish time for skin temperature difference [s]"},
      /* 65 */ {"var65", "Skin temperature difference [K]"},
      /* 66 */ {"var66", "Leaf area index, low vegetation [m**2 / m**2]"},
      /* 67 */ {"var67", "Leaf area index, high vegetation [m**2 / m**2]"},
      /* 68 */ {"var68", "Minimum stomatal resistance, low vegetation [s m**-1]"},
      /* 69 */ {"var69", "Minimum stomatal resistance, high vegetation [s m**-1]"},
      /* 70 */ {"var70", "Biome cover, low vegetation [(0 - 1)]"},
      /* 71 */ {"var71", "Biome cover, high vegetation [(0 - 1)]"},
      /* 72 */ {"ISSRD", "Instantaneous surface solar radiation downwards [w m**-2]"},
      /* 73 */ {"ISTRD", "Instantaneous surface thermal radiation downwards [w m**-2]"},
      /* 74 */ {"SDFOR", "Standard deviation of filtered subgrid orography [m]"},
      /* 75 */ {"CRWC", "Cloud rain water content [kg kg**-1]"},
      /* 76 */ {"CSWC", "Cloud snow water content [kg kg**-1]"},
      /* 77 */ {"ETADOT", "Eta-coordinate vertical velocity [s**-1]"},
      /* 78 */ {"TCLW", "Total column liquid water [kg m**-2]"},
      /* 79 */ {"TCIW", "Total column ice water [kg m**-2]"},
      /* 80 */ {"var80", "Experimental product []"},
      /* 81 */ {"var81", "Experimental product []"},
      /* 82 */ {"var82", "Experimental product []"},
      /* 83 */ {"var83", "Experimental product []"},
      /* 84 */ {"var84", "Experimental product []"},
      /* 85 */ {"var85", "Experimental product []"},
      /* 86 */ {"var86", "Experimental product []"},
      /* 87 */ {"var87", "Experimental product []"},
      /* 88 */ {"var88", "Experimental product []"},
      /* 89 */ {"var89", "Experimental product []"},
      /* 90 */ {"var90", "Experimental product []"},
      /* 91 */ {"var91", "Experimental product []"},
      /* 92 */ {"var92", "Experimental product []"},
      /* 93 */ {"var93", "Experimental product []"},
      /* 94 */ {"var94", "Experimental product []"},
      /* 95 */ {"var95", "Experimental product []"},
      /* 96 */ {"var96", "Experimental product []"},
      /* 97 */ {"var97", "Experimental product []"},
      /* 98 */ {"var98", "Experimental product []"},
      /* 99 */ {"var99", "Experimental product []"},
      /* 100 */ {"var100", "Experimental product []"},
      /* 101 */ {"var101", "Experimental product []"},
      /* 102 */ {"var102", "Experimental product []"},
      /* 103 */ {"var103", "Experimental product []"},
      /* 104 */ {"var104", "Experimental product []"},
      /* 105 */ {"var105", "Experimental product []"},
      /* 106 */ {"var106", "Experimental product []"},
      /* 107 */ {"var107", "Experimental product []"},
      /* 108 */ {"var108", "Experimental product []"},
      /* 109 */ {"var109", "Experimental product []"},
      /* 110 */ {"var110", "Experimental product []"},
      /* 111 */ {"var111", "Experimental product []"},
      /* 112 */ {"var112", "Experimental product []"},
      /* 113 */ {"var113", "Experimental product []"},
      /* 114 */ {"var114", "Experimental product []"},
      /* 115 */ {"var115", "Experimental product []"},
      /* 116 */ {"var116", "Experimental product []"},
      /* 117 */ {"var117", "Experimental product []"},
      /* 118 */ {"var118", "Experimental product []"},
      /* 119 */ {"var119", "Experimental product []"},
      /* 120 */ {"var120", "Experimental product []"},
      /* 121 */ {"MX2T6", "Maximum temperature at 2 metres since last 6 hours [K]"},
      /* 122 */ {"MN2T6", "Minimum temperature at 2 metres since last 6 hours [K]"},
      /* 123 */ {"10FG6", "10 metre wind gust in the past 6 hours [m s**-1]"},
      /* 124 */ {"EMIS", "Surface emissivity [dimensionless]"},
      /* 125 */ {"var125", "Vertically integrated total energy [J m**-2]"},
      /* 126 */ {"var126", "Generic parameter for sensitive area prediction [Various]"},
      /* 127 */ {"AT", "Atmospheric tide []"},
      /* 128 */ {"BV", "Budget values []"},
      /* 129 */ {"Z", "Geopotential [m**2 s**-2]"},
      /* 130 */ {"T", "Temperature [K]"},
      /* 131 */ {"U", "U velocity [m s**-1]"},
      /* 132 */ {"V", "V velocity [m s**-1]"},
      /* 133 */ {"Q", "Specific humidity [kg kg**-1]"},
      /* 134 */ {"SP", "Surface pressure [Pa]"},
      /* 135 */ {"W", "Vertical velocity [Pa s**-1]"},
      /* 136 */ {"TCW", "Total column water [kg m**-2]"},
      /* 137 */ {"TCWV", "Total column water vapour [kg m**-2]"},
      /* 138 */ {"VO", "Vorticity (relative) [s**-1]"},
      /* 139 */ {"STL1", "Soil temperature level 1 [K]"},
      /* 140 */ {"SWL1", "Soil wetness level 1 [m of water]"},
      /* 141 */ {"SD", "Snow depth [m of water equivalent]"},
      /* 142 */ {"LSP", "Stratiform precipitation (Large-scale precipitation) [m]"},
      /* 143 */ {"CP", "Convective precipitation [m]"},
      /* 144 */ {"SF", "Snowfall [m of water equivalent]"},
      /* 145 */ {"BLD", "Boundary layer dissipation [W m**-2 s]"},
      /* 146 */ {"SSHF", "Surface sensible heat flux [W m**-2 s]"},
      /* 147 */ {"SLHF", "Surface latent heat flux [W m**-2 s]"},
      /* 148 */ {"CHNK", "Charnock []"},
      /* 149 */ {"SNR", "Surface net radiation [W m**-2 s]"},
      /* 150 */ {"TNR", "Top net radiation []"},
      /* 151 */ {"MSL", "Mean sea level pressure [Pa]"},
      /* 152 */ {"LNSP", "Logarithm of surface pressure []"},
      /* 153 */ {"SWHR", "Short-wave heating rate [K]"},
      /* 154 */ {"LWHR", "Long-wave heating rate [K]"},
      /* 155 */ {"D", "Divergence [s**-1]"},
      /* 156 */ {"GH", "Height [gpm]"},
      /* 157 */ {"R", "Relative humidity [%]"},
      /* 158 */ {"TSP", "Tendency of surface pressure [Pa s**-1]"},
      /* 159 */ {"BLH", "Boundary layer height [m]"},
      /* 160 */ {"SDOR", "Standard deviation of orography []"},
      /* 161 */ {"ISOR", "Anisotropy of sub-gridscale orography []"},
      /* 162 */ {"ANOR", "Angle of sub-gridscale orography [rad]"},
      /* 163 */ {"SLOR", "Slope of sub-gridscale orography []"},
      /* 164 */ {"TCC", "Total cloud cover [(0 - 1)]"},
      /* 165 */ {"10U", "10 metre U wind component [m s**-1]"},
      /* 166 */ {"10V", "10 metre V wind component [m s**-1]"},
      /* 167 */ {"2T", "2 metre temperature [K]"},
      /* 168 */ {"2D", "2 metre dewpoint temperature [K]"},
      /* 169 */ {"SSRD", "Surface solar radiation downwards [W m**-2 s]"},
      /* 170 */ {"STL2", "Soil temperature level 2 [K]"},
      /* 171 */ {"SWL2", "Soil wetness level 2 [m of water]"},
      /* 172 */ {"LSM", "Land-sea mask [(0 - 1)]"},
      /* 173 */ {"SR", "Surface roughness [m]"},
      /* 174 */ {"AL", "Albedo [(0 - 1)]"},
      /* 175 */ {"STRD", "Surface thermal radiation downwards [W m**-2 s]"},
      /* 176 */ {"SSR", "Surface solar radiation [W m**-2 s]"},
      /* 177 */ {"STR", "Surface thermal radiation [W m**-2 s]"},
      /* 178 */ {"TSR", "Top solar radiation [W m**-2 s]"},
      /* 179 */ {"TTR", "Top thermal radiation [W m**-2 s]"},
      /* 180 */ {"EWSS", "East-West surface stress [N m**-2 s]"},
      /* 181 */ {"NSSS", "North-South surface stress [N m**-2 s]"},
      /* 182 */ {"E", "Evaporation [m of water]"},
      /* 183 */ {"STL3", "Soil temperature level 3 [K]"},
      /* 184 */ {"SWL3", "Soil wetness level 3 [m of water]"},
      /* 185 */ {"CCC", "Convective cloud cover [(0 - 1)]"},
      /* 186 */ {"LCC", "Low cloud cover [(0 - 1)]"},
      /* 187 */ {"MCC", "Medium cloud cover [(0 - 1)]"},
      /* 188 */ {"HCC", "High cloud cover [(0 - 1)]"},
      /* 189 */ {"SUND", "Sunshine duration [s]"},
      /* 190 */ {"EWOV", "East-West component of sub-gridscale orographic variance [m**2]"},
      /* 191 */ {"NSOV", "North-South component of sub-gridscale orographic variance [m**2]"},
      /* 192 */ {"NWOV", "North-West/South-East component of sub-gridscale orographic variance [m**2]"},
      /* 193 */ {"NEOV", "North-East/South-West component of sub-gridscale orographic variance [m**2]"},
      /* 194 */ {"BTMP", "Brightness temperature [K]"},
      /* 195 */ {"LGWS", "Latitudinal component of gravity wave stress [N m**-2 s]"},
      /* 196 */ {"MGWS", "Meridional component of gravity wave stress [N m**-2 s]"},
      /* 197 */ {"GWD", "Gravity wave dissipation [W m**-2 s]"},
      /* 198 */ {"SRC", "Skin reservoir content [m of water]"},
      /* 199 */ {"VEG", "Vegetation fraction [(0 - 1)]"},
      /* 200 */ {"VSO", "Variance of sub-gridscale orography [m**2]"},
      /* 201 */ {"MX2T", "Maximum temperature at 2 metres since previous post-processing [K]"},
      /* 202 */ {"MN2T", "Minimum temperature at 2 metres since previous post-processing [K]"},
      /* 203 */ {"O3", "Ozone mass mixing ratio [kg kg**-1]"},
      /* 204 */ {"PAW", "Precipitation analysis weights []"},
      /* 205 */ {"RO", "Runoff [m]"},
      /* 206 */ {"TCO3", "Total column ozone [kg m**-2]"},
      /* 207 */ {"10SI", "10 metre wind speed [m s**-1]"},
      /* 208 */ {"TSRC", "Top net solar radiation, clear sky [W m**-2 s]"},
      /* 209 */ {"TTRC", "Top net thermal radiation, clear sky [W m**-2 s]"},
      /* 210 */ {"SSRC", "Surface net solar radiation, clear sky [W m**-2 s]"},
      /* 211 */ {"STRC", "Surface net thermal radiation, clear sky [W m**-2 s]"},
      /* 212 */ {"TISR", "TOA incident solar radiation [W m**-2 s]"},
      /* 213 */ {"VIMD", "Vertically integrated moisture divergence [kg m**-2]"},
      /* 214 */ {"DHR", "Diabatic heating by radiation [K]"},
      /* 215 */ {"DHVD", "Diabatic heating by vertical diffusion [K]"},
      /* 216 */ {"DHCC", "Diabatic heating by cumulus convection [K]"},
      /* 217 */ {"DHLC", "Diabatic heating large-scale condensation [K]"},
      /* 218 */ {"VDZW", "Vertical diffusion of zonal wind [m s**-1]"},
      /* 219 */ {"VDMW", "Vertical diffusion of meridional wind [m s**-1]"},
      /* 220 */ {"EWGD", "East-West gravity wave drag tendency [m s**-1]"},
      /* 221 */ {"NSGD", "North-South gravity wave drag tendency [m s**-1]"},
      /* 222 */ {"CTZW", "Convective tendency of zonal wind [m s**-1]"},
      /* 223 */ {"CTMW", "Convective tendency of meridional wind [m s**-1]"},
      /* 224 */ {"VDH", "Vertical diffusion of humidity [kg kg**-1]"},
      /* 225 */ {"HTCC", "Humidity tendency by cumulus convection [kg kg**-1]"},
      /* 226 */ {"HTLC", "Humidity tendency by large-scale condensation [kg kg**-1]"},
      /* 227 */ {"CRNH", "Change from removal of negative humidity [kg kg**-1]"},
      /* 228 */ {"TP", "Total precipitation [m]"},
      /* 229 */ {"IEWS", "Instantaneous X surface stress [N m**-2]"},
      /* 230 */ {"INSS", "Instantaneous Y surface stress [N m**-2]"},
      /* 231 */ {"ISHF", "Instantaneous surface heat flux [W m**-2]"},
      /* 232 */ {"IE", "Instantaneous moisture flux [kg m**-2 s**-1]"},
      /* 233 */ {"ASQ", "Apparent surface humidity [kg kg**-1]"},
      /* 234 */ {"LSRH", "Logarithm of surface roughness length for heat []"},
      /* 235 */ {"SKT", "Skin temperature [K]"},
      /* 236 */ {"STL4", "Soil temperature level 4 [K]"},
      /* 237 */ {"SWL4", "Soil wetness level 4 [m]"},
      /* 238 */ {"TSN", "Temperature of snow layer [K]"},
      /* 239 */ {"CSF", "Convective snowfall [m of water equivalent]"},
      /* 240 */ {"LSF", "Large-scale snowfall [m of water equivalent]"},
      /* 241 */ {"ACF", "Accumulated cloud fraction tendency [(-1 to 1)]"},
      /* 242 */ {"ALW", "Accumulated liquid water tendency [(-1 to 1)]"},
      /* 243 */ {"FAL", "Forecast albedo [(0 - 1)]"},
      /* 244 */ {"FSR", "Forecast surface roughness [m]"},
      /* 245 */ {"FLSR", "Forecast logarithm of surface roughness for heat []"},
      /* 246 */ {"CLWC", "Cloud liquid water content [kg kg**-1]"},
      /* 247 */ {"CIWC", "Cloud ice water content [kg kg**-1]"},
      /* 248 */ {"CC", "Cloud cover [(0 - 1)]"},
      /* 249 */ {"AIW", "Accumulated ice water tendency [(-1 to 1)]"},
      /* 250 */ {"ICE", "Ice age [(0 - 1)]"},
      /* 251 */ {"ATTE", "Adiabatic tendency of temperature [K]"},
      /* 252 */ {"ATHE", "Adiabatic tendency of humidity [kg kg**-1]"},
      /* 253 */ {"ATZE", "Adiabatic tendency of zonal wind [m s**-1]"},
      /* 254 */ {"ATMW", "Adiabatic tendency of meridional wind [m s**-1]"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_129[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"STRF", "Stream function [m**2 s**-1]"},
      /* 2 */ {"VPOT", "Velocity potential [m**2 s**-1]"},
      /* 3 */ {"PT", "Potential temperature [K]"},
      /* 4 */ {"EQPT", "Equivalent potential temperature [K]"},
      /* 5 */ {"SEPT", "Saturated equivalent potential temperature [K]"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"UDVW", "U component of divergent wind [m s**-1]"},
      /* 12 */ {"VDVW", "V component of divergent wind [m s**-1]"},
      /* 13 */ {"URTW", "U component of rotational wind [m s**-1]"},
      /* 14 */ {"VRTW", "V component of rotational wind [m s**-1]"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"UCTP", "Unbalanced component of temperature [K]"},
      /* 22 */ {"UCLN", "Unbalanced component of logarithm of surface pressure []"},
      /* 23 */ {"UCDV", "Unbalanced component of divergence [s**-1]"},
      /* 24 */ {"var24", "Reserved for future unbalanced components []"},
      /* 25 */ {"var25", "Reserved for future unbalanced components []"},
      /* 26 */ {"CL", "Lake cover [(0 - 1)]"},
      /* 27 */ {"CVL", "Low vegetation cover [(0 - 1)]"},
      /* 28 */ {"CVH", "High vegetation cover [(0 - 1)]"},
      /* 29 */ {"TVL", "Type of low vegetation []"},
      /* 30 */ {"TVH", "Type of high vegetation []"},
      /* 31 */ {"CI", "Sea-ice cover [(0 - 1)]"},
      /* 32 */ {"ASN", "Snow albedo [(0 - 1)]"},
      /* 33 */ {"RSN", "Snow density [kg m**-3]"},
      /* 34 */ {"SSTK", "Sea surface temperature [K]"},
      /* 35 */ {"ISTL1", "Ice surface temperature layer 1 [K]"},
      /* 36 */ {"ISTL2", "Ice surface temperature layer 2 [K]"},
      /* 37 */ {"ISTL3", "Ice surface temperature layer 3 [K]"},
      /* 38 */ {"ISTL4", "Ice surface temperature layer 4 [K]"},
      /* 39 */ {"SWVL1", "Volumetric soil water layer 1 [m**3 m**-3]"},
      /* 40 */ {"SWVL2", "Volumetric soil water layer 2 [m**3 m**-3]"},
      /* 41 */ {"SWVL3", "Volumetric soil water layer 3 [m**3 m**-3]"},
      /* 42 */ {"SWVL4", "Volumetric soil water layer 4 [m**3 m**-3]"},
      /* 43 */ {"SLT", "Soil type []"},
      /* 44 */ {"ES", "Snow evaporation [m of water]"},
      /* 45 */ {"SMLT", "Snowmelt [m of water]"},
      /* 46 */ {"SDUR", "Solar duration [s]"},
      /* 47 */ {"DSRP", "Direct solar radiation [w m**-2]"},
      /* 48 */ {"MAGSS", "Magnitude of surface stress [N m**-2 s]"},
      /* 49 */ {"10FG", "10 metre wind gust [m s**-1]"},
      /* 50 */ {"LSPF", "Large-scale precipitation fraction [s]"},
      /* 51 */ {"MX2T24", "Maximum 2 metre temperature [K]"},
      /* 52 */ {"MN2T24", "Minimum 2 metre temperature [K]"},
      /* 53 */ {"MONT", "Montgomery potential [m**2 s**-2]"},
      /* 54 */ {"PRES", "Pressure [Pa]"},
      /* 55 */ {"MEAN2T24", "Mean 2 metre temperature in past 24 hours [K]"},
      /* 56 */ {"MN2D24", "Mean 2 metre dewpoint temperature in past 24 hours [K]"},
      /* 57 */ {"UVB", "Downward UV radiation at the surface [w m**-2 s]"},
      /* 58 */ {"PAR", "Photosynthetically active radiation at the surface [w m**-2 s]"},
      /* 59 */ {"CAPE", "Convective available potential energy [J kg**-1]"},
      /* 60 */ {"PV", "Potential vorticity [K m**2 kg**-1 s**-1]"},
      /* 61 */ {"TPO", "Total precipitation from observations [Millimetres*100 + number of stations]"},
      /* 62 */ {"OBCT", "Observation count []"},
      /* 63 */ {"var63", "Start time for skin temperature difference [s]"},
      /* 64 */ {"var64", "Finish time for skin temperature difference [s]"},
      /* 65 */ {"var65", "Skin temperature difference [K]"},
      /* 66 */ {"var66", "Leaf area index, low vegetation [m**2 / m**2]"},
      /* 67 */ {"var67", "Leaf area index, high vegetation [m**2 / m**2]"},
      /* 68 */ {"var68", "Minimum stomatal resistance, low vegetation [s m**-1]"},
      /* 69 */ {"var69", "Minimum stomatal resistance, high vegetation [s m**-1]"},
      /* 70 */ {"var70", "Biome cover, low vegetation [(0 - 1)]"},
      /* 71 */ {"var71", "Biome cover, high vegetation [(0 - 1)]"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "Total column liquid water [kg m**-2]"},
      /* 79 */ {"var79", "Total column ice water [kg m**-2]"},
      /* 80 */ {"var80", "Experimental product []"},
      /* 81 */ {"var81", "Experimental product []"},
      /* 82 */ {"var82", "Experimental product []"},
      /* 83 */ {"var83", "Experimental product []"},
      /* 84 */ {"var84", "Experimental product []"},
      /* 85 */ {"var85", "Experimental product []"},
      /* 86 */ {"var86", "Experimental product []"},
      /* 87 */ {"var87", "Experimental product []"},
      /* 88 */ {"var88", "Experimental product []"},
      /* 89 */ {"var89", "Experimental product []"},
      /* 90 */ {"var90", "Experimental product []"},
      /* 91 */ {"var91", "Experimental product []"},
      /* 92 */ {"var92", "Experimental product []"},
      /* 93 */ {"var93", "Experimental product []"},
      /* 94 */ {"var94", "Experimental product []"},
      /* 95 */ {"var95", "Experimental product []"},
      /* 96 */ {"var96", "Experimental product []"},
      /* 97 */ {"var97", "Experimental product []"},
      /* 98 */ {"var98", "Experimental product []"},
      /* 99 */ {"var99", "Experimental product []"},
      /* 100 */ {"var100", "Experimental product []"},
      /* 101 */ {"var101", "Experimental product []"},
      /* 102 */ {"var102", "Experimental product []"},
      /* 103 */ {"var103", "Experimental product []"},
      /* 104 */ {"var104", "Experimental product []"},
      /* 105 */ {"var105", "Experimental product []"},
      /* 106 */ {"var106", "Experimental product []"},
      /* 107 */ {"var107", "Experimental product []"},
      /* 108 */ {"var108", "Experimental product []"},
      /* 109 */ {"var109", "Experimental product []"},
      /* 110 */ {"var110", "Experimental product []"},
      /* 111 */ {"var111", "Experimental product []"},
      /* 112 */ {"var112", "Experimental product []"},
      /* 113 */ {"var113", "Experimental product []"},
      /* 114 */ {"var114", "Experimental product []"},
      /* 115 */ {"var115", "Experimental product []"},
      /* 116 */ {"var116", "Experimental product []"},
      /* 117 */ {"var117", "Experimental product []"},
      /* 118 */ {"var118", "Experimental product []"},
      /* 119 */ {"var119", "Experimental product []"},
      /* 120 */ {"var120", "Experimental product []"},
      /* 121 */ {"MX2T6", "Maximum temperature at 2 metres [K]"},
      /* 122 */ {"MN2T6", "Minimum temperature at 2 metres [K]"},
      /* 123 */ {"10FG6", "10 metre wind gust in the past 6 hours [m s**-1]"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "Vertically integrated total energy [J m**-2]"},
      /* 126 */ {"var126", "Generic parameter for sensitive area prediction [Various]"},
      /* 127 */ {"AT", "Atmospheric tide []"},
      /* 128 */ {"BV", "Budget values []"},
      /* 129 */ {"Z", "Geopotential [m**2 s**-2]"},
      /* 130 */ {"T", "Temperature [K]"},
      /* 131 */ {"U", "U velocity [m s**-1]"},
      /* 132 */ {"V", "V velocity [m s**-1]"},
      /* 133 */ {"Q", "Specific humidity [kg kg**-1]"},
      /* 134 */ {"SP", "Surface pressure [Pa]"},
      /* 135 */ {"W", "Vertical velocity [Pa s**-1]"},
      /* 136 */ {"TCW", "Total column water [kg m**-2]"},
      /* 137 */ {"TCWV", "Total column water vapour [kg m**-2]"},
      /* 138 */ {"VO", "Vorticity (relative) [s**-1]"},
      /* 139 */ {"STL1", "Soil temperature level 1 [K]"},
      /* 140 */ {"SWL1", "Soil wetness level 1 [m of water]"},
      /* 141 */ {"SD", "Snow depth [m of water equivalent]"},
      /* 142 */ {"LSP", "Stratiform precipitation (Large-scale precipitation) [m]"},
      /* 143 */ {"CP", "Convective precipitation [m]"},
      /* 144 */ {"SF", "Snowfall (convective + stratiform) [m of water equivalent]"},
      /* 145 */ {"BLD", "Boundary layer dissipation [W m**-2 s]"},
      /* 146 */ {"SSHF", "Surface sensible heat flux [W m**-2 s]"},
      /* 147 */ {"SLHF", "Surface latent heat flux [W m**-2 s]"},
      /* 148 */ {"CHNK", "Charnock []"},
      /* 149 */ {"SNR", "Surface net radiation [W m**-2 s]"},
      /* 150 */ {"TNR", "Top net radiation []"},
      /* 151 */ {"MSL", "Mean sea level pressure [Pa]"},
      /* 152 */ {"LNSP", "Logarithm of surface pressure []"},
      /* 153 */ {"SWHR", "Short-wave heating rate [K]"},
      /* 154 */ {"LWHR", "Long-wave heating rate [K]"},
      /* 155 */ {"D", "Divergence [s**-1]"},
      /* 156 */ {"GH", "Height [m]"},
      /* 157 */ {"R", "Relative humidity [%]"},
      /* 158 */ {"TSP", "Tendency of surface pressure [Pa s**-1]"},
      /* 159 */ {"BLH", "Boundary layer height [m]"},
      /* 160 */ {"SDOR", "Standard deviation of orography []"},
      /* 161 */ {"ISOR", "Anisotropy of sub-gridscale orography []"},
      /* 162 */ {"ANOR", "Angle of sub-gridscale orography [rad]"},
      /* 163 */ {"SLOR", "Slope of sub-gridscale orography []"},
      /* 164 */ {"TCC", "Total cloud cover [(0 - 1)]"},
      /* 165 */ {"10U", "10 metre U wind component [m s**-1]"},
      /* 166 */ {"10V", "10 metre V wind component [m s**-1]"},
      /* 167 */ {"2T", "2 metre temperature [K]"},
      /* 168 */ {"2D", "2 metre dewpoint temperature [K]"},
      /* 169 */ {"SSRD", "Surface solar radiation downwards [W m**-2 s]"},
      /* 170 */ {"STL2", "Soil temperature level 2 [K]"},
      /* 171 */ {"SWL2", "Soil wetness level 2 [m of water]"},
      /* 172 */ {"LSM", "Land-sea mask [(0 - 1)]"},
      /* 173 */ {"SR", "Surface roughness [m]"},
      /* 174 */ {"AL", "Albedo [(0 - 1)]"},
      /* 175 */ {"STRD", "Surface thermal radiation downwards [W m**-2 s]"},
      /* 176 */ {"SSR", "Surface solar radiation [W m**-2 s]"},
      /* 177 */ {"STR", "Surface thermal radiation [W m**-2 s]"},
      /* 178 */ {"TSR", "Top solar radiation [W m**-2 s]"},
      /* 179 */ {"TTR", "Top thermal radiation [W m**-2 s]"},
      /* 180 */ {"EWSS", "East-West surface stress [N m**-2 s]"},
      /* 181 */ {"NSSS", "North-South surface stress [N m**-2 s]"},
      /* 182 */ {"E", "Evaporation [m of water]"},
      /* 183 */ {"STL3", "Soil temperature level 3 [K]"},
      /* 184 */ {"SWL3", "Soil wetness level 3 [m of water]"},
      /* 185 */ {"CCC", "Convective cloud cover [(0 - 1)]"},
      /* 186 */ {"LCC", "Low cloud cover [(0 - 1)]"},
      /* 187 */ {"MCC", "Medium cloud cover [(0 - 1)]"},
      /* 188 */ {"HCC", "High cloud cover [(0 - 1)]"},
      /* 189 */ {"SUND", "Sunshine duration [s]"},
      /* 190 */ {"EWOV", "East-West component of sub-gridscale orographic variance [m**2]"},
      /* 191 */ {"NSOV", "North-South component of sub-gridscale orographic variance [m**2]"},
      /* 192 */ {"NWOV", "North-West/South-East component of sub-gridscale orographic variance [m**2]"},
      /* 193 */ {"NEOV", "North-East/South-West component of sub-gridscale orographic variance [m**2]"},
      /* 194 */ {"BTMP", "Brightness temperature [K]"},
      /* 195 */ {"LGWS", "Latitudinal component of gravity wave stress [N m**-2 s]"},
      /* 196 */ {"MGWS", "Meridional component of gravity wave stress [N m**-2 s]"},
      /* 197 */ {"GWD", "Gravity wave dissipation [W m**-2 s]"},
      /* 198 */ {"SRC", "Skin reservoir content [m of water]"},
      /* 199 */ {"VEG", "Vegetation fraction [(0 - 1)]"},
      /* 200 */ {"VSO", "Variance of sub-gridscale orography [m**2]"},
      /* 201 */ {"MX2T", "Maximum temperature at 2 metres since previous post-processing [K]"},
      /* 202 */ {"MN2T", "Minimum temperature at 2 metres since previous post-processing [K]"},
      /* 203 */ {"O3", "Ozone mass mixing ratio [kg kg**-1]"},
      /* 204 */ {"PAW", "Precipitation analysis weights []"},
      /* 205 */ {"RO", "Runoff [m]"},
      /* 206 */ {"TCO3", "Total column ozone [kg m**-2]"},
      /* 207 */ {"10SI", "10 metre wind speed [m s**-1]"},
      /* 208 */ {"TSRC", "Top net solar radiation, clear sky [W m**-2 s]"},
      /* 209 */ {"TTRC", "Top net thermal radiation, clear sky [W m**-2 s]"},
      /* 210 */ {"SSRC", "Surface net solar radiation, clear sky [W m**-2 s]"},
      /* 211 */ {"STRC", "Surface net thermal radiation, clear sky [W m**-2 s]"},
      /* 212 */ {"TISR", "TOA incident solar radiation [W m**-2 s]"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"DHR", "Diabatic heating by radiation [K]"},
      /* 215 */ {"DHVD", "Diabatic heating by vertical diffusion [K]"},
      /* 216 */ {"DHCC", "Diabatic heating by cumulus convection [K]"},
      /* 217 */ {"DHLC", "Diabatic heating large-scale condensation [K]"},
      /* 218 */ {"VDZW", "Vertical diffusion of zonal wind [m s**-1]"},
      /* 219 */ {"VDMW", "Vertical diffusion of meridional wind [m s**-1]"},
      /* 220 */ {"EWGD", "East-West gravity wave drag tendency [m s**-1]"},
      /* 221 */ {"NSGD", "North-South gravity wave drag tendency [m s**-1]"},
      /* 222 */ {"CTZW", "Convective tendency of zonal wind [m s**-1]"},
      /* 223 */ {"CTMW", "Convective tendency of meridional wind [m s**-1]"},
      /* 224 */ {"VDH", "Vertical diffusion of humidity [kg kg**-1]"},
      /* 225 */ {"HTCC", "Humidity tendency by cumulus convection [kg kg**-1]"},
      /* 226 */ {"HTLC", "Humidity tendency by large-scale condensation [kg kg**-1]"},
      /* 227 */ {"CRNH", "Change from removal of negative humidity [kg kg**-1]"},
      /* 228 */ {"TP", "Total precipitation [m]"},
      /* 229 */ {"IEWS", "Instantaneous X surface stress [N m**-2]"},
      /* 230 */ {"INSS", "Instantaneous Y surface stress [N m**-2]"},
      /* 231 */ {"ISHF", "Instantaneous surface heat flux [W m**-2]"},
      /* 232 */ {"IE", "Instantaneous moisture flux [kg m**-2 s]"},
      /* 233 */ {"ASQ", "Apparent surface humidity [kg kg**-1]"},
      /* 234 */ {"LSRH", "Logarithm of surface roughness length for heat []"},
      /* 235 */ {"SKT", "Skin temperature [K]"},
      /* 236 */ {"STL4", "Soil temperature level 4 [K]"},
      /* 237 */ {"SWL4", "Soil wetness level 4 [m]"},
      /* 238 */ {"TSN", "Temperature of snow layer [K]"},
      /* 239 */ {"CSF", "Convective snowfall [m of water equivalent]"},
      /* 240 */ {"LSF", "Large-scale snowfall [m of water equivalent]"},
      /* 241 */ {"ACF", "Accumulated cloud fraction tendency [(-1 to 1)]"},
      /* 242 */ {"ALW", "Accumulated liquid water tendency [(-1 to 1)]"},
      /* 243 */ {"FAL", "Forecast albedo [(0 - 1)]"},
      /* 244 */ {"FSR", "Forecast surface roughness [m]"},
      /* 245 */ {"FLSR", "Forecast logarithm of surface roughness for heat []"},
      /* 246 */ {"CLWC", "Cloud liquid water content [kg kg**-1]"},
      /* 247 */ {"CIWC", "Cloud ice water content [kg kg**-1]"},
      /* 248 */ {"CC", "Cloud cover [(0 - 1)]"},
      /* 249 */ {"AIW", "Accumulated ice water tendency [(-1 to 1)]"},
      /* 250 */ {"ICE", "Ice age [(0 - 1)]"},
      /* 251 */ {"ATTE", "Adiabatic tendency of temperature [K]"},
      /* 252 */ {"ATHE", "Adiabatic tendency of humidity [kg kg**-1]"},
      /* 253 */ {"ATZE", "Adiabatic tendency of zonal wind [m s**-1]"},
      /* 254 */ {"ATMW", "Adiabatic tendency of meridional wind [m s**-1]"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_130[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"var49", "undefined"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"var165", "undefined"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"TSRU", "Top solar radiation upward [W m**-2]"},
      /* 209 */ {"TTRU", "Top thermal radiation upward [W m**-2]"},
      /* 210 */ {"TSUC", "Top solar radiation upward, clear sky [W m**-2]"},
      /* 211 */ {"TTUC", "Top thermal radiation upward, clear sky [W m**-2]"},
      /* 212 */ {"CLW", "Cloud liquid water [kg kg**-1]"},
      /* 213 */ {"CF", "Cloud fraction [(0 - 1)]"},
      /* 214 */ {"DHR", "Diabatic heating by radiation [K s**-1]"},
      /* 215 */ {"DHVD", "Diabatic heating by vertical diffusion [K s**-1]"},
      /* 216 */ {"DHCC", "Diabatic heating by cumulus convection [K s**-1]"},
      /* 217 */ {"DHLC", "Diabatic heating by large-scale condensation [K s**-1]"},
      /* 218 */ {"VDZW", "Vertical diffusion of zonal wind [m**2 s**-3]"},
      /* 219 */ {"VDMW", "Vertical diffusion of meridional wind [m**2 s**-3]"},
      /* 220 */ {"EWGD", "East-West gravity wave drag [m**2 s**-3]"},
      /* 221 */ {"NSGD", "North-South gravity wave drag [m**2 s**-3]"},
      /* 222 */ {"CTZW", "Convective tendency of zonal wind [m**2 s**-3]"},
      /* 223 */ {"CTMW", "Convective tendency of meridional wind [m**2 s**-3]"},
      /* 224 */ {"VDH", "Vertical diffusion of humidity [kg kg**-1 s**-1]"},
      /* 225 */ {"HTCC", "Humidity tendency by cumulus convection [kg kg**-1 s**-1]"},
      /* 226 */ {"HTLC", "Humidity tendency by large-scale condensation [kg kg**-1 s**-1]"},
      /* 227 */ {"CRNH", "Change from removal of negative humidity [kg kg**-1 s**-1]"},
      /* 228 */ {"ATT", "Adiabatic tendency of temperature [K s**-1]"},
      /* 229 */ {"ATH", "Adiabatic tendency of humidity [kg kg**-1 s**-1]"},
      /* 230 */ {"ATZW", "Adiabatic tendency of zonal wind [m**2 s**-3]"},
      /* 231 */ {"ATMWAX", "Adiabatic tendency of meridional wind [m**2 s**-3]"},
      /* 232 */ {"MVV", "Mean vertical velocity [Pa s**-1]"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_131[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"2TAG2", "2m temperature anomaly of at least +2K [%]"},
      /* 2 */ {"2TAG1", "2m temperature anomaly of at least +1K [%]"},
      /* 3 */ {"2TAG0", "2m temperature anomaly of at least 0K [%]"},
      /* 4 */ {"2TALM1", "2m temperature anomaly of at most -1K [%]"},
      /* 5 */ {"2TALM2", "2m temperature anomaly of at most -2K [%]"},
      /* 6 */ {"TPAG20", "Total precipitation anomaly of at least 20 mm [%]"},
      /* 7 */ {"TPAG10", "Total precipitation anomaly of at least 10 mm [%]"},
      /* 8 */ {"TPAG0", "Total precipitation anomaly of at least 0 mm [%]"},
      /* 9 */ {"STAG0", "Surface temperature anomaly of at least 0K [%]"},
      /* 10 */ {"MSLAG0", "Mean sea level pressure anomaly of at least 0 Pa [%]"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"H0DIP", "Heigth of 0 degree isotherm probability [percentage]"},
      /* 16 */ {"HSLP", "Heigth of snowfall limit probability [percentage]"},
      /* 17 */ {"SAIP", "Showalter index probability [percentage]"},
      /* 18 */ {"WHIP", "Whiting index probability [percentage]"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"TALM2K", "Temperature anomaly less than -2 K [%]"},
      /* 21 */ {"TAG2K", "Temperature anomaly of at least +2 K [%]"},
      /* 22 */ {"TALM8K", "Temperature anomaly less than -8 K [%]"},
      /* 23 */ {"TALM4K", "Temperature anomaly less than -4 K [%]"},
      /* 24 */ {"TAG4K", "Temperature anomaly greater than +4 K [%]"},
      /* 25 */ {"TAG8K", "Temperature anomaly greater than +8 K [%]"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"10GP", "10 metre wind gust probability [percentage]"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"CAPEP", "Convective available potential energy probability [percentage]"},
      /* 60 */ {"TPG1", "Total precipitation of at least 1 mm [%]"},
      /* 61 */ {"TPG5", "Total precipitation of at least 5 mm [%]"},
      /* 62 */ {"TPG10", "Total precipitation of at least 10 mm [%]"},
      /* 63 */ {"TPG20", "Total precipitation of at least 20 mm [%]"},
      /* 64 */ {"TPL01", "Total precipitation less than 0.1 mm [%]"},
      /* 65 */ {"TPRL1", "Total precipitation rate less than 1 mm per day [%]"},
      /* 66 */ {"TPRG3", "Total precipitation rate of at least 3 mm per day [%]"},
      /* 67 */ {"TPRG5", "Total precipitation rate of at least 5 mm per day [%]"},
      /* 68 */ {"10SPG10", "10 metre Wind speed of at least 10 metre per second [%]"},
      /* 69 */ {"10SPG15", "10 metre Wind speed of at least 15 metre per second [%]"},
      /* 70 */ {"10FGG15", "10 metre Wind gust of at least 15 metre per second [%]"},
      /* 71 */ {"10FGG20", "10 metre Wind gust of at least 20 metre per second [%]"},
      /* 72 */ {"10FGG25", "10 metre Wind gust of at least 25 metre per second [%]"},
      /* 73 */ {"2TL273", "2 metre temperature less than 273.15 K [%]"},
      /* 74 */ {"SWHG2", "Significant wave height of at least 2 m [%]"},
      /* 75 */ {"SWHG4", "Significant wave height of at least 4 m [%]"},
      /* 76 */ {"SWHG6", "Significant wave height of at least 6 m [%]"},
      /* 77 */ {"SWHG8", "Significant wave height of at least 8 m [%]"},
      /* 78 */ {"MWPG8", "Mean wave period of at least 8 s [%]"},
      /* 79 */ {"MWPG10", "Mean wave period of at least 10 s [%]"},
      /* 80 */ {"MWPG12", "Mean wave period of at least 12 s [%]"},
      /* 81 */ {"MWPG15", "Mean wave period of at least 15 s [%]"},
      /* 82 */ {"TPG40", "Total precipitation of at least 40 mm [%]"},
      /* 83 */ {"TPG60", "Total precipitation of at least 60 mm [%]"},
      /* 84 */ {"TPG80", "Total precipitation of at least 80 mm [%]"},
      /* 85 */ {"TPG100", "Total precipitation of at least 100 mm [%]"},
      /* 86 */ {"TPG150", "Total precipitation of at least 150 mm [%]"},
      /* 87 */ {"TPG200", "Total precipitation of at least 200 mm [%]"},
      /* 88 */ {"TPG300", "Total precipitation of at least 300 mm [%]"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"ZP", "Geopotential probability [%]"},
      /* 130 */ {"TAP", "Temperature anomaly probability [percentage]"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "2 metre temperature probability [%]"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"SFP", "Snowfall probability [percentage]"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "Total precipitation probability [%]"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"TCCP", "Total cloud cover probability [percentage]"},
      /* 165 */ {"10SP", "10 metre speed probability [percentage]"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"2TP", "2 metre temperature probability [percentage]"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"MX2TP", "Maximum 2 metre temperature probability [percentage]"},
      /* 202 */ {"MN2TP", "Minimum 2 metre temperature probability [percentage]"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"TPP", "Total precipitation probability [percentage]"},
      /* 229 */ {"SWHP", "Significant wave height probability [percentage]"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"MWPP", "Mean wave period probability [percentage]"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_132[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"10FGI", "10 metre wind gust index [(-1 to 1)]"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"SFI", "Snowfall index [(-1 to 1)]"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"10WSI", "10 metre speed index [(-1 to 1)]"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"2TI", "2 metre temperature index [(-1 to 1)]"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"MAXSWHI", "Maximum of significant wave height index [(-1 to 1)]"},
      /* 201 */ {"MX2TI", "Maximum temperature at 2 metres index [(-1 to 1)]"},
      /* 202 */ {"MN2TI", "Minimum temperature at 2 metres index [(-1 to 1)]"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"TPI", "Total precipitation index [(-1 to 1)]"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_133[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"2TPLM10", "2m temperature probability less than -10 C [%]"},
      /* 2 */ {"2TPLM5", "2m temperature probability less than -5 C [%]"},
      /* 3 */ {"2TPL0", "2m temperature probability less than 0 C [%]"},
      /* 4 */ {"2TPL5", "2m temperature probability less than 5 C [%]"},
      /* 5 */ {"2TPL10", "2m temperature probability less than 10 C [%]"},
      /* 6 */ {"2TPG25", "2m temperature probability greater than 25 C [%]"},
      /* 7 */ {"2TPG30", "2m temperature probability greater than 30 C [%]"},
      /* 8 */ {"2TPG35", "2m temperature probability greater than 35 C [%]"},
      /* 9 */ {"2TPG40", "2m temperature probability greater than 40 C [%]"},
      /* 10 */ {"2TPG45", "2m temperature probability greater than 45 C [%]"},
      /* 11 */ {"MN2TPLM10", "Minimum 2 metre temperature probability less than -10 C [%]"},
      /* 12 */ {"MN2TPLM5", "Minimum 2 metre temperature probability less than -5 C [%]"},
      /* 13 */ {"MN2TPL0", "Minimum 2 metre temperature probability less than 0 C [%]"},
      /* 14 */ {"MN2TPL5", "Minimum 2 metre temperature probability less than 5 C [%]"},
      /* 15 */ {"MN2TPL10", "Minimum 2 metre temperature probability less than 10 C [%]"},
      /* 16 */ {"MX2TPG25", "Maximum 2 metre temperature probability greater than 25 C [%]"},
      /* 17 */ {"MX2TPG30", "Maximum 2 metre temperature probability greater than 30 C [%]"},
      /* 18 */ {"MX2TPG35", "Maximum 2 metre temperature probability greater than 35 C [%]"},
      /* 19 */ {"MX2TPG40", "Maximum 2 metre temperature probability greater than 40 C [%]"},
      /* 20 */ {"MX2TPG45", "Maximum 2 metre temperature probability greater than 45 C [%]"},
      /* 21 */ {"10SPG10", "10 metre wind speed probability of at least 10 m/s [%]"},
      /* 22 */ {"10SPG15", "10 metre wind speed probability of at least 15 m/s [%]"},
      /* 23 */ {"10SPG20", "10 metre wind speed probability of at least 20 m/s [%]"},
      /* 24 */ {"10SPG35", "10 metre wind speed probability of at least 35 m/s [%]"},
      /* 25 */ {"10SPG50", "10 metre wind speed probability of at least 50 m/s [%]"},
      /* 26 */ {"10GPG20", "10 metre wind gust probability of at least 20 m/s [%]"},
      /* 27 */ {"10GPG35", "10 metre wind gust probability of at least 35 m/s [%]"},
      /* 28 */ {"10GPG50", "10 metre wind gust probability of at least 50 m/s [%]"},
      /* 29 */ {"10GPG75", "10 metre wind gust probability of at least 75 m/s [%]"},
      /* 30 */ {"10GPG100", "10 metre wind gust probability of at least 100 m/s [%]"},
      /* 31 */ {"TPPG1", "Total precipitation probability of at least 1 mm [%]"},
      /* 32 */ {"TPPG5", "Total precipitation probability of at least 5 mm [%]"},
      /* 33 */ {"TPPG10", "Total precipitation probability of at least 10 mm [%]"},
      /* 34 */ {"TPPG20", "Total precipitation probability of at least 20 mm [%]"},
      /* 35 */ {"TPPG40", "Total precipitation probability of at least 40 mm [%]"},
      /* 36 */ {"TPPG60", "Total precipitation probability of at least 60 mm [%]"},
      /* 37 */ {"TPPG80", "Total precipitation probability of at least 80 mm [%]"},
      /* 38 */ {"TPPG100", "Total precipitation probability of at least 100 mm [%]"},
      /* 39 */ {"TPPG150", "Total precipitation probability of at least 150 mm [%]"},
      /* 40 */ {"TPPG200", "Total precipitation probability of at least 200 mm [%]"},
      /* 41 */ {"TPPG300", "Total precipitation probability of at least 300 mm [%]"},
      /* 42 */ {"SFPG1", "Snowfall probability of at least 1 mm [%]"},
      /* 43 */ {"SFPG5", "Snowfall probability of at least 5 mm [%]"},
      /* 44 */ {"SFPG10", "Snowfall probability of at least 10 mm [%]"},
      /* 45 */ {"SFPG20", "Snowfall probability of at least 20 mm [%]"},
      /* 46 */ {"SFPG40", "Snowfall probability of at least 40 mm [%]"},
      /* 47 */ {"SFPG60", "Snowfall probability of at least 60 mm [%]"},
      /* 48 */ {"SFPG80", "Snowfall probability of at least 80 mm [%]"},
      /* 49 */ {"SFPG100", "Snowfall probability of at least 100 mm [%]"},
      /* 50 */ {"SFPG150", "Snowfall probability of at least 150 mm [%]"},
      /* 51 */ {"SFPG200", "Snowfall probability of at least 200 mm [%]"},
      /* 52 */ {"SFPG300", "Snowfall probability of at least 300 mm [%]"},
      /* 53 */ {"TCCPG10", "Total Cloud Cover probability greater than 10% [%]"},
      /* 54 */ {"TCCPG20", "Total Cloud Cover probability greater than 20% [%]"},
      /* 55 */ {"TCCPG30", "Total Cloud Cover probability greater than 30% [%]"},
      /* 56 */ {"TCCPG40", "Total Cloud Cover probability greater than 40% [%]"},
      /* 57 */ {"TCCPG50", "Total Cloud Cover probability greater than 50% [%]"},
      /* 58 */ {"TCCPG60", "Total Cloud Cover probability greater than 60% [%]"},
      /* 59 */ {"TCCPG70", "Total Cloud Cover probability greater than 70% [%]"},
      /* 60 */ {"TCCPG80", "Total Cloud Cover probability greater than 80% [%]"},
      /* 61 */ {"TCCPG90", "Total Cloud Cover probability greater than 90% [%]"},
      /* 62 */ {"TCCPG99", "Total Cloud Cover probability greater than 99% [%]"},
      /* 63 */ {"HCCPG10", "High Cloud Cover probability greater than 10% [%]"},
      /* 64 */ {"HCCPG20", "High Cloud Cover probability greater than 20% [%]"},
      /* 65 */ {"HCCPG30", "High Cloud Cover probability greater than 30% [%]"},
      /* 66 */ {"HCCPG40", "High Cloud Cover probability greater than 40% [%]"},
      /* 67 */ {"HCCPG50", "High Cloud Cover probability greater than 50% [%]"},
      /* 68 */ {"HCCPG60", "High Cloud Cover probability greater than 60% [%]"},
      /* 69 */ {"HCCPG70", "High Cloud Cover probability greater than 70% [%]"},
      /* 70 */ {"HCCPG80", "High Cloud Cover probability greater than 80% [%]"},
      /* 71 */ {"HCCPG90", "High Cloud Cover probability greater than 90% [%]"},
      /* 72 */ {"HCCPG99", "High Cloud Cover probability greater than 99% [%]"},
      /* 73 */ {"MCCPG10", "Medium Cloud Cover probability greater than 10% [%]"},
      /* 74 */ {"MCCPG20", "Medium Cloud Cover probability greater than 20% [%]"},
      /* 75 */ {"MCCPG30", "Medium Cloud Cover probability greater than 30% [%]"},
      /* 76 */ {"MCCPG40", "Medium Cloud Cover probability greater than 40% [%]"},
      /* 77 */ {"MCCPG50", "Medium Cloud Cover probability greater than 50% [%]"},
      /* 78 */ {"MCCPG60", "Medium Cloud Cover probability greater than 60% [%]"},
      /* 79 */ {"MCCPG70", "Medium Cloud Cover probability greater than 70% [%]"},
      /* 80 */ {"MCCPG80", "Medium Cloud Cover probability greater than 80% [%]"},
      /* 81 */ {"MCCPG90", "Medium Cloud Cover probability greater than 90% [%]"},
      /* 82 */ {"MCCPG99", "Medium Cloud Cover probability greater than 99% [%]"},
      /* 83 */ {"LCCPG10", "Low Cloud Cover probability greater than 10% [%]"},
      /* 84 */ {"LCCPG20", "Low Cloud Cover probability greater than 20% [%]"},
      /* 85 */ {"LCCPG30", "Low Cloud Cover probability greater than 30% [%]"},
      /* 86 */ {"LCCPG40", "Low Cloud Cover probability greater than 40% [%]"},
      /* 87 */ {"LCCPG50", "Low Cloud Cover probability greater than 50% [%]"},
      /* 88 */ {"LCCPG60", "Low Cloud Cover probability greater than 60% [%]"},
      /* 89 */ {"LCCPG70", "Low Cloud Cover probability greater than 70% [%]"},
      /* 90 */ {"LCCPG80", "Low Cloud Cover probability greater than 80% [%]"},
      /* 91 */ {"LCCPG90", "Low Cloud Cover probability greater than 90% [%]"},
      /* 92 */ {"LCCPG99", "Low Cloud Cover probability greater than 99% [%]"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"var165", "undefined"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"var228", "undefined"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "undefined"},
};

const struct ParmTable parm_table_ecmwf_140[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"var49", "undefined"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"var165", "undefined"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"MAXSWH", "Maximum of significant wave height [m]"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"UST", "U-component stokes drift [m s**-1]"},
      /* 216 */ {"VST", "V-component stokes drift [m s**-1]"},
      /* 217 */ {"TMAX", "Period corresponding to maximum individual wave height [s]"},
      /* 218 */ {"HMAX", "Maximum individual wave height [m]"},
      /* 219 */ {"WMB", "Model bathymetry [m]"},
      /* 220 */ {"MP1", "Mean wave period based on first moment [s]"},
      /* 221 */ {"MP2", "Mean wave period based on second moment [s]"},
      /* 222 */ {"WDW", "Wave spectral directional width []"},
      /* 223 */ {"P1WW", "Mean wave period based on first moment for wind waves [s]"},
      /* 224 */ {"P2WW", "Mean wave period based on second moment for wind waves [s]"},
      /* 225 */ {"DWWW", "Wave spectral directional width for wind waves []"},
      /* 226 */ {"P1PS", "Mean wave period based on first moment for swell [s]"},
      /* 227 */ {"P2PS", "Mean wave period based on second moment for swell [s]"},
      /* 228 */ {"DWPS", "Wave spectral directional width for swell []"},
      /* 229 */ {"SWH", "Significant wave height [m]"},
      /* 230 */ {"MWD", "Mean wave direction [degrees]"},
      /* 231 */ {"PP1D", "Peak period of 1D spectra [s]"},
      /* 232 */ {"MWP", "Mean wave period [s]"},
      /* 233 */ {"CDWW", "Coefficient of drag with waves []"},
      /* 234 */ {"SHWW", "Significant height of wind waves [m]"},
      /* 235 */ {"MDWW", "Mean direction of wind waves [degrees]"},
      /* 236 */ {"MPWW", "Mean period of wind waves [s]"},
      /* 237 */ {"SHTS", "Significant height of total swell [m]"},
      /* 238 */ {"MDTS", "Mean direction of total swell [degrees]"},
      /* 239 */ {"MPTS", "Mean period of total swell [s]"},
      /* 240 */ {"SDHS", "Standard deviation wave height [m]"},
      /* 241 */ {"MU10", "Mean of 10 metre wind speed [m s**-1]"},
      /* 242 */ {"MDWI", "Mean wind direction [degrees]"},
      /* 243 */ {"SDU", "Standard deviation of 10 metre wind speed [m s**-1]"},
      /* 244 */ {"MSQS", "Mean square slope of waves [dimensionless]"},
      /* 245 */ {"WIND", "10 metre wind speed [m s**-1]"},
      /* 246 */ {"AWH", "Altimeter wave height [m]"},
      /* 247 */ {"ACWH", "Altimeter corrected wave height [m]"},
      /* 248 */ {"ARRC", "Altimeter range relative correction []"},
      /* 249 */ {"DWI", "10 metre wind direction [degrees]"},
      /* 250 */ {"2DSP", "2D wave spectra (multiple) [m**2 s radian**-1]"},
      /* 251 */ {"2DFD", "2D wave spectra (single) [m**2 s radian**-1]"},
      /* 252 */ {"WSK", "Wave spectral kurtosis []"},
      /* 253 */ {"BFI", "Benjamin-Feir index []"},
      /* 254 */ {"WSP", "Wave spectral peakedness [s**-1]"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_150[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"var49", "undefined"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "Ocean potential temperature [deg C]"},
      /* 130 */ {"var130", "Ocean salinity [psu]"},
      /* 131 */ {"var131", "Ocean potential density [kg m**-3 -1000]"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "Ocean U velocity [m s**-1]"},
      /* 134 */ {"var134", "Ocean V velocity [m s**-1]"},
      /* 135 */ {"var135", "Ocean W velocity [m s**-1]"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "Richardson number []"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "U*V product [m s**-2]"},
      /* 140 */ {"var140", "U*T product [m s**-1 deg C]"},
      /* 141 */ {"var141", "V*T product [m s**-1 deg C]"},
      /* 142 */ {"var142", "U*U product [m s**-2]"},
      /* 143 */ {"var143", "V*V product [m s**-2]"},
      /* 144 */ {"var144", "UV - U~V~ [m s**-2]"},
      /* 145 */ {"var145", "UT - U~T~ [m s**-1 deg C]"},
      /* 146 */ {"var146", "VT - V~T~ [m s**-1 deg C]"},
      /* 147 */ {"var147", "UU - U~U~ [m s**-2]"},
      /* 148 */ {"var148", "VV - V~V~ [m s**-2]"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "Sea level [m]"},
      /* 153 */ {"var153", "Barotropic stream function []"},
      /* 154 */ {"var154", "Mixed layer depth [m]"},
      /* 155 */ {"var155", "Depth [m]"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"var165", "undefined"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "U stress [Pa]"},
      /* 169 */ {"var169", "V stress [Pa]"},
      /* 170 */ {"var170", "Turbulent kinetic energy input []"},
      /* 171 */ {"var171", "Net surface heat flux []"},
      /* 172 */ {"var172", "Surface solar radiation []"},
      /* 173 */ {"var173", "P-E []"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "Diagnosed sea surface temperature error [deg C]"},
      /* 181 */ {"var181", "Heat flux correction [W m**-2]"},
      /* 182 */ {"var182", "Observed sea surface temperature [deg C]"},
      /* 183 */ {"var183", "Observed heat flux [W m**-2]"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"var228", "undefined"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_151[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"var49", "undefined"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "In situ Temperature [deg C]"},
      /* 129 */ {"OCPT", "Ocean potential temperature [deg C]"},
      /* 130 */ {"S", "Salinity [psu]"},
      /* 131 */ {"OCU", "Ocean current zonal component [m s**-1]"},
      /* 132 */ {"OCV", "Ocean current meridional component [m s**-1]"},
      /* 133 */ {"OCW", "Ocean current vertical component [m s**-1]"},
      /* 134 */ {"MST", "Modulus of strain rate tensor [s**-1]"},
      /* 135 */ {"VVS", "Vertical viscosity [m**2 s**-1]"},
      /* 136 */ {"VDF", "Vertical diffusivity [m**2 s**-1]"},
      /* 137 */ {"DEP", "Bottom level Depth [m]"},
      /* 138 */ {"STH", "Sigma-theta [kg m**-3]"},
      /* 139 */ {"RN", "Richardson number []"},
      /* 140 */ {"UV", "UV product [m**2 s**-2]"},
      /* 141 */ {"UT", "UT product [m s**-1 degC]"},
      /* 142 */ {"VT", "VT product [m s**-1 deg C]"},
      /* 143 */ {"UU", "UU product [m**2 s**-2]"},
      /* 144 */ {"VV", "VV product [m**2 s**-2]"},
      /* 145 */ {"SL", "Sea level [m]"},
      /* 146 */ {"SL_1", "Sea level previous timestep [m]"},
      /* 147 */ {"BSF", "Barotropic stream function [m**3 s**-1]"},
      /* 148 */ {"MLD", "Mixed layer depth [m]"},
      /* 149 */ {"BTP", "Bottom Pressure (equivalent height) [m]"},
      /* 150 */ {"SH", "Steric height [m]"},
      /* 151 */ {"CRL", "Curl of Wind Stress [N m**-3]"},
      /* 152 */ {"var152", "Divergence of wind stress [Nm**-3]"},
      /* 153 */ {"TAX", "U stress [N m**-2]"},
      /* 154 */ {"TAY", "V stress [N m**-2]"},
      /* 155 */ {"TKI", "Turbulent kinetic energy input [W m**-2]"},
      /* 156 */ {"NSF", "Net surface heat flux [W m**-2]"},
      /* 157 */ {"ASR", "Absorbed solar radiation [W m**-2]"},
      /* 158 */ {"PME", "Precipitation - evaporation [m s**-1]"},
      /* 159 */ {"SST", "Specified sea surface temperature [deg C]"},
      /* 160 */ {"SHF", "Specified surface heat flux [W m**-2]"},
      /* 161 */ {"DTE", "Diagnosed sea surface temperature error [deg C]"},
      /* 162 */ {"HFC", "Heat flux correction [W m**-2]"},
      /* 163 */ {"20D", "20 degrees isotherm depth [m]"},
      /* 164 */ {"TAV300", "Average potential temperature in the upper 300m [degrees C]"},
      /* 165 */ {"UBA1", "Vertically integrated zonal velocity (previous time step) [m**2 s**-1]"},
      /* 166 */ {"VBA1", "Vertically Integrated meridional velocity (previous time step) [m**2 s**-1]"},
      /* 167 */ {"ZTR", "Vertically integrated zonal volume transport [m**2 s**-1]"},
      /* 168 */ {"MTR", "Vertically integrated meridional volume transport [m**2 s**-1]"},
      /* 169 */ {"ZHT", "Vertically integrated zonal heat transport [J m**-1 s**-1]"},
      /* 170 */ {"MHT", "Vertically integrated meridional heat transport [J m**-1 s**-1]"},
      /* 171 */ {"UMAX", "U velocity maximum [m s**-1]"},
      /* 172 */ {"DUMAX", "Depth of the velocity maximum [m]"},
      /* 173 */ {"SMAX", "Salinity maximum [psu]"},
      /* 174 */ {"DSMAX", "Depth of salinity maximum [m]"},
      /* 175 */ {"SAV300", "Average salinity in the upper 300m [psu]"},
      /* 176 */ {"LDP", "Layer Thickness at scalar points [m]"},
      /* 177 */ {"LDU", "Layer Thickness at vector points [m]"},
      /* 178 */ {"PTI", "Potential temperature increment [deg C]"},
      /* 179 */ {"PTAE", "Potential temperature analysis error [deg C]"},
      /* 180 */ {"BPT", "Background potential temperature [deg C]"},
      /* 181 */ {"APT", "Analysed potential temperature [deg C]"},
      /* 182 */ {"PTBE", "Potential temperature background error [deg C]"},
      /* 183 */ {"AS", "Analysed salinity [psu]"},
      /* 184 */ {"SALI", "Salinity increment [psu]"},
      /* 185 */ {"EBT", "Estimated Bias in Temperature [deg C]"},
      /* 186 */ {"EBS", "Estimated Bias in Salinity [psu]"},
      /* 187 */ {"UVI", "Zonal Velocity increment (from balance operator) [m/s per time step]"},
      /* 188 */ {"VVI", "Meridional Velocity increment (from balance operator) []"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"SUBI", "Salinity increment (from salinity data) [psu per time step]"},
      /* 191 */ {"SALE", "Salinity analysis error [psu]"},
      /* 192 */ {"BSAL", "Background Salinity [psu]"},
      /* 193 */ {"var193", "Reserved []"},
      /* 194 */ {"SALBE", "Salinity background error [psu]"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"EBTA", "Estimated temperature bias from assimilation [deg C]"},
      /* 200 */ {"EBSA", "Estimated salinity bias from assimilation [psu]"},
      /* 201 */ {"LTI", "Temperature increment from relaxation term [deg C per time step]"},
      /* 202 */ {"LSI", "Salinity increment from relaxation term []"},
      /* 203 */ {"BZPGA", "Bias in the zonal pressure gradient (applied) [Pa**m-1]"},
      /* 204 */ {"BMPGA", "Bias in the meridional pressure gradient (applied) [Pa**m-1]"},
      /* 205 */ {"EBTL", "Estimated temperature bias from relaxation [deg C]"},
      /* 206 */ {"EBSL", "Estimated salinity bias from relaxation [psu]"},
      /* 207 */ {"FGBT", "First guess bias in temperature [deg C]"},
      /* 208 */ {"FGBS", "First guess bias in salinity [psu]"},
      /* 209 */ {"BPA", "Applied bias in pressure [Pa]"},
      /* 210 */ {"FGBP", "FG bias in pressure [Pa]"},
      /* 211 */ {"PTA", "Bias in temperature(applied) [deg C]"},
      /* 212 */ {"PSA", "Bias in salinity (applied) [psu]"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"var228", "undefined"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", " []"},
};

const struct ParmTable parm_table_ecmwf_160[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"10FG", "10 metre wind gust during averaging time [m s**-1]"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"AT", "Atmospheric tide []"},
      /* 128 */ {"BV", "Budget values []"},
      /* 129 */ {"Z", "Geopotential [m**2 s**-2]"},
      /* 130 */ {"T", "Temperature [K]"},
      /* 131 */ {"U", "U velocity [m s**-1]"},
      /* 132 */ {"V", "V velocity [m s**-1]"},
      /* 133 */ {"Q", "Specific humidity [kg kg**-1]"},
      /* 134 */ {"SP", "Surface pressure [Pa]"},
      /* 135 */ {"W", "Vertical velocity [Pa s**-1]"},
      /* 136 */ {"TCW", "Total column water [kg m**-2]"},
      /* 137 */ {"PWC", "Precipitable water content [kg m**-2]"},
      /* 138 */ {"VO", "Vorticity (relative) [s**-1]"},
      /* 139 */ {"STL1", "Soil temperature level 1 [K]"},
      /* 140 */ {"SWL1", "Soil wetness level 1 [m]"},
      /* 141 */ {"SD", "Snow depth [m of water]"},
      /* 142 */ {"LSP", "Large-scale precipitation [kg m**-2 s**-1]"},
      /* 143 */ {"CP", "Convective precipitation [kg m**-2 s**-1]"},
      /* 144 */ {"SF", "Snowfall [kg m**-2 s**-1]"},
      /* 145 */ {"BLD", "Boundary layer dissipation [W m**-2]"},
      /* 146 */ {"SSHF", "Surface sensible heat flux [W m**-2]"},
      /* 147 */ {"SLHF", "Surface latent heat flux [W m**-2]"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"MSL", "Mean sea level pressure [Pa]"},
      /* 152 */ {"LNSP", "Logarithm of surface pressure []"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"D", "Divergence [s**-1]"},
      /* 156 */ {"GH", "Height [m]"},
      /* 157 */ {"R", "Relative humidity [(0 - 1)]"},
      /* 158 */ {"TSP", "Tendency of surface pressure [Pa s**-1]"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"TCC", "Total cloud cover [(0 - 1)]"},
      /* 165 */ {"10U", "10 metre U wind component [m s**-1]"},
      /* 166 */ {"10V", "10 metre V wind component [m s**-1]"},
      /* 167 */ {"2T", "2 metre temperature [K]"},
      /* 168 */ {"2D", "2 metre dewpoint temperature [K]"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"STL2", "Soil temperature level 2 [K]"},
      /* 171 */ {"SWL2", "Soil wetness level 2 [m]"},
      /* 172 */ {"LSM", "Land-sea mask [(0 - 1)]"},
      /* 173 */ {"SR", "Surface roughness [m]"},
      /* 174 */ {"AL", "Albedo [(0 - 1)]"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"SSR", "Surface solar radiation [W m**-2]"},
      /* 177 */ {"STR", "Surface thermal radiation [W m**-2]"},
      /* 178 */ {"TSR", "Top solar radiation [W m**-2]"},
      /* 179 */ {"TTR", "Top thermal radiation [W m**-2]"},
      /* 180 */ {"EWSS", "East-West surface stress [N m**-2 s**-1]"},
      /* 181 */ {"NSSS", "North-South surface stress [N m**-2 s**-1]"},
      /* 182 */ {"E", "Evaporation [kg m**-2 s**-1]"},
      /* 183 */ {"STL3", "Soil temperature level 3 [K]"},
      /* 184 */ {"SWL3", "Soil wetness level 3 [m]"},
      /* 185 */ {"CCC", "Convective cloud cover [(0 - 1)]"},
      /* 186 */ {"LCC", "Low cloud cover [(0 - 1)]"},
      /* 187 */ {"MCC", "Medium cloud cover [(0 - 1)]"},
      /* 188 */ {"HCC", "High cloud cover [(0 - 1)]"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"EWOV", "East-West component of sub-gridscale orographic variance [m**2]"},
      /* 191 */ {"NSOV", "North-South component of sub-gridscale orographic variance [m**2]"},
      /* 192 */ {"NWOV", "North-West/South-East component of sub-gridscale orographic variance [m**2]"},
      /* 193 */ {"NEOV", "North-East/South-West component of sub-gridscale orographic variance [m**2]"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"LGWS", "Latitudinal component of gravity wave stress [N m**-2 s]"},
      /* 196 */ {"MGWS", "Meridional component of gravity wave stress [N m**-2 s]"},
      /* 197 */ {"GWD", "Gravity wave dissipation [W m**-2 s]"},
      /* 198 */ {"SRC", "Skin reservoir content [m of water]"},
      /* 199 */ {"VEG", "Percentage of vegetation [%]"},
      /* 200 */ {"VSO", "Variance of sub-gridscale orography [m**2]"},
      /* 201 */ {"MX2T", "Maximum temperature at 2 metres during averaging time [K]"},
      /* 202 */ {"MN2T", "Minimium temperature at 2 metres during averaging time [K]"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"PAW", "Precipitation analysis weights []"},
      /* 205 */ {"RO", "Runoff [kg m**-2 s**-1]"},
      /* 206 */ {"ZZ", "Standard deviation of geopotential [m**2 s**-2]"},
      /* 207 */ {"TZ", "Covariance of temperature and geopotential [K m**2 s**-2]"},
      /* 208 */ {"TT", "Standard deviation of temperature [K]"},
      /* 209 */ {"QZ", "Covariance of specific humidity and geopotential [m**2 s**-2]"},
      /* 210 */ {"QT", "Covariance of specific humidity and temperature [K]"},
      /* 211 */ {"QQ", "Standard deviation of specific humidity [(0 - 1)]"},
      /* 212 */ {"UZ", "Covariance of U component and geopotential [m**3 s**-3]"},
      /* 213 */ {"UT", "Covariance of U component and temperature [K m s**-1]"},
      /* 214 */ {"UQ", "Covariance of U component and specific humidity [m s**-1]"},
      /* 215 */ {"UU", "Standard deviation of U velocity [m s**-1]"},
      /* 216 */ {"VZ", "Covariance of V component and geopotential [m**3 s**-3]"},
      /* 217 */ {"VT", "Covariance of V component and temperature [K m s**-1]"},
      /* 218 */ {"VQ", "Covariance of V component and specific humidity [m s**-1]"},
      /* 219 */ {"VU", "Covariance of V component and U component [m**2 s**-2]"},
      /* 220 */ {"VV", "Standard deviation of V component [m s**-1]"},
      /* 221 */ {"WZ", "Covariance of W component and geopotential [Pa m**2 s**-3]"},
      /* 222 */ {"WT", "Covariance of W component and temperature [K Pa s**-1]"},
      /* 223 */ {"WQ", "Covariance of W component and specific humidity [Pa s**-1]"},
      /* 224 */ {"WU", "Covariance of W component and U component [Pa m s**-2]"},
      /* 225 */ {"WV", "Covariance of W component and V component [Pa m s**-2]"},
      /* 226 */ {"WW", "Standard deviation of vertical velocity [Pa s**-1]"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"TP", "Total precipitation [m]"},
      /* 229 */ {"IEWS", "Instantaneous X surface stress [N m**-2]"},
      /* 230 */ {"INSS", "Instantaneous Y surface stress [N m**-2]"},
      /* 231 */ {"ISHF", "Instantaneous surface heat flux [W m**-2]"},
      /* 232 */ {"IE", "Instantaneous moisture flux [kg m**-2 s**-1]"},
      /* 233 */ {"ASQ", "Apparent surface humidity [kg kg**-1]"},
      /* 234 */ {"LSRH", "Logarithm of surface roughness length for heat []"},
      /* 235 */ {"SKT", "Skin temperature [K]"},
      /* 236 */ {"STL4", "Soil temperature level 4 [K]"},
      /* 237 */ {"SWL4", "Soil wetness level 4 [m]"},
      /* 238 */ {"TSN", "Temperature of snow layer [K]"},
      /* 239 */ {"CSF", "Convective snowfall [kg m**-2 s**-1]"},
      /* 240 */ {"LSF", "Large-scale snowfall [kg m**-2 s**-1]"},
      /* 241 */ {"CLWCER", "Cloud liquid water content [kg kg**-1]"},
      /* 242 */ {"CC", "Cloud cover [(0 - 1)]"},
      /* 243 */ {"FAL", "Forecast albedo []"},
      /* 244 */ {"FSR", "Forecast surface roughness [m]"},
      /* 245 */ {"FLSR", "Forecast logarithm of surface roughness for heat []"},
      /* 246 */ {"10WS", "10 metre wind speed [m s**-1]"},
      /* 247 */ {"MOFL", "Momentum flux [N m**-2]"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "Gravity wave dissipation flux [W m**-2]"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"HSD", "Heaviside beta function [(0 - 1)]"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_162[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"var49", "undefined"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "Surface geopotential [m**2 s**-2]"},
      /* 52 */ {"var52", "Surface pressure [Pa]"},
      /* 53 */ {"var53", "Vertical integral of mass of atmosphere [kg m**-2]"},
      /* 54 */ {"var54", "Vertical integral of temperature [K kg m**-2]"},
      /* 55 */ {"var55", "Vertical integral of total column water vapour [kg m**-2]"},
      /* 56 */ {"var56", "Vertical integral of total column liquid cloud water [kg m**-2]"},
      /* 57 */ {"var57", "Vertical integral of total column frozen cloud water [kg m**-2]"},
      /* 58 */ {"var58", "Vertical integral of total column ozone [kg m**-2]"},
      /* 59 */ {"var59", "Vertical integral of kinetic energy [J m**-2]"},
      /* 60 */ {"var60", "Vertical integral of thermal energy [J m**-2]"},
      /* 61 */ {"var61", "Vertical integral of dry static energy [J m**-2]"},
      /* 62 */ {"var62", "Vertical integral of moist static energy [J m**-2]"},
      /* 63 */ {"var63", "Vertical integral of total energy [J m**-2]"},
      /* 64 */ {"var64", "Vertical integral of energy conversion [W m**-2]"},
      /* 65 */ {"var65", "Vertical integral of eastward mass flux [kg m**-1 s**-1]"},
      /* 66 */ {"var66", "Vertical integral of northward mass flux [kg m**-1 s**-1]"},
      /* 67 */ {"var67", "Vertical integral of eastward kinetic energy flux [W m**-2]"},
      /* 68 */ {"var68", "Vertical integral of northward kinetic energy flux [W m**-2]"},
      /* 69 */ {"var69", "Vertical integral of eastward heat flux [W m**-2]"},
      /* 70 */ {"var70", "Vertical integral of northward heat flux [W m**-2]"},
      /* 71 */ {"var71", "Vertical integral of eastward water vapour flux [kg m**-1 s**-1]"},
      /* 72 */ {"var72", "Vertical integral of northward water vapour flux [kg m**-1 s**-1]"},
      /* 73 */ {"var73", "Vertical integral of eastward geopotential flux [W m**-2]"},
      /* 74 */ {"var74", "Vertical integral of northward geopotential flux [W m**-2]"},
      /* 75 */ {"var75", "Vertical integral of eastward total energy flux [W m**-2]"},
      /* 76 */ {"var76", "Vertical integral of northward total energy flux [W m**-2]"},
      /* 77 */ {"var77", "Vertical integral of eastward ozone flux [kg m**-1 s**-1]"},
      /* 78 */ {"var78", "Vertical integral of northward ozone flux [kg m**-1 s**-1]"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "Vertical integral of divergence of mass flux [kg m**-2 s**-1]"},
      /* 82 */ {"var82", "Vertical integral of divergence of kinetic energy flux [W m**-2]"},
      /* 83 */ {"var83", "Vertical integral of divergence of thermal energy flux [W m**-2]"},
      /* 84 */ {"var84", "Vertical integral of divergence of moisture flux [kg m**-2 s**-1]"},
      /* 85 */ {"var85", "Vertical integral of divergence of geopotential flux [W m**-2]"},
      /* 86 */ {"var86", "Vertical integral of divergence of total energy flux [W m**-2]"},
      /* 87 */ {"var87", "Vertical integral of divergence of ozone flux [kg m**-2 s**-1]"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "Tendency of short wave radiation [K]"},
      /* 101 */ {"var101", "Tendency of long wave radiation [K]"},
      /* 102 */ {"var102", "Tendency of clear sky short wave radiation [K]"},
      /* 103 */ {"var103", "Tendency of clear sky long wave radiation [K]"},
      /* 104 */ {"var104", "Updraught mass flux [kg m**-2]"},
      /* 105 */ {"var105", "Downdraught mass flux [kg m**-2]"},
      /* 106 */ {"var106", "Updraught detrainment rate [kg m**-3]"},
      /* 107 */ {"var107", "Downdraught detrainment rate [kg m**-3]"},
      /* 108 */ {"var108", "Total precipitation flux [kg m**-2]"},
      /* 109 */ {"var109", "Turbulent diffusion coefficient for heat [m**2]"},
      /* 110 */ {"var110", "Tendency of temperature due to physics [K]"},
      /* 111 */ {"var111", "Tendency of specific humidity due to physics [kg kg**-1]"},
      /* 112 */ {"var112", "Tendency of u component due to physics [m s**-1]"},
      /* 113 */ {"var113", "Tendency of v component due to physics [m s**-1]"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"var129", "undefined"},
      /* 130 */ {"var130", "undefined"},
      /* 131 */ {"var131", "undefined"},
      /* 132 */ {"var132", "undefined"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"var138", "undefined"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"var140", "undefined"},
      /* 141 */ {"var141", "undefined"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"var149", "undefined"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"var151", "undefined"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"var155", "undefined"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"var165", "undefined"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"var171", "undefined"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"var179", "undefined"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"var184", "undefined"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"var201", "undefined"},
      /* 202 */ {"var202", "undefined"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "Variance of geopotential [m**4 s**-4]"},
      /* 207 */ {"var207", "Covariance of geopotential/temperature [m**2 K s**-2]"},
      /* 208 */ {"var208", "Variance of temperature [K**2]"},
      /* 209 */ {"var209", "Covariance of geopotential/specific humidity [m**2 s**-2]"},
      /* 210 */ {"var210", "Covariance of temperature/specific humidity [K]"},
      /* 211 */ {"var211", "Variance of specific humidity []"},
      /* 212 */ {"var212", "Covariance of u component/geopotential [M**3 s**-3]"},
      /* 213 */ {"var213", "Covariance of u component/temperature [m s**-1 K]"},
      /* 214 */ {"var214", "Covariance of u component/specific humidity [m s**-1]"},
      /* 215 */ {"var215", "Variance of u component [m**2 s**-2]"},
      /* 216 */ {"var216", "Covariance of v component/geopotential [M**3 s**-3]"},
      /* 217 */ {"var217", "Covariance of v component/temperaure [m s**-1 K]"},
      /* 218 */ {"var218", "Covariance of v component/specific humidity [m s**-1]"},
      /* 219 */ {"var219", "Covariance of v component/u component [m**2 s**-2]"},
      /* 220 */ {"var220", "Variance of v component [m**2 s**-2]"},
      /* 221 */ {"var221", "Covariance of omega/geopotential [m**2 Pa s**-3]"},
      /* 222 */ {"var222", "Covariance of omega/temperature [Pa s**-1 K]"},
      /* 223 */ {"var223", "Covariance of omega/specific humidity [Pa s**-1]"},
      /* 224 */ {"var224", "Covariance of omega/u component [m Pa s**-2]"},
      /* 225 */ {"var225", "Covariance of omega/v component [m Pa s**-2]"},
      /* 226 */ {"var226", "Variance of omega [Pa**2 s**-2]"},
      /* 227 */ {"var227", "Variance of surface pressure [Pa**2]"},
      /* 228 */ {"var228", "undefined"},
      /* 229 */ {"var229", "Variance of relative humidity [dimensionless]"},
      /* 230 */ {"var230", "Covariance of u component/ozone [m s**-1]"},
      /* 231 */ {"var231", "Covariance of v component/ozone [m s**-1]"},
      /* 232 */ {"var232", "Covariance of omega/ozone [Pa s**-1]"},
      /* 233 */ {"var233", "Variance of ozone [dimensionless]"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_170[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"var1", "undefined"},
      /* 2 */ {"var2", "undefined"},
      /* 3 */ {"var3", "undefined"},
      /* 4 */ {"var4", "undefined"},
      /* 5 */ {"var5", "undefined"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "undefined"},
      /* 12 */ {"var12", "undefined"},
      /* 13 */ {"var13", "undefined"},
      /* 14 */ {"var14", "undefined"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "undefined"},
      /* 22 */ {"var22", "undefined"},
      /* 23 */ {"var23", "undefined"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "undefined"},
      /* 27 */ {"var27", "undefined"},
      /* 28 */ {"var28", "undefined"},
      /* 29 */ {"var29", "undefined"},
      /* 30 */ {"var30", "undefined"},
      /* 31 */ {"var31", "undefined"},
      /* 32 */ {"var32", "undefined"},
      /* 33 */ {"var33", "undefined"},
      /* 34 */ {"var34", "undefined"},
      /* 35 */ {"var35", "undefined"},
      /* 36 */ {"var36", "undefined"},
      /* 37 */ {"var37", "undefined"},
      /* 38 */ {"var38", "undefined"},
      /* 39 */ {"var39", "undefined"},
      /* 40 */ {"var40", "undefined"},
      /* 41 */ {"var41", "undefined"},
      /* 42 */ {"var42", "undefined"},
      /* 43 */ {"var43", "undefined"},
      /* 44 */ {"var44", "undefined"},
      /* 45 */ {"var45", "undefined"},
      /* 46 */ {"var46", "undefined"},
      /* 47 */ {"var47", "undefined"},
      /* 48 */ {"var48", "undefined"},
      /* 49 */ {"var49", "undefined"},
      /* 50 */ {"var50", "undefined"},
      /* 51 */ {"var51", "undefined"},
      /* 52 */ {"var52", "undefined"},
      /* 53 */ {"var53", "undefined"},
      /* 54 */ {"var54", "undefined"},
      /* 55 */ {"var55", "undefined"},
      /* 56 */ {"var56", "undefined"},
      /* 57 */ {"var57", "undefined"},
      /* 58 */ {"var58", "undefined"},
      /* 59 */ {"var59", "undefined"},
      /* 60 */ {"var60", "undefined"},
      /* 61 */ {"var61", "undefined"},
      /* 62 */ {"var62", "undefined"},
      /* 63 */ {"var63", "undefined"},
      /* 64 */ {"var64", "undefined"},
      /* 65 */ {"var65", "undefined"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"var78", "undefined"},
      /* 79 */ {"var79", "undefined"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "undefined"},
      /* 126 */ {"var126", "undefined"},
      /* 127 */ {"var127", "undefined"},
      /* 128 */ {"var128", "undefined"},
      /* 129 */ {"Z", "Geopotential [m**2 s**-2]"},
      /* 130 */ {"T", "Temperature [K]"},
      /* 131 */ {"U", "U velocity [m s**-1]"},
      /* 132 */ {"V", "V velocity [m s**-1]"},
      /* 133 */ {"var133", "undefined"},
      /* 134 */ {"var134", "undefined"},
      /* 135 */ {"var135", "undefined"},
      /* 136 */ {"var136", "undefined"},
      /* 137 */ {"var137", "undefined"},
      /* 138 */ {"VO", "Vorticity (relative) [s**-1]"},
      /* 139 */ {"var139", "undefined"},
      /* 140 */ {"SWL1", "Soil wetness level 1 [m]"},
      /* 141 */ {"SD", "Snow depth [m of water equivalent]"},
      /* 142 */ {"var142", "undefined"},
      /* 143 */ {"var143", "undefined"},
      /* 144 */ {"var144", "undefined"},
      /* 145 */ {"var145", "undefined"},
      /* 146 */ {"var146", "undefined"},
      /* 147 */ {"var147", "undefined"},
      /* 148 */ {"var148", "undefined"},
      /* 149 */ {"TSW", "Total soil moisture [m]"},
      /* 150 */ {"var150", "undefined"},
      /* 151 */ {"MSL", "Mean sea level pressure [Pa]"},
      /* 152 */ {"var152", "undefined"},
      /* 153 */ {"var153", "undefined"},
      /* 154 */ {"var154", "undefined"},
      /* 155 */ {"D", "Divergence [s**-1]"},
      /* 156 */ {"var156", "undefined"},
      /* 157 */ {"var157", "undefined"},
      /* 158 */ {"var158", "undefined"},
      /* 159 */ {"var159", "undefined"},
      /* 160 */ {"var160", "undefined"},
      /* 161 */ {"var161", "undefined"},
      /* 162 */ {"var162", "undefined"},
      /* 163 */ {"var163", "undefined"},
      /* 164 */ {"var164", "undefined"},
      /* 165 */ {"var165", "undefined"},
      /* 166 */ {"var166", "undefined"},
      /* 167 */ {"var167", "undefined"},
      /* 168 */ {"var168", "undefined"},
      /* 169 */ {"var169", "undefined"},
      /* 170 */ {"var170", "undefined"},
      /* 171 */ {"SWL2", "Soil wetness level 2 [m]"},
      /* 172 */ {"var172", "undefined"},
      /* 173 */ {"var173", "undefined"},
      /* 174 */ {"var174", "undefined"},
      /* 175 */ {"var175", "undefined"},
      /* 176 */ {"var176", "undefined"},
      /* 177 */ {"var177", "undefined"},
      /* 178 */ {"var178", "undefined"},
      /* 179 */ {"TTR", "Top thermal radiation [W m-2]"},
      /* 180 */ {"var180", "undefined"},
      /* 181 */ {"var181", "undefined"},
      /* 182 */ {"var182", "undefined"},
      /* 183 */ {"var183", "undefined"},
      /* 184 */ {"SWL3", "Soil wetness level 3 [m]"},
      /* 185 */ {"var185", "undefined"},
      /* 186 */ {"var186", "undefined"},
      /* 187 */ {"var187", "undefined"},
      /* 188 */ {"var188", "undefined"},
      /* 189 */ {"var189", "undefined"},
      /* 190 */ {"var190", "undefined"},
      /* 191 */ {"var191", "undefined"},
      /* 192 */ {"var192", "undefined"},
      /* 193 */ {"var193", "undefined"},
      /* 194 */ {"var194", "undefined"},
      /* 195 */ {"var195", "undefined"},
      /* 196 */ {"var196", "undefined"},
      /* 197 */ {"var197", "undefined"},
      /* 198 */ {"var198", "undefined"},
      /* 199 */ {"var199", "undefined"},
      /* 200 */ {"var200", "undefined"},
      /* 201 */ {"MX2T", "Maximum temperature at 2 metres [K]"},
      /* 202 */ {"MN2T", "Minimum temperature at 2 metres [K]"},
      /* 203 */ {"var203", "undefined"},
      /* 204 */ {"var204", "undefined"},
      /* 205 */ {"var205", "undefined"},
      /* 206 */ {"var206", "undefined"},
      /* 207 */ {"var207", "undefined"},
      /* 208 */ {"var208", "undefined"},
      /* 209 */ {"var209", "undefined"},
      /* 210 */ {"var210", "undefined"},
      /* 211 */ {"var211", "undefined"},
      /* 212 */ {"var212", "undefined"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "undefined"},
      /* 215 */ {"var215", "undefined"},
      /* 216 */ {"var216", "undefined"},
      /* 217 */ {"var217", "undefined"},
      /* 218 */ {"var218", "undefined"},
      /* 219 */ {"var219", "undefined"},
      /* 220 */ {"var220", "undefined"},
      /* 221 */ {"var221", "undefined"},
      /* 222 */ {"var222", "undefined"},
      /* 223 */ {"var223", "undefined"},
      /* 224 */ {"var224", "undefined"},
      /* 225 */ {"var225", "undefined"},
      /* 226 */ {"var226", "undefined"},
      /* 227 */ {"var227", "undefined"},
      /* 228 */ {"TP", "Total precipitation [m]"},
      /* 229 */ {"var229", "undefined"},
      /* 230 */ {"var230", "undefined"},
      /* 231 */ {"var231", "undefined"},
      /* 232 */ {"var232", "undefined"},
      /* 233 */ {"var233", "undefined"},
      /* 234 */ {"var234", "undefined"},
      /* 235 */ {"var235", "undefined"},
      /* 236 */ {"var236", "undefined"},
      /* 237 */ {"var237", "undefined"},
      /* 238 */ {"var238", "undefined"},
      /* 239 */ {"var239", "undefined"},
      /* 240 */ {"var240", "undefined"},
      /* 241 */ {"var241", "undefined"},
      /* 242 */ {"var242", "undefined"},
      /* 243 */ {"var243", "undefined"},
      /* 244 */ {"var244", "undefined"},
      /* 245 */ {"var245", "undefined"},
      /* 246 */ {"var246", "undefined"},
      /* 247 */ {"var247", "undefined"},
      /* 248 */ {"var248", "undefined"},
      /* 249 */ {"var249", "undefined"},
      /* 250 */ {"var250", "undefined"},
      /* 251 */ {"var251", "undefined"},
      /* 252 */ {"var252", "undefined"},
      /* 253 */ {"var253", "undefined"},
      /* 254 */ {"var254", "undefined"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

const struct ParmTable parm_table_ecmwf_171[256] = {
      /* 0 */ {"var0", "undefined"},
      /* 1 */ {"STRFA", "Stream function anomaly [m**2 s**-1]"},
      /* 2 */ {"VPOTA", "Velocity potential anomaly [m**2 s**-1]"},
      /* 3 */ {"var3", "Potential temperature [K]"},
      /* 4 */ {"var4", "Equivalent potential temperature [K]"},
      /* 5 */ {"var5", "Saturated equivalent potential temperature [K]"},
      /* 6 */ {"var6", "undefined"},
      /* 7 */ {"var7", "undefined"},
      /* 8 */ {"var8", "undefined"},
      /* 9 */ {"var9", "undefined"},
      /* 10 */ {"var10", "undefined"},
      /* 11 */ {"var11", "U component of divergent wind [m s**-1]"},
      /* 12 */ {"var12", "V component of divergent wind [m s**-1]"},
      /* 13 */ {"var13", "U component of rotational wind [m s**-1]"},
      /* 14 */ {"var14", "V component of rotational wind [m s**-1]"},
      /* 15 */ {"var15", "undefined"},
      /* 16 */ {"var16", "undefined"},
      /* 17 */ {"var17", "undefined"},
      /* 18 */ {"var18", "undefined"},
      /* 19 */ {"var19", "undefined"},
      /* 20 */ {"var20", "undefined"},
      /* 21 */ {"var21", "Unbalanced component of temperature [K]"},
      /* 22 */ {"var22", "Unbalanced component of logarithm of surface pressure []"},
      /* 23 */ {"var23", "Unbalanced component of divergence [s**-1]"},
      /* 24 */ {"var24", "undefined"},
      /* 25 */ {"var25", "undefined"},
      /* 26 */ {"var26", "Lake cover [(0 - 1)]"},
      /* 27 */ {"var27", "Low vegetation cover [(0 - 1)]"},
      /* 28 */ {"var28", "High vegetation cover [(0 - 1)]"},
      /* 29 */ {"var29", "Type of low vegetation []"},
      /* 30 */ {"var30", "Type of high vegetation []"},
      /* 31 */ {"var31", "Sea-ice cover [(0 - 1)]"},
      /* 32 */ {"var32", "Snow albedo [(0 - 1)]"},
      /* 33 */ {"var33", "Snow density [kg m**-3]"},
      /* 34 */ {"var34", "Sea surface temperature [K]"},
      /* 35 */ {"var35", "Ice surface temperature layer 1 [K]"},
      /* 36 */ {"var36", "Ice surface temperature layer 2 [K]"},
      /* 37 */ {"var37", "Ice surface temperature layer 3 [K]"},
      /* 38 */ {"var38", "Ice surface temperature layer 4 [K]"},
      /* 39 */ {"var39", "Volumetric soil water layer 1 [m**3 m**-3]"},
      /* 40 */ {"var40", "Volumetric soil water layer 2 [m**3 m**-3]"},
      /* 41 */ {"var41", "Volumetric soil water layer 3 [m**3 m**-3]"},
      /* 42 */ {"var42", "Volumetric soil water layer 4 [m**3 m**-3]"},
      /* 43 */ {"var43", "Soil type []"},
      /* 44 */ {"var44", "Snow evaporation [m of water]"},
      /* 45 */ {"var45", "Snowmelt [m of water]"},
      /* 46 */ {"var46", "Solar duration [s]"},
      /* 47 */ {"var47", "Direct solar radiation [w m**-2]"},
      /* 48 */ {"var48", "Magnitude of surface stress [N m**-2 s]"},
      /* 49 */ {"var49", "10 metre wind gust [m s**-1]"},
      /* 50 */ {"var50", "Large-scale precipitation fraction [s]"},
      /* 51 */ {"var51", "Maximum 2 metre temperature [K]"},
      /* 52 */ {"var52", "Minimum 2 metre temperature [K]"},
      /* 53 */ {"var53", "Montgomery potential [m**2 s**-2]"},
      /* 54 */ {"var54", "Pressure [Pa]"},
      /* 55 */ {"var55", "Mean 2 metre temperature in past 24 hours [K]"},
      /* 56 */ {"var56", "Mean 2 metre dewpoint temperature in past 24 hours [K]"},
      /* 57 */ {"var57", "Downward UV radiation at the surface [w m**-2]"},
      /* 58 */ {"var58", "Photosynthetically active radiation at the surface [w m**-2]"},
      /* 59 */ {"var59", "Convective available potential energy [J kg**-1]"},
      /* 60 */ {"var60", "Potential vorticity [K m**2 kg**-1 s**-1]"},
      /* 61 */ {"var61", "Total precipitation from observations [Millimetres*100 + number of stations]"},
      /* 62 */ {"var62", "Observation count []"},
      /* 63 */ {"var63", "Start time for skin temperature difference [s]"},
      /* 64 */ {"var64", "Finish time for skin temperature difference [s]"},
      /* 65 */ {"var65", "Skin temperature difference [K]"},
      /* 66 */ {"var66", "undefined"},
      /* 67 */ {"var67", "undefined"},
      /* 68 */ {"var68", "undefined"},
      /* 69 */ {"var69", "undefined"},
      /* 70 */ {"var70", "undefined"},
      /* 71 */ {"var71", "undefined"},
      /* 72 */ {"var72", "undefined"},
      /* 73 */ {"var73", "undefined"},
      /* 74 */ {"var74", "undefined"},
      /* 75 */ {"var75", "undefined"},
      /* 76 */ {"var76", "undefined"},
      /* 77 */ {"var77", "undefined"},
      /* 78 */ {"TCLWA", "Total column liquid water anomaly [kg m**-2]"},
      /* 79 */ {"TCIWA", "Total column ice water anomaly [kg m**-2]"},
      /* 80 */ {"var80", "undefined"},
      /* 81 */ {"var81", "undefined"},
      /* 82 */ {"var82", "undefined"},
      /* 83 */ {"var83", "undefined"},
      /* 84 */ {"var84", "undefined"},
      /* 85 */ {"var85", "undefined"},
      /* 86 */ {"var86", "undefined"},
      /* 87 */ {"var87", "undefined"},
      /* 88 */ {"var88", "undefined"},
      /* 89 */ {"var89", "undefined"},
      /* 90 */ {"var90", "undefined"},
      /* 91 */ {"var91", "undefined"},
      /* 92 */ {"var92", "undefined"},
      /* 93 */ {"var93", "undefined"},
      /* 94 */ {"var94", "undefined"},
      /* 95 */ {"var95", "undefined"},
      /* 96 */ {"var96", "undefined"},
      /* 97 */ {"var97", "undefined"},
      /* 98 */ {"var98", "undefined"},
      /* 99 */ {"var99", "undefined"},
      /* 100 */ {"var100", "undefined"},
      /* 101 */ {"var101", "undefined"},
      /* 102 */ {"var102", "undefined"},
      /* 103 */ {"var103", "undefined"},
      /* 104 */ {"var104", "undefined"},
      /* 105 */ {"var105", "undefined"},
      /* 106 */ {"var106", "undefined"},
      /* 107 */ {"var107", "undefined"},
      /* 108 */ {"var108", "undefined"},
      /* 109 */ {"var109", "undefined"},
      /* 110 */ {"var110", "undefined"},
      /* 111 */ {"var111", "undefined"},
      /* 112 */ {"var112", "undefined"},
      /* 113 */ {"var113", "undefined"},
      /* 114 */ {"var114", "undefined"},
      /* 115 */ {"var115", "undefined"},
      /* 116 */ {"var116", "undefined"},
      /* 117 */ {"var117", "undefined"},
      /* 118 */ {"var118", "undefined"},
      /* 119 */ {"var119", "undefined"},
      /* 120 */ {"var120", "undefined"},
      /* 121 */ {"var121", "undefined"},
      /* 122 */ {"var122", "undefined"},
      /* 123 */ {"var123", "undefined"},
      /* 124 */ {"var124", "undefined"},
      /* 125 */ {"var125", "Vertically integrated total energy [J m**-2]"},
      /* 126 */ {"var126", "Generic parameter for sensitive area prediction [Various]"},
      /* 127 */ {"var127", "Atmospheric tide []"},
      /* 128 */ {"var128", "Budget values []"},
      /* 129 */ {"ZA", "Geopotential anomaly [m**2 s**-2]"},
      /* 130 */ {"TA", "Temperature anomaly [K]"},
      /* 131 */ {"UA", "U velocity anomaly [m s**-1]"},
      /* 132 */ {"VA", "V velocity anomaly [m s**-1]"},
      /* 133 */ {"var133", "Specific humidity [kg kg**-1]"},
      /* 134 */ {"var134", "Surface pressure [Pa]"},
      /* 135 */ {"var135", "Vertical velocity [Pa s**-1]"},
      /* 136 */ {"TCWA", "Total column water [kg m**-2]"},
      /* 137 */ {"TCWVA", "Total column water vapour [kg m**-2]"},
      /* 138 */ {"var138", "Vorticity (relative) [s**-1]"},
      /* 139 */ {"STAL1", "Soil temperature level 1 [K]"},
      /* 140 */ {"var140", "Soil wetness level 1 [m of water]"},
      /* 141 */ {"var141", "Snow depth [m of water equivalent]"},
      /* 142 */ {"var142", "Stratiform precipitation (Large-scale precipitation) [m]"},
      /* 143 */ {"var143", "Convective precipitation [m]"},
      /* 144 */ {"var144", "Snowfall (convective + stratiform) [m of water equivalent]"},
      /* 145 */ {"var145", "Boundary layer dissipation [W m**-2 s]"},
      /* 146 */ {"var146", "Surface sensible heat flux [W m**-2 s]"},
      /* 147 */ {"var147", "Surface latent heat flux [W m**-2 s]"},
      /* 148 */ {"var148", "Charnock []"},
      /* 149 */ {"var149", "Surface net radiation [W m**-2 s]"},
      /* 150 */ {"var150", "Top net radiation []"},
      /* 151 */ {"MSLA", "Mean sea level pressure anomaly [Pa]"},
      /* 152 */ {"var152", "Logarithm of surface pressure []"},
      /* 153 */ {"var153", "Short-wave heating rate [K]"},
      /* 154 */ {"var154", "Long-wave heating rate [K]"},
      /* 155 */ {"var155", "Divergence [s**-1]"},
      /* 156 */ {"var156", "Height [m]"},
      /* 157 */ {"var157", "Relative humidity [%]"},
      /* 158 */ {"var158", "Tendency of surface pressure [Pa s**-1]"},
      /* 159 */ {"var159", "Boundary layer height [m]"},
      /* 160 */ {"var160", "Standard deviation of orography []"},
      /* 161 */ {"var161", "Anisotropy of sub-gridscale orography []"},
      /* 162 */ {"var162", "Angle of sub-gridscale orography [rad]"},
      /* 163 */ {"var163", "Slope of sub-gridscale orography []"},
      /* 164 */ {"TCCA", "Total cloud cover anomaly [(0 - 1)]"},
      /* 165 */ {"10UA", "10 metre U wind component anomaly [m s**-1]"},
      /* 166 */ {"10VA", "10 metre V wind component anomaly [m s**-1]"},
      /* 167 */ {"2TA", "2 metre temperature anomaly [K]"},
      /* 168 */ {"var168", "2 metre dewpoint temperature [K]"},
      /* 169 */ {"var169", "Surface solar radiation downwards [W m**-2 s]"},
      /* 170 */ {"var170", "Soil temperature level 2 [K]"},
      /* 171 */ {"var171", "Soil wetness level 2 [m of water]"},
      /* 172 */ {"var172", "Land-sea mask [(0 - 1)]"},
      /* 173 */ {"var173", "Surface roughness [m]"},
      /* 174 */ {"var174", "Albedo [(0 - 1)]"},
      /* 175 */ {"var175", "Surface thermal radiation downwards [W m**-2 s]"},
      /* 176 */ {"var176", "Surface solar radiation [W m**-2 s]"},
      /* 177 */ {"var177", "Surface thermal radiation [W m**-2 s]"},
      /* 178 */ {"var178", "Top solar radiation [W m**-2 s]"},
      /* 179 */ {"var179", "Top thermal radiation [W m**-2 s]"},
      /* 180 */ {"var180", "East-West surface stress [N m**-2 s]"},
      /* 181 */ {"var181", "North-South surface stress [N m**-2 s]"},
      /* 182 */ {"var182", "Evaporation [m of water]"},
      /* 183 */ {"var183", "Soil temperature level 3 [K]"},
      /* 184 */ {"var184", "Soil wetness level 3 [m of water]"},
      /* 185 */ {"var185", "Convective cloud cover [(0 - 1)]"},
      /* 186 */ {"var186", "Low cloud cover [(0 - 1)]"},
      /* 187 */ {"var187", "Medium cloud cover [(0 - 1)]"},
      /* 188 */ {"var188", "High cloud cover [(0 - 1)]"},
      /* 189 */ {"SUNDA", "Sunshine duration anomaly [s]"},
      /* 190 */ {"var190", "East-West component of sub-gridscale orographic variance [m**2]"},
      /* 191 */ {"var191", "North-South component of sub-gridscale orographic variance [m**2]"},
      /* 192 */ {"var192", "North-West/South-East component of sub-gridscale orographic variance [m**2]"},
      /* 193 */ {"var193", "North-East/South-West component of sub-gridscale orographic variance [m**2]"},
      /* 194 */ {"var194", "Brightness temperature [K]"},
      /* 195 */ {"var195", "Latitudinal component of gravity wave stress [N m**-2 s]"},
      /* 196 */ {"var196", "Meridional component of gravity wave stress [N m**-2 s]"},
      /* 197 */ {"var197", "Gravity wave dissipation [W m**-2 s]"},
      /* 198 */ {"var198", "Skin reservoir content [m of water]"},
      /* 199 */ {"var199", "Vegetation fraction [(0 - 1)]"},
      /* 200 */ {"var200", "Variance of sub-gridscale orography [m**2]"},
      /* 201 */ {"MX2TA", "Maximum temperature at 2 metres anomaly [K]"},
      /* 202 */ {"MN2TA", "Minimum temperature at 2 metres anomaly [K]"},
      /* 203 */ {"var203", "Ozone mass mixing ratio [kg kg**-1]"},
      /* 204 */ {"var204", "Precipitation analysis weights []"},
      /* 205 */ {"var205", "Runoff [m]"},
      /* 206 */ {"var206", "Total column ozone [kg m**-2]"},
      /* 207 */ {"var207", "10 metre wind speed [m s**-1]"},
      /* 208 */ {"var208", "Top net solar radiation, clear sky [W m**-2 s]"},
      /* 209 */ {"var209", "Top net thermal radiation, clear sky [W m**-2 s]"},
      /* 210 */ {"var210", "Surface net solar radiation, clear sky [W m**-2 s]"},
      /* 211 */ {"var211", "Surface net thermal radiation, clear sky [W m**-2 s]"},
      /* 212 */ {"var212", "Solar insolation [W m**-2]"},
      /* 213 */ {"var213", "undefined"},
      /* 214 */ {"var214", "Diabatic heating by radiation [K]"},
      /* 215 */ {"var215", "Diabatic heating by vertical diffusion [K]"},
      /* 216 */ {"var216", "Diabatic heating by cumulus convection [K]"},
      /* 217 */ {"var217", "Diabatic heating by large-scale condensation [K]"},
      /* 218 */ {"var218", "Vertical diffusion of zonal wind [m s**-1]"},
      /* 219 */ {"var219", "Vertical diffusion of meridional wind [m s**-1]"},
      /* 220 */ {"var220", "East-West gravity wave drag tendency [m s**-1]"},
      /* 221 */ {"var221", "North-South gravity wave drag tendency [m s**-1]"},
      /* 222 */ {"var222", "Convective tendency of zonal wind [m s**-1]"},
      /* 223 */ {"var223", "Convective tendency of meridional wind [m s**-1]"},
      /* 224 */ {"var224", "Vertical diffusion of humidity [kg kg**-1]"},
      /* 225 */ {"var225", "Humidity tendency by cumulus convection [kg kg**-1]"},
      /* 226 */ {"var226", "Humidity tendency by large-scale condensation [kg kg**-1]"},
      /* 227 */ {"var227", "Change from removal of negative humidity [kg kg**-1]"},
      /* 228 */ {"TPA", "Total precipitation anomaly [m]"},
      /* 229 */ {"var229", "Instantaneous X surface stress [N m**-2]"},
      /* 230 */ {"var230", "Instantaneous Y surface stress [N m**-2]"},
      /* 231 */ {"var231", "Instantaneous surface heat flux [W m**-2]"},
      /* 232 */ {"var232", "Instantaneous moisture flux [kg m**-2 s]"},
      /* 233 */ {"var233", "Apparent surface humidity [kg kg**-1]"},
      /* 234 */ {"var234", "Logarithm of surface roughness length for heat []"},
      /* 235 */ {"var235", "Skin temperature [K]"},
      /* 236 */ {"var236", "Soil temperature level 4 [K]"},
      /* 237 */ {"var237", "Soil wetness level 4 [m]"},
      /* 238 */ {"var238", "Temperature of snow layer [K]"},
      /* 239 */ {"var239", "Convective snowfall [m of water equivalent]"},
      /* 240 */ {"var240", "Large-scale snowfall [m of water equivalent]"},
      /* 241 */ {"var241", "Accumulated cloud fraction tendency [(-1 to 1)]"},
      /* 242 */ {"var242", "Accumulated liquid water tendency [(-1 to 1)]"},
      /* 243 */ {"var243", "Forecast albedo [(0 - 1)]"},
      /* 244 */ {"var244", "Forecast surface roughness [m]"},
      /* 245 */ {"var245", "Forecast logarithm of surface roughness for heat []"},
      /* 246 */ {"var246", "Cloud liquid water content [kg kg**-1]"},
      /* 247 */ {"var247", "Cloud ice water content [kg kg**-1]"},
      /* 248 */ {"var248", "Cloud cover [(0 - 1)]"},
      /* 249 */ {"var249", "Accumulated ice water tendency [(-1 to 1)]"},
      /* 250 */ {"var250", "Ice age [(0 - 1)]"},
      /* 251 */ {"var251", "Adiabatic tendency of temperature [K]"},
      /* 252 */ {"var252", "Adiabatic tendency of humidity [kg kg**-1]"},
      /* 253 */ {"var253", "Adiabatic tendency of zonal wind [m s**-1]"},
      /* 254 */ {"var254", "Adiabatic tendency of meridional wind [m s**-1]"},
      /* 255 */ {"var255", "Indicates a missing value []"},
};

/* ectable 172 from Geert Jan van Oldenborgh  */

const struct ParmTable parm_table_ecmwf_172[256] = {
    /* 0 */ {"var0", "undefined"},
    /* 1 */ {"var1", "undefined"},
    /* 2 */ {"var2", "undefined"},
    /* 3 */ {"var3", "undefined"},
    /* 4 */ {"var4", "undefined"},
    /* 5 */ {"var5", "undefined"},
    /* 6 */ {"var6", "undefined"},
    /* 7 */ {"var7", "undefined"},
    /* 8 */ {"var8", "undefined"},
    /* 9 */ {"var9", "undefined"},
    /* 10 */ {"var10", "undefined"},
    /* 11 */ {"var11", "undefined"},
    /* 12 */ {"var12", "undefined"},
    /* 13 */ {"var13", "undefined"},
    /* 14 */ {"var14", "undefined"},
    /* 15 */ {"var15", "undefined"},
    /* 16 */ {"var16", "undefined"},
    /* 17 */ {"var17", "undefined"},
    /* 18 */ {"var18", "undefined"},
    /* 19 */ {"var19", "undefined"},
    /* 20 */ {"var20", "undefined"},
    /* 21 */ {"var21", "undefined"},
    /* 22 */ {"var22", "undefined"},
    /* 23 */ {"var23", "undefined"},
    /* 24 */ {"var24", "undefined"},
    /* 25 */ {"var25", "undefined"},
    /* 26 */ {"var26", "undefined"},
    /* 27 */ {"var27", "undefined"},
    /* 28 */ {"var28", "undefined"},
    /* 29 */ {"var29", "undefined"},
    /* 30 */ {"var30", "undefined"},
    /* 31 */ {"var31", "undefined"},
    /* 32 */ {"var32", "undefined"},
    /* 33 */ {"var33", "undefined"},
    /* 34 */ {"var34", "undefined"},
    /* 35 */ {"var35", "undefined"},
    /* 36 */ {"var36", "undefined"},
    /* 37 */ {"var37", "undefined"},
    /* 38 */ {"var38", "undefined"},
    /* 39 */ {"var39", "undefined"},
    /* 40 */ {"var40", "undefined"},
    /* 41 */ {"var41", "undefined"},
    /* 42 */ {"var42", "undefined"},
    /* 43 */ {"var43", "undefined"},
    /* 44 */ {"SNOE", "Snow evaporation m of water s**-1"},
    /* 45 */ {"SNOM", "Snow melt m of water s**-1"},
    /* 46 */ {"var46", "undefined"},
    /* 47 */ {"var47", "undefined"},
    /* 48 */ {"MSS", "magnitude of surface stress N m**-2"},
    /* 49 */ {"var49", "undefined"},
    /* 50 */ {"", "Large-scale precipitation fraction -"},
    /* 51 */ {"var51", "undefined"},
    /* 52 */ {"var52", "undefined"},
    /* 53 */ {"var53", "undefined"},
    /* 54 */ {"var54", "undefined"},
    /* 55 */ {"var55", "undefined"},
    /* 56 */ {"var56", "undefined"},
    /* 57 */ {"var57", "undefined"},
    /* 58 */ {"var58", "undefined"},
    /* 59 */ {"var59", "undefined"},
    /* 60 */ {"var60", "undefined"},
    /* 61 */ {"var61", "undefined"},
    /* 62 */ {"var62", "undefined"},
    /* 63 */ {"var63", "undefined"},
    /* 64 */ {"var64", "undefined"},
    /* 65 */ {"var65", "undefined"},
    /* 66 */ {"var66", "undefined"},
    /* 67 */ {"var67", "undefined"},
    /* 68 */ {"var68", "undefined"},
    /* 69 */ {"var69", "undefined"},
    /* 70 */ {"var70", "undefined"},
    /* 71 */ {"var71", "undefined"},
    /* 72 */ {"var72", "undefined"},
    /* 73 */ {"var73", "undefined"},
    /* 74 */ {"var74", "undefined"},
    /* 75 */ {"var75", "undefined"},
    /* 76 */ {"var76", "undefined"},
    /* 77 */ {"var77", "undefined"},
    /* 78 */ {"var78", "undefined"},
    /* 79 */ {"var79", "undefined"},
    /* 80 */ {"var80", "undefined"},
    /* 81 */ {"var81", "undefined"},
    /* 82 */ {"var82", "undefined"},
    /* 83 */ {"var83", "undefined"},
    /* 84 */ {"var84", "undefined"},
    /* 85 */ {"var85", "undefined"},
    /* 86 */ {"var86", "undefined"},
    /* 87 */ {"var87", "undefined"},
    /* 88 */ {"var88", "undefined"},
    /* 89 */ {"var89", "undefined"},
    /* 90 */ {"var90", "undefined"},
    /* 91 */ {"var91", "undefined"},
    /* 92 */ {"var92", "undefined"},
    /* 93 */ {"var93", "undefined"},
    /* 94 */ {"var94", "undefined"},
    /* 95 */ {"var95", "undefined"},
    /* 96 */ {"var96", "undefined"},
    /* 97 */ {"var97", "undefined"},
    /* 98 */ {"var98", "undefined"},
    /* 99 */ {"var99", "undefined"},
    /* 100 */ {"var100", "undefined"},
    /* 101 */ {"var101", "undefined"},
    /* 102 */ {"var102", "undefined"},
    /* 103 */ {"var103", "undefined"},
    /* 104 */ {"var104", "undefined"},
    /* 105 */ {"var105", "undefined"},
    /* 106 */ {"var106", "undefined"},
    /* 107 */ {"var107", "undefined"},
    /* 108 */ {"var108", "undefined"},
    /* 109 */ {"var109", "undefined"},
    /* 110 */ {"var110", "undefined"},
    /* 111 */ {"var111", "undefined"},
    /* 112 */ {"var112", "undefined"},
    /* 113 */ {"var113", "undefined"},
    /* 114 */ {"var114", "undefined"},
    /* 115 */ {"var115", "undefined"},
    /* 116 */ {"var116", "undefined"},
    /* 117 */ {"var117", "undefined"},
    /* 118 */ {"var118", "undefined"},
    /* 119 */ {"var119", "undefined"},
    /* 120 */ {"var120", "undefined"},
    /* 121 */ {"var121", "undefined"},
    /* 122 */ {"var122", "undefined"},
    /* 123 */ {"var123", "undefined"},
    /* 124 */ {"var124", "undefined"},
    /* 125 */ {"var125", "undefined"},
    /* 126 */ {"var126", "undefined"},
    /* 127 */ {"var127", "undefined"},
    /* 128 */ {"var128", "undefined"},
    /* 129 */ {"var129", "undefined"},
    /* 130 */ {"var130", "undefined"},
    /* 131 */ {"var131", "undefined"},
    /* 132 */ {"var132", "undefined"},
    /* 133 */ {"var133", "undefined"},
    /* 134 */ {"var134", "undefined"},
    /* 135 */ {"var135", "undefined"},
    /* 136 */ {"var136", "undefined"},
    /* 137 */ {"var137", "undefined"},
    /* 138 */ {"var138", "undefined"},
    /* 139 */ {"var139", "undefined"},
    /* 140 */ {"var140", "undefined"},
    /* 141 */ {"var141", "undefined"},
    /* 142 */ {"LSP", "Large scale precipitation m s**-1"},
    /* 143 */ {"CP", "Convective precipitation m s**-1"},
    /* 144 */ {"SF", "Snowfall (convective + stratiform) m of water equivalent s**-1"},
    /* 145 */ {"BLD", "Boundary layer dissipation W m**-2"},
    /* 146 */ {"SSHF", "Surface sensible heat flux W m**-2"},
    /* 147 */ {"SLHF", "Surface latent heat flux W m**-2"},
    /* 148 */ {"SNR", "Surface net radiation W m**-2"},
    /* 149 */ {"var149", "undefined"},
    /* 150 */ {"var150", "undefined"},
    /* 151 */ {"var151", "undefined"},
    /* 152 */ {"var152", "undefined"},
    /* 153 */ {"SWHR", "Short-wave heating rate K s**-1"},
    /* 154 */ {"LWHR", "Long-wave heating rate K s**-1"},
    /* 155 */ {"var155", "undefined"},
    /* 156 */ {"var156", "undefined"},
    /* 157 */ {"var157", "undefined"},
    /* 158 */ {"var158", "undefined"},
    /* 159 */ {"var159", "undefined"},
    /* 160 */ {"var160", "undefined"},
    /* 161 */ {"var161", "undefined"},
    /* 162 */ {"var162", "undefined"},
    /* 163 */ {"var163", "undefined"},
    /* 164 */ {"var164", "undefined"},
    /* 165 */ {"var165", "undefined"},
    /* 166 */ {"var166", "undefined"},
    /* 167 */ {"var167", "undefined"},
    /* 168 */ {"var168", "undefined"},
    /* 169 */ {"SSRD", "Surface solar radiation downwards W m**-2"},
    /* 170 */ {"var170", "undefined"},
    /* 171 */ {"var171", "undefined"},
    /* 172 */ {"var172", "undefined"},
    /* 173 */ {"var173",