/usr/share/eccodes/definitions/budg/section.4.def is in libeccodes-data 2.0.2-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | # Copyright 2005-2016 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_length[3] section4Length ;
unsigned[1] reserved1=0 : hidden;
if (reserved1 == 0) {
flags[1] missingDataFlag 'grib1/1.table';
unsigned[1] numberOfBytesPerInteger ;
unsigned[2] reserved=0 : hidden ;
unsigned[3] numberOfChars ;
unsigned[3] numberOfFloats ;
unsigned[3] numberOfIntegers ;
alias numberOfInts=numberOfIntegers ;
unsigned[3] numberOfLogicals ;
unsigned[3] numberOfReservedBytes ;
unsigned[4] reserved=0 : hidden;
unsigned[4] reserved=0 : hidden;
unsigned[1] reserved=0 : hidden;
ibmfloat floatValues[numberOfFloats];
alias floatVal=floatValues;
if(numberOfBytesPerInteger == 1) { signed[1] integerValues[numberOfIntegers]; }
if(numberOfBytesPerInteger == 2) { signed[2] integerValues[numberOfIntegers]; }
if(numberOfBytesPerInteger == 3) { signed[3] integerValues[numberOfIntegers]; }
if(numberOfBytesPerInteger == 4) { signed[4] integerValues[numberOfIntegers]; }
if(numberOfChars >= 12)
{
ascii[2] marsClass;
ascii[2] dummy1;
ascii[2] marsType;
ascii[2] dummy2;
ascii[4] experimentVersionNumber;
alias expver=experimentVersionNumber;
alias marsExpver=experimentVersionNumber;
constant numberOfRemaininChars = numberOfChars - 12;
charValues list(numberOfRemaininChars) {
ascii[1] char;
}
constant zero = 0;
concept isEps(zero) { 1 = { marsType = "pf"; } }
concept isSens(zero) { 1 = { marsType = "sf"; } }
constant oper = "oper";
concept marsStream(oper) {
"enfo" = { marsType = "pf"; }
"enfo" = { marsType = "cf"; }
"sens" = { marsType = "sf"; }
}
if(isEps)
{
constant perturbationNumber = 0;
alias mars.number = perturbationNumber;
}
if(isSens)
{
constant iterationNumber = 0;
constant diagnosticNumber = 0;
alias mars.iteration = iterationNumber;
alias mars.diagnostic = diagnosticNumber;
}
# This is commented out because some of the BUDG have the wrong info there
alias mars.stream = marsStream;
alias mars.class = marsClass;
alias mars.type = marsType;
alias mars.expver = marsExpver;
}
else
{
charValues list(numberOfChars) {
ascii[1] char;
}
}
} else {
#TODO: decode properly these old data
section_padding padding;
}
|