mirror of https://github.com/ecmwf/eccodes.git
104 lines
4.1 KiB
Modula-2
104 lines
4.1 KiB
Modula-2
# (C) Copyright 2005- ECMWF.
|
|
#
|
|
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
#
|
|
# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
|
|
# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
|
#
|
|
|
|
# Section 1 - Originator Section
|
|
|
|
position offsetSection1;
|
|
section_length[4] section1Length ;
|
|
meta section1Pointer section_pointer(offsetSection1,section1Length,1);
|
|
|
|
unsigned[1] numberOfSection = 1 :read_only;
|
|
|
|
codetable[2] centre 'common/c-11.table' : dump,string_type;
|
|
alias identificationOfOriginatingGeneratingCentre=centre;
|
|
meta centreDescription codetable_title(centre);
|
|
|
|
alias parameter.centre=centre;
|
|
alias ls.centre=centre;
|
|
alias originatingCentre=centre;
|
|
|
|
unsigned[2] subCentre : dump;
|
|
|
|
_if (subCentre==98 ) {
|
|
alias centreForLocal=subCentre;
|
|
} else {
|
|
alias centreForLocal=centre;
|
|
}
|
|
|
|
#codetable[1] tablesVersion 'grib3/tables/1.0.table' = 1 : edition_specific;
|
|
#alias gribMasterTablesVersionNumber=tablesVersion;
|
|
|
|
codetable[1] localTablesVersion 'grib3/tables/[tablesVersion]/1.0.table' ;
|
|
alias versionNumberOfGribLocalTables=localTablesVersion;
|
|
transient localDir="";
|
|
if (localTablesVersion != 0) {
|
|
transient localDir="grib3/tables/local/[centre]/[localTablesVersion]";
|
|
}
|
|
|
|
transient masterDir="grib3/tables/[tablesVersion]";
|
|
when (tablesVersion!=255) {
|
|
set masterDir="grib3/tables/[tablesVersion]";
|
|
} else {
|
|
set masterDir="grib3/tables/1";
|
|
}
|
|
|
|
codetable[1] identificationOfProject 'grib3/tables/[tablesVersion]/1.1.table' = 255 : dump;
|
|
|
|
|
|
# Production status of processed data in this GRIB message
|
|
codetable[1] productionStatusOfProcessedData ('1.2.table',masterDir,localDir) : dump;
|
|
concept is_uerra(zero) {
|
|
'1' = {productionStatusOfProcessedData=9;}
|
|
'1' = {productionStatusOfProcessedData=8;}
|
|
'0' = {dummy=1;}
|
|
}
|
|
|
|
unsigned[2] originatorLocalTemplateNumber = missing() : dump,edition_specific,can_be_missing;
|
|
unsigned[2] lengthOfOriginatorLocalTemplate = 0: dump,edition_specific;
|
|
template_nofail originatorLocalTemplate "grib3/template.1.originator.[originatorLocalTemplateNumber:i].def";
|
|
|
|
|
|
unsigned[2] projectLocalTemplateNumber = missing() : dump,edition_specific,can_be_missing;
|
|
unsigned[2] lengthOfProjectLocalTemplate = 0: dump,edition_specific;
|
|
template_nofail projectLocalTemplate "grib3/template.1.project.[projectLocalTemplateNumber:i].def";
|
|
|
|
# Type of processed data in this GRIB message
|
|
#codetable[1] typeOfProcessedData ('1.4.table',masterDir,localDir) = 255 : dump,string_type,no_fail;
|
|
#alias ls.dataType=typeOfProcessedData;
|
|
|
|
meta md5Section1 md5(offsetSection1,section1Length);
|
|
|
|
#meta selectStepTemplateInterval select_step_template(productDefinitionTemplateNumber,0); # 0 -> not instant
|
|
#meta selectStepTemplateInstant select_step_template(productDefinitionTemplateNumber,1); # 1 -> instant
|
|
|
|
#transient stepTypeInternal="instant" : hidden,no_copy;
|
|
|
|
#concept stepType {
|
|
# "instant" = {selectStepTemplateInstant=1; stepTypeInternal="instant";}
|
|
# "avg" = {selectStepTemplateInterval=1; stepTypeInternal="avg";}
|
|
# "avgd" = {selectStepTemplateInterval=1; stepTypeInternal="avgd";}
|
|
# "accum" = {selectStepTemplateInterval=1; stepTypeInternal="accum";}
|
|
# "max" = {selectStepTemplateInterval=1; stepTypeInternal="max";}
|
|
# "min" = {selectStepTemplateInterval=1; stepTypeInternal="min";}
|
|
# "diff" = {selectStepTemplateInterval=1; stepTypeInternal="diff";}
|
|
# "rms" = {selectStepTemplateInterval=1; stepTypeInternal="rms";}
|
|
# "sd" = {selectStepTemplateInterval=1; stepTypeInternal="sd";}
|
|
# "cov" = {selectStepTemplateInterval=1; stepTypeInternal="cov";}
|
|
# "ratio" = {selectStepTemplateInterval=1; stepTypeInternal="ratio";}
|
|
#}
|
|
|
|
#transient setCalendarId = 0 ;
|
|
#transient deleteCalendarId = 0 ;
|
|
#alias calendarIdPresent = zero;
|
|
#if ( ((section1Length > 21) or setCalendarId > 0) and deleteCalendarId == 0) {
|
|
# alias calendarIdPresent = present;
|
|
# codetable[2] calendarIdentificationTemplateNumber ('1.5.table',masterDir,localDir) : dump,string_type,no_fail;
|
|
# template calendarIdentification "grib3/template.1.[calendarIdentificationTemplateNumber:i].def";
|
|
#}
|