#include <stdio.h>
#include <string.h>
#include "gribw.h"

static struct param {
    char *pname;
    int dec_scale;
    } NMC_parm[256] = {

	
    /*   0 */ {"var0", 0 },
    /*   1 */ {"PRES", -1 },
    /*   2 */ {"PRMSL", -1 },
    /*   3 */ {"PTEND", 5 },
    /*   4 */ {"var4", 0 },
    /*   5 */ {"var5", 0 },
    /*   6 */ {"GP", -1 },
    /*   7 */ {"HGT", 0 },
    /*   8 */ {"DIST", 0 },
    /*   9 */ {"HSTDV", 0 },
    /*  10 */ {"HVAR", 0 },
    /*  11 */ {"TMP", 1 },
    /*  12 */ {"VTMP", 1 },
    /*  13 */ {"POT", 1 },
    /*  14 */ {"EPOT", 1 },
    /*  15 */ {"TMAX", 1 },
    /*  16 */ {"TMIN", 1 },
    /*  17 */ {"DPT", 1 },
    /*  18 */ {"DEPR", 1 },
    /*  19 */ {"LAPR", 4 },
    /*  20 */ {"VISIB", 0 },
    /*  21 */ {"RDSP1", 0 },
    /*  22 */ {"RDSP2", 0 },
    /*  23 */ {"RDSP3", 0 },
    /*  24 */ {"var24", 0 },
    /*  25 */ {"TMPA", 1 },
    /*  26 */ {"PRESA", -1 },
    /*  27 */ {"GPA", 0 },
    /*  28 */ {"WVSP1", 0 },
    /*  29 */ {"WVSP2", 0 },
    /*  30 */ {"WVSP3", 0 },
    /*  31 */ {"WDIR", 0 },
    /*  32 */ {"WIND", 1 },
    /*  33 */ {"UGRD", 1 },
    /*  34 */ {"VGRD", 1 },
    /*  35 */ {"STRM", -4 },
    /*  36 */ {"VPOT", -4 },
    /*  37 */ {"MNTSF", -1 },
    /*  38 */ {"SGCVV", 8 },
    /*  39 */ {"VVEL", 3 },
    /*  40 */ {"DZDT", 4 },
    /*  41 */ {"ABSV", 6 },
    /*  42 */ {"ABSD", 6 },
    /*  43 */ {"RELV", 6 },
    /*  44 */ {"RELD", 6 },
    /*  45 */ {"VUCSH", 4 },
    /*  46 */ {"VVCSH", 4 },
    /*  47 */ {"DIRC", 0 },
    /*  48 */ {"SPC", 0 },
    /*  49 */ {"UOGRD", 0 },
    /*  50 */ {"VOGRD", 0 },
    /*  51 */ {"SPFH", 4 },
    /*  52 */ {"RH", 0 },
    /*  53 */ {"MIXR", 4 },
    /*  54 */ {"PWAT", 1 },
    /*  55 */ {"VAPP", -1 },
    /*  56 */ {"SATD", -1 },
    /*  57 */ {"EVP", 1 },
    /*  58 */ {"CICE", 1 },
    /*  59 */ {"PRATE", 6 },
    /*  60 */ {"TSTM", 0 },
    /*  61 */ {"APCP", 1 },
    /*  62 */ {"NCPCP", 1 },
    /*  63 */ {"ACPCP", 1 },
    /*  64 */ {"SRWEQ", 6 },
    /*  65 */ {"WEASD", 0 },
    /*  66 */ {"SNOD", 2 },
    /*  67 */ {"MIXHT", 0 },
    /*  68 */ {"TTHDP", 0 },
    /*  69 */ {"MTHD", 0 },
    /*  70 */ {"MTHA", 0 },
    /*  71 */ {"TCDC", 0 },
    /*  72 */ {"CDCON", 0 },
    /*  73 */ {"LCDC", 0 },
    /*  74 */ {"MCDC", 0 },
    /*  75 */ {"HCDC", 0 },
    /*  76 */ {"CWAT", 1 },
    /*  77 */ {"var77", 0 },
    /*  78 */ {"SNOC", 1 },
    /*  79 */ {"SNOL", 1 },
    /*  80 */ {"WTMP", 1 },
    /*  81 */ {"LAND", 0 },
    /*  82 */ {"DSLM", 0 },
    /*  83 */ {"SFCR", 5 },
    /*  84 */ {"ALBDO", 0 },
    /*  85 */ {"TSOIL", 1 },
    /*  86 */ {"SOILM", 0 },
    /*  87 */ {"VEG", 0 },
    /*  88 */ {"SALTY", 0 },
    /*  89 */ {"DEN", 4 },
    /*  90 */ {"RUNOF", 1 },
    /*  91 */ {"ICEC", 0 },
    /*  92 */ {"ICETK", 0 },
    /*  93 */ {"DICED", 0 },
    /*  94 */ {"SICED", 0 },
    /*  95 */ {"UICE", 0 },
    /*  96 */ {"VICE", 0 },
    /*  97 */ {"ICEG", 0 },
    /*  98 */ {"ICED", 0 },
    /*  99 */ {"SNOM", 1 },
    /* 100 */ {"HTSGW", 0 },
    /* 101 */ {"WVDIR", 0 },
    /* 102 */ {"WVHGT", 0 },
    /* 103 */ {"WVPER", 0 },
    /* 104 */ {"SWDIR", 0 },
    /* 105 */ {"SWELL", 0 },
    /* 106 */ {"SWPER", 0 },
    /* 107 */ {"DIRPW", 0 },
    /* 108 */ {"PERPW", 0 },
    /* 109 */ {"DIRSW", 0 },
    /* 110 */ {"PERSW", 0 },
    /* 111 */ {"NSWRS", 0 },
    /* 112 */ {"NLWRS", 0 },
    /* 113 */ {"NSWRT", 0 },
    /* 114 */ {"NLWRT", 0 },
    /* 115 */ {"LWAVR", 0 },
    /* 116 */ {"SWAVR", 0 },
    /* 117 */ {"GRAD", 0 },
    /* 118 */ {"var118", 0 },
    /* 119 */ {"var119", 0 },
    /* 120 */ {"var120", 0 },
    /* 121 */ {"LHTFL", 0 },
    /* 122 */ {"SHTFL", 0 },
    /* 123 */ {"BLYDP", 0 },
    /* 124 */ {"UFLX", 3 },
    /* 125 */ {"VFLX", 3 },
    /* 126 */ {"WMIXE", 0 },
    /* 127 */ {"IMGD", 0 },
    /* 128 */ {"MSLSA", -1 },
    /* 129 */ {"MSLMA", -1 },
    /* 130 */ {"MSLET", -1 },
    /* 131 */ {"LFTX", 1 },
    /* 132 */ {"4LFTX", 1 },
    /* 133 */ {"KX", 1 },
    /* 134 */ {"SX", 1 },
    /* 135 */ {"MCONV", 10 },
    /* 136 */ {"VSSH", 4 },
    /* 137 */ {"TSLSA", 5 },
    /* 138 */ {"BVF2", 6 },
    /* 139 */ {"PVMW", 11 },
    /* 140 */ {"CRAIN", 0 },
    /* 141 */ {"CFRZR", 0 },
    /* 142 */ {"CICEP", 0 },
    /* 143 */ {"CSNOW", 0 },
    /* 144 */ {"SOILW", 0 },
    /* 145 */ {"PEVPR", 0 },
    /* 146 */ {"CWORK", 0 },
    /* 147 */ {"U-GWD", 0 },
    /* 148 */ {"V-GWD", 0 },
    /* 149 */ {"PV___", 0 },
    /* 150 */ {"var150", 0 },
    /* 151 */ {"var151", 0 },
    /* 152 */ {"var152", 0 },
    /* 153 */ {"MFXDV", 0 },
    /* 154 */ {"var154", 0 },
    /* 155 */ {"GFLUX", 0 },
    /* 156 */ {"CIN", 0 },
    /* 157 */ {"CAPE", 0 },
    /* 158 */ {"TKE", 0 },
    /* 159 */ {"CONDP", 0 },
    /* 160 */ {"CSUSF", 0 },
    /* 161 */ {"CSDSF", 0 },
    /* 162 */ {"CSULF", 0 },
    /* 163 */ {"CSDLF", 0 },
    /* 164 */ {"CFNSF", 0 },
    /* 165 */ {"CFNLF", 0 },
    /* 166 */ {"VBDSF", 0 },
    /* 167 */ {"VDDSF", 0 },
    /* 168 */ {"NBDSF", 0 },
    /* 169 */ {"NDDSF", 0 },
    /* 170 */ {"USTR", 3 },
    /* 171 */ {"VSTR", 3 },
    /* 172 */ {"MFLX", 3 },
    /* 173 */ {"LMH", 0 },
    /* 174 */ {"LMV", 0 },
    /* 175 */ {"SGLYR", 0 },
    /* 176 */ {"NLAT", 2 },
    /* 177 */ {"NLON", 2 },
    /* 178 */ {"UMAS", 2 },
    /* 179 */ {"VMAS", 2 },
    /* 180 */ {"var180", 0 },
    /* 181 */ {"LPSX", 9 },
    /* 182 */ {"LPSY", 9 },
    /* 183 */ {"HGTX", 5 },
    /* 184 */ {"HGTY", 5 },
    /* 185 */ {"STDZ", 0 },
    /* 186 */ {"STDU", 0 },
    /* 187 */ {"STDV", 0 },
    /* 188 */ {"STDQ", 0 },
    /* 189 */ {"STDT", 0 },
    /* 190 */ {"CBUW", 0 },
    /* 191 */ {"CBVW", 0 },
    /* 192 */ {"CBUQ", 0 },
    /* 193 */ {"CBVQ", 0 },
    /* 194 */ {"CBTW", 0 },
    /* 195 */ {"CBQW", 0 },
    /* 196 */ {"CBMZW", 0 },
    /* 197 */ {"CBTZW", 0 },
    /* 198 */ {"CBTMW", 0 },
    /* 199 */ {"STDRH", 0 },
    /* 200 */ {"SDTZ", 0 },
    /* 201 */ {"ICWAT", 0 },
    /* 202 */ {"SDTU", 0 },
    /* 203 */ {"SDTV", 0 },
    /* 204 */ {"DSWRF", 0 },
    /* 205 */ {"DLWRF", 0 },
    /* 206 */ {"SDTQ", 0 },
    /* 207 */ {"MSTAV", 0 },
    /* 208 */ {"SFEXC", 0 },
    /* 209 */ {"MIXLY", 0 },
    /* 210 */ {"SDTT", 0 },
    /* 211 */ {"USWRF", 0 },
    /* 212 */ {"ULWRF", 0 },
    /* 213 */ {"CDLYR", 0 },
    /* 214 */ {"CPRAT", 6 },
    /* 215 */ {"TTDIA", 7 },
    /* 216 */ {"TTRAD", 7 },
    /* 217 */ {"TTPHY", 7 },
    /* 218 */ {"PREIX", 2 },
    /* 219 */ {"TSD1D", 1 },
    /* 220 */ {"NLSGP", 4 },
    /* 221 */ {"SDTRH", 0 },
    /* 222 */ {"5WAVH", 0 },
    /* 223 */ {"CWAT", 1 },
    /* 224 */ {"PLTRS", 1 },
    /* 225 */ {"var225", 1 },
    /* 226 */ {"BMIXL", 0 },
    /* 227 */ {"AMIXL", 0 },
    /* 228 */ {"PEVAP", 1 },
    /* 229 */ {"SNOHF", 0 },
    /* 230 */ {"var230", 0 },
    /* 231 */ {"MFLUX", 3 },
    /* 232 */ {"DTRF", 0 },
    /* 233 */ {"UTRF", 0 },
    /* 234 */ {"BGRUN", 0 },
    /* 235 */ {"SSRUN", 0 },
    /* 236 */ {"var236", 0 },
    /* 237 */ {"OZONE", 0 },
    /* 238 */ {"SNOC", 0 },
    /* 239 */ {"SNOT", 1 },
    /* 240 */ {"GLCR", 0 },
    /* 241 */ {"LRGHR", 7 },
    /* 242 */ {"CNVHR", 7 },
    /* 243 */ {"CNVMR", 10 },
    /* 244 */ {"SHAHR", 7 },
    /* 245 */ {"SHAMR", 10 },
    /* 246 */ {"VDFHR", 7 },
    /* 247 */ {"VDFUA", 7 },
    /* 248 */ {"VDFVA", 7 },
    /* 249 */ {"VDFMR", 10 },
    /* 250 */ {"SWHR", 7 },
    /* 251 */ {"LWHR", 7 },
    /* 252 */ {"CD", 0 },
    /* 253 */ {"FRICV", 0 },
    /* 254 */ {"RI", 0 },
    /* 255 */ {"var255", 0 }
};

void set_NMCparm(unsigned char *pds, char *name) {
    int i;

    for (i = 1; i < 256; i++) {
	if (strcmp(name, NMC_parm[i].pname) == 0) break;
    }
    if (i == 256) {
	fprintf(stderr,"could not match param %s\n", name);
	exit(8);
    }
    pds[8] = i;
    set_DecScale(pds, NMC_parm[i].dec_scale);
}

void set_NMCnparm(unsigned char *pds, int parm) {
    pds[8] = parm;
    set_DecScale(pds, NMC_parm[parm].dec_scale);
}

char *get_NMCparm(unsigned char *pds) {
    return NMC_parm[pds[8]].pname;
}

int get_NMCnparm(unsigned char *pds) {
    return pds[8];
}