Skip to end of metadata
Go to start of metadata

There is a new "-E" option in the bufr_dump tool to generate instructions to create (encode) the input BUFR message.  Its argument can be one of:

  • -Efilter    This generates the set of rules to be passed to the bufr_filter tool
  • -Efortran  This generates a Fortran 90 program
  • -Epython    This generates a Python script
  • -EC              This generates a C program

For compiled languages like C and Fortran, the user can then compile/link the generated program and run it to reproduce the input message. For filter and Python, the generated code can be used directly (either passed to bufr_filter or the python interpreter)

The user can then edit the generated code to tailor it to their own needs.

Note: The generated code for bufr_filter only applies to a single BUFR message.  The other languages support encoding of multiple BUFR messages in a file.

Example

This is an example of BUFR synoptic surface observation (SYNOP):  synop.bufr


! This program was automatically generated with bufr_dump -Efortran
! Using ecCodes version: 2.0.0
program bufr_encode
 use eccodes
 implicit none
 integer :: iret
 integer :: outfile
 integer :: ibufr
 integer(kind=4), dimension(:), allocatable :: ivalues
 integer, parameter :: max_strsize = 100
 character(len=max_strsize) , dimension(:),allocatable :: svalues
 real(kind=8), dimension(:), allocatable :: rvalues
 call codes_bufr_new_from_samples(ibufr,'BUFR4',iret)
 if (iret/=CODES_SUCCESS) then
 print *,'ERROR creating BUFR from BUFR4'
 stop 1
 endif
 if(allocated(ivalues)) deallocate(ivalues)
 allocate(ivalues(4))
 ivalues=(/ &
 0, 0, 1, 0 /)
 call codes_set(ibufr,'inputDelayedDescriptorReplicationFactor',ivalues)
 call codes_set(ibufr,'edition',4)
 call codes_set(ibufr,'masterTableNumber',0)
 call codes_set(ibufr,'bufrHeaderCentre',74)
 call codes_set(ibufr,'bufrHeaderSubCentre',0)
 call codes_set(ibufr,'updateSequenceNumber',0)
 call codes_set(ibufr,'dataCategory',0)
 call codes_set(ibufr,'internationalDataSubCategory',2)
 call codes_set(ibufr,'dataSubCategory',0)
 call codes_set(ibufr,'masterTablesVersionNumber',22)
 call codes_set(ibufr,'localTablesVersionNumber',0)
 call codes_set(ibufr,'typicalYear',2016)
 call codes_set(ibufr,'typicalMonth',9)
 call codes_set(ibufr,'typicalDay',29)
 call codes_set(ibufr,'typicalHour',12)
 call codes_set(ibufr,'typicalMinute',0)
 call codes_set(ibufr,'typicalSecond',0)
 call codes_set(ibufr,'numberOfSubsets',2)
 call codes_set(ibufr,'observedData',1)
 call codes_set(ibufr,'compressedData',0)
 call codes_set(ibufr,'unexpandedDescriptors',307080)
 call codes_set(ibufr,'#1#blockNumber',89)
 call codes_set(ibufr,'#1#stationNumber',22)
 call codes_set(ibufr,'#1#stationOrSiteName','HALLEY')
 call codes_set(ibufr,'#1#stationType',1)
 call codes_set(ibufr,'#1#year',2016)
 call codes_set(ibufr,'#1#month',9)
 call codes_set(ibufr,'#1#day',29)
 call codes_set(ibufr,'#1#hour',12)
 call codes_set(ibufr,'#1#minute',0)
 call codes_set(ibufr,'#1#latitude',-7.553300000000000125d+01)
 call codes_set(ibufr,'#1#longitude',-2.663300000000000267d+01)
 call codes_set(ibufr,'#1#heightOfStationGroundAboveMeanSeaLevel',3.000000000000000000d+01)
 call codes_set(ibufr,'#1#heightOfBarometerAboveMeanSeaLevel',3.000000000000000000d+01)
 call codes_set(ibufr,'#1#nonCoordinatePressure',9.869000000000000000d+04)
 call codes_set(ibufr,'#1#pressureReducedToMeanSeaLevel',9.911000000000000000d+04)
 call codes_set(ibufr,'#1#3HourPressureChange',-2.400000000000000000d+02)
 call codes_set(ibufr,'#1#characteristicOfPressureTendency',7)
 call codes_set(ibufr,'#1#airTemperature',2.459500000000000171d+02)
 call codes_set(ibufr,'#1#dewpointTemperature',2.432500000000000000d+02)
 call codes_set(ibufr,'#1#horizontalVisibility',6.000000000000000000d+04)
 call codes_set(ibufr,'#1#cloudCoverTotal',0)
 call codes_set(ibufr,'#1#verticalSignificanceSurfaceObservations',62)
 call codes_set(ibufr,'#1#cloudAmount',0)
 call codes_set(ibufr,'#1#cloudType',30)
 call codes_set(ibufr,'#2#cloudType',20)
 call codes_set(ibufr,'#3#cloudType',10)
 call codes_set(ibufr,'#2#verticalSignificanceSurfaceObservations',7)
 call codes_set(ibufr,'#3#verticalSignificanceSurfaceObservations',8)
 call codes_set(ibufr,'#4#verticalSignificanceSurfaceObservations',9)
 call codes_set(ibufr,'#1#presentWeather',508)
 call codes_set(ibufr,'#1#timePeriod',-6)
 call codes_set(ibufr,'#1#pastWeather1',10)
 call codes_set(ibufr,'#1#pastWeather2',10)
 call codes_set(ibufr,'#2#timePeriod',-24)
 call codes_set(ibufr,'#3#timePeriod',-1)
 call codes_set(ibufr,'#4#timePeriod',-12)
 call codes_set(ibufr,'#5#timePeriod',-1)
 call codes_set(ibufr,'#6#timePeriod',-12)
 call codes_set(ibufr,'#7#timePeriod',0)
 call codes_set(ibufr,'#1#maximumTemperatureAtHeightAndOverPeriodSpecified',2.469500000000000171d+02)
 call codes_set(ibufr,'#8#timePeriod',-12)
 call codes_set(ibufr,'#9#timePeriod',0)
 call codes_set(ibufr,'#1#minimumTemperatureAtHeightAndOverPeriodSpecified',2.423499999999999943d+02)
 call codes_set(ibufr,'#1#instrumentationForWindMeasurement',12)
 call codes_set(ibufr,'#1#timeSignificance',2)
 call codes_set(ibufr,'#10#timePeriod',-10)
 call codes_set(ibufr,'#1#windDirection',190)
 call codes_set(ibufr,'#1#windSpeed',2.600000000000000089d+00)
 call codes_set(ibufr,'#11#timePeriod',-10)
 call codes_set(ibufr,'#12#timePeriod',-360)
 call codes_set(ibufr,'#13#timePeriod',-24)
 call codes_set(ibufr,'#14#timePeriod',-1)
 call codes_set(ibufr,'#15#timePeriod',-24)
 call codes_set(ibufr,'#2#blockNumber',89)
 call codes_set(ibufr,'#2#stationNumber',62)
 call codes_set(ibufr,'#2#stationOrSiteName','ROTHERA')
 call codes_set(ibufr,'#2#stationType',1)
 call codes_set(ibufr,'#2#year',2016)
 call codes_set(ibufr,'#2#month',9)
 call codes_set(ibufr,'#2#day',29)
 call codes_set(ibufr,'#2#hour',12)
 call codes_set(ibufr,'#2#minute',0)
 call codes_set(ibufr,'#2#latitude',-6.773300000000000409d+01)
 call codes_set(ibufr,'#2#longitude',-6.811700000000000443d+01)
 call codes_set(ibufr,'#2#heightOfStationGroundAboveMeanSeaLevel',1.600000000000000000d+01)
 call codes_set(ibufr,'#2#heightOfBarometerAboveMeanSeaLevel',1.600000000000000000d+01)
 call codes_set(ibufr,'#2#nonCoordinatePressure',9.887000000000000000d+04)
 call codes_set(ibufr,'#2#pressureReducedToMeanSeaLevel',9.928000000000000000d+04)
 call codes_set(ibufr,'#2#3HourPressureChange',3.000000000000000000d+02)
 call codes_set(ibufr,'#2#characteristicOfPressureTendency',2)
 call codes_set(ibufr,'#2#airTemperature',2.727500000000000000d+02)
 call codes_set(ibufr,'#2#dewpointTemperature',2.635500000000000114d+02)
 call codes_set(ibufr,'#2#horizontalVisibility',4.500000000000000000d+04)
 call codes_set(ibufr,'#2#cloudCoverTotal',100)
 call codes_set(ibufr,'#6#verticalSignificanceSurfaceObservations',7)
 call codes_set(ibufr,'#2#cloudAmount',8)
 call codes_set(ibufr,'#2#heightOfBaseOfCloud',1.200000000000000000d+03)
 call codes_set(ibufr,'#5#cloudType',36)
 call codes_set(ibufr,'#6#cloudType',61)
 call codes_set(ibufr,'#7#cloudType',60)
 call codes_set(ibufr,'#7#verticalSignificanceSurfaceObservations',1)
 call codes_set(ibufr,'#3#cloudAmount',8)
 call codes_set(ibufr,'#8#cloudType',7)
 call codes_set(ibufr,'#3#heightOfBaseOfCloud',1.200000000000000000d+03)
 call codes_set(ibufr,'#8#verticalSignificanceSurfaceObservations',7)
 call codes_set(ibufr,'#9#verticalSignificanceSurfaceObservations',8)
 call codes_set(ibufr,'#10#verticalSignificanceSurfaceObservations',9)
 call codes_set(ibufr,'#2#presentWeather',3)
 call codes_set(ibufr,'#18#timePeriod',-6)
 call codes_set(ibufr,'#2#pastWeather1',2)
 call codes_set(ibufr,'#2#pastWeather2',1)
 call codes_set(ibufr,'#19#timePeriod',-24)
 call codes_set(ibufr,'#20#timePeriod',-1)
 call codes_set(ibufr,'#21#timePeriod',-12)
 call codes_set(ibufr,'#22#timePeriod',-1)
 call codes_set(ibufr,'#23#timePeriod',-12)
 call codes_set(ibufr,'#24#timePeriod',0)
 call codes_set(ibufr,'#2#maximumTemperatureAtHeightAndOverPeriodSpecified',2.752500000000000000d+02)
 call codes_set(ibufr,'#25#timePeriod',-12)
 call codes_set(ibufr,'#26#timePeriod',0)
 call codes_set(ibufr,'#2#minimumTemperatureAtHeightAndOverPeriodSpecified',2.706499999999999773d+02)
 call codes_set(ibufr,'#2#instrumentationForWindMeasurement',12)
 call codes_set(ibufr,'#3#timeSignificance',2)
 call codes_set(ibufr,'#27#timePeriod',-10)
 call codes_set(ibufr,'#2#windDirection',320)
 call codes_set(ibufr,'#2#windSpeed',5.100000000000000533d+00)
 call codes_set(ibufr,'#28#timePeriod',-10)
 call codes_set(ibufr,'#29#timePeriod',-360)
 call codes_set(ibufr,'#30#timePeriod',-24)
 call codes_set(ibufr,'#31#timePeriod',-1)
 call codes_set(ibufr,'#32#timePeriod',-24)
 call codes_set(ibufr,'pack',1)
 call codes_open_file(outfile,'outfile.bufr','w')
 call codes_write(ibufr,outfile)
 call codes_close_file(outfile)
 call codes_release(ibufr)
 if(allocated(ivalues)) deallocate(ivalues)
 if(allocated(rvalues)) deallocate(rvalues)
 if(allocated(svalues)) deallocate(svalues)
end program bufr_encode
# This program was automatically generated with bufr_dump -Epython
# Using ecCodes version: 2.0.0
import traceback
import sys
from eccodes import *

def bufr_encode():
 ibufr = codes_bufr_new_from_samples('BUFR4')
 ivalues = ( 
 0, 0, 1, 0 ,)
 codes_set_array(ibufr, 'inputDelayedDescriptorReplicationFactor', ivalues)
 codes_set(ibufr, 'edition', 4)
 codes_set(ibufr, 'masterTableNumber', 0)
 codes_set(ibufr, 'bufrHeaderCentre', 74)
 codes_set(ibufr, 'bufrHeaderSubCentre', 0)
 codes_set(ibufr, 'updateSequenceNumber', 0)
 codes_set(ibufr, 'dataCategory', 0)
 codes_set(ibufr, 'internationalDataSubCategory', 2)
 codes_set(ibufr, 'dataSubCategory', 0)
 codes_set(ibufr, 'masterTablesVersionNumber', 22)
 codes_set(ibufr, 'localTablesVersionNumber', 0)
 codes_set(ibufr, 'typicalYear', 2016)
 codes_set(ibufr, 'typicalMonth', 9)
 codes_set(ibufr, 'typicalDay', 29)
 codes_set(ibufr, 'typicalHour', 12)
 codes_set(ibufr, 'typicalMinute', 0)
 codes_set(ibufr, 'typicalSecond', 0)
 codes_set(ibufr, 'numberOfSubsets', 2)
 codes_set(ibufr, 'observedData', 1)
 codes_set(ibufr, 'compressedData', 0)
 codes_set(ibufr, 'unexpandedDescriptors', 307080)
 codes_set(ibufr, '#1#blockNumber', 89)
 codes_set(ibufr, '#1#stationNumber', 22)
 codes_set(ibufr, '#1#stationOrSiteName','HALLEY')
 codes_set(ibufr, '#1#stationType', 1)
 codes_set(ibufr, '#1#year', 2016)
 codes_set(ibufr, '#1#month', 9)
 codes_set(ibufr, '#1#day', 29)
 codes_set(ibufr, '#1#hour', 12)
 codes_set(ibufr, '#1#minute', 0)
 codes_set(ibufr, '#1#latitude', -7.553300000000000125e+01)
 codes_set(ibufr, '#1#longitude', -2.663300000000000267e+01)
 codes_set(ibufr, '#1#heightOfStationGroundAboveMeanSeaLevel', 3.000000000000000000e+01)
 codes_set(ibufr, '#1#heightOfBarometerAboveMeanSeaLevel', 3.000000000000000000e+01)
 codes_set(ibufr, '#1#nonCoordinatePressure', 9.869000000000000000e+04)
 codes_set(ibufr, '#1#pressureReducedToMeanSeaLevel', 9.911000000000000000e+04)
 codes_set(ibufr, '#1#3HourPressureChange', -2.400000000000000000e+02)
 codes_set(ibufr, '#1#characteristicOfPressureTendency', 7)
 codes_set(ibufr, '#1#airTemperature', 2.459500000000000171e+02)
 codes_set(ibufr, '#1#dewpointTemperature', 2.432500000000000000e+02)
 codes_set(ibufr, '#1#horizontalVisibility', 6.000000000000000000e+04)
 codes_set(ibufr, '#1#cloudCoverTotal', 0)
 codes_set(ibufr, '#1#verticalSignificanceSurfaceObservations', 62)
 codes_set(ibufr, '#1#cloudAmount', 0)
 codes_set(ibufr, '#1#cloudType', 30)
 codes_set(ibufr, '#2#cloudType', 20)
 codes_set(ibufr, '#3#cloudType', 10)
 codes_set(ibufr, '#2#verticalSignificanceSurfaceObservations', 7)
 codes_set(ibufr, '#3#verticalSignificanceSurfaceObservations', 8)
 codes_set(ibufr, '#4#verticalSignificanceSurfaceObservations', 9)
 codes_set(ibufr, '#1#presentWeather', 508)
 codes_set(ibufr, '#1#timePeriod', -6)
 codes_set(ibufr, '#1#pastWeather1', 10)
 codes_set(ibufr, '#1#pastWeather2', 10)
 codes_set(ibufr, '#2#timePeriod', -24)
 codes_set(ibufr, '#3#timePeriod', -1)
 codes_set(ibufr, '#4#timePeriod', -12)
 codes_set(ibufr, '#5#timePeriod', -1)
 codes_set(ibufr, '#6#timePeriod', -12)
 codes_set(ibufr, '#7#timePeriod', 0)
 codes_set(ibufr, '#1#maximumTemperatureAtHeightAndOverPeriodSpecified', 2.469500000000000171e+02)
 codes_set(ibufr, '#8#timePeriod', -12)
 codes_set(ibufr, '#9#timePeriod', 0)
 codes_set(ibufr, '#1#minimumTemperatureAtHeightAndOverPeriodSpecified', 2.423499999999999943e+02)
 codes_set(ibufr, '#1#instrumentationForWindMeasurement', 12)
 codes_set(ibufr, '#1#timeSignificance', 2)
 codes_set(ibufr, '#10#timePeriod', -10)
 codes_set(ibufr, '#1#windDirection', 190)
 codes_set(ibufr, '#1#windSpeed', 2.600000000000000089e+00)
 codes_set(ibufr, '#11#timePeriod', -10)
 codes_set(ibufr, '#12#timePeriod', -360)
 codes_set(ibufr, '#13#timePeriod', -24)
 codes_set(ibufr, '#14#timePeriod', -1)
 codes_set(ibufr, '#15#timePeriod', -24)
 codes_set(ibufr, '#2#blockNumber', 89)
 codes_set(ibufr, '#2#stationNumber', 62)
 codes_set(ibufr, '#2#stationOrSiteName','ROTHERA')
 codes_set(ibufr, '#2#stationType', 1)
 codes_set(ibufr, '#2#year', 2016)
 codes_set(ibufr, '#2#month', 9)
 codes_set(ibufr, '#2#day', 29)
 codes_set(ibufr, '#2#hour', 12)
 codes_set(ibufr, '#2#minute', 0)
 codes_set(ibufr, '#2#latitude', -6.773300000000000409e+01)
 codes_set(ibufr, '#2#longitude', -6.811700000000000443e+01)
 codes_set(ibufr, '#2#heightOfStationGroundAboveMeanSeaLevel', 1.600000000000000000e+01)
 codes_set(ibufr, '#2#heightOfBarometerAboveMeanSeaLevel', 1.600000000000000000e+01)
 codes_set(ibufr, '#2#nonCoordinatePressure', 9.887000000000000000e+04)
 codes_set(ibufr, '#2#pressureReducedToMeanSeaLevel', 9.928000000000000000e+04)
 codes_set(ibufr, '#2#3HourPressureChange', 3.000000000000000000e+02)
 codes_set(ibufr, '#2#characteristicOfPressureTendency', 2)
 codes_set(ibufr, '#2#airTemperature', 2.727500000000000000e+02)
 codes_set(ibufr, '#2#dewpointTemperature', 2.635500000000000114e+02)
 codes_set(ibufr, '#2#horizontalVisibility', 4.500000000000000000e+04)
 codes_set(ibufr, '#2#cloudCoverTotal', 100)
 codes_set(ibufr, '#6#verticalSignificanceSurfaceObservations', 7)
 codes_set(ibufr, '#2#cloudAmount', 8)
 codes_set(ibufr, '#2#heightOfBaseOfCloud', 1.200000000000000000e+03)
 codes_set(ibufr, '#5#cloudType', 36)
 codes_set(ibufr, '#6#cloudType', 61)
 codes_set(ibufr, '#7#cloudType', 60)
 codes_set(ibufr, '#7#verticalSignificanceSurfaceObservations', 1)
 codes_set(ibufr, '#3#cloudAmount', 8)
 codes_set(ibufr, '#8#cloudType', 7)
 codes_set(ibufr, '#3#heightOfBaseOfCloud', 1.200000000000000000e+03)
 codes_set(ibufr, '#8#verticalSignificanceSurfaceObservations', 7)
 codes_set(ibufr, '#9#verticalSignificanceSurfaceObservations', 8)
 codes_set(ibufr, '#10#verticalSignificanceSurfaceObservations', 9)
 codes_set(ibufr, '#2#presentWeather', 3)
 codes_set(ibufr, '#18#timePeriod', -6)
 codes_set(ibufr, '#2#pastWeather1', 2)
 codes_set(ibufr, '#2#pastWeather2', 1)
 codes_set(ibufr, '#19#timePeriod', -24)
 codes_set(ibufr, '#20#timePeriod', -1)
 codes_set(ibufr, '#21#timePeriod', -12)
 codes_set(ibufr, '#22#timePeriod', -1)
 codes_set(ibufr, '#23#timePeriod', -12)
 codes_set(ibufr, '#24#timePeriod', 0)
 codes_set(ibufr, '#2#maximumTemperatureAtHeightAndOverPeriodSpecified', 2.752500000000000000e+02)
 codes_set(ibufr, '#25#timePeriod', -12)
 codes_set(ibufr, '#26#timePeriod', 0)
 codes_set(ibufr, '#2#minimumTemperatureAtHeightAndOverPeriodSpecified', 2.706499999999999773e+02)
 codes_set(ibufr, '#2#instrumentationForWindMeasurement', 12)
 codes_set(ibufr, '#3#timeSignificance', 2)
 codes_set(ibufr, '#27#timePeriod', -10)
 codes_set(ibufr, '#2#windDirection', 320)
 codes_set(ibufr, '#2#windSpeed', 5.100000000000000533e+00)
 codes_set(ibufr, '#28#timePeriod', -10)
 codes_set(ibufr, '#29#timePeriod', -360)
 codes_set(ibufr, '#30#timePeriod', -24)
 codes_set(ibufr, '#31#timePeriod', -1)
 codes_set(ibufr, '#32#timePeriod', -24)
 codes_set(ibufr, 'pack', 1)
 outfile = open('outfile.bufr', 'w')
 codes_write(ibufr, outfile)
 codes_release(ibufr)

def main():
 try:
 bufr_encode()
 except CodesInternalError as err:
 traceback.print_exc(file=sys.stderr)
 return 1

if __name__ == "__main__":
 sys.exit(main())
/* This program was automatically generated with bufr_dump -EC */
/* Using ecCodes version: 2.0.0 */
#include "eccodes.h"
int main()
{
 size_t size=0;
 const void* buffer = NULL;
 FILE* fout = NULL;
 codes_handle* h = NULL;
 long* ivalues = NULL;
 char** svalues = NULL;
 double* rvalues = NULL;
 const char* sampleName = "BUFR4";
h = codes_bufr_handle_new_from_samples(NULL, sampleName);
 if (h == NULL) {
 fprintf(stderr, "ERROR creating BUFR from %s\n", sampleName);
 return 1;
 }
 free(ivalues); ivalues = NULL;
ivalues = (long*)malloc(4*sizeof(long));
 if (!ivalues) { fprintf(stderr, "Failed to allocate memory (ivalues).\n"); return 1; }
 size = 4;
 ivalues[0]=0; ivalues[1]=0; ivalues[2]=1; ivalues[3]=0;
 CODES_CHECK(codes_set_long_array(h, "inputDelayedDescriptorReplicationFactor", ivalues, size), 0);
 CODES_CHECK(codes_set_long(h, "edition", 4), 0);
 CODES_CHECK(codes_set_long(h, "masterTableNumber", 0), 0);
 CODES_CHECK(codes_set_long(h, "bufrHeaderCentre", 74), 0);
 CODES_CHECK(codes_set_long(h, "bufrHeaderSubCentre", 0), 0);
 CODES_CHECK(codes_set_long(h, "updateSequenceNumber", 0), 0);
 CODES_CHECK(codes_set_long(h, "dataCategory", 0), 0);
 CODES_CHECK(codes_set_long(h, "internationalDataSubCategory", 2), 0);
 CODES_CHECK(codes_set_long(h, "dataSubCategory", 0), 0);
 CODES_CHECK(codes_set_long(h, "masterTablesVersionNumber", 22), 0);
 CODES_CHECK(codes_set_long(h, "localTablesVersionNumber", 0), 0);
 CODES_CHECK(codes_set_long(h, "typicalYear", 2016), 0);
 CODES_CHECK(codes_set_long(h, "typicalMonth", 9), 0);
 CODES_CHECK(codes_set_long(h, "typicalDay", 29), 0);
 CODES_CHECK(codes_set_long(h, "typicalHour", 12), 0);
 CODES_CHECK(codes_set_long(h, "typicalMinute", 0), 0);
 CODES_CHECK(codes_set_long(h, "typicalSecond", 0), 0);
 CODES_CHECK(codes_set_long(h, "numberOfSubsets", 2), 0);
 CODES_CHECK(codes_set_long(h, "observedData", 1), 0);
 CODES_CHECK(codes_set_long(h, "compressedData", 0), 0);
 CODES_CHECK(codes_set_long(h, "unexpandedDescriptors", 307080), 0);
 CODES_CHECK(codes_set_long(h, "#1#blockNumber", 89), 0);
 CODES_CHECK(codes_set_long(h, "#1#stationNumber", 22), 0);
 codes_set_string(h, "#1#stationOrSiteName", "HALLEY", &size);
 CODES_CHECK(codes_set_long(h, "#1#stationType", 1), 0);
 CODES_CHECK(codes_set_long(h, "#1#year", 2016), 0);
 CODES_CHECK(codes_set_long(h, "#1#month", 9), 0);
 CODES_CHECK(codes_set_long(h, "#1#day", 29), 0);
 CODES_CHECK(codes_set_long(h, "#1#hour", 12), 0);
 CODES_CHECK(codes_set_long(h, "#1#minute", 0), 0);
 CODES_CHECK(codes_set_double(h, "#1#latitude", -7.553300000000000125e+01), 0);
 CODES_CHECK(codes_set_double(h, "#1#longitude", -2.663300000000000267e+01), 0);
 CODES_CHECK(codes_set_double(h, "#1#heightOfStationGroundAboveMeanSeaLevel", 3.000000000000000000e+01), 0);
 CODES_CHECK(codes_set_double(h, "#1#heightOfBarometerAboveMeanSeaLevel", 3.000000000000000000e+01), 0);
 CODES_CHECK(codes_set_double(h, "#1#nonCoordinatePressure", 9.869000000000000000e+04), 0);
 CODES_CHECK(codes_set_double(h, "#1#pressureReducedToMeanSeaLevel", 9.911000000000000000e+04), 0);
 CODES_CHECK(codes_set_double(h, "#1#3HourPressureChange", -2.400000000000000000e+02), 0);
 CODES_CHECK(codes_set_long(h, "#1#characteristicOfPressureTendency", 7), 0);
 CODES_CHECK(codes_set_double(h, "#1#airTemperature", 2.459500000000000171e+02), 0);
 CODES_CHECK(codes_set_double(h, "#1#dewpointTemperature", 2.432500000000000000e+02), 0);
 CODES_CHECK(codes_set_double(h, "#1#horizontalVisibility", 6.000000000000000000e+04), 0);
 CODES_CHECK(codes_set_long(h, "#1#cloudCoverTotal", 0), 0);
 CODES_CHECK(codes_set_long(h, "#1#verticalSignificanceSurfaceObservations", 62), 0);
 CODES_CHECK(codes_set_long(h, "#1#cloudAmount", 0), 0);
 CODES_CHECK(codes_set_long(h, "#1#cloudType", 30), 0);
 CODES_CHECK(codes_set_long(h, "#2#cloudType", 20), 0);
 CODES_CHECK(codes_set_long(h, "#3#cloudType", 10), 0);
 CODES_CHECK(codes_set_long(h, "#2#verticalSignificanceSurfaceObservations", 7), 0);
 CODES_CHECK(codes_set_long(h, "#3#verticalSignificanceSurfaceObservations", 8), 0);
 CODES_CHECK(codes_set_long(h, "#4#verticalSignificanceSurfaceObservations", 9), 0);
 CODES_CHECK(codes_set_long(h, "#1#presentWeather", 508), 0);
 CODES_CHECK(codes_set_long(h, "#1#timePeriod", -6), 0);
 CODES_CHECK(codes_set_long(h, "#1#pastWeather1", 10), 0);
 CODES_CHECK(codes_set_long(h, "#1#pastWeather2", 10), 0);
 CODES_CHECK(codes_set_long(h, "#2#timePeriod", -24), 0);
 CODES_CHECK(codes_set_long(h, "#3#timePeriod", -1), 0);
 CODES_CHECK(codes_set_long(h, "#4#timePeriod", -12), 0);
 CODES_CHECK(codes_set_long(h, "#5#timePeriod", -1), 0);
 CODES_CHECK(codes_set_long(h, "#6#timePeriod", -12), 0);
 CODES_CHECK(codes_set_long(h, "#7#timePeriod", 0), 0);
 CODES_CHECK(codes_set_double(h, "#1#maximumTemperatureAtHeightAndOverPeriodSpecified", 2.469500000000000171e+02), 0);
 CODES_CHECK(codes_set_long(h, "#8#timePeriod", -12), 0);
 CODES_CHECK(codes_set_long(h, "#9#timePeriod", 0), 0);
 CODES_CHECK(codes_set_double(h, "#1#minimumTemperatureAtHeightAndOverPeriodSpecified", 2.423499999999999943e+02), 0);
 CODES_CHECK(codes_set_long(h, "#1#instrumentationForWindMeasurement", 12), 0);
 CODES_CHECK(codes_set_long(h, "#1#timeSignificance", 2), 0);
 CODES_CHECK(codes_set_long(h, "#10#timePeriod", -10), 0);
 CODES_CHECK(codes_set_long(h, "#1#windDirection", 190), 0);
 CODES_CHECK(codes_set_double(h, "#1#windSpeed", 2.600000000000000089e+00), 0);
 CODES_CHECK(codes_set_long(h, "#11#timePeriod", -10), 0);
 CODES_CHECK(codes_set_long(h, "#12#timePeriod", -360), 0);
 CODES_CHECK(codes_set_long(h, "#13#timePeriod", -24), 0);
 CODES_CHECK(codes_set_long(h, "#14#timePeriod", -1), 0);
 CODES_CHECK(codes_set_long(h, "#15#timePeriod", -24), 0);
 CODES_CHECK(codes_set_long(h, "#2#blockNumber", 89), 0);
 CODES_CHECK(codes_set_long(h, "#2#stationNumber", 62), 0);
 codes_set_string(h, "#2#stationOrSiteName", "ROTHERA", &size);
 CODES_CHECK(codes_set_long(h, "#2#stationType", 1), 0);
 CODES_CHECK(codes_set_long(h, "#2#year", 2016), 0);
 CODES_CHECK(codes_set_long(h, "#2#month", 9), 0);
 CODES_CHECK(codes_set_long(h, "#2#day", 29), 0);
 CODES_CHECK(codes_set_long(h, "#2#hour", 12), 0);
 CODES_CHECK(codes_set_long(h, "#2#minute", 0), 0);
 CODES_CHECK(codes_set_double(h, "#2#latitude", -6.773300000000000409e+01), 0);
 CODES_CHECK(codes_set_double(h, "#2#longitude", -6.811700000000000443e+01), 0);
CODES_CHECK(codes_set_double(h, "#2#heightOfStationGroundAboveMeanSeaLevel", 1.600000000000000000e+01), 0);
 CODES_CHECK(codes_set_double(h, "#2#heightOfBarometerAboveMeanSeaLevel", 1.600000000000000000e+01), 0);
 CODES_CHECK(codes_set_double(h, "#2#nonCoordinatePressure", 9.887000000000000000e+04), 0);
 CODES_CHECK(codes_set_double(h, "#2#pressureReducedToMeanSeaLevel", 9.928000000000000000e+04), 0);
 CODES_CHECK(codes_set_double(h, "#2#3HourPressureChange", 3.000000000000000000e+02), 0);
 CODES_CHECK(codes_set_long(h, "#2#characteristicOfPressureTendency", 2), 0);
 CODES_CHECK(codes_set_double(h, "#2#airTemperature", 2.727500000000000000e+02), 0);
 CODES_CHECK(codes_set_double(h, "#2#dewpointTemperature", 2.635500000000000114e+02), 0);
 CODES_CHECK(codes_set_double(h, "#2#horizontalVisibility", 4.500000000000000000e+04), 0);
 CODES_CHECK(codes_set_long(h, "#2#cloudCoverTotal", 100), 0);
 CODES_CHECK(codes_set_long(h, "#6#verticalSignificanceSurfaceObservations", 7), 0);
 CODES_CHECK(codes_set_long(h, "#2#cloudAmount", 8), 0);
 CODES_CHECK(codes_set_double(h, "#2#heightOfBaseOfCloud", 1.200000000000000000e+03), 0);
 CODES_CHECK(codes_set_long(h, "#5#cloudType", 36), 0);
 CODES_CHECK(codes_set_long(h, "#6#cloudType", 61), 0);
 CODES_CHECK(codes_set_long(h, "#7#cloudType", 60), 0);
 CODES_CHECK(codes_set_long(h, "#7#verticalSignificanceSurfaceObservations", 1), 0);
 CODES_CHECK(codes_set_long(h, "#3#cloudAmount", 8), 0);
 CODES_CHECK(codes_set_long(h, "#8#cloudType", 7), 0);
 CODES_CHECK(codes_set_double(h, "#3#heightOfBaseOfCloud", 1.200000000000000000e+03), 0);
 CODES_CHECK(codes_set_long(h, "#8#verticalSignificanceSurfaceObservations", 7), 0);
 CODES_CHECK(codes_set_long(h, "#9#verticalSignificanceSurfaceObservations", 8), 0);
 CODES_CHECK(codes_set_long(h, "#10#verticalSignificanceSurfaceObservations", 9), 0);
 CODES_CHECK(codes_set_long(h, "#2#presentWeather", 3), 0);
 CODES_CHECK(codes_set_long(h, "#18#timePeriod", -6), 0);
 CODES_CHECK(codes_set_long(h, "#2#pastWeather1", 2), 0);
 CODES_CHECK(codes_set_long(h, "#2#pastWeather2", 1), 0);
 CODES_CHECK(codes_set_long(h, "#19#timePeriod", -24), 0);
 CODES_CHECK(codes_set_long(h, "#20#timePeriod", -1), 0);
 CODES_CHECK(codes_set_long(h, "#21#timePeriod", -12), 0);
 CODES_CHECK(codes_set_long(h, "#22#timePeriod", -1), 0);
 CODES_CHECK(codes_set_long(h, "#23#timePeriod", -12), 0);
 CODES_CHECK(codes_set_long(h, "#24#timePeriod", 0), 0);
 CODES_CHECK(codes_set_double(h, "#2#maximumTemperatureAtHeightAndOverPeriodSpecified", 2.752500000000000000e+02), 0);
 CODES_CHECK(codes_set_long(h, "#25#timePeriod", -12), 0);
 CODES_CHECK(codes_set_long(h, "#26#timePeriod", 0), 0);
 CODES_CHECK(codes_set_double(h, "#2#minimumTemperatureAtHeightAndOverPeriodSpecified", 2.706499999999999773e+02), 0);
 CODES_CHECK(codes_set_long(h, "#2#instrumentationForWindMeasurement", 12), 0);
 CODES_CHECK(codes_set_long(h, "#3#timeSignificance", 2), 0);
 CODES_CHECK(codes_set_long(h, "#27#timePeriod", -10), 0);
 CODES_CHECK(codes_set_long(h, "#2#windDirection", 320), 0);
 CODES_CHECK(codes_set_double(h, "#2#windSpeed", 5.100000000000000533e+00), 0);
 CODES_CHECK(codes_set_long(h, "#28#timePeriod", -10), 0);
 CODES_CHECK(codes_set_long(h, "#29#timePeriod", -360), 0);
 CODES_CHECK(codes_set_long(h, "#30#timePeriod", -24), 0);
 CODES_CHECK(codes_set_long(h, "#31#timePeriod", -1), 0);
 CODES_CHECK(codes_set_long(h, "#32#timePeriod", -24), 0);
codes_set_long(h, "pack", 1);
 fout = fopen("outfile.bufr", "w");
 if (!fout) {
 fprintf(stderr, "Failed to open output file.\n");
 return 1;
 }
 CODES_CHECK(codes_get_message(h,&buffer,&size),0);
 if (fwrite(buffer,1,size,fout) != size) {
 fprintf(stderr, "Failed to write data.\n");
 return 1;
}
 if (fclose(fout)!=0) {
 fprintf(stderr, "Failed to close file handle.\n");
 return 1;
 }
 
 codes_handle_delete(h);
 free(ivalues); ivalues = NULL;
 free(rvalues); rvalues = NULL;
 free(svalues); svalues = NULL;
return 0;
}
# This filter was automatically generated with bufr_dump -Efilter
# Using ecCodes version: 2.0.0
set inputDelayedDescriptorReplicationFactor= {
 0, 0, 1, 0};
set edition=4;
set masterTableNumber=0;
set bufrHeaderCentre=74;
set bufrHeaderSubCentre=0;
set updateSequenceNumber=0;
set dataCategory=0;
set internationalDataSubCategory=2;
set dataSubCategory=0;
set masterTablesVersionNumber=22;
set localTablesVersionNumber=0;
set typicalYear=2016;
set typicalMonth=9;
set typicalDay=29;
set typicalHour=12;
set typicalMinute=0;
set typicalSecond=0;
set numberOfSubsets=2;
set observedData=1;
set compressedData=0;
set unexpandedDescriptors=307080;
set #1#blockNumber=89;
set #1#stationNumber=22;
set #1#stationOrSiteName="HALLEY";
set #1#stationType=1;
set #1#year=2016;
set #1#month=9;
set #1#day=29;
set #1#hour=12;
set #1#minute=0;
set #1#latitude=-7.553300000000000125e+01;
set #1#longitude=-2.663300000000000267e+01;
set #1#heightOfStationGroundAboveMeanSeaLevel=3.000000000000000000e+01;
set #1#heightOfBarometerAboveMeanSeaLevel=3.000000000000000000e+01;
set #1#nonCoordinatePressure=9.869000000000000000e+04;
set #1#pressureReducedToMeanSeaLevel=9.911000000000000000e+04;
set #1#3HourPressureChange=-2.400000000000000000e+02;
set #1#characteristicOfPressureTendency=7;
set #1#airTemperature=2.459500000000000171e+02;
set #1#dewpointTemperature=2.432500000000000000e+02;
set #1#horizontalVisibility=6.000000000000000000e+04;
set #1#cloudCoverTotal=0;
set #1#verticalSignificanceSurfaceObservations=62;
set #1#cloudAmount=0;
set #1#cloudType=30;
set #2#cloudType=20;
set #3#cloudType=10;
set #2#verticalSignificanceSurfaceObservations=7;
set #3#verticalSignificanceSurfaceObservations=8;
set #4#verticalSignificanceSurfaceObservations=9;
set #1#presentWeather=508;
set #1#timePeriod=-6;
set #1#pastWeather1=10;
set #1#pastWeather2=10;
set #2#timePeriod=-24;
set #3#timePeriod=-1;
set #4#timePeriod=-12;
set #5#timePeriod=-1;
set #6#timePeriod=-12;
set #7#timePeriod=0;
set #1#maximumTemperatureAtHeightAndOverPeriodSpecified=2.469500000000000171e+02;
set #8#timePeriod=-12;
set #9#timePeriod=0;
set #1#minimumTemperatureAtHeightAndOverPeriodSpecified=2.423499999999999943e+02;
set #1#instrumentationForWindMeasurement=12;
set #1#timeSignificance=2;
set #10#timePeriod=-10;
set #1#windDirection=190;
set #1#windSpeed=2.600000000000000089e+00;
set #11#timePeriod=-10;
set #12#timePeriod=-360;
set #13#timePeriod=-24;
set #14#timePeriod=-1;
set #15#timePeriod=-24;
set #2#blockNumber=89;
set #2#stationNumber=62;
set #2#stationOrSiteName="ROTHERA";
set #2#stationType=1;
set #2#year=2016;
set #2#month=9;
set #2#day=29;
set #2#hour=12;
set #2#minute=0;
set #2#latitude=-6.773300000000000409e+01;
set #2#longitude=-6.811700000000000443e+01;
set #2#heightOfStationGroundAboveMeanSeaLevel=1.600000000000000000e+01;
set #2#heightOfBarometerAboveMeanSeaLevel=1.600000000000000000e+01;
set #2#nonCoordinatePressure=9.887000000000000000e+04;
set #2#pressureReducedToMeanSeaLevel=9.928000000000000000e+04;
set #2#3HourPressureChange=3.000000000000000000e+02;
set #2#characteristicOfPressureTendency=2;
set #2#airTemperature=2.727500000000000000e+02;
set #2#dewpointTemperature=2.635500000000000114e+02;
set #2#horizontalVisibility=4.500000000000000000e+04;
set #2#cloudCoverTotal=100;
set #6#verticalSignificanceSurfaceObservations=7;
set #2#cloudAmount=8;
set #2#heightOfBaseOfCloud=1.200000000000000000e+03;
set #5#cloudType=36;
set #6#cloudType=61;
set #7#cloudType=60;
set #7#verticalSignificanceSurfaceObservations=1;
set #3#cloudAmount=8;
set #8#cloudType=7;
set #3#heightOfBaseOfCloud=1.200000000000000000e+03;
set #8#verticalSignificanceSurfaceObservations=7;
set #9#verticalSignificanceSurfaceObservations=8;
set #10#verticalSignificanceSurfaceObservations=9;
set #2#presentWeather=3;
set #18#timePeriod=-6;
set #2#pastWeather1=2;
set #2#pastWeather2=1;
set #19#timePeriod=-24;
set #20#timePeriod=-1;
set #21#timePeriod=-12;
set #22#timePeriod=-1;
set #23#timePeriod=-12;
set #24#timePeriod=0;
set #2#maximumTemperatureAtHeightAndOverPeriodSpecified=2.752500000000000000e+02;
set #25#timePeriod=-12;
set #26#timePeriod=0;
set #2#minimumTemperatureAtHeightAndOverPeriodSpecified=2.706499999999999773e+02;
set #2#instrumentationForWindMeasurement=12;
set #3#timeSignificance=2;
set #27#timePeriod=-10;
set #2#windDirection=320;
set #2#windSpeed=5.100000000000000533e+00;
set #28#timePeriod=-10;
set #29#timePeriod=-360;
set #30#timePeriod=-24;
set #31#timePeriod=-1;
set #32#timePeriod=-24;
set pack=1;
write;