# (C) Copyright 2005- ECMWF.

# Section 2 - Repetitions and Index Section

position offsetSection2;
section_length[4] section2Length ;
meta section2Pointer section_pointer(offsetSection2,section2Length,2);
unsigned[1] numberOfSection = 2 :read_only;

# Note 1: A message with only one field shall have the total number of repetitions and
# each of the number of distinct sections set to 1
unsigned[2] totalNumberOfRepetitions = 1 : dump;

# Note 2: Two repeated sections shall never be identical.
# If two sections are identical because they have the same content, one of the two shall be coded
# with only 7 bytes (empty section with reference) and the SUI shall be coded with the same value
# of the identical section to which this section refers. Each section  will therefore have content
# in it or refer to another section of the same section number. In the latter case, it will be made
# only of 7 bytes comprising section length (4 bytes), number of section (1 byte) and
# Section Unique Identifier - SUI (2 bytes)
unsigned[2] numberOfDistinctSection3s = 1: dump;
unsigned[2] numberOfDistinctSection4s = 1: dump;
unsigned[2] numberOfDistinctSection5s = 1: dump;
unsigned[2] numberOfDistinctSection6s = 1: dump;
unsigned[2] numberOfDistinctSection7s = 1: dump;
unsigned[2] numberOfDistinctSection8s = 1: dump;
unsigned[2] numberOfDistinctSection9s = 1: dump;

# Note 3: The inclusion of an Index template is optional. If index template is not present,
# the index template number shall be set to missing and the length of index template shall be set to 0
unsigned[2] indexTemplateNumber = missing() : dump,can_be_missing;
unsigned[4] lengthOfIndexTemplate = 0: dump,edition_specific;
template_nofail indexTemplate "grib3/template.2.[indexTemplateNumber:i].def";

#if ( addEmptySection2 == 0 ) {
#    if ( grib3LocalSectionPresent==1 or ( section2Length>5 or new() ) ) {
#        alias section2Used=one;
#
#        if(productionStatusOfProcessedData == 4 || productionStatusOfProcessedData == 5) {
#            # This is TIGGE-LAM because of the productionStatusOfProcessedData and the non-empty section 2
#            codetable[2] tiggeLocalVersion 'grib3/tiggeLocalVersion.table' = 1 : dump;
#            template  tiggeSection "grib3/local.tigge.[tiggeLocalVersion:l].def";
#        }
#
#        codetable[2] grib3LocalSectionNumber 'grib3/grib3LocalSectionNumber.[centreForLocal:l].table' = 1 : dump;
#
#        if (grib3LocalSectionNumber!=0) {
#            template_nofail local "grib3/local.[centreForLocal:l].def";
#        } else {
#            constant deleteLocalDefinition=1;
#        }
#        position offsetAfterCentreLocalSection;
#    }
#}

#section_padding section2Padding : read_only;

meta md5Section2 md5(offsetSection2,section2Length);
