eccodes/examples/C/values_check.c

66 lines
1.5 KiB
C
Raw Normal View History

2013-03-25 12:04:10 +00:00
/*
2014-01-03 16:22:21 +00:00
* Copyright 2005-2014 ECMWF.
2013-03-25 12:04:10 +00:00
*
* 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.
*/
#include "grib_api.h"
2014-06-18 16:14:01 +00:00
int main(int argc, char* argv[])
{
2013-03-25 12:04:10 +00:00
FILE* f;
int err=0;
char infile[]="../../data/reduced_gaussian_model_level.grib1";
grib_handle *h=NULL;
grib_context* c=grib_context_get_default();
grib_values values[2];
int nvalues=2;
int i;
2013-03-25 14:23:07 +00:00
char* name = NULL;
2013-03-25 12:04:10 +00:00
f=fopen(infile,"r");
if (!f) {
perror(infile);
exit(1);
}
h=grib_handle_new_from_file(c,f,&err);
if (!h) {
printf("unable to create handle from file %s\n",infile);
exit(err);
}
fclose(f);
values[0].type=GRIB_TYPE_LONG;
values[0].name="centre";
values[0].long_value=98;
values[1].type=GRIB_TYPE_LONG;
values[1].name="level";
values[1].long_value=2;
/*GRIB_VALUE_DIFFERENT -> value is different*/
err=grib_values_check(h,values,nvalues);
if (err) {
for (i=0;i<nvalues;i++) {
if (values[i].error==err) name=(char*)values[i].name;
}
printf("ERROR: \"%s\" %s\n",name,grib_get_error_message(err));
}
values[1].name="levelll";
err=grib_values_check(h,values,nvalues);
if (err) {
for (i=0;i<nvalues;i++) {
if (values[i].error==err) name=(char*)values[i].name;
}
printf("ERROR: \"%s\" %s\n",name,grib_get_error_message(err));
}
return 0;
}