# (C) Copyright 2005- 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;

# Aerosol type
codetable[2] aerosolType ('4.233.table',masterDir,localDir) : dump;

# Source, sink or chemical/physical process (Code table 4.238)
codetable[1] sourceSinkChemicalPhysicalProcess ('4.238.table',masterDir,localDir) = 255 : dump;

codetable[1] typeOfSizeInterval ('4.91.table',masterDir,localDir) : dump;
alias typeOfIntervalForFirstAndSecondSize=typeOfSizeInterval;

# Size in metres
signed[1] scaleFactorOfFirstSize : dump;
signed[4] scaledValueOfFirstSize :dump;
signed[1] scaleFactorOfSecondSize = missing() : can_be_missing,dump;
signed[4] scaledValueOfSecondSize = missing() : can_be_missing,dump;

codetable[1] typeOfWavelengthInterval ('4.91.table',masterDir,localDir) : dump;
alias typeOfIntervalForFirstAndSecondWavelength=typeOfWavelengthInterval;

# Wavelengths in metres
signed[1] scaleFactorOfFirstWavelength : dump;
signed[4] scaledValueOfFirstWavelength : dump;
signed[1] scaleFactorOfSecondWavelength = missing(): can_be_missing,dump;
signed[4] scaledValueOfSecondWavelength = missing(): can_be_missing,dump;

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

# Background generating process identifier
unsigned[1] backgroundProcess = 255 : edition_specific;
alias backgroundGeneratingProcessIdentifier=backgroundProcess;

# Analysis or forecast generating processes identifier
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 octet 18 (GRIB-29: supports negative forecast time)
signed[4] forecastTime  : dump;
