eccodes/definitions/grib3/section.02.def

59 lines
2.7 KiB
Modula-2

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