mirror of https://github.com/ecmwf/eccodes.git
179 lines
4.2 KiB
Modula-2
179 lines
4.2 KiB
Modula-2
# (C) Copyright 2005- ECMWF.
|
|
|
|
unsigned [2] N2 : dump;
|
|
unsigned [2] codedNumberOfGroups : no_copy ;
|
|
unsigned [2] numberOfSecondOrderPackedValues : dump;
|
|
|
|
# used to extend
|
|
unsigned [1] extraValues=0 : hidden, edition_specific;
|
|
|
|
meta numberOfGroups evaluate(codedNumberOfGroups + 65536 * extraValues);
|
|
|
|
unsigned [1] widthOfWidths : dump;
|
|
unsigned [1] widthOfLengths : dump;
|
|
unsigned [2] NL : dump;
|
|
|
|
if (orderOfSPD) {
|
|
unsigned[1] widthOfSPD ;
|
|
meta SPD spd(widthOfSPD,orderOfSPD) : read_only;
|
|
}
|
|
|
|
|
|
meta groupWidths unsigned_bits(widthOfWidths,numberOfGroups) : read_only;
|
|
meta groupLengths unsigned_bits(widthOfLengths,numberOfGroups) : read_only;
|
|
meta firstOrderValues unsigned_bits(widthOfFirstOrderValues,numberOfGroups) : read_only;
|
|
meta countOfGroupLengths sum(groupLengths);
|
|
|
|
transient numberOfCodedValues=countOfGroupLengths+orderOfSPD;
|
|
#transient numberOfCodedValues=countOfGroupLengths;
|
|
meta bitsPerValue second_order_bits_per_value(codedValues,binaryScaleFactor,decimalScaleFactor);
|
|
|
|
|
|
position offsetBeforeData;
|
|
if(bitmapPresent) {
|
|
meta codedValues data_g1second_order_general_extended_packing(
|
|
#simple_packing args
|
|
section4Length,
|
|
offsetBeforeData,
|
|
offsetSection4,
|
|
unitsFactor,
|
|
unitsBias,
|
|
changingPrecision,
|
|
numberOfCodedValues,
|
|
bitsPerValue,
|
|
referenceValue,
|
|
binaryScaleFactor,
|
|
decimalScaleFactor,
|
|
optimizeScaleFactor,
|
|
#g1second_order_row_by_row args
|
|
halfByte,
|
|
packingType,
|
|
grid_ieee,
|
|
precision,
|
|
widthOfFirstOrderValues,
|
|
firstOrderValues,
|
|
N1,
|
|
N2,
|
|
numberOfGroups,
|
|
codedNumberOfGroups,
|
|
numberOfSecondOrderPackedValues,
|
|
extraValues,
|
|
groupWidths,
|
|
widthOfWidths,
|
|
groupLengths,
|
|
widthOfLengths,
|
|
NL,
|
|
SPD,
|
|
widthOfSPD,
|
|
orderOfSPD,
|
|
numberOfPoints
|
|
|
|
): read_only;
|
|
alias data.packedValues = codedValues;
|
|
|
|
if (boustrophedonicOrdering)
|
|
{
|
|
if (GRIBEX_boustrophedonic)
|
|
{
|
|
meta preBitmapValues data_apply_boustrophedonic_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor,numberOfRows,numberOfColumns,numberOfPoints): read_only;
|
|
}
|
|
else
|
|
{
|
|
meta preBitmapValues data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : read_only;
|
|
}
|
|
meta values data_apply_boustrophedonic(preBitmapValues,numberOfRows,numberOfColumns,numberOfPoints,pl) : dump;
|
|
}
|
|
else
|
|
{
|
|
meta values data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : dump;
|
|
}
|
|
} else {
|
|
if (boustrophedonicOrdering) {
|
|
|
|
meta codedValues data_g1second_order_general_extended_packing(
|
|
#simple_packing args
|
|
section4Length,
|
|
offsetBeforeData,
|
|
offsetSection4,
|
|
unitsFactor,
|
|
unitsBias,
|
|
changingPrecision,
|
|
numberOfCodedValues,
|
|
bitsPerValue,
|
|
referenceValue,
|
|
binaryScaleFactor,
|
|
decimalScaleFactor,
|
|
optimizeScaleFactor,
|
|
#g1second_order_row_by_row args
|
|
halfByte,
|
|
packingType,
|
|
grid_ieee,
|
|
precision,
|
|
widthOfFirstOrderValues,
|
|
firstOrderValues,
|
|
N1,
|
|
N2,
|
|
numberOfGroups,
|
|
codedNumberOfGroups,
|
|
numberOfSecondOrderPackedValues,
|
|
extraValues,
|
|
groupWidths,
|
|
widthOfWidths,
|
|
groupLengths,
|
|
widthOfLengths,
|
|
NL,
|
|
SPD,
|
|
widthOfSPD,
|
|
orderOfSPD,
|
|
numberOfPoints
|
|
|
|
) : read_only;
|
|
meta values data_apply_boustrophedonic(codedValues,numberOfRows,numberOfColumns,numberOfPoints,pl) : dump;
|
|
} else {
|
|
meta values data_g1second_order_general_extended_packing(
|
|
#simple_packing args
|
|
section4Length,
|
|
offsetBeforeData,
|
|
offsetSection4,
|
|
unitsFactor,
|
|
unitsBias,
|
|
changingPrecision,
|
|
numberOfCodedValues,
|
|
bitsPerValue,
|
|
referenceValue,
|
|
binaryScaleFactor,
|
|
decimalScaleFactor,
|
|
optimizeScaleFactor,
|
|
#g1second_order_row_by_row args
|
|
halfByte,
|
|
packingType,
|
|
grid_ieee,
|
|
precision,
|
|
widthOfFirstOrderValues,
|
|
firstOrderValues,
|
|
N1,
|
|
N2,
|
|
numberOfGroups,
|
|
codedNumberOfGroups,
|
|
numberOfSecondOrderPackedValues,
|
|
extraValues,
|
|
groupWidths,
|
|
widthOfWidths,
|
|
groupLengths,
|
|
widthOfLengths,
|
|
NL,
|
|
SPD,
|
|
widthOfSPD,
|
|
orderOfSPD,
|
|
numberOfPoints
|
|
|
|
) : dump;
|
|
alias codedValues=values;
|
|
}
|
|
alias data.packedValues = values;
|
|
}
|
|
|
|
meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ibm) : no_copy;
|
|
|
|
template statistics "common/statistics_grid.def";
|