# Copyright 2005-2019 ECMWF.

#  Parameter category
codetable[1] parameterCategory ('4.1.[discipline:l].table',masterDir,localDir): dump;

#  Parameter number
codetable[1] parameterNumber ('4.2.[discipline:l].[parameterCategory:l].table',masterDir,localDir) : dump;
meta parameterUnits codetable_units(parameterNumber) : dump;
meta parameterName  codetable_title(parameterNumber) : dump;

# Atmospheric chemical or physical constitutent type
codetable[2] constituentType ('4.230.table',masterDir,localDir) : dump;

# Number of mode(N) of distribution
unsigned[2] numberOfModeOfDistribution : dump;

# Mode number (l)
unsigned[2] modeNumber : dump;

# Type of distribution function
codetable[2] typeOfDistributionFunction ('4.240.table',masterDir,localDir) : dump;

# Number of following function parameters (Np), defined by type given in octet 18-19
unsigned[1] numberOfDistributionFunctionParameters : dump;
alias NP = numberOfDistributionFunctionParameters;

listOfDistributionFunctionParameter list(numberOfDistributionFunctionParameters) {
    signed[1]   scaleFactorOfDistributionFunctionParameter = missing() : can_be_missing,dump;
    unsigned[4] scaledValueOfDistributionFunctionParameter = missing() : can_be_missing,dump;
}

#  Type of generating process
codetable[1] typeOfGeneratingProcess ('4.3.table',masterDir,localDir) : dump;

#  Background generating process identifier (defined by originating centre)
unsigned[1] backgroundProcess = 255 : edition_specific;
alias backgroundGeneratingProcessIdentifier=backgroundProcess;

#  Analysis or forecast generating processes identifier
# (defined by originating centre)
unsigned[1] generatingProcessIdentifier : dump;

#  Hours of observational data cut-off after reference time
unsigned[2] hoursAfterDataCutoff = missing() : edition_specific,can_be_missing;
alias hoursAfterReferenceTimeOfDataCutoff=hoursAfterDataCutoff;

#  Minutes of observational data cut-off after reference time
unsigned[1]  minutesAfterDataCutoff = missing() : edition_specific,can_be_missing;
alias minutesAfterReferenceTimeOfDataCutoff=minutesAfterDataCutoff;

#  Indicator of unit of time range
codetable[1] indicatorOfUnitOfTimeRange ('4.4.table',masterDir,localDir) : dump;
alias defaultStepUnits = one; # 1 means Hour. See code table 4.4
template_nofail default_step_units "grib2/localConcepts/[centre:s]/default_step_units.def";
codetable[1] stepUnits 'stepUnits.table' = defaultStepUnits : transient,dump,no_copy;

#  Forecast time in units defined by previous octet (GRIB-29: supports negative forecast time)
signed[4] forecastTime  : dump;
