mirror of https://github.com/ecmwf/eccodes.git
59 lines
2.7 KiB
Modula-2
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);
|