eccodes/definitions/grib1/local.98.4.def

240 lines
6.9 KiB
Modula-2

# Copyright 2005-2014 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.
#
# START 1/local.98.4 ----------------------------------------------------------------------
# LOCAL 98 4
#
# localDefinitionTemplate_004
# ---------------------------
#
# Description Octet Code Ksec1 Count
# ----------- ----- ---- ----- -----
#localDefinitionNumber 41 I1 37 -
#class 42 I1 38 -
#type 43 I1 39 -
#stream 44 I2 40 -
#experimentVersionNumber 46 A4 41 -
#! if stream == 1090
#if1 - IF_EQ 1090 stream
#ensembleMemberNumber 50 I2 42 -
#setToZeroForStream1090Unpacking n/a PAD 43 1
#endif1 - ENDIF if1
#! if stream != 1090
#if2 - IF_NEQ 1090 stream
#ensembleMemberNumber 50 I1 42 -
#setToZero 51 PAD 43 1
#endif2 - ENDIF if2
#flagShowingPostAuxiliaryArrayInUse 52 F1 - 1
#systemNumber 53 I1 44 -
#methodNumber 54 I1 45 -
#! Coordinate structure definition
#spaceUnitFlag 55 I1 46 -
#verticalCoordinateDefinition 56 I1 47 -
#horizontalCoordinateDefinition 57 I1 48 -
#timeUnitFlag 58 I1 49 -
#timeCoordinateDefinition 59 I1 50 -
#! Position definition: mixed coordinates
#mixedCoordinateFieldFlag 60 I1 51 -
#coordinate1Flag 61 I1 52 -
#averagingFlag 62 I1 53 -
#positionOfLevel1 63 S4 54 -
#positionOfLevel2 67 S4 55 -
#coordinate2Flag 71 I1 56 -
#averagingFlag 72 I1 57 -
#positionOfLevel1 73 S4 58 -
#positionOfLevel2 77 S4 59 -
#! Data grid definitions
#coordinate3Flag 81 I1 60 -
#coordinate4Flag 82 I1 61 -
#coordinate4OfFirstGridPoint 83 S4 62 -
#coordinate3OfFirstGridPoint 87 S4 63 -
#coordinate4OfLastGridPoint 91 S4 64 -
#coordinate3OfLastGridPoint 95 S4 65 -
#iIncrement 99 S4 66 -
#jIncrement 103 S4 67 -
#flagForIrregularGridCoordinateList 107 I1 68 -
#flagForNormalOrStaggeredGrid 108 I1 69 -
#! Auxiliary information
#flagForAnyFurtherInformation 109 I1 70 -
#numberInHorizontalCoordinates 110 I1 71 -
#numberInMixedCoordinateDefinition 111 I2 72 -
#numberInTheGridCoordinateList 113 I2 73 -
#numberInTheAuxiliaryArray 115 I2 74 -
#! Horizontal coordinate definition
#horizontalCoordinateSupplement - LP_S4 - numberInHorizontalCoordinates
#! Mixed coordinate definition
#mixedCoordinateDefinition - LP_S4 - numberInMixedCoordinateDefinition
#! Grid coordinate list
#gridCoordinateList - LP_S4 - numberInTheGridCoordinateList
#! Auxiliary array
#auxiliaryArray - LP_I4 - numberInTheAuxiliaryArray
#! Post-auxiliary array
#if3 - IF_EQ 1 flagShowingPostAuxiliaryArrayInUse
#sizeOfPostAuxiliaryArray - I4 - -
#arrayValues - LP_I4M1 - sizeOfPostAuxiliaryArray
#endif3 - ENDIF if3
##
constant GRIBEXSection1Problem = 0 ;
template mars_labeling "grib1/mars_labeling.def";
transient localFlag=1 : hidden ;
constant oceanStream = 1090;
if(marsStream == oceanStream)
{
unsigned[2] perturbationNumber : dump ;
}
if(marsStream != oceanStream)
{
unsigned[1] perturbationNumber : dump ;
pad padding_loc4_2(1);
}
unsigned[1] flagShowingPostAuxiliaryArrayInUse;
# 'grib1/ocean.1.table';
unsigned[1] systemNumber : dump ;
alias system=systemNumber;
unsigned[1] methodNumber : dump ;
#
# Coordinate structure definition
#
unsigned[1] spaceUnitFlag : dump ;
unsigned[1] verticalCoordinateDefinition : dump ;
unsigned[1] horizontalCoordinateDefinition : dump ;
unsigned[1] timeUnitFlag : dump ;
unsigned[1] timeCoordinateDefinition : dump ;
#
# Position definition: mixed coordinates
#
unsigned[1] mixedCoordinateFieldFlag : dump ;
unsigned[1] coordinate1Flag : dump ;
unsigned[1] averaging1Flag : dump ;
signed[4] coordinate1Start : dump ;
signed[4] coordinate1End : dump ;
unsigned[1] coordinate2Flag : dump ;
unsigned[1] averaging2Flag : dump ;
signed[4] coordinate2Start : dump ;
signed[4] coordinate2End : dump ;
#
# Data grid definitions
#
unsigned[1] coordinate3Flag : dump ;
unsigned[1] coordinate4Flag : dump ;
signed[4] coordinate4OfFirstGridPoint : dump;
signed[4] coordinate3OfFirstGridPoint : dump ;
signed[4] coordinate4OfLastGridPoint : dump;
signed[4] coordinate3OfLastGridPoint : dump ;
signed[4] iIncrement : dump ;
signed[4] jIncrement : dump;
flags[1] flagForIrregularGridCoordinateList 'grib1/ocean.1.table' : dump;
flags[1] flagForNormalOrStaggeredGrid 'grib1/ocean.1.table' : dump;
#
# Auxiliary information
#
flags[1] flagForAnyFurtherInformation 'grib1/ocean.1.table' : dump;
unsigned[1] numberInHorizontalCoordinates : dump;
unsigned[2] numberInMixedCoordinateDefinition : dump;
unsigned[2] numberInTheGridCoordinateList : dump;
unsigned[2] numberInTheAuxiliaryArray : dump ;
#
# Horizontal coordinate definition
#
unsigned[4] horizontalCoordinateSupplement[numberInHorizontalCoordinates] : dump;
#
# Mixed coordinate definition
#
unsigned[4] mixedCoordinateDefinition[numberInMixedCoordinateDefinition] : dump;
#
# Grid coordinate list
#
if (numberInTheGridCoordinateList>0) {
signed[4] gridCoordinate[numberInTheGridCoordinateList] : dump;
}
#
# Auxiliary array
#
unsigned[4] auxiliary[numberInTheAuxiliaryArray] : dump;
#
# Post-auxiliary array
#
constant postAuxiliaryArrayPresent = 1;
if (flagShowingPostAuxiliaryArrayInUse == postAuxiliaryArrayPresent){
unsigned[4] sizeOfPostAuxiliaryArrayPlusOne : dump;
meta sizeOfPostAuxiliaryArray evaluate(sizeOfPostAuxiliaryArrayPlusOne - 1);
if (sizeOfPostAuxiliaryArray>0) {
unsigned[4] postAuxiliary[sizeOfPostAuxiliaryArray] : dump;
if (sizeOfPostAuxiliaryArray>3) {
meta referenceDate element(postAuxiliary,3);
}
} else {
transient referenceDate=0;
}
}
alias hdate = dataDate;
template local_use "grib1/mars_labeling.4.def";
# END 1/local.98.4 ----------------------------------------------------------------------