[cdo] 03/11: release 1.9.0rc1

Alastair McKinstry mckinstry at moszumanska.debian.org
Thu Jul 27 15:01:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository cdo.

commit dc40664d47ef5d7e2a8b2ebfbcc0e781d176e163
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Tue Jul 11 02:50:36 2017 +0100

    release 1.9.0rc1
---
 ChangeLog                                          |    68 +-
 Makefile.in                                        |     6 +-
 NEWS                                               |     7 +
 OPERATORS                                          |    36 +-
 aclocal.m4                                         |     2 +
 cdo.settings.in                                    |     2 +
 cdo.spec                                           |     2 +-
 config/default                                     |   215 +-
 configure                                          |  9276 +++++++++--------
 configure.ac                                       |    60 +-
 contrib/Makefile.in                                |     6 +-
 contrib/cdoCompletion.bash                         |    16 +-
 contrib/cdoCompletion.tcsh                         |    16 +-
 contrib/cdoCompletion.zsh                          |    16 +-
 doc/cdo.pdf                                        |   Bin 2686871 -> 2716231 bytes
 doc/cdo_refcard.pdf                                |   Bin 95775 -> 96906 bytes
 libcdi/ChangeLog                                   |    18 +
 libcdi/Makefile.in                                 |     2 +
 libcdi/app/Makefile.in                             |     2 +
 libcdi/app/createtable.c                           |     4 +-
 libcdi/cdi.settings.in                             |     4 +
 libcdi/config/default                              |     9 +-
 libcdi/configure                                   |   218 +-
 libcdi/configure.ac                                |     2 +-
 libcdi/doc/cdi_cman.pdf                            |   Bin 335590 -> 337122 bytes
 libcdi/doc/cdi_fman.pdf                            |   Bin 364027 -> 365396 bytes
 libcdi/examples/Makefile.in                        |     2 +
 libcdi/examples/pio/Makefile.in                    |     2 +
 libcdi/interfaces/Makefile.in                      |     2 +
 libcdi/m4/acx_options.m4                           |    36 +-
 libcdi/src/Makefile.am                             |     2 +-
 libcdi/src/Makefile.in                             |     4 +-
 libcdi/src/cdf.c                                   |     8 +-
 libcdi/src/cdf_int.c                               |    79 +-
 libcdi/src/cdf_read.c                              |     1 +
 libcdi/src/cdf_write.c                             |    41 +-
 libcdi/src/cdi.h                                   |    40 +-
 libcdi/src/cdi.inc                                 |   100 +-
 libcdi/src/cdiFortran.c                            |    21 +-
 libcdi/src/cdi_error.c                             |     6 +-
 libcdi/src/cdi_int.c                               |    20 +-
 libcdi/src/cdi_int.h                               |    12 +-
 libcdi/src/cdilib.c                                | 10380 +++++++++++--------
 libcdi/src/cgribex.h                               |     9 +-
 libcdi/src/cgribexlib.c                            |   446 +-
 libcdi/src/gribapi.c                               |     8 +-
 libcdi/src/gribapi.h                               |     2 +-
 libcdi/src/gribapi_utilities.c                     |     2 +-
 libcdi/src/grid.c                                  |    19 +-
 libcdi/src/mo_cdi.f90                              |   400 +-
 libcdi/src/stream.c                                |    23 +-
 libcdi/src/stream_cdf_i.c                          |    88 +-
 libcdi/src/stream_cdf_o.c                          |    70 +-
 libcdi/src/stream_cgribex.c                        |    22 +-
 libcdi/src/stream_ext.c                            |    10 +-
 libcdi/src/stream_gribapi.c                        |    40 +-
 libcdi/src/stream_ieg.c                            |    10 +-
 libcdi/src/stream_record.c                         |     4 +-
 libcdi/src/stream_srv.c                            |    10 +-
 libcdi/src/table.c                                 |   325 +-
 libcdi/src/table.h                                 |  2682 +++--
 libcdi/src/tablepar.h                              |    21 +-
 libcdi/src/tsteps.c                                |    12 +-
 libcdi/src/varscan.c                               |    33 +-
 libcdi/src/varscan.h                               |     2 +-
 libcdi/src/vlist.c                                 |    81 +-
 libcdi/src/vlist.h                                 |     9 +-
 libcdi/src/vlist_var.c                             |    89 +-
 libcdi/src/vlist_var.h                             |     2 +
 libcdi/src/zaxis.c                                 |    64 +-
 libcdi/src/zaxis.h                                 |     2 +
 libcdi/tables/gen_tableheaderfile.in               |    31 +-
 libcdi/tests/Makefile.in                           |     2 +
 libcdi/tests/test_table.c                          |     3 +-
 m4/acx_options.m4                                  |    37 +-
 m4/ax_cxx_compile_stdcxx.m4                        |   982 ++
 m4/ax_cxx_compile_stdcxx_11.m4                     |    39 +
 src/{Adisit.c => Adisit.cc}                        |    30 +-
 src/{Afterburner.c => Afterburner.cc}              |    83 +-
 src/{Arith.c => Arith.cc}                          |    47 +-
 src/{Arithc.c => Arithc.cc}                        |    27 +-
 src/{Arithdays.c => Arithdays.cc}                  |    27 +-
 src/{Arithlat.c => Arithlat.cc}                    |    25 +-
 src/{CDIread.c => CDIread.cc}                      |    40 +-
 src/{CDItest.c => CDItest.cc}                      |    27 +-
 src/{CDIwrite.c => CDIwrite.cc}                    |    17 +-
 src/{CMOR.c => CMOR.cc}                            |    90 +-
 src/{CMOR_lite.c => CMOR_lite.cc}                  |    27 +-
 src/{CMOR_table.c => CMOR_table.cc}                |     0
 src/{Cat.c => Cat.cc}                              |    30 +-
 src/{CdoMagicsMapper.c => CdoMagicsMapper.cc}      |     0
 src/{Change.c => Change.cc}                        |    27 +-
 src/{Change_e5slm.c => Change_e5slm.cc}            |    38 +-
 src/{Cloudlayer.c => Cloudlayer.cc}                |    25 +-
 src/{Collgrid.c => Collgrid.cc}                    |    33 +-
 src/{Command.c => Command.cc}                      |     0
 src/{Comp.c => Comp.cc}                            |    42 +-
 src/{Compc.c => Compc.cc}                          |    26 +-
 src/{Complextorect.c => Complextorect.cc}          |    36 +-
 src/{Cond.c => Cond.cc}                            |    39 +-
 src/{Cond2.c => Cond2.cc}                          |    49 +-
 src/{Condc.c => Condc.cc}                          |    27 +-
 src/{Consecstat.c => Consecstat.cc}                |    37 +-
 src/{Copy.c => Copy.cc}                            |    33 +-
 src/{Deltat.c => Deltat.cc}                        |    31 +-
 src/{Deltime.c => Deltime.cc}                      |    29 +-
 src/{Derivepar.c => Derivepar.cc}                  |    33 +-
 src/{Detrend.c => Detrend.cc}                      |    25 +-
 src/{Diff.c => Diff.cc}                            |    26 +-
 src/{Distgrid.c => Distgrid.cc}                    |    26 +-
 src/{Duplicate.c => Duplicate.cc}                  |    25 +-
 src/{EOFs.c => EOFs.cc}                            |    46 +-
 src/{EcaIndices.c => EcaIndices.cc}                |     5 +-
 src/{Echam5ini.c => Echam5ini.cc}                  |    26 +-
 src/{Enlarge.c => Enlarge.cc}                      |    24 +-
 src/{Enlargegrid.c => Enlargegrid.cc}              |    24 +-
 src/{Ensstat.c => Ensstat.cc}                      |   288 +-
 src/{Ensstat3.c => Ensstat3.cc}                    |    33 +-
 src/{Ensval.c => Ensval.cc}                        |    30 +-
 src/{Eof3d.c => Eof3d.cc}                          |    63 +-
 src/{Eofcoeff.c => Eofcoeff.cc}                    |    40 +-
 src/{Eofcoeff3d.c => Eofcoeff3d.cc}                |    38 +-
 src/{Exprf.c => Exprf.cc}                          |    29 +-
 src/{FC.c => FC.cc}                                |    33 +-
 src/{Filedes.c => Filedes.cc}                      |    20 +-
 src/{Fillmiss.c => Fillmiss.cc}                    |    28 +-
 src/{Filter.c => Filter.cc}                        |    28 +-
 src/{Fldrms.c => Fldrms.cc}                        |    37 +-
 src/{Fldstat.c => Fldstat.cc}                      |    33 +-
 src/{Fldstat2.c => Fldstat2.cc}                    |    58 +-
 src/{Fourier.c => Fourier.cc}                      |    24 +-
 src/{Gengrid.c => Gengrid.cc}                      |    32 +-
 src/{Gradsdes.c => Gradsdes.cc}                    |    27 +-
 src/{Gridboxstat.c => Gridboxstat.cc}              |    47 +-
 src/{Gridcell.c => Gridcell.cc}                    |    24 +-
 src/{Gridsearch.c => Gridsearch.cc}                |     3 +-
 src/{Harmonic.c => Harmonic.cc}                    |    43 +-
 src/{Hi.c => Hi.cc}                                |    48 +-
 src/{Histogram.c => Histogram.cc}                  |    28 +-
 src/{Importamsr.c => Importamsr.cc}                |    16 +-
 src/{Importbinary.c => Importbinary.cc}            |    12 +-
 src/{Importcmsaf.c => Importcmsaf.cc}              |    12 +-
 src/{Importobs.c => Importobs.cc}                  |    12 +-
 src/{Info.c => Info.cc}                            |    14 +-
 src/{Input.c => Input.cc}                          |    14 +-
 src/{Intgrid.c => Intgrid.cc}                      |    31 +-
 src/{Intgridtraj.c => Intgridtraj.cc}              |    31 +-
 src/{Intlevel.c => Intlevel.cc}                    |    27 +-
 src/{Intlevel3d.c => Intlevel3d.cc}                |    55 +-
 src/{Intntime.c => Intntime.cc}                    |    42 +-
 src/{Inttime.c => Inttime.cc}                      |    30 +-
 src/{Intyear.c => Intyear.cc}                      |    38 +-
 src/{Invert.c => Invert.cc}                        |    28 +-
 src/{Invertlev.c => Invertlev.cc}                  |    32 +-
 src/{Isosurface.c => Isosurface.cc}                |    28 +-
 src/{Log.c => Log.cc}                              |     2 +
 src/{Maggraph.c => Maggraph.cc}                    |    12 +-
 src/{Magplot.c => Magplot.cc}                      |    12 +-
 src/{Magvector.c => Magvector.cc}                  |    14 +-
 src/Makefile.am                                    |   623 +-
 src/Makefile.in                                    |  7368 ++++++-------
 src/{MapReduce.c => MapReduce.cc}                  |    28 +-
 src/{Maskbox.c => Maskbox.cc}                      |    27 +-
 src/{Mastrfu.c => Mastrfu.cc}                      |    25 +-
 src/{Math.c => Math.cc}                            |    29 +-
 src/{Merge.c => Merge.cc}                          |    27 +-
 src/{Mergegrid.c => Mergegrid.cc}                  |    36 +-
 src/{Mergetime.c => Mergetime.cc}                  |   106 +-
 src/{Merstat.c => Merstat.cc}                      |    53 +-
 src/{Monarith.c => Monarith.cc}                    |    38 +-
 src/{Mrotuv.c => Mrotuv.cc}                        |    42 +-
 src/{Mrotuvb.c => Mrotuvb.cc}                      |    41 +-
 src/{Ninfo.c => Ninfo.cc}                          |    17 +-
 src/{Nmldump.c => Nmldump.cc}                      |     0
 src/{Output.c => Output.cc}                        |    24 +-
 src/{Outputgmt.c => Outputgmt.cc}                  |    18 +-
 src/{Pack.c => Pack.cc}                            |    25 +-
 src/{Pardup.c => Pardup.cc}                        |    26 +-
 src/{Pinfo.c => Pinfo.cc}                          |    29 +-
 src/{Pressure.c => Pressure.cc}                    |    30 +-
 src/{Regres.c => Regres.cc}                        |    40 +-
 src/{Remap.c => Remap.cc}                          |    29 +-
 src/{Remapeta.c => Remapeta.cc}                    |    61 +-
 src/{Replace.c => Replace.cc}                      |    38 +-
 src/{Replacevalues.c => Replacevalues.cc}          |    29 +-
 src/{Rhopot.c => Rhopot.cc}                        |    27 +-
 src/{Rotuv.c => Rotuv.cc}                          |    26 +-
 src/{Runpctl.c => Runpctl.cc}                      |    32 +-
 src/Runstat.c                                      |   361 -
 src/Runstat.cc                                     |   406 +
 src/{Samplegrid.c => Samplegrid.cc}                |    28 +-
 src/{Samplegridicon.c => Samplegridicon.cc}        |    58 +-
 src/{Seascount.c => Seascount.cc}                  |    25 +-
 src/{Seaspctl.c => Seaspctl.cc}                    |    49 +-
 src/Seasstat.c                                     |   320 -
 src/Seasstat.cc                                    |   338 +
 src/{Selbox.c => Selbox.cc}                        |    31 +-
 src/{Select.c => Select.cc}                        |    36 +-
 src/{Selgridcell.c => Selgridcell.cc}              |    83 +-
 src/{Selmulti.c => Selmulti.cc}                    |    39 +-
 src/{Seloperator.c => Seloperator.cc}              |    30 +-
 src/{Selrec.c => Selrec.cc}                        |    26 +-
 src/{Seltime.c => Seltime.cc}                      |    44 +-
 src/{Selvar.c => Selvar.cc}                        |    32 +-
 src/{Set.c => Set.cc}                              |    30 +-
 src/{Setattribute.c => Setattribute.cc}            |    28 +-
 src/{Setbox.c => Setbox.cc}                        |    25 +-
 src/{Setgatt.c => Setgatt.cc}                      |    26 +-
 src/{Setgrid.c => Setgrid.cc}                      |    52 +-
 src/{Sethalo.c => Sethalo.cc}                      |    28 +-
 src/{Setmiss.c => Setmiss.cc}                      |    27 +-
 src/{Setpartab.c => Setpartab.cc}                  |    85 +-
 src/{Setrcaname.c => Setrcaname.cc}                |    27 +-
 src/{Settime.c => Settime.cc}                      |    69 +-
 src/{Setzaxis.c => Setzaxis.cc}                    |    28 +-
 src/{Shiftxy.c => Shiftxy.cc}                      |    27 +-
 src/{Showinfo.c => Showinfo.cc}                    |    19 +-
 src/{Sinfo.c => Sinfo.cc}                          |     8 +-
 src/{Smooth.c => Smooth.cc}                        |    33 +-
 src/{Sort.c => Sort.cc}                            |    32 +-
 src/{Sorttimestamp.c => Sorttimestamp.cc}          |    25 +-
 src/{Specinfo.c => Specinfo.cc}                    |     0
 src/{Spectral.c => Spectral.cc}                    |    36 +-
 src/{Spectrum.c => Spectrum.cc}                    |    25 +-
 src/{Split.c => Split.cc}                          |    56 +-
 src/{Splitrec.c => Splitrec.cc}                    |    30 +-
 src/{Splitsel.c => Splitsel.cc}                    |    44 +-
 src/{Splittime.c => Splittime.cc}                  |    34 +-
 src/{Splityear.c => Splityear.cc}                  |    42 +-
 src/{StringUtilities.c => StringUtilities.cc}      |     0
 src/{Subtrend.c => Subtrend.cc}                    |    50 +-
 src/{Tee.c => Tee.cc}                              |    47 +-
 src/{Templates.c => Templates.cc}                  |    50 +-
 src/{Test.c => Test.cc}                            |    45 +-
 src/{Tests.c => Tests.cc}                          |    28 +-
 src/{Timcount.c => Timcount.cc}                    |    27 +-
 src/{Timcumsum.c => Timcumsum.cc}                  |    44 +-
 src/{Timpctl.c => Timpctl.cc}                      |    51 +-
 src/{Timselpctl.c => Timselpctl.cc}                |    55 +-
 src/Timselstat.c                                   |   307 -
 src/Timselstat.cc                                  |   325 +
 src/{Timsort.c => Timsort.cc}                      |    25 +-
 src/{Timstat.c => Timstat.cc}                      |   224 +-
 src/{Timstat2.c => Timstat2.cc}                    |    39 +-
 src/{Timstat3.c => Timstat3.cc}                    |    30 +-
 src/{Tinfo.c => Tinfo.cc}                          |     9 +-
 src/{Tocomplex.c => Tocomplex.cc}                  |    25 +-
 src/{Transpose.c => Transpose.cc}                  |    26 +-
 src/{Trend.c => Trend.cc}                          |    36 +-
 src/{Trms.c => Trms.cc}                            |    42 +-
 src/{Tstepcount.c => Tstepcount.cc}                |    25 +-
 src/{Vargen.c => Vargen.cc}                        |    40 +-
 src/{Varrms.c => Varrms.cc}                        |    44 +-
 src/{Verifygrid.c => Verifygrid.cc}                |   134 +-
 src/{Vertcum.c => Vertcum.cc}                      |    41 +-
 src/{Vertintap.c => Vertintap.cc}                  |    49 +-
 src/{Vertintml.c => Vertintml.cc}                  |    27 +-
 src/{Vertstat.c => Vertstat.cc}                    |    80 +-
 src/{Vertwind.c => Vertwind.cc}                    |    32 +-
 src/{Wct.c => Wct.cc}                              |    36 +-
 src/{Wind.c => Wind.cc}                            |    47 +-
 src/{WindTrans.c => WindTrans.cc}                  |    77 +-
 src/{Writegrid.c => Writegrid.cc}                  |     6 +-
 src/{Writerandom.c => Writerandom.cc}              |    27 +-
 src/{XTimstat.c => XTimstat.cc}                    |   118 +-
 src/{YAR.c => YAR.cc}                              |    24 +-
 src/{Ydayarith.c => Ydayarith.cc}                  |    37 +-
 src/{Ydaypctl.c => Ydaypctl.cc}                    |    49 +-
 src/Ydaystat.c                                     |   306 -
 src/Ydaystat.cc                                    |   325 +
 src/{Ydrunpctl.c => Ydrunpctl.cc}                  |    57 +-
 src/{Ydrunstat.c => Ydrunstat.cc}                  |   146 +-
 src/{Yearmonstat.c => Yearmonstat.cc}              |    29 +-
 src/{Yhourarith.c => Yhourarith.cc}                |    38 +-
 src/Yhourstat.c                                    |   312 -
 src/Yhourstat.cc                                   |   329 +
 src/{Ymonarith.c => Ymonarith.cc}                  |    47 +-
 src/{Ymonpctl.c => Ymonpctl.cc}                    |    49 +-
 src/Ymonstat.c                                     |   335 -
 src/Ymonstat.cc                                    |   353 +
 src/{Yseaspctl.c => Yseaspctl.cc}                  |    51 +-
 src/Yseasstat.c                                    |   307 -
 src/Yseasstat.cc                                   |   325 +
 src/{Zonstat.c => Zonstat.cc}                      |    29 +-
 src/{after_dvtrans.c => after_dvtrans.cc}          |     0
 src/{after_fctrans.c => after_fctrans.cc}          |     0
 src/{after_namelist.c => after_namelist.cc}        |     0
 src/{after_sptrans.c => after_sptrans.cc}          |     0
 src/{after_vertint.c => after_vertint.cc}          |     6 +-
 src/afterburner.h                                  |    11 -
 src/{afterburnerlib.c => afterburnerlib.cc}        |     2 +
 src/{array.c => array.cc}                          |     0
 src/{cdo.c => cdo.cc}                              |    76 +-
 src/{cdo_getopt.c => cdo_getopt.cc}                |     0
 src/{cdo_history.c => cdo_history.cc}              |     0
 src/{cdo_pthread.c => cdo_pthread.cc}              |     0
 src/{cdo_read.c => cdo_read.cc}                    |    41 +
 src/{cdo_task.c => cdo_task.cc}                    |     2 +
 src/{cdo_vlist.c => cdo_vlist.cc}                  |     0
 src/{cdotest.c => cdotest.cc}                      |     0
 src/{cmortable_parser.c => cmortable_parser.cc}    |     0
 src/{color.c => color.cc}                          |     0
 src/{commandline.c => commandline.cc}              |     0
 src/config.h.in                                    |    17 +-
 src/{constants.c => constants.cc}                  |     0
 src/{convert_units.c => convert_units.cc}          |     0
 src/{datetime.c => datetime.cc}                    |     0
 src/{ecacore.c => ecacore.cc}                      |   279 +-
 src/{ecautil.c => ecautil.cc}                      |    10 +-
 src/{exception.c => exception.cc}                  |     0
 src/{expr.c => expr.cc}                            |    36 +-
 src/expr.h                                         |     3 -
 src/{expr_fun.c => expr_fun.cc}                    |     0
 src/{expr_lex.c => expr_lex.cc}                    |   370 +-
 src/{expr_yacc.c => expr_yacc.cc}                  |   418 +-
 src/expr_yacc.h                                    |    58 +-
 src/{features.c => features.cc}                    |     0
 src/{field.c => field.cc}                          |     0
 src/field.h                                        |    13 +-
 src/{field2.c => field2.cc}                        |     0
 src/{fieldc.c => fieldc.cc}                        |     0
 src/{fieldmem.c => fieldmem.cc}                    |     0
 src/{fieldmer.c => fieldmer.cc}                    |    59 +
 src/{fieldzon.c => fieldzon.cc}                    |     0
 src/{gradsdeslib.c => gradsdeslib.cc}              |    19 +-
 src/{grid.c => grid.cc}                            |    14 +-
 src/{grid_area.c => grid_area.cc}                  |     0
 src/{grid_define.c => grid_define.cc}              |     0
 src/{grid_from_name.c => grid_from_name.cc}        |     0
 src/{grid_gme.c => grid_gme.cc}                    |     0
 src/{grid_print.c => grid_print.cc}                |     0
 src/{grid_proj.c => grid_proj.cc}                  |     0
 src/{grid_read.c => grid_read.cc}                  |     0
 src/{grid_read_pingo.c => grid_read_pingo.cc}      |     0
 src/{grid_rot.c => grid_rot.cc}                    |     0
 src/{grid_search.c => grid_search.cc}              |     0
 src/{griddes.c => griddes.cc}                      |     0
 src/{griddes_h5.c => griddes_h5.cc}                |     0
 src/{griddes_nc.c => griddes_nc.cc}                |     0
 src/{gridreference.c => gridreference.cc}          |     0
 src/{hetaeta.c => hetaeta.cc}                      |   199 +-
 src/{institution.c => institution.cc}              |     0
 src/{interpol.c => interpol.cc}                    |     0
 src/{job.c => job.cc}                              |     2 +-
 src/{juldate.c => juldate.cc}                      |     0
 src/kdtreelib/kdtree.h                             |    24 +-
 .../{kdtree_cartesian.c => kdtree_cartesian.cc}    |     0
 src/kdtreelib/kdtree_common.c                      |   281 -
 src/kdtreelib/kdtree_common.cc                     |   281 +
 .../{kdtree_spherical.c => kdtree_spherical.cc}    |     0
 src/kdtreelib/{pmergesort.c => pmergesort.cc}      |     0
 src/kdtreelib/{pqueue.c => pqueue.cc}              |     0
 src/kdtreelib/{qsort.c => qsort.cc}                |     0
 src/{list.c => list.cc}                            |     0
 src/{listarray.c => listarray.cc}                  |     0
 src/{listbuf.c => listbuf.cc}                      |     0
 ...template_parser.c => magics_template_parser.cc} |     0
 src/{merge_sort2.c => merge_sort2.cc}              |     6 +-
 src/modules.c                                      |  1229 ---
 src/modules.cc                                     |  1424 +++
 src/modules.h                                      |    82 +-
 src/{namelist.c => namelist.cc}                    |     4 +-
 src/{namelist_parser.c => namelist_parser.cc}      |     0
 src/{normal.c => normal.cc}                        |     0
 src/{nth_element.c => nth_element.cc}              |     0
 src/operator_help.h                                |  2003 ++--
 src/{par_io.c => par_io.cc}                        |     8 +-
 src/{parse_literal.c => parse_literal.cc}          |     0
 src/{percentiles.c => percentiles.cc}              |     0
 src/{percentiles_hist.c => percentiles_hist.cc}    |     0
 src/pipe.c                                         |   619 --
 src/pipe.cc                                        |   679 ++
 src/pipe.h                                         |    82 +-
 src/{pmlist.c => pmlist.cc}                        |     0
 src/printinfo.h                                    |     8 +-
 src/{process.c => process.cc}                      |   154 +-
 src/process.h                                      |    60 +-
 src/{pstream.c => pstream.cc}                      |   184 +-
 src/pstream.h                                      |    52 +-
 src/pstream_int.h                                  |     1 +
 src/pstream_write.h                                |    18 +-
 src/{pthread_debug.c => pthread_debug.cc}          |     0
 src/{readline.c => readline.cc}                    |     0
 src/{realtime.c => realtime.cc}                    |     0
 src/remap.h                                        |     1 -
 ...emap_bicubic_scrip.c => remap_bicubic_scrip.cc} |     0
 ...ap_bilinear_scrip.c => remap_bilinear_scrip.cc} |     0
 src/{remap_conserv.c => remap_conserv.cc}          |    16 +-
 ...emap_conserv_scrip.c => remap_conserv_scrip.cc} |     0
 src/{remap_distwgt.c => remap_distwgt.cc}          |     0
 src/{remap_scrip_io.c => remap_scrip_io.cc}        |     0
 ...ap_search_latbins.c => remap_search_latbins.cc} |    98 +-
 ...{remap_search_reg2d.c => remap_search_reg2d.cc} |     0
 src/{remap_store_link.c => remap_store_link.cc}    |     0
 ...tore_link_cnsrv.c => remap_store_link_cnsrv.cc} |     0
 src/{remaplib.c => remaplib.cc}                    |     9 +-
 src/{remapsort.c => remapsort.cc}                  |     6 +-
 ...emplate_parser.c => results_template_parser.cc} |     0
 src/{sellist.c => sellist.cc}                      |     0
 src/{specspace.c => specspace.cc}                  |     0
 src/{statistic.c => statistic.cc}                  |     0
 src/statistic.h                                    |     2 +-
 src/{stdnametable.c => stdnametable.cc}            |     0
 src/{table.c => table.cc}                          |     0
 src/{template_parser.c => template_parser.cc}      |    56 -
 src/{text.c => text.cc}                            |     0
 src/{timer.c => timer.cc}                          |     0
 src/{userlog.c => userlog.cc}                      |     0
 src/{util.c => util.cc}                            |    85 +-
 src/util.h                                         |    20 +-
 src/varlist.h                                      |    13 +
 src/{zaxis.c => zaxis.cc}                          |     0
 src/{zaxis_print.c => zaxis_print.cc}              |     0
 test/Ensstat.test.in                               |     4 +-
 test/Expr.test.in                                  |     2 +-
 test/Fldstat.test.in                               |     4 +-
 test/Gridboxstat.test.in                           |     4 +-
 test/Makefile.am                                   |     4 +-
 test/Makefile.in                                   |    37 +-
 test/{Vertstat.test.in => Mergetime.test.in}       |    24 +-
 test/Merstat.test.in                               |     4 +-
 test/Multiyearstat.test.in                         |     4 +-
 test/Runstat.test.in                               |     4 +-
 test/Seasstat.test.in                              |     4 +-
 test/Timselstat.test.in                            |     4 +-
 test/Timstat.test.in                               |     4 +-
 test/Vertstat.test.in                              |     4 +-
 test/{Multiyearstat.test.in => Ydrunstat.test.in}  |    12 +-
 test/Zonstat.test.in                               |     4 +-
 test/data/Makefile.am                              |    30 +-
 test/data/Makefile.in                              |    36 +-
 test/data/dayrange_ref                             |   Bin 0 -> 1612 bytes
 test/data/fldrange_ref                             |   Bin 0 -> 104 bytes
 test/data/mergetime_ref                            |   Bin 0 -> 104 bytes
 test/data/mergetime_y1                             |   Bin 0 -> 52 bytes
 test/data/mergetime_y12                            |   Bin 0 -> 104 bytes
 test/data/mergetime_y2                             |   Bin 0 -> 52 bytes
 test/data/merrange_ref                             |   Bin 0 -> 608 bytes
 test/data/monrange_ref                             |   Bin 0 -> 624 bytes
 test/data/runrange_ref                             |   Bin 0 -> 2548 bytes
 test/data/seasrange_ref                            |   Bin 0 -> 1092 bytes
 test/data/timrange_ref                             |   Bin 0 -> 52 bytes
 test/data/vertrange_ref                            |   Bin 0 -> 5040 bytes
 test/data/ydrunavg_ref                             |   Bin 0 -> 624 bytes
 test/data/ydrunmax_ref                             |   Bin 0 -> 624 bytes
 test/data/ydrunmean_ref                            |   Bin 0 -> 624 bytes
 test/data/ydrunmin_ref                             |   Bin 0 -> 624 bytes
 test/data/ydrunstd1_ref                            |   Bin 0 -> 624 bytes
 test/data/ydrunstd_ref                             |   Bin 0 -> 624 bytes
 test/data/ydrunsum_ref                             |   Bin 0 -> 624 bytes
 test/data/ydrunvar1_ref                            |   Bin 0 -> 624 bytes
 test/data/ydrunvar_ref                             |   Bin 0 -> 624 bytes
 test/data/yearrange_ref                            |   Bin 0 -> 260 bytes
 test/data/ymonrange_ref                            |   Bin 0 -> 624 bytes
 test/data/yseasrange_ref                           |   Bin 0 -> 208 bytes
 test/data/zonrange_ref                             |   Bin 0 -> 352 bytes
 456 files changed, 29855 insertions(+), 25546 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3ea7793..4b7f5c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,70 @@
-2017-05-15  Uwe Schulzweida
+2017-08-15  Uwe Schulzweida
+
+	* Using CDI library version 1.9.0
+	* Version 1.9.0 release
+
+2017-07-01  Uwe Schulzweida
+
+	setcodetab: added support for GRIB level type
+
+2017-06-28  Uwe Schulzweida
+
+	* expr: improve ternary operator, no brackets needed anymore.
+
+2017-06-27  Uwe Schulzweida
+
+	* expr: added support for clev in ifthenelse (bug fix).
+	* setpartabp: param key values without leading zeros (bug fix).
+
+2017-06-08  Uwe Schulzweida
+
+	* mergetime: wrong time information if first input file does not contain the first time step (bug introduce in 1.8.1) [Bug #7760]
+
+2017-06-04  Uwe Schulzweida
+
+	* selgridcell: read indices from mask
+
+2017-06-02  Uwe Schulzweida
+
+	* New operator ensrange: Ensemble range (ensmax-ensmin)
+	* New operator vertrange: Vertical range (vertmax-vertmin)
+	* New operator merrange: Meridional range (mermax-mermin)
+	* New operator gridboxrange: Gridbox range (gribboxmax-gridboxmin)
+
+2017-06-01  Uwe Schulzweida
+
+	* New operator yhourrange: Multi-year hourly range (yhourmax-yhourmin)
+	* New operator ydayrange: Multi-year daily range (ydaymax-ydaymin)
+	* New operator ymonrange: Multi-year monthly range (ymonmax-ymonmin)
+	* New operator yseasrange: Multi-year seasonal range (yseasmax-yseasmin)
+
+2017-05-30  Uwe Schulzweida
+
+	* New operator seasrange: seasonal range (seasmax-seasmin)
+	* New operator timselrange: time selection range (timmax-timmin)
+	* New operator runrange: running range (runmax-runmin)
+
+2017-05-26  Uwe Schulzweida
+
+	* eca_gsl: set default to northern hemisphere
+
+2017-05-23  Uwe Schulzweida
+
+	* expr: addeed support for variables starting with digits
+
+2017-05-22  Uwe Schulzweida
+
+	* settbounds: added support for hourly frequencies
+
+2017-05-17  Uwe Schulzweida
+
+	* gridToCurvilinear: Check that nvertex of regular lonlat grid is 2 [Bug #7744]
+
+2017-05-16  Uwe Schulzweida
+
+	* Renamed all .c files to .cc, code needs to be compiled with an ISO C++11 compiler!!!
+
+2017-05-16  Uwe Schulzweida
 
 	* Using CDI library version 1.8.2
 	* Version 1.8.2 release
diff --git a/Makefile.in b/Makefile.in
index e25bcae..47b7a81 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -93,6 +93,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/tap-driver.sh
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_options.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
@@ -234,13 +236,14 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 ENABLE_CDI_LIB = @ENABLE_CDI_LIB@
 ENABLE_CGRIBEX = @ENABLE_CGRIBEX@
-ENABLE_CXX = @ENABLE_CXX@
 ENABLE_DATA = @ENABLE_DATA@
 ENABLE_EXTRA = @ENABLE_EXTRA@
 ENABLE_GRIB = @ENABLE_GRIB@
@@ -258,6 +261,7 @@ FGREP = @FGREP@
 GREP = @GREP@
 GRIB_API_INCLUDE = @GRIB_API_INCLUDE@
 GRIB_API_LIBS = @GRIB_API_LIBS@
+HAVE_CXX11 = @HAVE_CXX11@
 HDF5_INCLUDE = @HDF5_INCLUDE@
 HDF5_LIBS = @HDF5_LIBS@
 HDF5_ROOT = @HDF5_ROOT@
diff --git a/NEWS b/NEWS
index 79e216f..2ead035 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,13 @@
 CDO NEWS
 --------
 
+Version 1.9.0 (15 September 2017):
+
+   New features:
+     * Added range operator to all statistic modules (e.g. yearrange, zonrange)
+   New operators:
+     *
+
 Version 1.8.2 (15 May 2017):
 
    Fixed bugs:
diff --git a/OPERATORS b/OPERATORS
index f5ca3d2..890c745 100644
--- a/OPERATORS
+++ b/OPERATORS
@@ -243,6 +243,7 @@ Operator catalog:
    Consecstat    consects        Consecutive Timesteps
    Ensstat       ensmin          Ensemble minimum
    Ensstat       ensmax          Ensemble maximum
+   Ensstat       ensrange        Ensemble range
    Ensstat       enssum          Ensemble sum
    Ensstat       ensmean         Ensemble mean
    Ensstat       ensavg          Ensemble average
@@ -258,6 +259,7 @@ Operator catalog:
    Ensval        ensbrs          Ensemble Brier score
    Fldstat       fldmin          Field minimum
    Fldstat       fldmax          Field maximum
+   Fldstat       fldrange        Field range
    Fldstat       fldsum          Field sum
    Fldstat       fldmean         Field mean
    Fldstat       fldavg          Field average
@@ -268,6 +270,7 @@ Operator catalog:
    Fldstat       fldpctl         Field percentiles
    Zonstat       zonmin          Zonal minimum
    Zonstat       zonmax          Zonal maximum
+   Zonstat       zonrange        Zonal range
    Zonstat       zonsum          Zonal sum
    Zonstat       zonmean         Zonal mean
    Zonstat       zonavg          Zonal average
@@ -278,6 +281,7 @@ Operator catalog:
    Zonstat       zonpctl         Zonal percentiles
    Merstat       mermin          Meridional minimum
    Merstat       mermax          Meridional maximum
+   Merstat       merrange        Meridional range
    Merstat       mersum          Meridional sum
    Merstat       mermean         Meridional mean
    Merstat       meravg          Meridional average
@@ -288,6 +292,7 @@ Operator catalog:
    Merstat       merpctl         Meridional percentiles
    Gridboxstat   gridboxmin      Gridbox minimum
    Gridboxstat   gridboxmax      Gridbox maximum
+   Gridboxstat   gridboxrange    Gridbox range
    Gridboxstat   gridboxsum      Gridbox sum
    Gridboxstat   gridboxmean     Gridbox mean
    Gridboxstat   gridboxavg      Gridbox average
@@ -297,6 +302,7 @@ Operator catalog:
    Gridboxstat   gridboxvar1     Gridbox variance (n-1)
    Vertstat      vertmin         Vertical minimum
    Vertstat      vertmax         Vertical maximum
+   Vertstat      vertrange       Vertical range
    Vertstat      vertsum         Vertical sum
    Vertstat      vertmean        Vertical mean
    Vertstat      vertavg         Vertical average
@@ -304,18 +310,20 @@ Operator catalog:
    Vertstat      vertstd1        Vertical standard deviation (n-1)
    Vertstat      vertvar         Vertical variance
    Vertstat      vertvar1        Vertical variance (n-1)
-   Timselstat    timselmin       Time range minimum
-   Timselstat    timselmax       Time range maximum
-   Timselstat    timselsum       Time range sum
-   Timselstat    timselmean      Time range mean
-   Timselstat    timselavg       Time range average
-   Timselstat    timselstd       Time range standard deviation
-   Timselstat    timselstd1      Time range standard deviation (n-1)
-   Timselstat    timselvar       Time range variance
-   Timselstat    timselvar1      Time range variance (n-1)
+   Timselstat    timselmin       Time selection minimum
+   Timselstat    timselmax       Time selection maximum
+   Timselstat    timselrange     Time selection range
+   Timselstat    timselsum       Time selection sum
+   Timselstat    timselmean      Time selection mean
+   Timselstat    timselavg       Time selection average
+   Timselstat    timselstd       Time selection standard deviation
+   Timselstat    timselstd1      Time selection standard deviation (n-1)
+   Timselstat    timselvar       Time selection variance
+   Timselstat    timselvar1      Time selection variance (n-1)
    Timselpctl    timselpctl      Time range percentiles
    Runstat       runmin          Running minimum
    Runstat       runmax          Running maximum
+   Runstat       runrange        Running range
    Runstat       runsum          Running sum
    Runstat       runmean         Running mean
    Runstat       runavg          Running average
@@ -326,6 +334,7 @@ Operator catalog:
    Runpctl       runpctl         Running percentiles
    Timstat       timmin          Time minimum
    Timstat       timmax          Time maximum
+   Timstat       timrange        Time range
    Timstat       timsum          Time sum
    Timstat       timmean         Time mean
    Timstat       timavg          Time average
@@ -336,6 +345,7 @@ Operator catalog:
    Timpctl       timpctl         Time percentiles
    Hourstat      hourmin         Hourly minimum
    Hourstat      hourmax         Hourly maximum
+   Hourstat      hourrange       Hourly range
    Hourstat      hoursum         Hourly sum
    Hourstat      hourmean        Hourly mean
    Hourstat      houravg         Hourly average
@@ -346,6 +356,7 @@ Operator catalog:
    Hourpctl      hourpctl        Hourly percentiles
    Daystat       daymin          Daily minimum
    Daystat       daymax          Daily maximum
+   Daystat       dayrange        Daily range
    Daystat       daysum          Daily sum
    Daystat       daymean         Daily mean
    Daystat       dayavg          Daily average
@@ -356,6 +367,7 @@ Operator catalog:
    Daypctl       daypctl         Daily percentiles
    Monstat       monmin          Monthly minimum
    Monstat       monmax          Monthly maximum
+   Monstat       monrange        Monthly range
    Monstat       monsum          Monthly sum
    Monstat       monmean         Monthly mean
    Monstat       monavg          Monthly average
@@ -367,6 +379,7 @@ Operator catalog:
    Yearmonstat   yearmonmean     Yearly mean from monthly data
    Yearstat      yearmin         Yearly minimum
    Yearstat      yearmax         Yearly maximum
+   Yearstat      yearrange       Yearly range
    Yearstat      yearsum         Yearly sum
    Yearstat      yearmean        Yearly mean
    Yearstat      yearavg         Yearly average
@@ -377,6 +390,7 @@ Operator catalog:
    Yearpctl      yearpctl        Yearly percentiles
    Seasstat      seasmin         Seasonal minimum
    Seasstat      seasmax         Seasonal maximum
+   Seasstat      seasrange       Seasonal range
    Seasstat      seassum         Seasonal sum
    Seasstat      seasmean        Seasonal mean
    Seasstat      seasavg         Seasonal average
@@ -387,6 +401,7 @@ Operator catalog:
    Seaspctl      seaspctl        Seasonal percentiles
    Yhourstat     yhourmin        Multi-year hourly minimum
    Yhourstat     yhourmax        Multi-year hourly maximum
+   Yhourstat     yhourrange      Multi-year hourly range
    Yhourstat     yhoursum        Multi-year hourly sum
    Yhourstat     yhourmean       Multi-year hourly mean
    Yhourstat     yhouravg        Multi-year hourly average
@@ -396,6 +411,7 @@ Operator catalog:
    Yhourstat     yhourvar1       Multi-year hourly variance (n-1)
    Ydaystat      ydaymin         Multi-year daily minimum
    Ydaystat      ydaymax         Multi-year daily maximum
+   Ydaystat      ydayrange       Multi-year daily range
    Ydaystat      ydaysum         Multi-year daily sum
    Ydaystat      ydaymean        Multi-year daily mean
    Ydaystat      ydayavg         Multi-year daily average
@@ -406,6 +422,7 @@ Operator catalog:
    Ydaypctl      ydaypctl        Multi-year daily percentiles
    Ymonstat      ymonmin         Multi-year monthly minimum
    Ymonstat      ymonmax         Multi-year monthly maximum
+   Ymonstat      ymonrange       Multi-year monthly range
    Ymonstat      ymonsum         Multi-year monthly sum
    Ymonstat      ymonmean        Multi-year monthly mean
    Ymonstat      ymonavg         Multi-year monthly average
@@ -416,6 +433,7 @@ Operator catalog:
    Ymonpctl      ymonpctl        Multi-year monthly percentiles
    Yseasstat     yseasmin        Multi-year seasonal minimum
    Yseasstat     yseasmax        Multi-year seasonal maximum
+   Yseasstat     yseasrange      Multi-year seasonal range
    Yseasstat     yseassum        Multi-year seasonal sum
    Yseasstat     yseasmean       Multi-year seasonal mean
    Yseasstat     yseasavg        Multi-year seasonal average
diff --git a/aclocal.m4 b/aclocal.m4
index 9580d75..5d21d17 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1244,6 +1244,8 @@ AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
 m4_include([m4/acx_options.m4])
+m4_include([m4/ax_cxx_compile_stdcxx.m4])
+m4_include([m4/ax_cxx_compile_stdcxx_11.m4])
 m4_include([m4/ax_pthread.m4])
 m4_include([m4/libtool.m4])
 m4_include([m4/ltoptions.m4])
diff --git a/cdo.settings.in b/cdo.settings.in
index 973b390..514d0c5 100644
--- a/cdo.settings.in
+++ b/cdo.settings.in
@@ -1,7 +1,9 @@
 {
+   "CXX"                : "@CXX@",
    "CC"                 : "@CC@",
    "CPP"                : "@CPP@",
    "CPPFLAGS"           : "@CPPFLAGS@",
+   "CXXFLAGS"           : "@CXXFLAGS@",
    "CFLAGS"             : "@CFLAGS@",
    "LDFLAGS"            : "@LDFLAGS@",
    "LIBS"               : "@LIBS@",
diff --git a/cdo.spec b/cdo.spec
index 1795941..96f3a4a 100644
--- a/cdo.spec
+++ b/cdo.spec
@@ -4,7 +4,7 @@
 
 Name:           cdo
 #BuildRequires:  
-Version:        1.8.2
+Version:        1.9.0rc1
 Release:        1
 Summary:        Climate Data Operators
 License:        GNU GENERAL PUBLIC LICENSE Version 2, June 1991
diff --git a/config/default b/config/default
index f0f6c9f..f6e47a7 100755
--- a/config/default
+++ b/config/default
@@ -24,7 +24,7 @@ do
   shift
 done
 #
-if test -z "$COMP" ; then COMP=gcc ; fi
+if test -z "$COMP" ; then COMP=gnu ; fi
 #
 set -x
 #
@@ -33,41 +33,50 @@ case "${HOSTNAME}" in
     bailung*|d133*|d134*)
         CDOLIBS="--enable-nearpt3 \
                  --with-fftw3 \
-                 --with-grib_api=$HOME/local/grib_api-1.14.7aec \
-                 --with-netcdf=$HOME/local/netcdf-c-4.3.3.1-threadsafe \
-                 --with-hdf5=$HOME/local/hdf5-1.8.15-threadsafe \
+                 --with-eccodes=$HOME/local/eccodes-2.3.0 \
+                 --with-netcdf=$HOME/local/netcdf-4.4.1.1 \
+                 --with-hdf5=$HOME/local/hdf5-1.8.19-threadsafe \
                  --with-udunits2=/opt/local \
                  --with-curl=/opt/local \
                  --with-libxml2=/usr \
-                 --with-magics=$HOME/local/Magics-2.25.3 \
                  --with-proj=/opt/local \
-                 --with-szlib=$HOME/local/libaec-0.3.2"
+                 --with-szlib=$HOME/local"
+#                 --with-magics=$HOME/local/Magics-2.25.3 \
 
-        if  test "$COMP" = icpc ; then
-	  ${CONFPATH}configure --enable-cxx \
-                    $CDOLIBS \
-	            CC=icc CXX="icpc --std=c++11" CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
-        elif  test "$COMP" = icc ; then
-	  ${CONFPATH}configure  \
-                    $CDOLIBS \
-	            CC=icc CFLAGS="-g -Wall -Wwrite-strings -O2 -qopt-report=5 -march=native"
-        elif  test "$COMP" = clang++ ; then
-	  ${CONFPATH}configure --enable-cxx \
+        if  test "$COMP" = intel ; then
+	  ${CONFPATH}configure \
                     $CDOLIBS \
-	            CC=clang CXX="clang++ --std=c++11" CFLAGS="-g -Wall -O3"
+                    LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib -Wl,-rpath,/opt/intel/lib" \
+	            CXX=icpc CXXFLAGS="-g -Wall -O2 -qopt-report=5 -march=native" \
+	            CC=icc   CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
         elif  test "$COMP" = clang ; then
-	  ${CONFPATH}configure  \
+	  ${CONFPATH}configure --prefix=$HOME/local \
+                    --enable-maintainer-mode \
                     $CDOLIBS \
-	            CC=clang CFLAGS="-g -Wall -Wwrite-strings -O3"
-        elif  test "$COMP" = g++ ; then
-	  ${CONFPATH}configure --enable-cxx \
+                    LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib" \
+	            CXX=clang++ CXXFLAGS="-g -Wall -O3" \
+	            CC=clang    CFLAGS="-g -Wall -O3"
+        elif  test "$COMP" = gnu4.9 ; then
+	  ${CONFPATH}configure --prefix=$HOME/local \
+                    --enable-maintainer-mode \
+                    $CDOLIBS \
+                    LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib" \
+	            CXX=g++-mp-4.9 CXXFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native" \
+                    CC=gcc-mp-4.9  CFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native"
+        elif  test "$COMP" = gnu5 ; then
+	  ${CONFPATH}configure --prefix=$HOME/local \
+                    --enable-maintainer-mode \
                     $CDOLIBS \
-	            CC=gcc CXX="g++ --std=c++11" CFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native"
-        elif  test "$COMP" = gcc ; then
+                    LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib" \
+	            CXX=g++-mp-5 CXXFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native" \
+                    CC=gcc-mp-5  CFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native"
+        elif  test "$COMP" = gnu ; then
 	  ${CONFPATH}configure --prefix=$HOME/local \
                     --enable-maintainer-mode \
                     $CDOLIBS \
-	            CC=gcc CFLAGS="-g -pipe -Wall -W -Wfloat-equal -Wwrite-strings -pedantic -O3 -march=native -fstack-protector"
+                    LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib" \
+	            CXX=g++ CXXFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native" \
+                    CC=gcc  CFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3 -march=native"
 #                    --with-libxml2=/usr 
 #                    --with-magics=/Users/m214003/local/magics-2.14.9
         else
@@ -76,51 +85,44 @@ case "${HOSTNAME}" in
 	;;
     hama*)
 #        CDOLIBS="--with-fftw3 \
-#                 --with-netcdf=/opt/local \
-#                 --with-hdf5=/opt/local \
-#                 --with-szlib=$HOME/local \
-#                 --with-proj=/opt/local \
 #                 --with-cmor=/Users/m214003/work/CMOR \
 #                 --with-magics=$HOME/local/magics-2.25.3 \
 #                 --with-curl=/opt/local"
         CDOLIBS="--enable-nearpt3 \
                  --with-fftw3 \
                  --with-szlib=$HOME/local \
-                 --with-grib_api=$HOME/local/grib_api-1.21.0 \
+                 --with-eccodes=$HOME/local/eccodes-2.3.0 \
                  --with-netcdf=$HOME/local/netcdf-c-4.4.1.1 \
                  --with-hdf5=$HOME/local/hdf5-1.8.18 \
                  --with-libxml2=/opt/local \
                  --with-proj=/opt/local"
 
-        if  test "$COMP" = icpc ; then
-	  ${CONFPATH}configure --enable-cxx --prefix=$HOME/local \
-                    $CDOLIBS \
-	            CC=icc CXX=icpc CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native" CXX=icpc
-        elif  test "$COMP" = icc ; then
-	  ${CONFPATH}configure \
+        if  test "$COMP" = intel ; then
+	  ${CONFPATH}configure --prefix=$HOME/local --disable-openmp \
                     $CDOLIBS \
-	            CC=icc CFLAGS="-g -Wall -Wwrite-strings -O2 -qopt-report=5 -march=native"
-        elif  test "$COMP" = clang++ ; then
-	  ${CONFPATH}configure --enable-cxx \
-                    $CDOLIBS \
-	            CC=clang CXX=clang++ CFLAGS="-g -Wall -O3"
+	            CXX=icpc CXXFLAGS="-g -Wall -O2 -qopt-report=5 -march=native" \
+	            CC=icc   CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
         elif  test "$COMP" = clang ; then
-	  ${CONFPATH}configure  \
+	  ${CONFPATH}configure \
                     $CDOLIBS \
-	            CC=clang CFLAGS="-g -Wall -Wwrite-strings -Ofast -march=native"
-        elif  test "$COMP" = pgcc ; then
-	  ${CONFPATH}configure  \
+	            CXX=clang++ CXXFLAGS="-g -Wall -pedantic -O3" \
+	            CC=clang    CFLAGS="-g -Wall -pedantic -O3"
+        elif  test "$COMP" = clang4 ; then
+	  ${CONFPATH}configure \
                     $CDOLIBS \
-	            CC=pgcc CFLAGS="-g -fast"
-        elif  test "$COMP" = g++ ; then
-	  ${CONFPATH}configure --enable-cxx \
+	            CXX=clang++-mp-4.0 CXXFLAGS="-g -Wall -pedantic -O3" \
+	            CC=clang-mp-4.0    CFLAGS="-g -Wall -pedantic -O3"
+        elif  test "$COMP" = pgi ; then
+	  ${CONFPATH}configure --disable-openmp \
                     $CDOLIBS \
-	            CC=gcc CXX=g++ CFLAGS="-g -Wall -W -Wfloat-equal -pedantic -O3"
+	            CXX=pgc++ CXXFLAGS="-g -fast" \
+	            CC=pgcc   CFLAGS="-g -fast"
         else
 	  ${CONFPATH}configure --prefix=$HOME/local \
                     --enable-maintainer-mode \
-                    $CDOLIBS \
-	            CC=gcc CFLAGS="-g -std=c11 -pipe -Wall -Wpointer-arith -Wwrite-strings -W -Wfloat-equal -pedantic -O3 -march=native -Wa,-q -fstack-protector -funsigned-char"
+                    $CDOLIBS LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib" \
+	            CXX=g++ CXXFLAGS="-g -pipe -Wall -W -Wfloat-equal -pedantic -O3 -march=native -Wa,-q -fstack-protector" \
+	            CC=gcc  CFLAGS="-g -pipe -Wall -W -Wfloat-equal -pedantic -O3 -march=native -Wa,-q -fstack-protector"
 #                    --with-libxml2=/usr \
 #                    --with-magics=/Users/m214003/local/Magics-2.18.14nio \
         fi
@@ -175,50 +177,6 @@ case "${HOSTNAME}" in
 	            CC=gcc CFLAGS="-g -pipe -Wall -W -Wfloat-equal -pedantic -O3 -march=native -fstack-protector -Wa,-q"
         fi
 	;;
-# x86_64-squeeze-x64-linux
-    thunder*)
-        CDOLIBS="--with-grib_api=/sw/squeeze-x64/grib_api-1.13.0-static-gccsys \
-                 --with-netcdf=/sw/squeeze-x64/netcdf-4.2-static \
-                 --with-hdf5=/sw/squeeze-x64/hdf5-1.8.8-static \
-                 --with-szlib=/sw/squeeze-x64/libaec-0.3.2-gcc48 \
-                 --with-udunits2=/sw/squeeze-x64/udunits-2.1.19 \
-                 --with-proj=/sw/squeeze-x64/proj-4.7.0 LIBS=-lz"
-
-        if  test "$COMP" = icpc ; then
-          ${CONFPATH}configure --enable-cxx --prefix=$HOME/local --exec_prefix=$HOME/local/thunder \
-                    --with-fftw3 \
-                    $CDOLIBS \
-	            CC=icc CXX=icpc CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
-        elif  test "$COMP" = icc ; then
-          ${CONFPATH}configure --prefix=$HOME/local --exec_prefix=$HOME/local/thunder \
-                    --with-fftw3 \
-                    $CDOLIBS \
-	            CC=icc CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
-        elif  test "$COMP" = pgcc ; then
-          ${CONFPATH}configure --prefix=$HOME/local --exec_prefix=$HOME/local/thunder \
-                    $CDOLIBS \
-	            CC=pgcc CFLAGS="-g -fast"
-        elif  test "$COMP" = clang ; then
-          ${CONFPATH}configure              --prefix=$HOME/local --exec_prefix=$HOME/local/thunder \
-                    --with-fftw3 \
-                    $CDOLIBS \
-	            CC=clang CXX=clang++ CFLAGS="-g -O2"
-        elif  test "$COMP" = clang++ ; then
-          ${CONFPATH}configure --enable-cxx --prefix=$HOME/local --exec_prefix=$HOME/local/thunder \
-                    --with-fftw3 \
-                    $CDOLIBS \
-	            CC=clang CXX=clang++ CFLAGS="-g -O2"
-        elif  test "$COMP" = g++ ; then
-	  ${CONFPATH}configure --enable-cxx \
-                    $CDOLIBS \
-	            CC=gcc CXX=g++ CFLAGS="-g -Wall -O3"
-	else
-          ${CONFPATH}configure --prefix=$HOME/local --exec_prefix=$HOME/local/thunder \
-                    --with-fftw3 \
-                    $CDOLIBS \
-                    CC=gcc CFLAGS='-g -Wall -O3'
-	fi
-	;;
 # jessie workstation x64
     breeze*)
         CDOLIBS="--with-grib_api=/sw/jessie-x64/grib_api-1.14.3-static-gccsys \
@@ -271,20 +229,23 @@ case "${HOSTNAME}" in
 #                 --with-magics=/sw/rhel6-x64/graphics/magicsxx-2.18.15-gfxonly-gcc48 \
 #                 --with-cmor=/sw/rhel6-x64/cmor-2.9.2-shared-gcc48 \
 
-        if  test "$COMP" = icc ; then
+        if  test "$COMP" = intel ; then
           ${CONFPATH}configure --prefix=$HOME/local \
                     --with-fftw3 \
                     $CDOLIBS \
-	            CC=icc CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
-        elif  test "$COMP" = pgcc ; then
+	            CXX=icpc CXXFLAGS="-g -Wall -O2 -qopt-report=5 -march=native" \
+	            CC=icc   CFLAGS="-g -Wall -O2 -qopt-report=5 -march=native"
+        elif  test "$COMP" = pgi ; then
           ${CONFPATH}configure --disable-openmp \
                     $CDOLIBS \
-	            CC=pgcc CFLAGS="-g -fast"
+	            CXX=pgc++ CXXFLAGS="-g -fast" \
+	            CC=pgcc   CFLAGS="-g -fast"
 	else
           ${CONFPATH}configure --prefix=$HOME/local \
                     --with-fftw3 \
                     $CDOLIBS \
-                    CC=gcc CFLAGS='-g -Wall -O3 -march=native -mavx2'
+                    CXX=g++ CXXFLAGS='-g -Wall -O3 -march=native -mavx2' \
+                    CC=gcc  CFLAGS='-g -Wall -O3 -march=native -mavx2'
 	fi
 	;;
 # x86_64-unknown-linux-gnu
@@ -429,62 +390,6 @@ case "${HOSTNAME}" in
                     --with-szlib=$HOME/local/solaris10-x86 \
                     CC=cc CFLAGS="-g -mt -fast"
 	;;
-# sx6-nec-superux12.2
-    cs*)
-	${CONFPATH}configure --prefix=$HOME/local \
-         	    --with-netcdf=/pool/netcdf/netcdf-3.6.0-p1 \
-		    CC=cc \
-                    CFLAGS="-O -Onooverlap,restrict=all -pvctl,fullmsg,noassume,loopcnt=1000000"
-	;;
-    sx6)
-	${CONFPATH}configure --host=sx6 --prefix=$HOME/local \
-                    --with-netcdf=/pool/SX-6/netcdf/netcdf-3.6.0-p1 \
-		    CC=sxcc AR=sxar \
-                    CFLAGS="-O -Onooverlap,restrict=all -pvctl,fullmsg,noassume,loopcnt=1000000"
-	;;
-    es)
-	${CONFPATH}configure --host=sx6 --prefix=$HOME/local/ES \
-                    --with-netcdf=/S/n010/home010/c0148/local/SX \
-		    CC=escc AR=esar \
-                    CFLAGS="-O -Onooverlap,restrict=all -pvctl,fullmsg,noassume,loopcnt=1000000"
-	;;
-# x86_64-unknown-linux-gnu (rhel55)
-    wizard*)
-        LDFLAGS="-lpng"
-        export LDFLAGS
-	${CONFPATH}configure --prefix=$HOME/local/centos58-x64 \
-                    --with-proj=/sw/centos58-x64/proj-4.7.0 \
-                    --with-hdf5=/sw/centos58-x64/hdf5-1.8.10-patch1 \
-                    --with-udunits2=/sw/centos58-x64/udunits-2.1.19 \
-                    --with-grib_api=/sw/centos58-x64/grib_api-1.12.3 \
-                    --with-netcdf=/sw/centos58-x64/netcdf-4.2.1.1 \
-                    --with-szlib=/sw/centos58-x64/szip-2.1 \
-	            CC=gcc CFLAGS="-g -Wall -O3"
-	;;
-# powerpc-ibm-aix5.3.0.0
-    blizzard*)
-	${CONFPATH}configure --prefix=$HOME/local \
-                    --with-netcdf=/sw/aix61/netcdf-4.2-threadsafe \
-                    --with-hdf5=/sw/aix61/hdf5-1.8.8-threadsafe \
-                    --with-szlib=/sw/aix61/szip-2.1-threadsafe \
-                    --with-udunits2=/sw/aix61/udunits-2.1.14 \
-                    --with-proj=/sw/aix53/proj-4.6.1 \
-                    --with-curl=/sw/aix61/curl-7.21.3 \
-                    AR="ar -X 64"  LDFLAGS="-brtl -R/sw/aix61/openssl-1.0.0d/lib:/sw/aix61/zlib-1.2.6/lib" \
- 	            CC=xlc_r CFLAGS="-g -O3 -q64 -qhot -qstrict -qarch=auto -qtune=auto -qsmp=omp -DHAVE_MMAP -qthreaded"
-	;;
-# powerpc-ibm-aix6.0.0.0
-    c1a*)
-	${CONFPATH}configure --prefix=$HOME/local \
-                    --with-netcdf=/usr/local/apps/netcdf/3.6.3/LP64 \
-                    --with-hdf5=/usr/local/apps/hdf5/1.8.1/LP64 \
-                    --with-szlib=/usr/local/apps/szip/2.1/LP64 \
-                    AR="ar -X 64"  LDFLAGS="-brtl" \
-	            CC=xlc_r CFLAGS="-g -O3 -q64 -qhot -qstrict -qarch=auto -qtune=auto -qsmp=omp -DHAVE_MMAP -qthreaded"
-	;;
-    *)
-	echo "configuration for hostname $HOSTNAME not found!"
-	;;
 # x86_64-unknown-linux-gnu (cray)
     brisi*)
         ${CONFPATH}configure  \
diff --git a/configure b/configure
index 162de1a..48bbd92 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for cdo 1.8.2.
+# Generated by GNU Autoconf 2.68 for cdo 1.9.0rc1.
 #
 # Report bugs to <http://mpimet.mpg.de/cdo>.
 #
@@ -570,8 +570,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='cdo'
 PACKAGE_TARNAME='cdo'
-PACKAGE_VERSION='1.8.2'
-PACKAGE_STRING='cdo 1.8.2'
+PACKAGE_VERSION='1.9.0rc1'
+PACKAGE_STRING='cdo 1.9.0rc1'
 PACKAGE_BUGREPORT='http://mpimet.mpg.de/cdo'
 PACKAGE_URL=''
 
@@ -621,7 +621,6 @@ AM_CPPFLAGS
 CLIBS
 CLDFLAGS
 FCFLAGS
-ENABLE_CXX
 BUILD_AVX2_TESTS_FALSE
 BUILD_AVX2_TESTS_TRUE
 BUILD_AVX_TESTS_FALSE
@@ -654,6 +653,8 @@ ENABLE_GRIB
 ENABLE_GRIBAPI
 GRIB_API_LIBS
 GRIB_API_INCLUDE
+ECCODES_LIBS
+ECCODES_INCLUDE
 CMOR_LIBS
 UDUNITS_INCLUDE
 UDUNITS_LDFLAGS
@@ -681,14 +682,15 @@ ENABLE_DATA
 SYSTEM_TYPE
 HOST_NAME
 USER_NAME
+AS
+OPENMP_CFLAGS
+HAVE_CXX11
 CXXCPP
 am__fastdepCXX_FALSE
 am__fastdepCXX_TRUE
 CXXDEPMODE
 ac_ct_CXX
 CXXFLAGS
-AS
-OPENMP_CFLAGS
 CXX
 BASH
 CPP
@@ -828,6 +830,7 @@ with_hdf5
 with_netcdf
 with_udunits2
 with_cmor
+with_eccodes
 with_grib_api
 enable_grib
 enable_cgribex
@@ -842,7 +845,6 @@ with_libxml2
 enable_cdi_lib
 enable_all_static
 enable_hirlam_extensions
-enable_cxx
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1399,7 +1401,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures cdo 1.8.2 to adapt to many kinds of systems.
+\`configure' configures cdo 1.9.0rc1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1469,7 +1471,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of cdo 1.8.2:";;
+     short | recursive ) echo "Configuration of cdo 1.9.0rc1:";;
    esac
   cat <<\_ACEOF
 
@@ -1505,7 +1507,6 @@ Optional Features:
                           [default=no]
   --enable-hirlam-extensions
                           HIRLAM extensions [default=no]
-  --enable-cxx            Use CXX as default compiler [default=no]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1527,6 +1528,9 @@ Optional Packages:
   --with-udunits2=<directory>
                           Specify location of UDUNITS2 library.
   --with-cmor=<directory> Specify location of CMOR library.
+  --with-eccodes=<yes|no|directory> (default=no)
+                          location of ECCODES library (lib and include
+                          subdirs)
   --with-grib_api=<yes|no|directory> (default=no)
                           location of GRIB_API library (lib and include
                           subdirs)
@@ -1619,7 +1623,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-cdo configure 1.8.2
+cdo configure 1.9.0rc1
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2212,7 +2216,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by cdo $as_me 1.8.2, which was
+It was created by cdo $as_me 1.9.0rc1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -3161,7 +3165,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='cdo'
- VERSION='1.8.2'
+ VERSION='1.9.0rc1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12469,127 +12473,27 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
-$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
-if ${ac_cv_c_restrict+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_c_restrict=no
-   # The order here caters to the fact that C++ does not require restrict.
-   for ac_kw in __restrict __restrict__ _Restrict restrict; do
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-typedef int * int_ptr;
-	int foo (int_ptr $ac_kw ip) {
-	return ip[0];
-       }
-int
-main ()
-{
-int s[1];
-	int * $ac_kw t = s;
-	t[0] = 0;
-	return foo(t)
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_restrict=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-     test "$ac_cv_c_restrict" != no && break
-   done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
-$as_echo "$ac_cv_c_restrict" >&6; }
-
- case $ac_cv_c_restrict in
-   restrict) ;;
-   no) $as_echo "#define restrict /**/" >>confdefs.h
- ;;
-   *)  cat >>confdefs.h <<_ACEOF
-#define restrict $ac_cv_c_restrict
-_ACEOF
- ;;
- esac
-
-
-  OPENMP_CFLAGS=
-  # Check whether --enable-openmp was given.
-if test "${enable_openmp+set}" = set; then :
-  enableval=$enable_openmp;
-fi
-
-  if test "$enable_openmp" != no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5
-$as_echo_n "checking for $CC option to support OpenMP... " >&6; }
-if ${ac_cv_prog_c_openmp+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifndef _OPENMP
- choke me
-#endif
-#include <omp.h>
-int main () { return omp_get_num_threads (); }
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_prog_c_openmp='none needed'
-else
-  ac_cv_prog_c_openmp='unsupported'
-	  	  	  	  	  	  	  	  	  	  	  	  	  for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp; do
-	    ac_save_CFLAGS=$CFLAGS
-	    CFLAGS="$CFLAGS $ac_option"
-	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifndef _OPENMP
- choke me
-#endif
-#include <omp.h>
-int main () { return omp_get_num_threads (); }
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_prog_c_openmp=$ac_option
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-	    CFLAGS=$ac_save_CFLAGS
-	    if test "$ac_cv_prog_c_openmp" != unsupported; then
-	      break
-	    fi
-	  done
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5
-$as_echo "$ac_cv_prog_c_openmp" >&6; }
-    case $ac_cv_prog_c_openmp in #(
-      "none needed" | unsupported)
-	;; #(
-      *)
-	OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;;
-    esac
-  fi
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
+if ${ac_cv_prog_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -12598,7 +12502,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -12608,28 +12512,32 @@ IFS=$as_save_IFS
 
 fi
 fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+    test -n "$CXX" && break
+  done
 fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -12638,7 +12546,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -12648,17 +12556,21 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_AR" = x; then
-    AR=":"
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -12666,980 +12578,876 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    AR=$ac_ct_AR
+    CXX=$ac_ct_CXX
   fi
-else
-  AR="$ac_cv_prog_AR"
 fi
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}cpp", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cpp; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CPP"; then
-  ac_cv_prog_CPP="$CPP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CPP="${ac_tool_prefix}cpp"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
   fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
 done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-CPP=$ac_cv_prog_CPP
-if test -n "$CPP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
-if test -z "$ac_cv_prog_CPP"; then
-  ac_ct_CPP=$CPP
-  # Extract the first word of "cpp", so it can be a program name with args.
-set dummy cpp; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CPP"; then
-  ac_cv_prog_ac_ct_CPP="$ac_ct_CPP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CPP="cpp"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
 
-fi
-fi
-ac_ct_CPP=$ac_cv_prog_ac_ct_CPP
-if test -n "$ac_ct_CPP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CPP" >&5
-$as_echo "$ac_ct_CPP" >&6; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_compiler_gnu=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
 
-  if test "x$ac_ct_CPP" = x; then
-    CPP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CPP=$ac_ct_CPP
-  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
 else
-  CPP="$ac_cv_prog_CPP"
+  GXX=
 fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ld; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LD+:} false; then :
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$LD"; then
-  ac_cv_prog_LD="$LD" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_LD="${ac_tool_prefix}ld"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
-fi
-LD=$ac_cv_prog_LD
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
 
-fi
-if test -z "$ac_cv_prog_LD"; then
-  ac_ct_LD=$LD
-  # Extract the first word of "ld", so it can be a program name with args.
-set dummy ld; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LD"; then
-  ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_LD="ld"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_ct_LD=$ac_cv_prog_ac_ct_LD
-if test -n "$ac_ct_LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
-$as_echo "$ac_ct_LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
-  if test "x$ac_ct_LD" = x; then
-    LD=":"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
   else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LD=$ac_ct_LD
+    CXXFLAGS="-g"
   fi
 else
-  LD="$ac_cv_prog_LD"
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  ac_cv_prog_NM="$NM" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_NM="${ac_tool_prefix}nm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
   fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-NM=$ac_cv_prog_NM
-if test -n "$NM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
-$as_echo "$NM" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
 fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+depcc="$CXX"  am_compiler_list=
 
-fi
-if test -z "$ac_cv_prog_NM"; then
-  ac_ct_NM=$NM
-  # Extract the first word of "nm", so it can be a program name with args.
-set dummy nm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NM"; then
-  ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_NM="nm"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
-done
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
   done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_NM=$ac_cv_prog_ac_ct_NM
-if test -n "$ac_ct_NM"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
-$as_echo "$ac_ct_NM" >&6; }
+  cd ..
+  rm -rf conftest.dir
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  am_cv_CXX_dependencies_compiler_type=none
 fi
 
-  if test "x$ac_ct_NM" = x; then
-    NM=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    NM=$ac_ct_NM
-  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
 else
-  NM="$ac_cv_prog_NM"
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
 fi
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
+
+
+
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+
+      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
 do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
 
+else
+  # Broken: fails on valid input.
+continue
 fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
 fi
 
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
 
 fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+  CXXCPP=$ac_cv_prog_CXXCPP
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
 do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
 
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  # Broken: fails on valid input.
+continue
 fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-  if test "x$ac_ct_AR" = x; then
-    AR=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AR=$ac_ct_AR
-  fi
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
 else
-  AR="$ac_cv_prog_AR"
+  # Passes both tests.
+ac_preproc_ok=:
+break
 fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
 done
-  done
-IFS=$as_save_IFS
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
 
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AS="as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  _lt_caught_CXX_error=yes
 fi
 
-  if test "x$ac_ct_AS" = x; then
-    AS=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AS=$ac_ct_AS
-  fi
-else
-  AS="$ac_cv_prog_AS"
-fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
 
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+# Source file extension for C++ test sources.
+ac_ext=cpp
 
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
 
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
 
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL=":"
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
   else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
+    $as_unset lt_cv_prog_gnu_ld
   fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
   fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  compiler_CXX=$CC
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
 done
-  done
-IFS=$as_save_IFS
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  with_gnu_ld=no
 fi
 
-
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+if ${lt_cv_path_LD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
   done
-IFS=$as_save_IFS
-
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
 fi
 fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
-
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
 
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
 
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
 
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
 
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
 
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
 
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
 
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
 
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
 
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
 
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    hardcode_direct_CXX=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        always_export_symbols_CXX=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          allow_undefined_flag_CXX='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
-  test -n "$ac_ct_CXX" && break
-done
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
 
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   fi
 fi
-
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
   fi
+
 fi
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
+
+          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13648,3441 +13456,4622 @@ else
 int
 main ()
 {
-#ifndef __GNUC__
-       choke me
-#endif
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+if ac_fn_cxx_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GXX=yes
-else
-  GXX=
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
+
 fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+  aix_libpath=$lt_cv_aix_libpath__CXX
+fi
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-else
-  CXXFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    no_undefined_flag_CXX=' ${wl}-bernotok'
+	    allow_undefined_flag_CXX=' ${wl}-berok'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
 
-int
-main ()
-{
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	  ;;
+        esac
+        ;;
 
-else
-  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-	 CXXFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX=' '
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=yes
+	  file_list_spec_CXX='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=".dll"
+	  # FIXME: Setting linknames here is a bad hack.
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	  archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	    else
+	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	    fi~
+	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	    linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+	  enable_shared_with_static_runtimes_CXX=yes
+	  # Don't use ranlib
+	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
+	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+	    lt_tool_outputfile="@TOOL_OUTPUT@"~
+	    case $lt_outputfile in
+	      *.exe|*.EXE) ;;
+	      *)
+		lt_outputfile="$lt_outputfile.exe"
+		lt_tool_outputfile="$lt_tool_outputfile.exe"
+		;;
+	    esac~
+	    func_to_tool_file "$lt_outputfile"~
+	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	      $RM "$lt_outputfile.manifest";
+	    fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+	  allow_undefined_flag_CXX=unsupported
+	  always_export_symbols_CXX=no
+	  enable_shared_with_static_runtimes_CXX=yes
 
-int
-main ()
-{
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file (1st line
+	    # is EXPORTS), use it as is; otherwise, prepend...
+	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      cp $export_symbols $output_objdir/$soname.def;
+	    else
+	      echo EXPORTS > $output_objdir/$soname.def;
+	      cat $export_symbols >> $output_objdir/$soname.def;
+	    fi~
+	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    ld_shlibs_CXX=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  ac_cv_prog_cxx_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
   else
-    CXXFLAGS="-g"
+    whole_archive_flag_spec_CXX=''
   fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+
   else
-    CXXFLAGS=
+  ld_shlibs_CXX=no
   fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-depcc="$CXX"  am_compiler_list=
+	;;
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
 
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
 
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
 
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-	continue
-      else
-	break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
 
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
-fi
+      gnu*)
+        ;;
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
 
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='${wl}-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
 
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
 
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
 
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
 
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
 
-      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
-if test -z "$CXXCPP"; then
-  if ${ac_cv_prog_CXXCPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	      fi
+	    fi
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
 
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
 
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      old_archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+		$RANLIB $oldlib'
+	      archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
 
-else
-  _lt_caught_CXX_error=yes
-fi
+	    runpath_var=LD_RUN_PATH
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
 
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      compiler_needs_object_CXX=yes
 
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-compiler_needs_object_CXX=no
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_direct_absolute_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-reload_flag_CXX=$reload_flag
-reload_cmds_CXX=$reload_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
 
-# Source file extension for C++ test sources.
-ac_ext=cpp
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
 
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
 
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
 
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
 
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
 
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+	;;
 
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	ld_shlibs_CXX=no
+	;;
 
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='${wl}-E'
+	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
 
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
 
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
 
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
 
-# Allow CC to be a program name with arguments.
-compiler=$CC
+	    hardcode_libdir_separator_CXX=:
 
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
 
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
+	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	      hardcode_libdir_separator_CXX=:
 
-  ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
 
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
 
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
 
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=no
+	    case $host_os in
+	      solaris2.[0-5] | solaris2.[0-5].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=yes
 
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
+	    output_verbose_link_cmd='func_echo_all'
 
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
 
+	    # The C++ compiler must be used to create the archive.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
 
+	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
 
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='${wl}-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
 
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
 
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	no_undefined_flag_CXX='${wl}-z,text'
+	allow_undefined_flag_CXX='${wl}-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
 
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+	      '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+	      '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
 
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
 
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
+      vxworks*)
         # FIXME: insert proper C++ library support
         ld_shlibs_CXX=no
         ;;
-      aix[4-9]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
 
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
 
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_direct_absolute_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${wl}-f,'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test "$ld_shlibs_CXX" = no && can_build_shared=no
 
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[012]|aix4.[012].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    hardcode_direct_CXX=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    hardcode_minus_L_CXX=yes
-	    hardcode_libdir_flag_spec_CXX='-L$libdir'
-	    hardcode_libdir_separator_CXX=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
+    GCC_CXX="$GXX"
+    LD_CXX="$LD"
 
-        export_dynamic_flag_spec_CXX='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        always_export_symbols_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
 
-int
-main ()
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
 {
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
 
-fi
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
 
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
 
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
 
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath__CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
 
-int
-main ()
-{
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       fi
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+	 case ${prev} in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       prev=
+       ;;
 
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }'
-  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
-  fi
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
 
-fi
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
 
-  aix_libpath=$lt_cv_aix_libpath__CXX
-fi
+    *) ;; # Ignore the rest.
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    no_undefined_flag_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      whole_archive_flag_spec_CXX='$convenience'
-	    fi
-	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
+    esac
+  done
 
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  allow_undefined_flag_CXX=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
 
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	  ;;
-        esac
-        ;;
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX=' '
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=yes
-	  file_list_spec_CXX='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
-	  enable_shared_with_static_runtimes_CXX=yes
-	  # Don't use ranlib
-	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
-	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  hardcode_libdir_flag_spec_CXX='-L$libdir'
-	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
-	  allow_undefined_flag_CXX=unsupported
-	  always_export_symbols_CXX=no
-	  enable_shared_with_static_runtimes_CXX=yes
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
 
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    ld_shlibs_CXX=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
 
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
 
-  archive_cmds_need_lc_CXX=no
-  hardcode_direct_CXX=no
-  hardcode_automatic_CXX=yes
-  hardcode_shlibpath_var_CXX=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
 
-  else
-    whole_archive_flag_spec_CXX=''
-  fi
-  link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+solaris*)
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
     fi
+    ;;
+  esac
+  ;;
+esac
 
-  else
-  ld_shlibs_CXX=no
-  fi
 
-	;;
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
 
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
-        ;;
 
-      freebsd2.*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        ld_shlibs_CXX=no
-        ;;
 
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
 
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
 
-      gnu*)
-        ;;
 
-      haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        link_all_deplibs_CXX=yes
-        ;;
 
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
 
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
 
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
 
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_direct_absolute_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
 
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
 
-      interix[3-9]*)
-	hardcode_direct_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    link_all_deplibs_CXX=yes
-	    ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
 
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
 
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
-	      prelink_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      old_archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	    hardcode_libdir_separator_CXX=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      compiler_needs_object_CXX=yes
 
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
 
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
 
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-	;;
 
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-	esac
-	;;
 
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  hardcode_libdir_flag_spec_CXX='-R$libdir'
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
 
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-	;;
 
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
 
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  hardcode_direct_CXX=yes
-	  hardcode_shlibpath_var_CXX=no
-	  hardcode_direct_absolute_CXX=yes
-	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  ld_shlibs_CXX=no
-	fi
-	;;
 
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
 
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    hardcode_libdir_separator_CXX=:
 
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-		;;
-	    esac
 
-	    hardcode_libdir_separator_CXX=:
 
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
 
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	      hardcode_libdir_separator_CXX=:
 
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
 
-	    else
-	      # FIXME: insert proper C++ library support
-	      ld_shlibs_CXX=no
-	    fi
-	    ;;
-        esac
-        ;;
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
 
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
         ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
-	    ;;
-        esac
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
         ;;
+      esac
+      ;;
 
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    hardcode_libdir_flag_spec_CXX='-R$libdir'
-	    hardcode_shlibpath_var_CXX=no
-	    case $host_os in
-	      solaris2.[0-5] | solaris2.[0-5].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    link_all_deplibs_CXX=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
 	    ;;
-          gcx*)
+	  ghcx*)
 	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    lt_prog_compiler_pic_CXX='-pic'
 	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[0-5] | solaris2.[0-5].*) ;;
-		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
+	  *)
 	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
-	archive_cmds_need_lc_CXX=no
-	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
-	hardcode_libdir_separator_CXX=':'
-	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
 	case $cc_basename in
-          CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-	      '"$old_archive_cmds_CXX"
-	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-	      '"$reload_cmds_CXX"
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
 	    ;;
 	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    ;;
 	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
 	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    ld_shlibs_CXX=no
+	  *)
 	    ;;
-        esac
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
         ;;
-
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
       vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
+	;;
       *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
     esac
+  fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-    GCC_CXX="$GXX"
-    LD_CXX="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
 esac
 
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
 
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
-	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
-	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
-	 else
-	   predep_objects_CXX="$predep_objects_CXX $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
-	 else
-	   postdep_objects_CXX="$postdep_objects_CXX $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
 
-    esac
-  done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
 
-  # Clean up.
-  rm -f a.out a.exe
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
 else
-  echo "libtool.m4: error: problem compiling CXX test program"
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
 fi
 
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix[3-9]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
+fi
 
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
 
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
 
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
 
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
 
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
- compiler_lib_search_dirs_CXX=
-if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
 
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
 
 
 
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
 
 
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
 
 
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
 
+with_gnu_ld_CXX=$with_gnu_ld
 
 
 
 
 
 
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
 
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_CXX='-Bstatic'
-      fi
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
       ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic_CXX='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
 
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static_CXX=
-      ;;
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	lt_prog_compiler_pic_CXX='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
       ;;
     esac
-  else
-    case $host_os in
-      aix[4-9]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  lt_prog_compiler_static_CXX='-Bstatic'
-	else
-	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      lt_prog_compiler_pic_CXX='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      lt_prog_compiler_pic_CXX='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-qpic'
-	    lt_prog_compiler_static_CXX='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      lt_prog_compiler_pic_CXX='-KPIC'
-	      lt_prog_compiler_static_CXX='-Bstatic'
-	      lt_prog_compiler_wl_CXX='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    lt_prog_compiler_pic_CXX='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd*)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    lt_prog_compiler_wl_CXX='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    lt_prog_compiler_pic_CXX='-pic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux # correct to gnu/linux during the next big refactor
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
 	;;
       *)
-	lt_prog_compiler_can_build_shared_CXX=no
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
 	;;
     esac
   fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+   test "$inherit_rpath_CXX" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_restrict=no
+   # The order here caters to the fact that C++ does not require restrict.
+   for ac_kw in __restrict __restrict__ _Restrict restrict; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+typedef int * int_ptr;
+	int foo (int_ptr $ac_kw ip) {
+	return ip[0];
+       }
+int
+main ()
+{
+int s[1];
+	int * $ac_kw t = s;
+	t[0] = 0;
+	return foo(t)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     test "$ac_cv_c_restrict" != no && break
+   done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+   restrict) ;;
+   no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+   *)  cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+  ax_cxx_compile_alternatives="11 0x"    ax_cxx_compile_cxx11_required=true
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+  ac_success=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
+$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
+if ${ax_cv_cxx_compile_cxx11+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
 
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
+  namespace test_uniform_initialization
+  {
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx11=yes
 else
-  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
+  ax_cv_cxx_compile_cxx11=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
-lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
+$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
+  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
+    ac_success=yes
+  fi
 
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+    if test x$ac_success = xno; then
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      switch="-std=gnu++${alternative}"
+      cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval \${$cachevar+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
+  ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
 
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
 
-fi
+#ifndef __cplusplus
 
+#error "This is not a C++ compiler"
 
+#elif __cplusplus < 201103L
 
+#error "This is not a C++11 compiler"
 
+#else
 
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+namespace cxx11
+{
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+  namespace test_static_assert
+  {
 
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-fi
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
 
+  }
 
+  namespace test_final_override
+  {
 
+    struct Base
+    {
+      virtual void f() {}
+    };
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
+  }
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+  namespace test_double_right_angle_brackets
+  {
 
+    template < typename T >
+    struct check {};
 
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+  }
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+  }
 
+  namespace test_type_deduction
+  {
 
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
 
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
 
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
 
+  }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+  namespace test_noexcept
+  {
 
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  case $host_os in
-  aix[4-9]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*)
-      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-      ;;
-    *)
-      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-      ;;
-    esac
-    ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
+    int f() { return 0; }
+    int g() noexcept { return 0; }
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
 
-with_gnu_ld_CXX=$with_gnu_ld
+  }
 
+  namespace test_constexpr
+  {
 
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
 
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
 
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
 
+  }
 
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
+  namespace test_rvalue_references
+  {
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  $RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
 
-	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$lt_prog_compiler_wl_CXX
-	  pic_flag=$lt_prog_compiler_pic_CXX
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-	  allow_undefined_flag_CXX=
-	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-	  then
-	    lt_cv_archive_cmds_need_lc_CXX=no
-	  else
-	    lt_cv_archive_cmds_need_lc_CXX=yes
-	  fi
-	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
-      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
-      ;;
-    esac
-  fi
-  ;;
-esac
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
 
+  }
 
+  namespace test_variadic_templates
+  {
 
+    template <int...>
+    struct sum;
 
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
 
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
 
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
 
+  }
 
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
 
+    struct foo {};
 
+    template<typename T>
+    using member = typename T::member_type;
 
+    template<typename T>
+    void func(...) {}
 
+    template<typename T>
+    void func(member<T>*) {}
 
+    void test();
 
+    void test() { func<foo>(0); }
 
+  }
 
+}  // namespace cxx11
 
+#endif  // __cplusplus >= 201103L
 
 
 
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi
 
+    if test x$ac_success = xno; then
+                for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+        cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval \${$cachevar+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
 
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
 
+#ifndef __cplusplus
 
+#error "This is not a C++ compiler"
 
+#elif __cplusplus < 201103L
 
+#error "This is not a C++11 compiler"
 
+#else
 
+namespace cxx11
+{
 
+  namespace test_static_assert
+  {
 
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
 
+  }
 
+  namespace test_final_override
+  {
 
+    struct Base
+    {
+      virtual void f() {}
+    };
 
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
 
+  }
 
+  namespace test_double_right_angle_brackets
+  {
 
+    template < typename T >
+    struct check {};
 
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
 
+  }
 
+  namespace test_decltype
+  {
 
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
 
+  }
 
+  namespace test_type_deduction
+  {
 
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
 
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
 
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
 
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
 
+  }
 
+  namespace test_noexcept
+  {
 
+    int f() { return 0; }
+    int g() noexcept { return 0; }
 
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
 
+  }
 
+  namespace test_constexpr
+  {
 
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
 
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
 
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
 
+  }
 
+  namespace test_rvalue_references
+  {
 
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
 
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
 
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
+  }
 
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
+  namespace test_uniform_initialization
+  {
 
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
 
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
 
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
+  }
 
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
+  namespace test_lambdas
+  {
 
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
 
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
 
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
 
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
+  }
 
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+  namespace test_variadic_templates
+  {
 
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
+    template <int...>
+    struct sum;
 
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
 
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
 
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
 
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
+  }
 
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
 
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
+    struct foo {};
 
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
+    template<typename T>
+    using member = typename T::member_type;
 
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
+    template<typename T>
+    void func(...) {}
 
-gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
+    template<typename T>
+    void func(member<T>*) {}
 
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
+    void test();
 
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval $cachevar=yes
+else
+  eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+           CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        if eval test x\$$cachevar = xyes; then
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  if test x$ax_cxx_compile_cxx11_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX11=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
+$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
+  else
+    HAVE_CXX11=1
 
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
+$as_echo "#define HAVE_CXX11 1" >>confdefs.h
 
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux # correct to gnu/linux during the next big refactor
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
+  fi
+
+
+
+
+  OPENMP_CFLAGS=
+  # Check whether --enable-openmp was given.
+if test "${enable_openmp+set}" = set; then :
+  enableval=$enable_openmp;
+fi
+
+  if test "$enable_openmp" != no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5
+$as_echo_n "checking for $CC option to support OpenMP... " >&6; }
+if ${ac_cv_prog_c_openmp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifndef _OPENMP
+ choke me
+#endif
+#include <omp.h>
+int main () { return omp_get_num_threads (); }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_prog_c_openmp='none needed'
+else
+  ac_cv_prog_c_openmp='unsupported'
+	  	  	  	  	  	  	  	  	  	  	  	  	  for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp; do
+	    ac_save_CFLAGS=$CFLAGS
+	    CFLAGS="$CFLAGS $ac_option"
+	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifndef _OPENMP
+ choke me
+#endif
+#include <omp.h>
+int main () { return omp_get_num_threads (); }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_prog_c_openmp=$ac_option
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	    CFLAGS=$ac_save_CFLAGS
+	    if test "$ac_cv_prog_c_openmp" != unsupported; then
+	      break
+	    fi
+	  done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5
+$as_echo "$ac_cv_prog_c_openmp" >&6; }
+    case $ac_cv_prog_c_openmp in #(
+      "none needed" | unsupported)
+	;; #(
+      *)
+	OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;;
     esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
+  fi
 
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
 
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
-	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
 fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_AR" = x; then
+    AR=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
 fi
 
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cpp", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cpp; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CPP"; then
+  ac_cv_prog_CPP="$CPP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CPP="${ac_tool_prefix}cpp"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
+fi
+fi
+CPP=$ac_cv_prog_CPP
+if test -n "$CPP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+
+fi
+if test -z "$ac_cv_prog_CPP"; then
+  ac_ct_CPP=$CPP
+  # Extract the first word of "cpp", so it can be a program name with args.
+set dummy cpp; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CPP"; then
+  ac_cv_prog_ac_ct_CPP="$ac_ct_CPP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CPP="cpp"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
+done
+  done
+IFS=$as_save_IFS
 
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
+fi
+fi
+ac_ct_CPP=$ac_cv_prog_ac_ct_CPP
+if test -n "$ac_ct_CPP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CPP" >&5
+$as_echo "$ac_ct_CPP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
+  if test "x$ac_ct_CPP" = x; then
+    CPP=":"
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CPP=$ac_ct_CPP
   fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
+else
+  CPP="$ac_cv_prog_CPP"
+fi
 
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ld; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LD"; then
+  ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LD="${ac_tool_prefix}ld"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LD"; then
+  ac_ct_LD=$LD
+  # Extract the first word of "ld", so it can be a program name with args.
+set dummy ld; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LD"; then
+  ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LD="ld"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
+fi
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LD" >&5
+$as_echo "$ac_ct_LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
+  if test "x$ac_ct_LD" = x; then
+    LD=":"
   else
-    shlibpath_overrides_runpath=yes
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LD=$ac_ct_LD
   fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
+else
+  LD="$ac_cv_prog_LD"
+fi
 
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NM="${ac_tool_prefix}nm"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-rdos*)
-  dynamic_linker=no
-  ;;
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
 
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
+fi
+if test -z "$ac_cv_prog_NM"; then
+  ac_ct_NM=$NM
+  # Extract the first word of "nm", so it can be a program name with args.
+set dummy nm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NM"; then
+  ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NM="nm"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
+done
+  done
+IFS=$as_save_IFS
 
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  if test "x$ac_ct_NM" = x; then
+    NM=":"
   else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NM=$ac_ct_NM
   fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
+else
+  NM="$ac_cv_prog_NM"
+fi
 
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_AR" = x; then
+    AR=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_AS" = x; then
+    AS=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-
-
-
-
-
-
-
-
-
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
   else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
   fi
 else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
+  STRIP="$ac_cv_prog_STRIP"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
 
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-
-
-
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
 
 
 #
@@ -17686,21 +18675,39 @@ done
 
 
 # Check compiler version
+case "$CXX" in
+  pgc*)   CXX_VERSION=`$CXX -V | head -2 | tail -n 1`;;
+  *gcc*)  CXX_VERSION=`$CXX --version | head -n 1`;;
+  g++*)   CXX_VERSION=`$CXX --version | head -n 1`;;
+  clang*) CXX_VERSION=`$CXX --version | head -n 1`;;
+  icpc*)  CXX_VERSION=`$CXX --version | head -n 1`;;
+  sxc*)   CXX_VERSION=`$CXX -V 2>&1   | tail -n 1`;;
+  xlc*)   CXX_VERSION=`$CXX -qversion 2>&1   | head -n 1`;;
+  *)      CXX_VERSION=`$CXX -V 2>&1   | head -n 1 | grep -v error`;;
+esac
+
 case "$CC" in
-  pgcc*)  COMP_VERSION=`$CC -V | head -2 | tail -n 1`;;
-  *gcc*)  COMP_VERSION=`$CC --version | head -n 1`;;
-  g++*)   COMP_VERSION=`$CC --version | head -n 1`;;
-  clang*) COMP_VERSION=`$CC --version | head -n 1`;;
-  icc*)   COMP_VERSION=`$CC --version | head -n 1`;;
-  sxc*)   COMP_VERSION=`$CC -V 2>&1   | tail -n 1`;;
-  xlc*)   COMP_VERSION=`$CC -qversion 2>&1   | head -n 1`;;
-  *)      COMP_VERSION=`$CC -V 2>&1   | head -n 1 | grep -v error`;;
+  pgc*)   C_VERSION=`$CC -V | head -2 | tail -n 1`;;
+  *gcc*)  C_VERSION=`$CC --version | head -n 1`;;
+  g++*)   C_VERSION=`$CC --version | head -n 1`;;
+  clang*) C_VERSION=`$CC --version | head -n 1`;;
+  icc*)   C_VERSION=`$CC --version | head -n 1`;;
+  sxc*)   C_VERSION=`$CC -V 2>&1   | tail -n 1`;;
+  xlc*)   C_VERSION=`$CC -qversion 2>&1   | head -n 1`;;
+  *)      C_VERSION=`$CC -V 2>&1   | head -n 1 | grep -v error`;;
 esac
 
-if test -z "$COMP_VERSION" ; then COMP_VERSION="unknown"; fi;
+if test -z "$CXX_VERSION" ; then CXX_VERSION="unknown"; fi;
+
+cat >>confdefs.h <<_ACEOF
+#define CXX_VERSION "$CXX_VERSION"
+_ACEOF
+
+
+if test -z "$C_VERSION" ; then C_VERSION="unknown"; fi;
 
 cat >>confdefs.h <<_ACEOF
-#define COMP_VERSION "$COMP_VERSION"
+#define C_VERSION "$C_VERSION"
 _ACEOF
 
 
@@ -17879,6 +18886,7 @@ ENABLE_DATA=$enable_data
 
 #  ----------------------------------------------------------------------
 CFLAGS="$CFLAGS ${OPENMP_CFLAGS}"
+CXXFLAGS="$CXXFLAGS ${OPENMP_CFLAGS}"
 #  ----------------------------------------------------------------------
 
 # Add configure options
@@ -18350,6 +19358,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
                LIBS="$PTHREAD_LIBS $LIBS"
                CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+               CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
                CC="$PTHREAD_CC"
                $as_echo "CC:$CC CFLAGS:$CFLAGS LIBS:$LIBS" ;; #(
   *) :
@@ -19722,10 +20731,194 @@ fi
 
 
 #  ----------------------------------------------------------------------
+#  Compile application with ECCODES library (for GRIB2 support)
+ECCODES_INCLUDE=''
+ECCODES_LIBS=''
+ENABLE_GRIBAPI=no
+
+# Check whether --with-eccodes was given.
+if test "${with_eccodes+set}" = set; then :
+  withval=$with_eccodes; case "$with_eccodes" in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECCODES library" >&5
+$as_echo_n "checking for ECCODES library... " >&6; }
+                           { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
+$as_echo "suppressed" >&6; } ;; #(
+  yes) :
+    for ac_header in grib_api.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "grib_api.h" "ac_cv_header_grib_api_h" "$ac_includes_default"
+if test "x$ac_cv_header_grib_api_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GRIB_API_H 1
+_ACEOF
+
+fi
+
+done
+
+                            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing grib_get_message" >&5
+$as_echo_n "checking for library containing grib_get_message... " >&6; }
+if ${ac_cv_search_grib_get_message+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char grib_get_message ();
+int
+main ()
+{
+return grib_get_message ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' eccodes; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_grib_get_message=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_grib_get_message+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_grib_get_message+:} false; then :
+
+else
+  ac_cv_search_grib_get_message=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_grib_get_message" >&5
+$as_echo "$ac_cv_search_grib_get_message" >&6; }
+ac_res=$ac_cv_search_grib_get_message
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_LIBGRIB_API 1" >>confdefs.h
+
+                                            ENABLE_GRIBAPI=yes
+else
+  as_fn_error $? "Could not link to eccodes library" "$LINENO" 5
+fi
+ ;; #(
+  *) :
+    ECCODES_ROOT=$with_eccodes
+                          if test -d "$ECCODES_ROOT"; then :
+  LDFLAGS="-L$ECCODES_ROOT/lib $LDFLAGS"
+                                 CPPFLAGS="-I$ECCODES_ROOT/include $CPPFLAGS"
+                                 for ac_header in grib_api.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "grib_api.h" "ac_cv_header_grib_api_h" "$ac_includes_default"
+if test "x$ac_cv_header_grib_api_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GRIB_API_H 1
+_ACEOF
+
+fi
+
+done
+
+                                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing grib_get_message" >&5
+$as_echo_n "checking for library containing grib_get_message... " >&6; }
+if ${ac_cv_search_grib_get_message+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char grib_get_message ();
+int
+main ()
+{
+return grib_get_message ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' eccodes; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_grib_get_message=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_grib_get_message+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_grib_get_message+:} false; then :
+
+else
+  ac_cv_search_grib_get_message=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_grib_get_message" >&5
+$as_echo "$ac_cv_search_grib_get_message" >&6; }
+ac_res=$ac_cv_search_grib_get_message
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_LIBGRIB_API 1" >>confdefs.h
+
+                                                 ENABLE_GRIBAPI=yes
+else
+  as_fn_error $? "Could not link to eccodes library" "$LINENO" 5
+fi
+
+                                 ECCODES_LIBS=" -L$ECCODES_ROOT/lib -leccodes"
+                                 ECCODES_INCLUDE=" -I$ECCODES_ROOT/include"
+else
+  as_fn_error $? "$ECCODES_ROOT is not a directory! ECCODES suppressed" "$LINENO" 5
+fi ;; #(
+  *) :
+     ;;
+esac
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the ECCODES library" >&5
+$as_echo_n "checking for the ECCODES library... " >&6; }
+             { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
+$as_echo "suppressed" >&6; }
+fi
+
+
+
+#AC_SUBST([ENABLE_GRIBAPI])
+#  ----------------------------------------------------------------------
 #  Compile application with GRIB_API library (for GRIB2 support)
 GRIB_API_INCLUDE=''
 GRIB_API_LIBS=''
-ENABLE_GRIBAPI=no
+#ENABLE_GRIBAPI=no
 
 # Check whether --with-grib_api was given.
 if test "${with_grib_api+set}" = set; then :
@@ -21122,23 +22315,6 @@ else
 fi
 
 
-# Check whether --enable-cxx was given.
-if test "${enable_cxx+set}" = set; then :
-  enableval=$enable_cxx; if test "x$enable_cxx" != 'xno'; then :
-  CC=$CXX
-                      CXXFLAGS=$CFLAGS
-                      enable_cxx=yes
-else
-  enable_cxx=no
-fi
-else
-  enable_cxx=no
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_cxx" >&5
-$as_echo "$enable_cxx" >&6; }
-ENABLE_CXX=$enable_cxx
-
 #  ----------------------------------------------------------------------
 
 
@@ -21150,10 +22326,16 @@ ENABLE_CXX=$enable_cxx
 
 
 # Checks for compiler
-COMPILER="$CC $CFLAGS"
+C_COMPILER="$CC $CFLAGS"
+
+cat >>confdefs.h <<_ACEOF
+#define C_COMPILER "$C_COMPILER"
+_ACEOF
+
+CXX_COMPILER="$CXX $CXXFLAGS"
 
 cat >>confdefs.h <<_ACEOF
-#define COMPILER "$COMPILER"
+#define CXX_COMPILER "$CXX_COMPILER"
 _ACEOF
 
 
@@ -21209,11 +22391,11 @@ ac_config_files="$ac_config_files test/Cat.test test/Gridarea.test test/Genweigh
 
 ac_config_files="$ac_config_files test/EOF.test test/Select.test test/Spectral.test test/Vertint.test"
 
-ac_config_files="$ac_config_files test/Timstat.test test/Timselstat.test test/Seasstat.test test/Runstat.test test/Multiyearstat.test"
+ac_config_files="$ac_config_files test/Timstat.test test/Timselstat.test test/Seasstat.test test/Runstat.test test/Multiyearstat.test test/Ydrunstat.test"
 
 ac_config_files="$ac_config_files test/Gridboxstat.test test/Vertstat.test test/Fldstat.test test/Fldpctl.test test/Ensstat.test test/Enspctl.test"
 
-ac_config_files="$ac_config_files test/Merstat.test test/Zonstat.test"
+ac_config_files="$ac_config_files test/Merstat.test test/Zonstat.test test/Mergetime.test"
 
 ac_config_files="$ac_config_files test/Afterburner.test test/Detrend.test test/Arithc.test test/Arith.test test/Expr.test"
 
@@ -21801,7 +22983,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by cdo $as_me 1.8.2, which was
+This file was extended by cdo $as_me 1.9.0rc1, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21867,7 +23049,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-cdo config.status 1.8.2
+cdo config.status 1.9.0rc1
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -22394,6 +23576,7 @@ do
     "test/Seasstat.test") CONFIG_FILES="$CONFIG_FILES test/Seasstat.test" ;;
     "test/Runstat.test") CONFIG_FILES="$CONFIG_FILES test/Runstat.test" ;;
     "test/Multiyearstat.test") CONFIG_FILES="$CONFIG_FILES test/Multiyearstat.test" ;;
+    "test/Ydrunstat.test") CONFIG_FILES="$CONFIG_FILES test/Ydrunstat.test" ;;
     "test/Gridboxstat.test") CONFIG_FILES="$CONFIG_FILES test/Gridboxstat.test" ;;
     "test/Vertstat.test") CONFIG_FILES="$CONFIG_FILES test/Vertstat.test" ;;
     "test/Fldstat.test") CONFIG_FILES="$CONFIG_FILES test/Fldstat.test" ;;
@@ -22402,6 +23585,7 @@ do
     "test/Enspctl.test") CONFIG_FILES="$CONFIG_FILES test/Enspctl.test" ;;
     "test/Merstat.test") CONFIG_FILES="$CONFIG_FILES test/Merstat.test" ;;
     "test/Zonstat.test") CONFIG_FILES="$CONFIG_FILES test/Zonstat.test" ;;
+    "test/Mergetime.test") CONFIG_FILES="$CONFIG_FILES test/Mergetime.test" ;;
     "test/Afterburner.test") CONFIG_FILES="$CONFIG_FILES test/Afterburner.test" ;;
     "test/Detrend.test") CONFIG_FILES="$CONFIG_FILES test/Detrend.test" ;;
     "test/Arithc.test") CONFIG_FILES="$CONFIG_FILES test/Arithc.test" ;;
@@ -23926,6 +25110,7 @@ _LT_EOF
     "test/Seasstat.test":F) chmod a+x "$ac_file" ;;
     "test/Runstat.test":F) chmod a+x "$ac_file" ;;
     "test/Multiyearstat.test":F) chmod a+x "$ac_file" ;;
+    "test/Ydrunstat.test":F) chmod a+x "$ac_file" ;;
     "test/Gridboxstat.test":F) chmod a+x "$ac_file" ;;
     "test/Vertstat.test":F) chmod a+x "$ac_file" ;;
     "test/Fldstat.test":F) chmod a+x "$ac_file" ;;
@@ -23934,6 +25119,7 @@ _LT_EOF
     "test/Enspctl.test":F) chmod a+x "$ac_file" ;;
     "test/Merstat.test":F) chmod a+x "$ac_file" ;;
     "test/Zonstat.test":F) chmod a+x "$ac_file" ;;
+    "test/Mergetime.test":F) chmod a+x "$ac_file" ;;
     "test/Afterburner.test":F) chmod a+x "$ac_file" ;;
     "test/Detrend.test":F) chmod a+x "$ac_file" ;;
     "test/Arithc.test":F) chmod a+x "$ac_file" ;;
diff --git a/configure.ac b/configure.ac
index 08e50bd..eaa9908 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@
 #  autoconf 2.68
 #  libtool  2.4.2
 
-AC_INIT([cdo], [1.8.2], [http://mpimet.mpg.de/cdo])
+AC_INIT([cdo], [1.9.0rc1], [http://mpimet.mpg.de/cdo])
 
 AC_DEFINE_UNQUOTED(CDO, ["$PACKAGE_VERSION"], [CDO version])
 
@@ -33,7 +33,9 @@ AC_CHECK_TOOL([CC],[gcc],[:])
 AC_CHECK_TOOL([CXX],[g++],[:])
 AC_PROG_CC_C99
 AM_PROG_CC_C_O
+AC_PROG_CXX
 AC_C_RESTRICT
+AX_CXX_COMPILE_STDCXX_11
 AC_OPENMP
 AC_CHECK_TOOL([AR],[ar],[:])
 AC_CHECK_TOOL([CPP],[cpp],[:])
@@ -46,7 +48,6 @@ AC_CHECK_TOOL([OBJDUMP],[objdump],[:])
 AC_CHECK_TOOL([STRIP],[strip],[:])
 AC_CHECK_TOOL([RANLIB],[ranlib],[:])
 AC_PROG_INSTALL
-AC_PROG_CXX
 #
 FC=no
 export FC
@@ -81,19 +82,33 @@ AC_CHECK_FUNCS(getrlimit)
 AC_CHECK_FUNCS(gethostname)
 
 # Check compiler version
+case "$CXX" in
+  pgc*)   CXX_VERSION=`$CXX -V | head -2 | tail -n 1`;;
+  *gcc*)  CXX_VERSION=`$CXX --version | head -n 1`;;
+  g++*)   CXX_VERSION=`$CXX --version | head -n 1`;;
+  clang*) CXX_VERSION=`$CXX --version | head -n 1`;;
+  icpc*)  CXX_VERSION=`$CXX --version | head -n 1`;;
+  sxc*)   CXX_VERSION=`$CXX -V 2>&1   | tail -n 1`;;
+  xlc*)   CXX_VERSION=`$CXX -qversion 2>&1   | head -n 1`;;
+  *)      CXX_VERSION=`$CXX -V 2>&1   | head -n 1 | grep -v error`;;
+esac
+
 case "$CC" in
-  pgcc*)  COMP_VERSION=`$CC -V | head -2 | tail -n 1`;;
-  *gcc*)  COMP_VERSION=`$CC --version | head -n 1`;;
-  g++*)   COMP_VERSION=`$CC --version | head -n 1`;;
-  clang*) COMP_VERSION=`$CC --version | head -n 1`;;
-  icc*)   COMP_VERSION=`$CC --version | head -n 1`;;
-  sxc*)   COMP_VERSION=`$CC -V 2>&1   | tail -n 1`;;
-  xlc*)   COMP_VERSION=`$CC -qversion 2>&1   | head -n 1`;;
-  *)      COMP_VERSION=`$CC -V 2>&1   | head -n 1 | grep -v error`;;
+  pgc*)   C_VERSION=`$CC -V | head -2 | tail -n 1`;;
+  *gcc*)  C_VERSION=`$CC --version | head -n 1`;;
+  g++*)   C_VERSION=`$CC --version | head -n 1`;;
+  clang*) C_VERSION=`$CC --version | head -n 1`;;
+  icc*)   C_VERSION=`$CC --version | head -n 1`;;
+  sxc*)   C_VERSION=`$CC -V 2>&1   | tail -n 1`;;
+  xlc*)   C_VERSION=`$CC -qversion 2>&1   | head -n 1`;;
+  *)      C_VERSION=`$CC -V 2>&1   | head -n 1 | grep -v error`;;
 esac
 
-if test -z "$COMP_VERSION" ; then COMP_VERSION="unknown"; fi;
-AC_DEFINE_UNQUOTED(COMP_VERSION, ["$COMP_VERSION"], [Compiler version])
+if test -z "$CXX_VERSION" ; then CXX_VERSION="unknown"; fi;
+AC_DEFINE_UNQUOTED(CXX_VERSION, ["$CXX_VERSION"], [CXX Compiler version])
+
+if test -z "$C_VERSION" ; then C_VERSION="unknown"; fi;
+AC_DEFINE_UNQUOTED(C_VERSION, ["$C_VERSION"], [C Compiler version])
 
 # Checks for username, hostname and system type
 USERNAME=$LOGNAME
@@ -144,6 +159,7 @@ AC_MSG_RESULT([$enable_data])
 AC_SUBST([ENABLE_DATA],[$enable_data])
 #  ----------------------------------------------------------------------
 CFLAGS="$CFLAGS ${OPENMP_CFLAGS}"
+CXXFLAGS="$CXXFLAGS ${OPENMP_CFLAGS}"
 #  ----------------------------------------------------------------------
 
 # Add configure options
@@ -223,16 +239,6 @@ AC_MSG_RESULT([no])
 
 AM_CONDITIONAL(BUILD_AVX2_TESTS, test x$ac_have_as_avx2 = xyes)
 
-AC_ARG_ENABLE([cxx],
-              [AS_HELP_STRING([--enable-cxx],[Use CXX as default compiler [default=no]])],
-              [AS_IF([test "x$enable_cxx" != 'xno'],
-                     [CC=$CXX
-                      CXXFLAGS=$CFLAGS
-                      enable_cxx=yes],
-              [enable_cxx=no])],
-              [enable_cxx=no])
-AC_MSG_RESULT([$enable_cxx])
-AC_SUBST([ENABLE_CXX],[$enable_cxx])
 #  ----------------------------------------------------------------------
 AC_SUBST([CXXFLAGS])
 AC_SUBST([CPPFLAGS])
@@ -244,8 +250,10 @@ AC_SUBST([AM_CPPFLAGS])
 AC_SUBST([AR])
 
 # Checks for compiler
-COMPILER="$CC $CFLAGS"
-AC_DEFINE_UNQUOTED(COMPILER, ["$COMPILER"], [Compiler])
+C_COMPILER="$CC $CFLAGS"
+AC_DEFINE_UNQUOTED(C_COMPILER, ["$C_COMPILER"], [C Compiler])
+CXX_COMPILER="$CXX $CXXFLAGS"
+AC_DEFINE_UNQUOTED(CXX_COMPILER, ["$CXX_COMPILER"], [CXX Compiler])
 
 AC_REQUIRE_AUX_FILE([tap-driver.sh])
 AC_PROG_AWK
@@ -254,9 +262,9 @@ AC_CONFIG_FILES([test/File.test test/Read_grib.test test/Read_netcdf.test test/C
 AC_CONFIG_FILES([test/Comp.test test/Compc.test],[chmod a+x "$ac_file"])
 AC_CONFIG_FILES([test/Cat.test test/Gridarea.test test/Genweights.test test/Remap.test test/Remap2.test],[chmod a+x "$ac_file"])
 AC_CONFIG_FILES([test/EOF.test test/Select.test test/Spectral.test test/Vertint.test],[chmod a+x "$ac_file"])
-AC_CONFIG_FILES([test/Timstat.test test/Timselstat.test test/Seasstat.test test/Runstat.test test/Multiyearstat.test],[chmod a+x "$ac_file"])
+AC_CONFIG_FILES([test/Timstat.test test/Timselstat.test test/Seasstat.test test/Runstat.test test/Multiyearstat.test test/Ydrunstat.test],[chmod a+x "$ac_file"])
 AC_CONFIG_FILES([test/Gridboxstat.test test/Vertstat.test test/Fldstat.test test/Fldpctl.test test/Ensstat.test test/Enspctl.test],[chmod a+x "$ac_file"])
-AC_CONFIG_FILES([test/Merstat.test test/Zonstat.test],[chmod a+x "$ac_file"])
+AC_CONFIG_FILES([test/Merstat.test test/Zonstat.test test/Mergetime.test],[chmod a+x "$ac_file"])
 AC_CONFIG_FILES([test/Afterburner.test test/Detrend.test test/Arithc.test test/Arith.test test/Expr.test],[chmod a+x "$ac_file"])
 AC_CONFIG_FILES([test/Gradsdes.test test/Collgrid.test test/threads.test test/tsformat.test test/wildcard.test],[chmod a+x "$ac_file"])
 AC_CONFIG_FILES([test/MapReduce.test test/Ninfo.test],[chmod a+x "$ac_file"])
diff --git a/contrib/Makefile.in b/contrib/Makefile.in
index 9a402d7..a9577ba 100644
--- a/contrib/Makefile.in
+++ b/contrib/Makefile.in
@@ -82,6 +82,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/mkinstalldirs COPYING
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_options.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
@@ -144,13 +146,14 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 ENABLE_CDI_LIB = @ENABLE_CDI_LIB@
 ENABLE_CGRIBEX = @ENABLE_CGRIBEX@
-ENABLE_CXX = @ENABLE_CXX@
 ENABLE_DATA = @ENABLE_DATA@
 ENABLE_EXTRA = @ENABLE_EXTRA@
 ENABLE_GRIB = @ENABLE_GRIB@
@@ -168,6 +171,7 @@ FGREP = @FGREP@
 GREP = @GREP@
 GRIB_API_INCLUDE = @GRIB_API_INCLUDE@
 GRIB_API_LIBS = @GRIB_API_LIBS@
+HAVE_CXX11 = @HAVE_CXX11@
 HDF5_INCLUDE = @HDF5_INCLUDE@
 HDF5_LIBS = @HDF5_LIBS@
 HDF5_ROOT = @HDF5_ROOT@
diff --git a/contrib/cdoCompletion.bash b/contrib/cdoCompletion.bash
index 78f6fa8..5799d2b 100644
--- a/contrib/cdoCompletion.bash
+++ b/contrib/cdoCompletion.bash
@@ -68,7 +68,6 @@ chtabnum -chtabnum \
 chunit -chunit \
 chvar -chvar \
 cloudlayer -cloudlayer \
-cmor -cmor \
 cmorlite -cmorlite \
 codetab -codetab \
 collgrid -collgrid \
@@ -100,7 +99,6 @@ delcode -delcode \
 delday -delday \
 delete -delete \
 delgridcell -delgridcell \
-delindex -delindex \
 delmulti -delmulti \
 delname -delname \
 delparam -delparam \
@@ -171,6 +169,7 @@ ensmax -ensmax \
 ensmean -ensmean \
 ensmin -ensmin \
 enspctl -enspctl \
+ensrange -ensrange \
 ensrkhist_space -ensrkhist_space \
 ensrkhist_time -ensrkhist_time \
 ensrkhistspace -ensrkhistspace \
@@ -248,6 +247,7 @@ gridboxavg -gridboxavg \
 gridboxmax -gridboxmax \
 gridboxmean -gridboxmean \
 gridboxmin -gridboxmin \
+gridboxrange -gridboxrange \
 gridboxstd -gridboxstd \
 gridboxstd1 -gridboxstd1 \
 gridboxsum -gridboxsum \
@@ -354,6 +354,7 @@ mermax -mermax \
 mermean -mermean \
 mermin -mermin \
 merpctl -merpctl \
+merrange -merrange \
 merstd -merstd \
 merstd1 -merstd1 \
 mersum -mersum \
@@ -394,7 +395,6 @@ muldoy -muldoy \
 muldpm -muldpm \
 muldpy -muldpy \
 ncode -ncode \
-ncode -ncode \
 ncopy -ncopy \
 ndate -ndate \
 ne -ne \
@@ -469,6 +469,7 @@ runmax -runmax \
 runmean -runmean \
 runmin -runmin \
 runpctl -runpctl \
+runrange -runrange \
 runstd -runstd \
 runstd1 -runstd1 \
 runsum -runsum \
@@ -484,6 +485,7 @@ seasmax -seasmax \
 seasmean -seasmean \
 seasmin -seasmin \
 seaspctl -seaspctl \
+seasrange -seasrange \
 seasstd -seasstd \
 seasstd1 -seasstd1 \
 seassum -seassum \
@@ -535,8 +537,6 @@ setcodetab -setcodetab \
 setctomiss -setctomiss \
 setdate -setdate \
 setday -setday \
-setgatt -setgatt \
-setgatts -setgatts \
 setgrid -setgrid \
 setgridarea -setgridarea \
 setgridmask -setgridmask \
@@ -664,6 +664,7 @@ timselmax -timselmax \
 timselmean -timselmean \
 timselmin -timselmin \
 timselpctl -timselpctl \
+timselrange -timselrange \
 timselstd -timselstd \
 timselstd1 -timselstd1 \
 timselsum -timselsum \
@@ -699,6 +700,7 @@ vertint -vertint \
 vertmax -vertmax \
 vertmean -vertmean \
 vertmin -vertmin \
+vertrange -vertrange \
 vertstd -vertstd \
 vertstd1 -vertstd1 \
 vertsum -vertsum \
@@ -718,6 +720,7 @@ ydaymean -ydaymean \
 ydaymin -ydaymin \
 ydaymul -ydaymul \
 ydaypctl -ydaypctl \
+ydayrange -ydayrange \
 ydaystd -ydaystd \
 ydaystd1 -ydaystd1 \
 ydaysub -ydaysub \
@@ -755,6 +758,7 @@ yhourmax -yhourmax \
 yhourmean -yhourmean \
 yhourmin -yhourmin \
 yhourmul -yhourmul \
+yhourrange -yhourrange \
 yhourstd -yhourstd \
 yhourstd1 -yhourstd1 \
 yhoursub -yhoursub \
@@ -769,6 +773,7 @@ ymonmean -ymonmean \
 ymonmin -ymonmin \
 ymonmul -ymonmul \
 ymonpctl -ymonpctl \
+ymonrange -ymonrange \
 ymonstd -ymonstd \
 ymonstd1 -ymonstd1 \
 ymonsub -ymonsub \
@@ -783,6 +788,7 @@ yseasmean -yseasmean \
 yseasmin -yseasmin \
 yseasmul -yseasmul \
 yseaspctl -yseaspctl \
+yseasrange -yseasrange \
 yseasstd -yseasstd \
 yseasstd1 -yseasstd1 \
 yseassub -yseassub \
diff --git a/contrib/cdoCompletion.tcsh b/contrib/cdoCompletion.tcsh
index 6e9d876..a2d20cc 100644
--- a/contrib/cdoCompletion.tcsh
+++ b/contrib/cdoCompletion.tcsh
@@ -68,7 +68,6 @@ chtabnum \
 chunit \
 chvar \
 cloudlayer \
-cmor \
 cmorlite \
 codetab \
 collgrid \
@@ -100,7 +99,6 @@ delcode \
 delday \
 delete \
 delgridcell \
-delindex \
 delmulti \
 delname \
 delparam \
@@ -171,6 +169,7 @@ ensmax \
 ensmean \
 ensmin \
 enspctl \
+ensrange \
 ensrkhist_space \
 ensrkhist_time \
 ensrkhistspace \
@@ -248,6 +247,7 @@ gridboxavg \
 gridboxmax \
 gridboxmean \
 gridboxmin \
+gridboxrange \
 gridboxstd \
 gridboxstd1 \
 gridboxsum \
@@ -354,6 +354,7 @@ mermax \
 mermean \
 mermin \
 merpctl \
+merrange \
 merstd \
 merstd1 \
 mersum \
@@ -394,7 +395,6 @@ muldoy \
 muldpm \
 muldpy \
 ncode \
-ncode \
 ncopy \
 ndate \
 ne \
@@ -469,6 +469,7 @@ runmax \
 runmean \
 runmin \
 runpctl \
+runrange \
 runstd \
 runstd1 \
 runsum \
@@ -484,6 +485,7 @@ seasmax \
 seasmean \
 seasmin \
 seaspctl \
+seasrange \
 seasstd \
 seasstd1 \
 seassum \
@@ -535,8 +537,6 @@ setcodetab \
 setctomiss \
 setdate \
 setday \
-setgatt \
-setgatts \
 setgrid \
 setgridarea \
 setgridmask \
@@ -664,6 +664,7 @@ timselmax \
 timselmean \
 timselmin \
 timselpctl \
+timselrange \
 timselstd \
 timselstd1 \
 timselsum \
@@ -699,6 +700,7 @@ vertint \
 vertmax \
 vertmean \
 vertmin \
+vertrange \
 vertstd \
 vertstd1 \
 vertsum \
@@ -718,6 +720,7 @@ ydaymean \
 ydaymin \
 ydaymul \
 ydaypctl \
+ydayrange \
 ydaystd \
 ydaystd1 \
 ydaysub \
@@ -755,6 +758,7 @@ yhourmax \
 yhourmean \
 yhourmin \
 yhourmul \
+yhourrange \
 yhourstd \
 yhourstd1 \
 yhoursub \
@@ -769,6 +773,7 @@ ymonmean \
 ymonmin \
 ymonmul \
 ymonpctl \
+ymonrange \
 ymonstd \
 ymonstd1 \
 ymonsub \
@@ -783,6 +788,7 @@ yseasmean \
 yseasmin \
 yseasmul \
 yseaspctl \
+yseasrange \
 yseasstd \
 yseasstd1 \
 yseassub \
diff --git a/contrib/cdoCompletion.zsh b/contrib/cdoCompletion.zsh
index 57a4c09..23fe669 100644
--- a/contrib/cdoCompletion.zsh
+++ b/contrib/cdoCompletion.zsh
@@ -68,7 +68,6 @@ chtabnum -chtabnum \
 chunit -chunit \
 chvar -chvar \
 cloudlayer -cloudlayer \
-cmor -cmor \
 cmorlite -cmorlite \
 codetab -codetab \
 collgrid -collgrid \
@@ -100,7 +99,6 @@ delcode -delcode \
 delday -delday \
 delete -delete \
 delgridcell -delgridcell \
-delindex -delindex \
 delmulti -delmulti \
 delname -delname \
 delparam -delparam \
@@ -171,6 +169,7 @@ ensmax -ensmax \
 ensmean -ensmean \
 ensmin -ensmin \
 enspctl -enspctl \
+ensrange -ensrange \
 ensrkhist_space -ensrkhist_space \
 ensrkhist_time -ensrkhist_time \
 ensrkhistspace -ensrkhistspace \
@@ -248,6 +247,7 @@ gridboxavg -gridboxavg \
 gridboxmax -gridboxmax \
 gridboxmean -gridboxmean \
 gridboxmin -gridboxmin \
+gridboxrange -gridboxrange \
 gridboxstd -gridboxstd \
 gridboxstd1 -gridboxstd1 \
 gridboxsum -gridboxsum \
@@ -354,6 +354,7 @@ mermax -mermax \
 mermean -mermean \
 mermin -mermin \
 merpctl -merpctl \
+merrange -merrange \
 merstd -merstd \
 merstd1 -merstd1 \
 mersum -mersum \
@@ -394,7 +395,6 @@ muldoy -muldoy \
 muldpm -muldpm \
 muldpy -muldpy \
 ncode -ncode \
-ncode -ncode \
 ncopy -ncopy \
 ndate -ndate \
 ne -ne \
@@ -469,6 +469,7 @@ runmax -runmax \
 runmean -runmean \
 runmin -runmin \
 runpctl -runpctl \
+runrange -runrange \
 runstd -runstd \
 runstd1 -runstd1 \
 runsum -runsum \
@@ -484,6 +485,7 @@ seasmax -seasmax \
 seasmean -seasmean \
 seasmin -seasmin \
 seaspctl -seaspctl \
+seasrange -seasrange \
 seasstd -seasstd \
 seasstd1 -seasstd1 \
 seassum -seassum \
@@ -535,8 +537,6 @@ setcodetab -setcodetab \
 setctomiss -setctomiss \
 setdate -setdate \
 setday -setday \
-setgatt -setgatt \
-setgatts -setgatts \
 setgrid -setgrid \
 setgridarea -setgridarea \
 setgridmask -setgridmask \
@@ -664,6 +664,7 @@ timselmax -timselmax \
 timselmean -timselmean \
 timselmin -timselmin \
 timselpctl -timselpctl \
+timselrange -timselrange \
 timselstd -timselstd \
 timselstd1 -timselstd1 \
 timselsum -timselsum \
@@ -699,6 +700,7 @@ vertint -vertint \
 vertmax -vertmax \
 vertmean -vertmean \
 vertmin -vertmin \
+vertrange -vertrange \
 vertstd -vertstd \
 vertstd1 -vertstd1 \
 vertsum -vertsum \
@@ -718,6 +720,7 @@ ydaymean -ydaymean \
 ydaymin -ydaymin \
 ydaymul -ydaymul \
 ydaypctl -ydaypctl \
+ydayrange -ydayrange \
 ydaystd -ydaystd \
 ydaystd1 -ydaystd1 \
 ydaysub -ydaysub \
@@ -755,6 +758,7 @@ yhourmax -yhourmax \
 yhourmean -yhourmean \
 yhourmin -yhourmin \
 yhourmul -yhourmul \
+yhourrange -yhourrange \
 yhourstd -yhourstd \
 yhourstd1 -yhourstd1 \
 yhoursub -yhoursub \
@@ -769,6 +773,7 @@ ymonmean -ymonmean \
 ymonmin -ymonmin \
 ymonmul -ymonmul \
 ymonpctl -ymonpctl \
+ymonrange -ymonrange \
 ymonstd -ymonstd \
 ymonstd1 -ymonstd1 \
 ymonsub -ymonsub \
@@ -783,6 +788,7 @@ yseasmean -yseasmean \
 yseasmin -yseasmin \
 yseasmul -yseasmul \
 yseaspctl -yseaspctl \
+yseasrange -yseasrange \
 yseasstd -yseasstd \
 yseasstd1 -yseasstd1 \
 yseassub -yseassub \
diff --git a/doc/cdo.pdf b/doc/cdo.pdf
index 1ebc793..2e1506a 100644
Binary files a/doc/cdo.pdf and b/doc/cdo.pdf differ
diff --git a/doc/cdo_refcard.pdf b/doc/cdo_refcard.pdf
index 6d53552..bd99203 100644
Binary files a/doc/cdo_refcard.pdf and b/doc/cdo_refcard.pdf differ
diff --git a/libcdi/ChangeLog b/libcdi/ChangeLog
index 5f89a5a..1c2b9d2 100644
--- a/libcdi/ChangeLog
+++ b/libcdi/ChangeLog
@@ -1,3 +1,21 @@
+2017-09-16  Uwe Schulzweida
+
+        * using CGRIBEX library version 1.8.1
+	* Version 1.9.0 released
+
+2017-07-01  Uwe Schulzweida
+
+	* Added function tableInqEntry().
+	* removed:  tableInqParNamePtr(), tableInqParNamePtr(), tableInqParUnitsPtr().
+
+2017-06-21  Uwe Schulzweida
+
+	* find_leadtime: check number of dimensions [Bug #7779]
+
+2017-06-06  Uwe Schulzweida
+
+	* Changed boolean ints to stdbool
+
 2017-05-16  Uwe Schulzweida
 
 	* Version 1.8.2 released
diff --git a/libcdi/Makefile.in b/libcdi/Makefile.in
index a13b31c..93e11e7 100644
--- a/libcdi/Makefile.in
+++ b/libcdi/Makefile.in
@@ -253,6 +253,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
diff --git a/libcdi/app/Makefile.in b/libcdi/app/Makefile.in
index c5c9cad..f3c05a5 100644
--- a/libcdi/app/Makefile.in
+++ b/libcdi/app/Makefile.in
@@ -226,6 +226,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
diff --git a/libcdi/app/createtable.c b/libcdi/app/createtable.c
index 29377bf..c781b92 100644
--- a/libcdi/app/createtable.c
+++ b/libcdi/app/createtable.c
@@ -22,13 +22,13 @@ static void usage(void)
         "   -version      display version number\n", stderr);
 }
 
+
 int main(int argc, char *argv[])
 {
   int c;
   char  *cstring;
   char *ifile = NULL, *ofile = NULL;
   int debug = 0;
-  int tableID;
 
 
   Progname = argv[0];
@@ -96,7 +96,7 @@ int main(int argc, char *argv[])
   /*
   if ( debug ) cdiDebug(debug);
   */
-  tableID = tableRead(ifile);
+  int tableID = tableRead(ifile);
   if ( CDI_Debug )
     Message("write parameter table %d to %s", tableID, ofile);
   FILE *ptfp = (ofile[0] == '-' && ofile[1] == '\0')?stdout:fopen(ofile, "w");
diff --git a/libcdi/cdi.settings.in b/libcdi/cdi.settings.in
index b4d2c67..d456b46 100644
--- a/libcdi/cdi.settings.in
+++ b/libcdi/cdi.settings.in
@@ -48,6 +48,10 @@
         "lib"      : "@GRIB_API_LIBS@",
         "include"  : "@GRIB_API_INCLUDE@"
       }
+      "eccodes" : {
+        "lib"      : "@ECCODES_LIBS@",
+        "include"  : "@ECCODES_INCLUDE@"
+      }
     }
   },
   "features" : {
diff --git a/libcdi/config/default b/libcdi/config/default
index 3b3a495..50ea718 100755
--- a/libcdi/config/default
+++ b/libcdi/config/default
@@ -24,8 +24,8 @@ case "${HOSTNAME}" in
                     --enable-iso-c-interface \
                     --enable-swig \
                     --enable-python \
-                    --with-grib_api=$HOME/local/gribapi-1.12.3 \
-                    --with-netcdf=$HOME/local \
+                    --with-eccodes=$HOME/local/eccodes-2.3.0 \
+                    --with-netcdf=$HOME/local/netcdf-4.4.1.1 \
                     --with-szlib=$HOME/local \
 	            CC=icc CFLAGS="-g -D_REENTRANT -Wall -Wwrite-strings -O3 -march=native -fp-model source"
 	;;
@@ -35,9 +35,10 @@ case "${HOSTNAME}" in
                     --enable-iso-c-interface \
                     --enable-swig \
                     --enable-python \
-                    --with-grib_api=$HOME/local/grib_api-1.13.1 \
-                    --with-netcdf=$HOME/local/netcdf-c-4.3.3.1-threadsafe \
+                    --with-eccodes=$HOME/local/eccodes-2.3.0 \
+                    --with-netcdf=$HOME/local/netcdf-4.4.1.1 \
                     --with-szlib=$HOME/local \
+                    LDFLAGS="-Wl,-rpath,$HOME/local/eccodes-2.3.0/lib" \
 	            CC=gcc CFLAGS="-g -pipe -D_REENTRANT -Wall -Wwrite-strings -W -Wfloat-equal -pedantic -O3 -march=native"
 	;;
     cinglung*|feilung*|wanglung*)
diff --git a/libcdi/configure b/libcdi/configure
index 3b6c032..44a7d8e 100755
--- a/libcdi/configure
+++ b/libcdi/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for cdi 1.8.2.
+# Generated by GNU Autoconf 2.68 for cdi 1.9.0.
 #
 # Report bugs to <http://mpimet.mpg.de/cdi>.
 #
@@ -570,8 +570,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='cdi'
 PACKAGE_TARNAME='cdi'
-PACKAGE_VERSION='1.8.2'
-PACKAGE_STRING='cdi 1.8.2'
+PACKAGE_VERSION='1.9.0'
+PACKAGE_STRING='cdi 1.9.0'
 PACKAGE_BUGREPORT='http://mpimet.mpg.de/cdi'
 PACKAGE_URL=''
 
@@ -690,6 +690,8 @@ HAVE_LIBGRIB_API_FALSE
 HAVE_LIBGRIB_API_TRUE
 GRIB_API_LIBS
 GRIB_API_INCLUDE
+ECCODES_LIBS
+ECCODES_INCLUDE
 NETCDF_LIBS
 NETCDF_INCLUDE
 NETCDF_ROOT
@@ -860,6 +862,7 @@ enable_largefile
 with_threads
 with_szlib
 with_netcdf
+with_eccodes
 with_grib_api
 enable_grib
 enable_cgribex
@@ -1463,7 +1466,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures cdi 1.8.2 to adapt to many kinds of systems.
+\`configure' configures cdi 1.9.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1533,7 +1536,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of cdi 1.8.2:";;
+     short | recursive ) echo "Configuration of cdi 1.9.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1590,10 +1593,14 @@ Optional Packages:
                           NETCDF4 compression
   --with-netcdf=<yes|no|directory> (default=no)
                           location of NetCDF library (lib and include subdirs)
+  --with-eccodes=<yes|no|directory>
+                          library for grib2 encoding/decoding; if a directory
+                          is given, it will be used as a value for
+                          --with-eccodes-root
   --with-grib_api=<yes|no|directory>
-                          library for grib2 compression; if a directory is
-                          given, it will be used as a value for
-                          --with-jasper-root
+                          library for grib2 encoding/decoding; if a directory
+                          is given, it will be used as a value for
+                          --with-grib_api-root
   --with-mpi-root         set directory to search for MPI headers and library
   --with-mpi-include      specifically set directory to search for MPI
                           headers, [default=$with_mpi_root/include]
@@ -1728,7 +1735,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-cdi configure 1.8.2
+cdi configure 1.9.0
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2573,7 +2580,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by cdi $as_me 1.8.2, which was
+It was created by cdi $as_me 1.9.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -3525,7 +3532,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='cdi'
- VERSION='1.8.2'
+ VERSION='1.9.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -23442,7 +23449,7 @@ Usage: $0 [OPTIONS]
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-cdi config.lt 1.8.2
+cdi config.lt 1.9.0
 configured by $0, generated by GNU Autoconf 2.68.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -27577,6 +27584,187 @@ fi
 
 
 #  ----------------------------------------------------------------------
+#  Compile application with ECCODES library (for GRIB2 support)
+ECCODES_INCLUDE=''
+ECCODES_LIBS=''
+
+# Check whether --with-eccodes was given.
+if test "${with_eccodes+set}" = set; then :
+  withval=$with_eccodes; case "$with_eccodes" in #(
+  no) :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECCODES library" >&5
+$as_echo_n "checking for ECCODES library... " >&6; }
+                           { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
+$as_echo "suppressed" >&6; } ;; #(
+  yes) :
+    for ac_header in grib_api.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "grib_api.h" "ac_cv_header_grib_api_h" "$ac_includes_default"
+if test "x$ac_cv_header_grib_api_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GRIB_API_H 1
+_ACEOF
+
+fi
+
+done
+
+                            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing grib_get_message" >&5
+$as_echo_n "checking for library containing grib_get_message... " >&6; }
+if ${ac_cv_search_grib_get_message+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char grib_get_message ();
+int
+main ()
+{
+return grib_get_message ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' eccodes; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_grib_get_message=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_grib_get_message+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_grib_get_message+:} false; then :
+
+else
+  ac_cv_search_grib_get_message=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_grib_get_message" >&5
+$as_echo "$ac_cv_search_grib_get_message" >&6; }
+ac_res=$ac_cv_search_grib_get_message
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_LIBGRIB_API 1" >>confdefs.h
+
+else
+  as_fn_error $? "Could not link to eccodes library" "$LINENO" 5
+fi
+ ;; #(
+  *) :
+    ECCODES_ROOT=$with_eccodes
+                          if test -d "$ECCODES_ROOT"; then :
+  LDFLAGS="-L$ECCODES_ROOT/lib $LDFLAGS"
+                                 CPPFLAGS="-I$ECCODES_ROOT/include $CPPFLAGS"
+                                 for ac_header in grib_api.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "grib_api.h" "ac_cv_header_grib_api_h" "$ac_includes_default"
+if test "x$ac_cv_header_grib_api_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GRIB_API_H 1
+_ACEOF
+
+fi
+
+done
+
+                                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing grib_get_message" >&5
+$as_echo_n "checking for library containing grib_get_message... " >&6; }
+if ${ac_cv_search_grib_get_message+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char grib_get_message ();
+int
+main ()
+{
+return grib_get_message ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' eccodes; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_grib_get_message=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_grib_get_message+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_grib_get_message+:} false; then :
+
+else
+  ac_cv_search_grib_get_message=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_grib_get_message" >&5
+$as_echo "$ac_cv_search_grib_get_message" >&6; }
+ac_res=$ac_cv_search_grib_get_message
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_LIBGRIB_API 1" >>confdefs.h
+
+else
+  as_fn_error $? "Could not link to eccodes library" "$LINENO" 5
+fi
+
+                                 ECCODES_LIBS=" -L$ECCODES_ROOT/lib -leccodes"
+                                 ECCODES_INCLUDE=" -I$ECCODES_ROOT/include"
+else
+  as_fn_error $? "$ECCODES_ROOT is not a directory! ECCODES suppressed" "$LINENO" 5
+fi ;; #(
+  *) :
+     ;;
+esac
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the ECCODES library" >&5
+$as_echo_n "checking for the ECCODES library... " >&6; }
+             { $as_echo "$as_me:${as_lineno-$LINENO}: result: suppressed" >&5
+$as_echo "suppressed" >&6; }
+fi
+
+
+
+# AM_CONDITIONAL([HAVE_LIBGRIB_API],[test "x$with_eccodes" != 'x' -a "x$with_eccodes" != 'xno' ])
+#  ----------------------------------------------------------------------
 #  Compile application with GRIB_API library (for GRIB2 support)
 GRIB_API_INCLUDE=''
 GRIB_API_LIBS=''
@@ -27756,7 +27944,7 @@ fi
 
 
 
- if test "x$with_grib_api" != 'x' -a "x$with_grib_api" != 'xno' ; then
+ if test \( "x$with_grib_api" != 'x' -a "x$with_grib_api" != 'xno' \) -o \( "x$with_eccodes" != 'x' -a "x$with_eccodes" != 'xno' \) ; then
   HAVE_LIBGRIB_API_TRUE=
   HAVE_LIBGRIB_API_FALSE='#'
 else
@@ -30620,7 +30808,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by cdi $as_me 1.8.2, which was
+This file was extended by cdi $as_me 1.9.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -30686,7 +30874,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-cdi config.status 1.8.2
+cdi config.status 1.9.0
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff --git a/libcdi/configure.ac b/libcdi/configure.ac
index 4b1ad30..9d52c3c 100644
--- a/libcdi/configure.ac
+++ b/libcdi/configure.ac
@@ -4,7 +4,7 @@
 #  autoconf 2.68
 #  libtool  2.4.2
 
-AC_INIT([cdi], [1.8.2], [http://mpimet.mpg.de/cdi])
+AC_INIT([cdi], [1.9.0], [http://mpimet.mpg.de/cdi])
 
 AC_DEFINE_UNQUOTED(CDI, ["$PACKAGE_VERSION"], [CDI version])
 
diff --git a/libcdi/doc/cdi_cman.pdf b/libcdi/doc/cdi_cman.pdf
index a3cb233..7f71ee9 100644
Binary files a/libcdi/doc/cdi_cman.pdf and b/libcdi/doc/cdi_cman.pdf differ
diff --git a/libcdi/doc/cdi_fman.pdf b/libcdi/doc/cdi_fman.pdf
index 2e7d37b..9366b4b 100644
Binary files a/libcdi/doc/cdi_fman.pdf and b/libcdi/doc/cdi_fman.pdf differ
diff --git a/libcdi/examples/Makefile.in b/libcdi/examples/Makefile.in
index 76603af..9be7838 100644
--- a/libcdi/examples/Makefile.in
+++ b/libcdi/examples/Makefile.in
@@ -285,6 +285,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
diff --git a/libcdi/examples/pio/Makefile.in b/libcdi/examples/pio/Makefile.in
index cb52b11..ebd9c3f 100644
--- a/libcdi/examples/pio/Makefile.in
+++ b/libcdi/examples/pio/Makefile.in
@@ -268,6 +268,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
diff --git a/libcdi/interfaces/Makefile.in b/libcdi/interfaces/Makefile.in
index f52e8ec..38722a6 100644
--- a/libcdi/interfaces/Makefile.in
+++ b/libcdi/interfaces/Makefile.in
@@ -252,6 +252,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
diff --git a/libcdi/m4/acx_options.m4 b/libcdi/m4/acx_options.m4
index 997cb0d..ee25557 100644
--- a/libcdi/m4/acx_options.m4
+++ b/libcdi/m4/acx_options.m4
@@ -155,12 +155,44 @@ AC_SUBST([NETCDF_ROOT])
 AC_SUBST([NETCDF_INCLUDE])
 AC_SUBST([NETCDF_LIBS])
 #  ----------------------------------------------------------------------
+#  Compile application with ECCODES library (for GRIB2 support)
+ECCODES_INCLUDE=''
+ECCODES_LIBS=''
+AC_ARG_WITH([eccodes],
+            [AS_HELP_STRING([--with-eccodes=<yes|no|directory>],
+                            [library for grib2 encoding/decoding; if a directory is given, it will be used as a value for --with-eccodes-root])],
+            [AS_CASE(["$with_eccodes"],
+                     [no],[AC_MSG_CHECKING([for ECCODES library])
+                           AC_MSG_RESULT([suppressed])],
+                     [yes],[AC_CHECK_HEADERS([grib_api.h])
+                            AC_SEARCH_LIBS([grib_get_message],
+                                           [eccodes],
+                                           [AC_DEFINE([HAVE_LIBGRIB_API],[1],[ECCODES library is present if defined to 1])],
+                                           [AC_MSG_ERROR([Could not link to eccodes library])])],
+                     [*],[ECCODES_ROOT=$with_eccodes
+                          AS_IF([test -d "$ECCODES_ROOT"],
+                                [LDFLAGS="-L$ECCODES_ROOT/lib $LDFLAGS"
+                                 CPPFLAGS="-I$ECCODES_ROOT/include $CPPFLAGS"
+                                 AC_CHECK_HEADERS([grib_api.h])
+                                 AC_SEARCH_LIBS([grib_get_message],
+                                                [eccodes],
+                                                [AC_DEFINE([HAVE_LIBGRIB_API],[1],[ECCODES library is present if defined to 1])],
+                                                [AC_MSG_ERROR([Could not link to eccodes library])])
+                                 ECCODES_LIBS=" -L$ECCODES_ROOT/lib -leccodes"
+                                 ECCODES_INCLUDE=" -I$ECCODES_ROOT/include"],
+                                [AC_MSG_ERROR([$ECCODES_ROOT is not a directory! ECCODES suppressed])])])],
+            [AC_MSG_CHECKING([for the ECCODES library])
+             AC_MSG_RESULT([suppressed])])
+AC_SUBST([ECCODES_INCLUDE])
+AC_SUBST([ECCODES_LIBS])
+# AM_CONDITIONAL([HAVE_LIBGRIB_API],[test "x$with_eccodes" != 'x' -a "x$with_eccodes" != 'xno' ])
+#  ----------------------------------------------------------------------
 #  Compile application with GRIB_API library (for GRIB2 support)
 GRIB_API_INCLUDE=''
 GRIB_API_LIBS=''
 AC_ARG_WITH([grib_api],
             [AS_HELP_STRING([--with-grib_api=<yes|no|directory>],
-                            [library for grib2 compression; if a directory is given, it will be used as a value for --with-jasper-root])],
+                            [library for grib2 encoding/decoding; if a directory is given, it will be used as a value for --with-grib_api-root])],
             [AS_CASE(["$with_grib_api"],
                      [no],[AC_MSG_CHECKING([for GRIB_API library])
                            AC_MSG_RESULT([suppressed])],
@@ -185,7 +217,7 @@ AC_ARG_WITH([grib_api],
              AC_MSG_RESULT([suppressed])])
 AC_SUBST([GRIB_API_INCLUDE])
 AC_SUBST([GRIB_API_LIBS])
-AM_CONDITIONAL([HAVE_LIBGRIB_API],[test "x$with_grib_api" != 'x' -a "x$with_grib_api" != 'xno' ])
+AM_CONDITIONAL([HAVE_LIBGRIB_API],[test \( "x$with_grib_api" != 'x' -a "x$with_grib_api" != 'xno' \) -o \( "x$with_eccodes" != 'x' -a "x$with_eccodes" != 'xno' \) ])
 #  ----------------------------------------------------------------------
 #  Enable GRIB support
 AC_MSG_CHECKING([for GRIB support])
diff --git a/libcdi/src/Makefile.am b/libcdi/src/Makefile.am
index e3b8f13..a286427 100644
--- a/libcdi/src/Makefile.am
+++ b/libcdi/src/Makefile.am
@@ -138,7 +138,7 @@ libcdi_la_USE_FC_extra_sources = \
 	cfortran.h       \
 	cdiFortran.c
 
-# these only contain code iff grib_api is available
+# these only contain code if grib_api is available
 libcdi_la_HAVE_LIBGRIB_API_extra_sources = \
 	gribapi_utilities.c stream_gribapi.c
 
diff --git a/libcdi/src/Makefile.in b/libcdi/src/Makefile.in
index 09b01bb..5d2ae72 100644
--- a/libcdi/src/Makefile.in
+++ b/libcdi/src/Makefile.in
@@ -339,6 +339,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -541,7 +543,7 @@ libcdi_la_USE_FC_extra_sources = \
 	cdiFortran.c
 
 
-# these only contain code iff grib_api is available
+# these only contain code if grib_api is available
 libcdi_la_HAVE_LIBGRIB_API_extra_sources = \
 	gribapi_utilities.c stream_gribapi.c
 
diff --git a/libcdi/src/cdf.c b/libcdi/src/cdf.c
index b7ed6c3..4d55129 100644
--- a/libcdi/src/cdf.c
+++ b/libcdi/src/cdf.c
@@ -163,15 +163,15 @@ int cdfOpen(const char *filename, const char *mode)
 int cdfOpen64(const char *filename, const char *mode)
 {
   int fileID = -1;
-  int open_file = TRUE;
   int filetype = CDI_FILETYPE_NC2;
+  bool open_file = true;
 
   if ( CDF_Debug )
     Message("Open %s with mode %c", filename, *mode);
 
 #if  defined  (HAVE_LIBNETCDF)
 #if  ! defined  (NC_64BIT_OFFSET)
-  open_file = FALSE;
+  open_file = false;
 #endif
 #endif
 
@@ -194,13 +194,13 @@ int cdfOpen64(const char *filename, const char *mode)
 int cdf4Open(const char *filename, const char *mode, int *filetype)
 {
   int fileID = -1;
-  int open_file = FALSE;
+  bool open_file = false;
 
   if ( CDF_Debug )
     Message("Open %s with mode %c", filename, *mode);
 
 #if  defined  (HAVE_NETCDF4)
-  open_file = TRUE;
+  open_file = true;
 #endif
 
   if ( open_file )
diff --git a/libcdi/src/cdf_int.c b/libcdi/src/cdf_int.c
index cfc3574..04c146c 100644
--- a/libcdi/src/cdf_int.c
+++ b/libcdi/src/cdf_int.c
@@ -76,12 +76,12 @@ void cdf_create(const char *path, int cmode, int *ncidp)
 int cdf_open(const char *path, int omode, int *ncidp)
 {
   int status = 0;
-  int dapfile = FALSE;
+  bool dapfile = false;
   struct stat filestat;
   size_t chunksizehint = 0;
 
 #if  defined  (HAVE_LIBNC_DAP)
-  if ( strncmp(path, "http:", 5) == 0 || strncmp(path, "https:", 6) == 0 ) dapfile = TRUE;
+  if ( strncmp(path, "http:", 5) == 0 || strncmp(path, "https:", 6) == 0 ) dapfile = true;
 #endif
 
   if ( dapfile )
@@ -395,6 +395,52 @@ void cdf_put_var_float(int ncid, int varid, const float *fp)
   if ( status != NC_NOERR ) Error("%s", nc_strerror(status));
 }
 
+static
+const char *cdf_var_type(nc_type xtype)
+{
+  const char *ctype = "unknown";
+
+  if      ( xtype == NC_BYTE   )  ctype = "NC_BYTE";
+  else if ( xtype == NC_CHAR   )  ctype = "NC_CHAR";
+  else if ( xtype == NC_SHORT  )  ctype = "NC_SHORT";
+  else if ( xtype == NC_INT    )  ctype = "NC_INT";
+  else if ( xtype == NC_FLOAT  )  ctype = "NC_FLOAT";
+  else if ( xtype == NC_DOUBLE )  ctype = "NC_DOUBLE";
+#if  defined  (HAVE_NETCDF4)
+  else if ( xtype == NC_UBYTE  )  ctype = "NC_UBYTE";
+  else if ( xtype == NC_LONG   )  ctype = "NC_LONG";
+  else if ( xtype == NC_USHORT )  ctype = "NC_USHORT";
+  else if ( xtype == NC_UINT   )  ctype = "NC_UINT";
+  else if ( xtype == NC_INT64  )  ctype = "NC_INT64";
+  else if ( xtype == NC_UINT64 )  ctype = "NC_UINT64";
+#endif
+
+  return ctype;
+}
+
+static
+void minmaxval(size_t nvals, const double *array, double *minval, double *maxval)
+{
+  *minval = array[0];
+  *maxval = array[0];
+  for ( size_t i = 1; i < nvals; ++i )
+    {
+      if      ( array[i] > *maxval ) *maxval = array[i];
+      else if ( array[i] < *minval ) *minval = array[i];
+    }
+}
+
+static
+void minmaxvalf(size_t nvals, const float *array, double *minval, double *maxval)
+{
+  *minval = array[0];
+  *maxval = array[0];
+  for ( size_t i = 1; i < nvals; ++i )
+    {
+      if      ( array[i] > *maxval ) *maxval = array[i];
+      else if ( array[i] < *minval ) *minval = array[i];
+    }
+}
 
 void cdf_put_vara_double(int ncid, int varid, const size_t start[],
                          const size_t count[], const double *dp)
@@ -402,13 +448,19 @@ void cdf_put_vara_double(int ncid, int varid, const size_t start[],
   int status = nc_put_vara_double(ncid, varid, start, count, dp);
 
   if ( CDF_Debug || status != NC_NOERR )
-    Message("ncid = %d varid = %d val0 = %f", ncid, varid, *dp);
-
-  if ( status != NC_NOERR )
     {
       char name[256];
       nc_inq_varname(ncid, varid, name);
-      Message("varname = %s", name);
+      nc_type xtype;
+      nc_inq_vartype(ncid, varid, &xtype);
+      int ndims;
+      nc_inq_varndims(ncid, varid, &ndims);
+      double minval = 0, maxval = 0;
+      size_t nvals = 1;
+      for ( int i = 0; i < ndims; ++i ) nvals *= count[i];
+      minmaxval(nvals, dp, &minval, &maxval);
+      // Message("ncid = %d varid = %d val0 = %f", ncid, varid, *dp);
+      Message("name=%s  type=%s  minval=%f  maxval=%f", name, cdf_var_type(xtype), minval, maxval);
     }
 
   if ( status != NC_NOERR ) Error("%s", nc_strerror(status));
@@ -421,7 +473,20 @@ void  cdf_put_vara_float(int ncid, int varid, const size_t start[],
   int status = nc_put_vara_float(ncid, varid, start, count, fp);
 
   if ( CDF_Debug || status != NC_NOERR )
-    Message("ncid = %d varid = %d val0 = %f", ncid, varid, *fp);
+    {
+      char name[256];
+      nc_inq_varname(ncid, varid, name);
+      nc_type xtype;
+      nc_inq_vartype(ncid, varid, &xtype);
+      int ndims;
+      nc_inq_varndims(ncid, varid, &ndims);
+      double minval = 0, maxval = 0;
+      size_t nvals = 1;
+      for ( int i = 0; i < ndims; ++i ) nvals *= count[i];
+      minmaxvalf(nvals, fp, &minval, &maxval);
+      // Message("ncid = %d varid = %d val0 = %f", ncid, varid, *dp);
+      Message("name=%s  type=%s  minval=%f  maxval=%f", name, cdf_var_type(xtype), minval, maxval);
+    }
 
   if ( status != NC_NOERR ) Error("%s", nc_strerror(status));
 }
diff --git a/libcdi/src/cdf_read.c b/libcdi/src/cdf_read.c
index a81ccb7..50747db 100644
--- a/libcdi/src/cdf_read.c
+++ b/libcdi/src/cdf_read.c
@@ -14,6 +14,7 @@
 #include "cdf.h"
 #include "cdf_int.h"
 #include "vlist.h"
+#include "vlist_var.h"
 
 
 static
diff --git a/libcdi/src/cdf_write.c b/libcdi/src/cdf_write.c
index a3a3b98..0f06ef7 100644
--- a/libcdi/src/cdf_write.c
+++ b/libcdi/src/cdf_write.c
@@ -11,6 +11,7 @@
 #include "cdf.h"
 #include "cdf_int.h"
 #include "vlist.h"
+#include "vlist_var.h"
 
 
 void cdfDefVarDeflate(int ncid, int ncvarid, int deflate_level)
@@ -318,7 +319,6 @@ int cdfDefVar(stream_t *streamptr, int varID)
   int ncvarid = -1;
   int xid = CDI_UNDEFID, yid = CDI_UNDEFID;
   size_t xsize = 0, ysize = 0;
-  char varname[CDI_MAX_NAME];
   int dims[4];
   size_t chunks[4] = {0,0,0,0};
   int ndims = 0;
@@ -427,17 +427,19 @@ int cdfDefVar(stream_t *streamptr, int varID)
   if ( CDI_Debug )
     fprintf(stderr, "chunktype %d  chunks %d %d %d %d\n", chunktype, (int)chunks[0], (int)chunks[1], (int)chunks[2], (int)chunks[3]);
 
-  int tableID  = vlistInqVarTable(vlistID, varID);
-
-  const char *name     = vlistInqVarNamePtr(vlistID, varID);
-  const char *longname = vlistInqVarLongnamePtr(vlistID, varID);
-  const char *stdname  = vlistInqVarStdnamePtr(vlistID, varID);
-  const char *units    = vlistInqVarUnitsPtr(vlistID, varID);
+  char varname[CDI_MAX_NAME];
+  char name[CDI_MAX_NAME]; name[0] = 0;
+  char longname[CDI_MAX_NAME]; longname[0] = 0;
+  char stdname[CDI_MAX_NAME]; stdname[0] = 0;
+  char units[CDI_MAX_NAME]; units[0] = 0;
+  if ( vlistInqVarNamePtr(vlistID, varID) ) vlistInqVarName(vlistID, varID, name);
+  vlistInqVarLongname(vlistID, varID, longname);
+  vlistInqVarStdname(vlistID, varID, stdname);
+  vlistInqVarUnits(vlistID, varID, units);
 
-  if ( name     == NULL )     name = tableInqParNamePtr(tableID, code);
-  if ( longname == NULL ) longname = tableInqParLongnamePtr(tableID, code);
-  if ( units    == NULL )    units = tableInqParUnitsPtr(tableID, code);
-  if ( name )
+  int tableID  = vlistInqVarTable(vlistID, varID);
+  if ( !name[0] ) tableInqEntry(tableID, code, -1, name, longname, units);
+  if ( name[0] )
     {
       sprintf(varname, "%s", name);
 
@@ -464,7 +466,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
             Warning("Changed multiple entry of variable name '%s' to '%s'!", name, varname);
         }
 
-      name = varname;
+      strcpy(name, varname);
     }
   else
     {
@@ -493,7 +495,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
           if ( iz >= CDI_MAX_NAME ) break;
         }
 
-      name = varname;
+      strcpy(name, varname);
       code = 0;
       pdis = 255;
     }
@@ -530,14 +532,9 @@ int cdfDefVar(stream_t *streamptr, int varID)
         }
     }
 
-  if ( stdname && *stdname )
-    cdf_put_att_text(fileID, ncvarid, "standard_name", strlen(stdname), stdname);
-
-  if ( longname && *longname )
-    cdf_put_att_text(fileID, ncvarid, "long_name", strlen(longname), longname);
-
-  if ( units && *units )
-    cdf_put_att_text(fileID, ncvarid, "units", strlen(units), units);
+  if ( *stdname )  cdf_put_att_text(fileID, ncvarid, "standard_name", strlen(stdname), stdname);
+  if ( *longname ) cdf_put_att_text(fileID, ncvarid, "long_name", strlen(longname), longname);
+  if ( *units )    cdf_put_att_text(fileID, ncvarid, "units", strlen(units), units);
 
   if ( code > 0 && pdis == 255 )
     cdf_put_att_int(fileID, ncvarid, "code", NC_INT, 1, &code);
@@ -558,7 +555,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
 
   char coordinates[CDI_MAX_NAME]; coordinates[0] = 0;
 
-  if ( zaxis_is_scalar )
+  if ( zaxis_is_scalar || zaxisInqType(zaxisID) == ZAXIS_CHAR )
     {
       int nczvarID = streamptr->nczvarID[zaxisindex];
       if ( nczvarID != CDI_UNDEFID )
diff --git a/libcdi/src/cdi.h b/libcdi/src/cdi.h
index 22c54eb..1308607 100644
--- a/libcdi/src/cdi.h
+++ b/libcdi/src/cdi.h
@@ -36,11 +36,13 @@ extern "C" {
 #define  CDI_EEOF                  -1   // The end of file was encountered
 #define  CDI_ESYSTEM              -10   // Operating system error
 #define  CDI_EINVAL               -20   // Invalid argument
-#define  CDI_EUFTYPE              -21   // Unsupported file type
-#define  CDI_ELIBNAVAIL           -22   // xxx library not available
-#define  CDI_EUFSTRUCT            -23   // Unsupported file structure
-#define  CDI_EUNC4                -24   // Unsupported NetCDF4 structure
-#define  CDI_EDIMSIZE             -25   // Invalid dimension size
+#define  CDI_EISDIR               -21   // Is a directory
+#define  CDI_EISEMPTY             -22   // Is empty
+#define  CDI_EUFTYPE              -23   // Unsupported file type
+#define  CDI_ELIBNAVAIL           -24   // xxx library not available
+#define  CDI_EUFSTRUCT            -25   // Unsupported file structure
+#define  CDI_EUNC4                -26   // Unsupported NetCDF4 structure
+#define  CDI_EDIMSIZE             -27   // Invalid dimension size
 #define  CDI_ELIMIT               -99   // Internal limits exceeded
 
 /* File types */
@@ -697,11 +699,6 @@ double  vlistInqVarDblKey(int vlistID, int varID, const char *name);
 /* vlistInqVarIntKey: raw access to GRIB meta-data */
 int     vlistInqVarIntKey(int vlistID, int varID, const char *name);
 
-/* needed only for CDO operator after */
-const char *vlistInqVarNamePtr(int vlistID, int varID);
-const char *vlistInqVarLongnamePtr(int vlistID, int varID);
-const char *vlistInqVarUnitsPtr(int vlistID, int varID);
-
 /* CDI attributes */
 
 /*      cdiInqNatts: Get number of attributes assigned to this variable */
@@ -1011,11 +1008,17 @@ void    zaxisPrint(int zaxisID);
 void    zaxisDefLevels(int zaxisID, const double levels[]);
 
 /*      zaxisDefCvals: Define area types of a Z-axis */
-void    zaxisDefCvals(int zaxisID, const char *cvals[]);
+void    zaxisDefCvals(int zaxisID, const char *cvals[], size_t clength);
 
 /*      zaxisInqLevels: Get all levels of a Z-axis */
 int     zaxisInqLevels(int zaxisID, double levels[]);
 
+/*      zaxisInqCLen: Get maximal string length of character Z-axis */
+int     zaxisInqCLen(int zaxisID);
+
+/*      zaxisInqCVals: Get all string values of a character Z-axis */
+int     zaxisInqCVals(int zaxisID, char ***clevels);
+
 /*      zaxisDefLevel: Define one level of a Z-axis */
 void    zaxisDefLevel(int zaxisID, int levelID, double levels);
 
@@ -1199,8 +1202,6 @@ const char *modelInqNamePtr(int modelID);
 
 /* Table routines */
 
-/*      tableWriteC: write table of parameters to file in C language format */
-void    tableWriteC(const char *filename, int tableID);
 /*      tableFWriteC: write table of parameters to FILE* in C language format */
 void    tableFWriteC(FILE *ptfp, int tableID);
 /*      tableWrite: write table of parameters to file in tabular format */
@@ -1210,7 +1211,6 @@ int     tableRead(const char *tablefile);
 int     tableDef(int modelID, int tablenum, const char *tablename);
 
 const char *tableInqNamePtr(int tableID);
-void    tableDefEntry(int tableID, int code, const char *name, const char *longname, const char *units);
 
 int     tableInq(int modelID, int tablenum, const char *tablename);
 int     tableInqNumber(void);
@@ -1218,17 +1218,7 @@ int     tableInqNumber(void);
 int     tableInqNum(int tableID);
 int     tableInqModel(int tableID);
 
-void    tableInqPar(int tableID, int code, char *name, char *longname, char *units);
-
-int     tableInqParCode(int tableID, char *name, int *code);
-int     tableInqParName(int tableID, int code, char *name);
-int     tableInqParLongname(int tableID, int code, char *longname);
-int     tableInqParUnits(int tableID, int code, char *units);
-
-/* needed only for CDO operator after */
-const char *tableInqParNamePtr(int tableID, int parID);
-const char *tableInqParLongnamePtr(int tableID, int parID);
-const char *tableInqParUnitsPtr(int tableID, int parID);
+void    tableInqEntry(int tableID, int id, int ltype, char *name, char *longname, char *units);
 
 /* History routines */
 
diff --git a/libcdi/src/cdi.inc b/libcdi/src/cdi.inc
index 43f9758..6639812 100644
--- a/libcdi/src/cdi.inc
+++ b/libcdi/src/cdi.inc
@@ -4,7 +4,7 @@
 !
 ! Author:
 ! -------
-! Uwe Schulzweida, MPI-MET, Hamburg,   May 2017
+! Uwe Schulzweida, MPI-MET, Hamburg,   July 2017
 !
 
       INTEGER    CDI_MAX_NAME
@@ -39,16 +39,20 @@
       PARAMETER (CDI_ESYSTEM            = -10)
       INTEGER    CDI_EINVAL
       PARAMETER (CDI_EINVAL             = -20)
+      INTEGER    CDI_EISDIR
+      PARAMETER (CDI_EISDIR             = -21)
+      INTEGER    CDI_EISEMPTY
+      PARAMETER (CDI_EISEMPTY           = -22)
       INTEGER    CDI_EUFTYPE
-      PARAMETER (CDI_EUFTYPE            = -21)
+      PARAMETER (CDI_EUFTYPE            = -23)
       INTEGER    CDI_ELIBNAVAIL
-      PARAMETER (CDI_ELIBNAVAIL         = -22)
+      PARAMETER (CDI_ELIBNAVAIL         = -24)
       INTEGER    CDI_EUFSTRUCT
-      PARAMETER (CDI_EUFSTRUCT          = -23)
+      PARAMETER (CDI_EUFSTRUCT          = -25)
       INTEGER    CDI_EUNC4
-      PARAMETER (CDI_EUNC4              = -24)
+      PARAMETER (CDI_EUNC4              = -26)
       INTEGER    CDI_EDIMSIZE
-      PARAMETER (CDI_EDIMSIZE           = -25)
+      PARAMETER (CDI_EDIMSIZE           = -27)
       INTEGER    CDI_ELIMIT
       PARAMETER (CDI_ELIMIT             = -99)
 !
@@ -1372,24 +1376,6 @@
       EXTERNAL        vlistInqVarIntKey
 
 !
-!  needed only for CDO operator after
-!
-      CHARACTER(80)   vlistInqVarNamePtr
-!                                    (INTEGER         vlistID,
-!                                     INTEGER         varID)
-      EXTERNAL        vlistInqVarNamePtr
-
-      CHARACTER(80)   vlistInqVarLongnamePtr
-!                                    (INTEGER         vlistID,
-!                                     INTEGER         varID)
-      EXTERNAL        vlistInqVarLongnamePtr
-
-      CHARACTER(80)   vlistInqVarUnitsPtr
-!                                    (INTEGER         vlistID,
-!                                     INTEGER         varID)
-      EXTERNAL        vlistInqVarUnitsPtr
-
-!
 !  CDI attributes
 !
       INTEGER         cdiInqNatts
@@ -2021,6 +2007,10 @@
 !                                     DOUBLEPRECISION levels(*))
       EXTERNAL        zaxisInqLevels
 
+      INTEGER         zaxisInqCLen
+!                                    (INTEGER         zaxisID)
+      EXTERNAL        zaxisInqCLen
+
 !                     zaxisDefLevel
 !                                    (INTEGER         zaxisID,
 !                                     INTEGER         levelID,
@@ -2434,11 +2424,6 @@
 !
 !  Table routines
 !
-!                     tableWriteC
-!                                    (CHARACTER*(*)   filename,
-!                                     INTEGER         tableID)
-      EXTERNAL        tableWriteC
-
 !                     tableWrite
 !                                    (CHARACTER*(*)   filename,
 !                                     INTEGER         tableID)
@@ -2458,14 +2443,6 @@
 !                                    (INTEGER         tableID)
       EXTERNAL        tableInqNamePtr
 
-!                     tableDefEntry
-!                                    (INTEGER         tableID,
-!                                     INTEGER         code,
-!                                     CHARACTER*(*)   name,
-!                                     CHARACTER*(*)   longname,
-!                                     CHARACTER*(*)   units)
-      EXTERNAL        tableDefEntry
-
       INTEGER         tableInq
 !                                    (INTEGER         modelID,
 !                                     INTEGER         tablenum,
@@ -2483,55 +2460,14 @@
 !                                    (INTEGER         tableID)
       EXTERNAL        tableInqModel
 
-!                     tableInqPar
+!                     tableInqEntry
 !                                    (INTEGER         tableID,
-!                                     INTEGER         code,
+!                                     INTEGER         id,
+!                                     INTEGER         ltype,
 !                                     CHARACTER*(*)   name,
 !                                     CHARACTER*(*)   longname,
 !                                     CHARACTER*(*)   units)
-      EXTERNAL        tableInqPar
-
-      INTEGER         tableInqParCode
-!                                    (INTEGER         tableID,
-!                                     CHARACTER*(*)   name,
-!                                     INTEGER         code)
-      EXTERNAL        tableInqParCode
-
-      INTEGER         tableInqParName
-!                                    (INTEGER         tableID,
-!                                     INTEGER         code,
-!                                     CHARACTER*(*)   name)
-      EXTERNAL        tableInqParName
-
-      INTEGER         tableInqParLongname
-!                                    (INTEGER         tableID,
-!                                     INTEGER         code,
-!                                     CHARACTER*(*)   longname)
-      EXTERNAL        tableInqParLongname
-
-      INTEGER         tableInqParUnits
-!                                    (INTEGER         tableID,
-!                                     INTEGER         code,
-!                                     CHARACTER*(*)   units)
-      EXTERNAL        tableInqParUnits
-
-!
-!  needed only for CDO operator after
-!
-      CHARACTER(80)   tableInqParNamePtr
-!                                    (INTEGER         tableID,
-!                                     INTEGER         parID)
-      EXTERNAL        tableInqParNamePtr
-
-      CHARACTER(80)   tableInqParLongnamePtr
-!                                    (INTEGER         tableID,
-!                                     INTEGER         parID)
-      EXTERNAL        tableInqParLongnamePtr
-
-      CHARACTER(80)   tableInqParUnitsPtr
-!                                    (INTEGER         tableID,
-!                                     INTEGER         parID)
-      EXTERNAL        tableInqParUnitsPtr
+      EXTERNAL        tableInqEntry
 
 !
 !  History routines
diff --git a/libcdi/src/cdiFortran.c b/libcdi/src/cdiFortran.c
index 0308b0f..e7407ab 100644
--- a/libcdi/src/cdiFortran.c
+++ b/libcdi/src/cdiFortran.c
@@ -293,12 +293,6 @@ FCALLSCFUN3 (INT, vlistHasVarKey, VLISTHASVARKEY, vlisthasvarkey, INT, INT, STRI
 FCALLSCFUN3 (DOUBLE, vlistInqVarDblKey, VLISTINQVARDBLKEY, vlistinqvardblkey, INT, INT, STRING)
 FCALLSCFUN3 (INT, vlistInqVarIntKey, VLISTINQVARINTKEY, vlistinqvarintkey, INT, INT, STRING)
 
-/*  needed only for CDO operator after  */
-
-FCALLSCFUN2 (STRING, vlistInqVarNamePtr, VLISTINQVARNAMEPTR, vlistinqvarnameptr, INT, INT)
-FCALLSCFUN2 (STRING, vlistInqVarLongnamePtr, VLISTINQVARLONGNAMEPTR, vlistinqvarlongnameptr, INT, INT)
-FCALLSCFUN2 (STRING, vlistInqVarUnitsPtr, VLISTINQVARUNITSPTR, vlistinqvarunitsptr, INT, INT)
-
 /*  CDI attributes  */
 
 FCALLSCFUN3 (INT, cdiInqNatts, CDIINQNATTS, cdiinqnatts, INT, INT, PINT)
@@ -432,6 +426,7 @@ FCALLSCFUN1 (INT, zaxisDuplicate, ZAXISDUPLICATE, zaxisduplicate, INT)
 FCALLSCSUB1 (zaxisPrint, ZAXISPRINT, zaxisprint, INT)
 FCALLSCSUB2 (zaxisDefLevels, ZAXISDEFLEVELS, zaxisdeflevels, INT, DOUBLEV)
 FCALLSCFUN2 (INT, zaxisInqLevels, ZAXISINQLEVELS, zaxisinqlevels, INT, DOUBLEV)
+FCALLSCFUN1 (INT, zaxisInqCLen, ZAXISINQCLEN, zaxisinqclen, INT)
 FCALLSCSUB3 (zaxisDefLevel, ZAXISDEFLEVEL, zaxisdeflevel, INT, INT, DOUBLE)
 FCALLSCFUN2 (DOUBLE, zaxisInqLevel, ZAXISINQLEVEL, zaxisinqlevel, INT, INT)
 FCALLSCSUB2 (zaxisDefNlevRef, ZAXISDEFNLEVREF, zaxisdefnlevref, INT, INT)
@@ -528,27 +523,15 @@ FCALLSCFUN1 (STRING, modelInqNamePtr, MODELINQNAMEPTR, modelinqnameptr, INT)
 
 /*  Table routines  */
 
-FCALLSCSUB2 (tableWriteC, TABLEWRITEC, tablewritec, STRING, INT)
 FCALLSCSUB2 (tableWrite, TABLEWRITE, tablewrite, STRING, INT)
 FCALLSCFUN1 (INT, tableRead, TABLEREAD, tableread, STRING)
 FCALLSCFUN3 (INT, tableDef, TABLEDEF, tabledef, INT, INT, STRING)
 FCALLSCFUN1 (STRING, tableInqNamePtr, TABLEINQNAMEPTR, tableinqnameptr, INT)
-FCALLSCSUB5 (tableDefEntry, TABLEDEFENTRY, tabledefentry, INT, INT, STRING, STRING, STRING)
 FCALLSCFUN3 (INT, tableInq, TABLEINQ, tableinq, INT, INT, STRING)
 FCALLSCFUN0 (INT, tableInqNumber, TABLEINQNUMBER, tableinqnumber)
 FCALLSCFUN1 (INT, tableInqNum, TABLEINQNUM, tableinqnum, INT)
 FCALLSCFUN1 (INT, tableInqModel, TABLEINQMODEL, tableinqmodel, INT)
-FCALLSCSUB5 (tableInqPar, TABLEINQPAR, tableinqpar, INT, INT, PSTRING, PSTRING, PSTRING)
-FCALLSCFUN3 (INT, tableInqParCode, TABLEINQPARCODE, tableinqparcode, INT, PSTRING, PINT)
-FCALLSCFUN3 (INT, tableInqParName, TABLEINQPARNAME, tableinqparname, INT, INT, PSTRING)
-FCALLSCFUN3 (INT, tableInqParLongname, TABLEINQPARLONGNAME, tableinqparlongname, INT, INT, PSTRING)
-FCALLSCFUN3 (INT, tableInqParUnits, TABLEINQPARUNITS, tableinqparunits, INT, INT, PSTRING)
-
-/*  needed only for CDO operator after  */
-
-FCALLSCFUN2 (STRING, tableInqParNamePtr, TABLEINQPARNAMEPTR, tableinqparnameptr, INT, INT)
-FCALLSCFUN2 (STRING, tableInqParLongnamePtr, TABLEINQPARLONGNAMEPTR, tableinqparlongnameptr, INT, INT)
-FCALLSCFUN2 (STRING, tableInqParUnitsPtr, TABLEINQPARUNITSPTR, tableinqparunitsptr, INT, INT)
+FCALLSCSUB6 (tableInqEntry, TABLEINQENTRY, tableinqentry, INT, INT, INT, PSTRING, PSTRING, PSTRING)
 
 /*  History routines  */
 
diff --git a/libcdi/src/cdi_error.c b/libcdi/src/cdi_error.c
index 786e1ba..7ddd652 100644
--- a/libcdi/src/cdi_error.c
+++ b/libcdi/src/cdi_error.c
@@ -1,5 +1,5 @@
 #if defined (HAVE_CONFIG_H)
-#  include "config.h"
+#include "config.h"
 #endif
 
 #include <stdio.h>
@@ -10,6 +10,8 @@
 const char *cdiStringError(int cdiErrno)
 {
   static const char UnknownError[] = "Unknown Error";
+  static const char _EISDIR[]      = "Is a directory";
+  static const char _EISEMPTY[]    = "File is empty";
   static const char _EUFTYPE[]     = "Unsupported file type";
   static const char _ELIBNAVAIL[]  = "Unsupported file type (library support not compiled in)";
   static const char _EUFSTRUCT[]   = "Unsupported file structure";
@@ -24,6 +26,8 @@ const char *cdiStringError(int cdiErrno)
       if ( cp == NULL ) break;
       return cp;
     }
+  case CDI_EISDIR:     return _EISDIR;
+  case CDI_EISEMPTY:   return _EISEMPTY;
   case CDI_EUFTYPE:    return _EUFTYPE;
   case CDI_ELIBNAVAIL: return _ELIBNAVAIL;
   case CDI_EUFSTRUCT:  return _EUFSTRUCT;
diff --git a/libcdi/src/cdi_int.c b/libcdi/src/cdi_int.c
index 0bc2ee3..ac2cbbd 100644
--- a/libcdi/src/cdi_int.c
+++ b/libcdi/src/cdi_int.c
@@ -32,9 +32,9 @@ int cdiNcChunksizehint = CDI_UNDEFID;
 int cdiChunkType       = CDI_CHUNK_GRID;
 int cdiSplitLtype105   = CDI_UNDEFID;
 
-int cdiIgnoreAttCoordinates = FALSE;
-int cdiCoordinatesLonLat    = FALSE;
-int cdiIgnoreValidRange     = FALSE;
+bool cdiIgnoreAttCoordinates = false;
+bool cdiCoordinatesLonLat    = false;
+bool cdiIgnoreValidRange     = false;
 int cdiSkipRecords          = 0;
 int cdiConvention           = CDI_CONVENTION_ECHAM;
 int cdiInventoryMode        = 1;
@@ -314,13 +314,13 @@ void cdiSetChunk(const char *chunkAlgo)
 
 void cdiInitialize(void)
 {
-  static int Init_CDI = FALSE;
-  char *envstr;
-  long value;
+  static bool Init_CDI = false;
 
   if ( ! Init_CDI )
     {
-      Init_CDI = TRUE;
+      Init_CDI = true;
+      char *envstr;
+      long value;
 
 #if  defined  (HAVE_LIBCGRIBEX)
       gribFixZSE(1);   // 1: Fix ZeroShiftError of simple packed spherical harmonics
@@ -370,13 +370,13 @@ void cdiInitialize(void)
       if ( envstr ) cdiSplitLtype105 = atoi(envstr);
 
       envstr = getenv("IGNORE_ATT_COORDINATES");
-      if ( envstr ) cdiIgnoreAttCoordinates = atoi(envstr);
+      if ( envstr ) cdiIgnoreAttCoordinates = atoi(envstr) > 0;
 
       envstr = getenv("CDI_COORDINATES_LONLAT");
-      if ( envstr ) cdiCoordinatesLonLat = atoi(envstr);
+      if ( envstr ) cdiCoordinatesLonLat = atoi(envstr) > 0;
 
       envstr = getenv("IGNORE_VALID_RANGE");
-      if ( envstr ) cdiIgnoreValidRange = atoi(envstr);
+      if ( envstr ) cdiIgnoreValidRange = atoi(envstr) > 0;
 
       envstr = getenv("CDI_SKIP_RECORDS");
       if ( envstr )
diff --git a/libcdi/src/cdi_int.h b/libcdi/src/cdi_int.h
index 3b77c5d..b687486 100644
--- a/libcdi/src/cdi_int.h
+++ b/libcdi/src/cdi_int.h
@@ -160,9 +160,9 @@ typedef struct
     // (181; 105, 0, timeRangeIndicator=0) .. instantanous rain
     // (181; 105, 0, timeRangeIndicator=4) .. accumulated rain  .. both can be in the same grib file
 #endif // HIRLAM_EXTENSIONS
-  short     used;
   short     varID;
   short     levelID;
+  short     used;
   char      varname[32]; /* needed for grib decoding with GRIB_API */
   var_tile_t tiles;      /* tile-related meta-data, currently for GRIB-API only. */
 }
@@ -178,7 +178,7 @@ typedef struct {
                          /* tsID>0 number of non constant records */
   int       nallrecs;    /* number of all records                 */
   int       curRecID;    /* current record ID                     */
-  long      next;
+  bool      next;
   off_t     position;    /* timestep file position                */
   taxis_t   taxis;
 }
@@ -297,7 +297,7 @@ typedef enum {
 typedef struct
 {
   char*                  keyword;        /* keyword string */
-  int                    update;
+  bool                   update;
   key_val_pair_datatype  data_type;      /* data type of this key/value pair */
   double                 dbl_val;        /* double value (data_type == t_double) */
   int                    int_val;        /* integer value (data_type == t_int) */
@@ -333,9 +333,9 @@ extern int cdiDataUnreduced;
 extern int cdiSortName;
 extern int cdiSortParam;
 extern int cdiHaveMissval;
-extern int cdiIgnoreAttCoordinates;
-extern int cdiCoordinatesLonLat;
-extern int cdiIgnoreValidRange;
+extern bool cdiIgnoreAttCoordinates;
+extern bool cdiCoordinatesLonLat;
+extern bool cdiIgnoreValidRange;
 extern int cdiSkipRecords;
 extern int cdiConvention;
 extern int cdiInventoryMode;
diff --git a/libcdi/src/cdilib.c b/libcdi/src/cdilib.c
index d96eb3e..f623ab6 100644
--- a/libcdi/src/cdilib.c
+++ b/libcdi/src/cdilib.c
@@ -1,7 +1,7 @@
 
-/* Automatically generated by m214003 at 2016-09-16, do not edit */
+/* Automatically generated by m214003 at 2017-06-19, do not edit */
 
-/* CDILIB_VERSION="1.8.0rc3" */
+/* CDILIB_VERSION="1.9.0" */
 
 #ifdef _ARCH_PWR6
 #pragma options nostrict
@@ -58,8 +58,8 @@
 #  define  HAVE_LIBIEG       1
 #endif
 
-#ifndef _ERROR_H
-#define _ERROR_H
+#ifndef ERROR_H
+#define ERROR_H
 
 #include <stdarg.h>
 #include <stdlib.h>
@@ -130,7 +130,7 @@ cdiAbortC_serial(const char *caller, const char *filename,
 }
 #endif
 
-#endif  /* _ERROR_H */
+#endif  /* ERROR_H */
 /*
  * Local Variables:
  * c-file-style: "Java"
@@ -157,45 +157,57 @@ extern "C" {
 #endif
 
 
-#define  CDI_MAX_NAME           256   /* max length of a name                 */
+#define  CDI_MAX_NAME             256   // max length of a name
 
-#define  CDI_UNDEFID             -1
-#define  CDI_GLOBAL              -1   /* Global var ID for vlist              */
+#define  CDI_UNDEFID               -1
+#define  CDI_GLOBAL                -1   // Global var ID for vlist
 
 /* Byte order */
 
-#define  CDI_BIGENDIAN            0   /* Byte order BIGENDIAN                 */
-#define  CDI_LITTLEENDIAN         1   /* Byte order LITTLEENDIAN              */
-#define  CDI_PDPENDIAN            2
+#define  CDI_BIGENDIAN              0   // Byte order BIGENDIAN
+#define  CDI_LITTLEENDIAN           1   // Byte order LITTLEENDIAN
+#define  CDI_PDPENDIAN              2
 
-#define  CDI_REAL                 1   /* Real numbers                         */
-#define  CDI_COMP                 2   /* Complex numbers                      */
-#define  CDI_BOTH                 3   /* Both numbers                         */
+#define  CDI_REAL                   1   // Real numbers
+#define  CDI_COMP                   2   // Complex numbers
+#define  CDI_BOTH                   3   // Both numbers
 
 /* Error identifier */
 
-#define	 CDI_NOERR        	  0   /* No Error                             */
-#define  CDI_EEOF                -1   /* The end of file was encountered      */
-#define  CDI_ESYSTEM            -10   /* Operating system error               */
-#define  CDI_EINVAL             -20   /* Invalid argument                     */
-#define  CDI_EUFTYPE            -21   /* Unsupported file type                */
-#define  CDI_ELIBNAVAIL         -22   /* xxx library not available            */
-#define  CDI_EUFSTRUCT          -23   /* Unsupported file structure           */
-#define  CDI_EUNC4              -24   /* Unsupported NetCDF4 structure        */
-#define  CDI_ELIMIT             -99   /* Internal limits exceeded             */
+#define	 CDI_NOERR        	    0   // No Error
+#define  CDI_EEOF                  -1   // The end of file was encountered
+#define  CDI_ESYSTEM              -10   // Operating system error
+#define  CDI_EINVAL               -20   // Invalid argument
+#define  CDI_EISDIR               -21   // Is a directory
+#define  CDI_EISEMPTY             -22   // Is empty
+#define  CDI_EUFTYPE              -23   // Unsupported file type
+#define  CDI_ELIBNAVAIL           -24   // xxx library not available
+#define  CDI_EUFSTRUCT            -25   // Unsupported file structure
+#define  CDI_EUNC4                -26   // Unsupported NetCDF4 structure
+#define  CDI_EDIMSIZE             -27   // Invalid dimension size
+#define  CDI_ELIMIT               -99   // Internal limits exceeded
 
 /* File types */
 
-#define  FILETYPE_UNDEF          -1   /* Unknown/not yet defined file type */
-#define  FILETYPE_GRB             1   /* File type GRIB                       */
-#define  FILETYPE_GRB2            2   /* File type GRIB version 2             */
-#define  FILETYPE_NC              3   /* File type NetCDF                     */
-#define  FILETYPE_NC2             4   /* File type NetCDF version 2 (64-bit)  */
-#define  FILETYPE_NC4             5   /* File type NetCDF version 4           */
-#define  FILETYPE_NC4C            6   /* File type NetCDF version 4 (classic) */
-#define  FILETYPE_SRV             7   /* File type SERVICE                    */
-#define  FILETYPE_EXT             8   /* File type EXTRA                      */
-#define  FILETYPE_IEG             9   /* File type IEG                        */
+#define  CDI_FILETYPE_GRB           1   // File type GRIB
+#define  CDI_FILETYPE_GRB2          2   // File type GRIB version 2
+#define  CDI_FILETYPE_NC            3   // File type NetCDF
+#define  CDI_FILETYPE_NC2           4   // File type NetCDF version 2 (64-bit)
+#define  CDI_FILETYPE_NC4           5   // File type NetCDF version 4
+#define  CDI_FILETYPE_NC4C          6   // File type NetCDF version 4 (classic)
+#define  CDI_FILETYPE_SRV           7   // File type SERVICE
+#define  CDI_FILETYPE_EXT           8   // File type EXTRA
+#define  CDI_FILETYPE_IEG           9   // File type IEG
+
+#define  FILETYPE_GRB           1
+#define  FILETYPE_GRB2          2
+#define  FILETYPE_NC            3
+#define  FILETYPE_NC2           4
+#define  FILETYPE_NC4           5
+#define  FILETYPE_NC4C          6
+#define  FILETYPE_SRV           7
+#define  FILETYPE_EXT           8
+#define  FILETYPE_IEG           9
 
 /* Compress types */
 
@@ -208,51 +220,66 @@ extern "C" {
 
 /* external data types */
 
+#define  CDI_DATATYPE_PACK          0
+#define  CDI_DATATYPE_PACK1         1
+#define  CDI_DATATYPE_PACK2         2
+#define  CDI_DATATYPE_PACK3         3
+#define  CDI_DATATYPE_PACK4         4
+#define  CDI_DATATYPE_PACK5         5
+#define  CDI_DATATYPE_PACK6         6
+#define  CDI_DATATYPE_PACK7         7
+#define  CDI_DATATYPE_PACK8         8
+#define  CDI_DATATYPE_PACK9         9
+#define  CDI_DATATYPE_PACK10       10
+#define  CDI_DATATYPE_PACK11       11
+#define  CDI_DATATYPE_PACK12       12
+#define  CDI_DATATYPE_PACK13       13
+#define  CDI_DATATYPE_PACK14       14
+#define  CDI_DATATYPE_PACK15       15
+#define  CDI_DATATYPE_PACK16       16
+#define  CDI_DATATYPE_PACK17       17
+#define  CDI_DATATYPE_PACK18       18
+#define  CDI_DATATYPE_PACK19       19
+#define  CDI_DATATYPE_PACK20       20
+#define  CDI_DATATYPE_PACK21       21
+#define  CDI_DATATYPE_PACK22       22
+#define  CDI_DATATYPE_PACK23       23
+#define  CDI_DATATYPE_PACK24       24
+#define  CDI_DATATYPE_PACK25       25
+#define  CDI_DATATYPE_PACK26       26
+#define  CDI_DATATYPE_PACK27       27
+#define  CDI_DATATYPE_PACK28       28
+#define  CDI_DATATYPE_PACK29       29
+#define  CDI_DATATYPE_PACK30       30
+#define  CDI_DATATYPE_PACK31       31
+#define  CDI_DATATYPE_PACK32       32
+#define  CDI_DATATYPE_CPX32        64
+#define  CDI_DATATYPE_CPX64       128
+#define  CDI_DATATYPE_FLT32       132
+#define  CDI_DATATYPE_FLT64       164
+#define  CDI_DATATYPE_INT8        208
+#define  CDI_DATATYPE_INT16       216
+#define  CDI_DATATYPE_INT32       232
+#define  CDI_DATATYPE_UINT8       308
+#define  CDI_DATATYPE_UINT16      316
+#define  CDI_DATATYPE_UINT32      332
+
 #define  DATATYPE_PACK            0
-#define  DATATYPE_PACK1           1
-#define  DATATYPE_PACK2           2
-#define  DATATYPE_PACK3           3
-#define  DATATYPE_PACK4           4
-#define  DATATYPE_PACK5           5
-#define  DATATYPE_PACK6           6
-#define  DATATYPE_PACK7           7
 #define  DATATYPE_PACK8           8
-#define  DATATYPE_PACK9           9
-#define  DATATYPE_PACK10         10
-#define  DATATYPE_PACK11         11
-#define  DATATYPE_PACK12         12
-#define  DATATYPE_PACK13         13
-#define  DATATYPE_PACK14         14
-#define  DATATYPE_PACK15         15
 #define  DATATYPE_PACK16         16
-#define  DATATYPE_PACK17         17
-#define  DATATYPE_PACK18         18
-#define  DATATYPE_PACK19         19
-#define  DATATYPE_PACK20         20
-#define  DATATYPE_PACK21         21
-#define  DATATYPE_PACK22         22
-#define  DATATYPE_PACK23         23
 #define  DATATYPE_PACK24         24
-#define  DATATYPE_PACK25         25
-#define  DATATYPE_PACK26         26
-#define  DATATYPE_PACK27         27
-#define  DATATYPE_PACK28         28
-#define  DATATYPE_PACK29         29
-#define  DATATYPE_PACK30         30
-#define  DATATYPE_PACK31         31
-#define  DATATYPE_PACK32         32
-#define  DATATYPE_CPX32          64
-#define  DATATYPE_CPX64         128
 #define  DATATYPE_FLT32         132
 #define  DATATYPE_FLT64         164
-#define  DATATYPE_INT8          208
-#define  DATATYPE_INT16         216
 #define  DATATYPE_INT32         232
-#define  DATATYPE_UINT8         308
-#define  DATATYPE_UINT16        316
-#define  DATATYPE_UINT32        332
 
 /* internal data types */
+#define  CDI_DATATYPE_INT         251
+#define  CDI_DATATYPE_FLT         252
+#define  CDI_DATATYPE_TXT         253
+#define  CDI_DATATYPE_CPX         254
+#define  CDI_DATATYPE_UCHAR       255
+#define  CDI_DATATYPE_LONG        256
+
 #define  DATATYPE_INT           251
 #define  DATATYPE_FLT           252
 #define  DATATYPE_TXT           253
@@ -280,6 +307,7 @@ extern "C" {
 #define  GRID_CURVILINEAR          10  /* Curvilinear grid                                      */
 #define  GRID_LCC                  11  /* Lambert Conformal Conic (GRIB)                        */
 #define  GRID_PROJECTION           12  /* Projected coordinates                                 */
+#define  GRID_CHARXY               13  /* One horizontal character dimension                    */
 
 #define  CDI_PROJ_RLL              21  /* Rotated Latitude Longitude                            */
 #define  CDI_PROJ_LCC              22  /* Lambert Conformal Conic                               */
@@ -314,6 +342,7 @@ extern "C" {
 #define  ZAXIS_SEDIMENT_BOTTOM_TW  23  /* Bottom Of Sediment Layer Penetrated By Thermal Wave   */
 #define  ZAXIS_MIX_LAYER           24  /* Mixing Layer                                          */
 #define  ZAXIS_REFERENCE           25  /* zaxis reference number                                */
+#define  ZAXIS_CHAR                26  /* Area types                                            */
 
 /* SUBTYPE types */
 
@@ -825,6 +854,8 @@ int     cdiInqNatts(int cdiID, int varID, int *nattsp);
 int     cdiInqAtt(int cdiID, int varID, int attrnum, char *name, int *typep, int *lenp);
 int     cdiDelAtt(int cdiID, int varID, const char *name);
 
+int     cdiCopyAtts(int cdiID1, int varID1, int cdiID2, int varID2);
+
 /*      cdiDefAttInt: Define an integer attribute */
 int     cdiDefAttInt(int cdiID, int varID, const char *name, int type, int len, const int ip[]);
 /*      cdiDefAttFlt: Define a floating point attribute */
@@ -853,7 +884,7 @@ int     gridInqMaskGME(int gridID, int mask[]);
 void    gridDefMask(int gridID, const int mask[]);
 int     gridInqMask(int gridID, int mask[]);
 
-void    gridPrint(int gridID, int index, int opt);
+void    gridPrint(int gridID, int opt);
 
 /*      gridCreate: Create a horizontal Grid */
 int     gridCreate(int gridtype, int size);
@@ -870,9 +901,6 @@ void    gridDefProj(int gridID, int projID);
 /*      gridInqProj: Get the projection ID of a Grid */
 int     gridInqProj(int gridID);
 
-/*      gridDefProjType: Define the projection type */
-void    gridDefProjType(int gridID, int projtype);
-
 /*      gridInqProjType: Get the projection type */
 int     gridInqProjType(int gridID);
 
@@ -906,12 +934,24 @@ void    gridDefXvals(int gridID, const double xvals[]);
 /*      gridInqXvals: Get all values of a X-axis */
 int     gridInqXvals(int gridID, double xvals[]);
 
+/*      gridInqXIsc: Find out whether X-coordinate is of type CHAR */
+int     gridInqXIsc(int gridID);
+
+/*      gridInqXCvals: Get strings from X-axis in case grid is of type GRID_CHARXY */
+int     gridInqXCvals(int gridID, char *xcvals[]);
+
 /*      gridDefYvals: Define the values of a Y-axis */
 void    gridDefYvals(int gridID, const double yvals[]);
 
 /*      gridInqYvals: Get all values of a Y-axis */
 int     gridInqYvals(int gridID, double yvals[]);
 
+/*      gridInqYIsc: Find out whether Y-coordinate is of type CHAR */
+int     gridInqYIsc(int gridID);
+
+/*      gridInqYCvals: Get strings from Y-axis in case grid is of type GRID_CHARXY */
+int     gridInqYCvals(int gridID, char *ycvals[]);
+
 /* CDI grid string key values */
 #define  CDI_KEY_XNAME       901  // X-axis name
 #define  CDI_KEY_XDIMNAME    902  // X-axis dimension name
@@ -922,8 +962,8 @@ int     gridInqYvals(int gridID, double yvals[]);
 #define  CDI_KEY_YLONGNAME   913  // Y-axis longname
 #define  CDI_KEY_YUNITS      914  // Y-axis units
 #define  CDI_KEY_VDIMNAME    920  // Vertex dimension name
-#define  CDI_KEY_MAPNAME     921  // Grid mapping var name
-#define  CDI_KEY_MAPPING     922  // Grid mapping name
+#define  CDI_KEY_MAPPING     921  // Grid mapping var name
+#define  CDI_KEY_MAPNAME     922  // Grid mapping name
 
 /* CDI zaxis string key values */
 #define  CDI_KEY_NAME        941  // Z-axis name
@@ -931,6 +971,8 @@ int     gridInqYvals(int gridID, double yvals[]);
 #define  CDI_KEY_LONGNAME    943  // Z-axis longname
 #define  CDI_KEY_UNITS       944  // Z-axis units
 #define  CDI_KEY_PSNAME      950  // Z-axis surface pressure name
+#define  CDI_KEY_P0NAME      951  // Z-axis reference pressure name
+#define  CDI_KEY_P0VALUE     952  // Z-axis reference pressure in Pa
 
 //      cdiGridDefKeyStr: Define a CDI grid string value from a key
 int     cdiGridDefKeyStr(int gridID, int key, int size, const char *mesg);
@@ -938,6 +980,12 @@ int     cdiGridDefKeyStr(int gridID, int key, int size, const char *mesg);
 //      cdiGridInqKeyStr: Get a CDI grid string value from a key
 int     cdiGridInqKeyStr(int gridID, int key, int size, char *mesg);
 
+//      cdiZaxisDefKeyFlt: Define a CDI Z-axis floating point value from a key
+int     cdiZaxisDefKeyFlt(int zaxisID, int key, double value);
+
+//      cdiZaxisInqKeyFlt: Get a CDI Z-axis floating point value from a key
+int     cdiZaxisInqKeyFlt(int zaxisID, int key, double *value);
+
 /*      gridDefXname: Define the name of a X-axis */
 void    gridDefXname(int gridID, const char *xname);
 
@@ -1043,8 +1091,8 @@ void    gridDefParamGME(int gridID, int nd, int ni, int ni2, int ni3);
 void    gridInqParamGME(int gridID, int *nd, int *ni, int *ni2, int *ni3);
 
   /* Lambert Conformal Conic grid (GRIB version) */
-void    gridDefParamLCC(int gridID, double originLon, double originLat, double lonParY, double lat1, double lat2, double xinc, double yinc, int projflag, int scanflag);
-void    gridInqParamLCC(int gridID, double *originLon, double *originLat, double *lonParY, double *lat1, double *lat2, double *xinc, double *yinc, int *projflag, int *scanflag);
+void gridDefParamLCC(int gridID, double missval, double lon_0, double lat_0, double lat_1, double lat_2, double a, double rf, double xval_0, double yval_0, double x_0, double y_0);
+int gridInqParamLCC(int gridID, double missval, double *lon_0, double *lat_0, double *lat_1, double *lat_2, double *a, double *rf, double *xval_0, double *yval_0, double *x_0, double *y_0);
 
 void    gridDefArea(int gridID, const double area[]);
 void    gridInqArea(int gridID, double area[]);
@@ -1075,9 +1123,16 @@ void    gridChangeType(int gridID, int gridtype);
 void    gridDefComplexPacking(int gridID, int lpack);
 int     gridInqComplexPacking(int gridID);
 
+void    gridDefUvRelativeToGrid(int gridID, int uvRelativeToGrid);
+int     gridInqUvRelativeToGrid(int gridID);
+
+void    gridDefScanningMode(int gridID, int mode);
+int     gridInqScanningMode(int gridID);
+
 /* ZAXIS routines */
 
 void    zaxisName(int zaxistype, char *zaxisname);
+const char *zaxisNamePtr(int leveltype);
 
 /*      zaxisCreate: Create a vertical Z-axis */
 int     zaxisCreate(int zaxistype, int size);
@@ -1094,15 +1149,22 @@ int     zaxisInqSize(int zaxisID);
 /*      zaxisDuplicate: Duplicate a Z-axis */
 int     zaxisDuplicate(int zaxisID);
 
-void    zaxisResize(int zaxisID, int size);
-
-void    zaxisPrint(int zaxisID, int index);
+void    zaxisPrint(int zaxisID);
 
 /*      zaxisDefLevels: Define the levels of a Z-axis */
 void    zaxisDefLevels(int zaxisID, const double levels[]);
 
+/*      zaxisDefCvals: Define area types of a Z-axis */
+void    zaxisDefCvals(int zaxisID, const char *cvals[], size_t clength);
+
 /*      zaxisInqLevels: Get all levels of a Z-axis */
-void    zaxisInqLevels(int zaxisID, double levels[]);
+int     zaxisInqLevels(int zaxisID, double levels[]);
+
+/*      zaxisInqCLen: Get maximal string length of character Z-axis */
+int     zaxisInqCLen(int zaxisID);
+
+/*      zaxisInqCVals: Get all string values of a character Z-axis */
+int     zaxisInqCVals(int zaxisID, char ***clevels);
 
 /*      zaxisDefLevel: Define one level of a Z-axis */
 void    zaxisDefLevel(int zaxisID, int levelID, double levels);
@@ -1425,8 +1487,6 @@ void basetimeInit(basetime_t *basetime);
 #include <stdbool.h>
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
 
 void basetimeInit(basetime_t *basetime)
 {
@@ -1578,8 +1638,8 @@ void swap8byte(void *ptr, size_t size);
  * require-trailing-newline: t
  * End:
  */
-#ifndef _BINARY_H
-#define _BINARY_H
+#ifndef BINARY_H
+#define BINARY_H
 
 #ifdef HAVE_CONFIG_H
 #endif
@@ -1619,7 +1679,7 @@ int binReadFlt64(int fileID, int byteswap, size_t size, FLT64 *ptr);
 int binWriteFlt32(int fileID, int byteswap, size_t size, FLT32 *ptr);
 int binWriteFlt64(int fileID, int byteswap, size_t size, FLT64 *ptr);
 
-#endif  /* _BINARY_H */
+#endif  /* BINARY_H */
 /*
  * Local Variables:
  * c-file-style: "Java"
@@ -1977,9 +2037,9 @@ void decode_juldaysec(int calendar, int julday, int secofday, int *year, int *mo
 
 
 
-static int month_360[12] = {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30};
-static int month_365[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-static int month_366[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+static const int month_360[12] = {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30};
+static const int month_365[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+static const int month_366[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
 
 int calendar_dpy(int calendar)
@@ -1996,9 +2056,9 @@ int calendar_dpy(int calendar)
 
 int days_per_month(int calendar, int year, int month)
 {
-  int *dpm = NULL;
   int daysperyear = calendar_dpy(calendar);
 
+  const int *dpm;
   if      ( daysperyear == 360 ) dpm = month_360;
   else if ( daysperyear == 365 ) dpm = month_365;
   else                           dpm = month_366;
@@ -2043,11 +2103,11 @@ int days_per_year(int calendar, int year)
 static void decode_day(int dpy, int days, int *year, int *month, int *day)
 {
   int i = 0;
-  int *dpm = NULL;
 
   *year = (days-1) / dpy;
   days -= (*year*dpy);
 
+  const int *dpm = NULL;
   if      ( dpy == 360 ) dpm = month_360;
   else if ( dpy == 365 ) dpm = month_365;
   else if ( dpy == 366 ) dpm = month_366;
@@ -2066,9 +2126,9 @@ static void decode_day(int dpy, int days, int *year, int *month, int *day)
 
 static int encode_day(int dpy, int year, int month, int day)
 {
-  int *dpm = NULL;
   long rval = (long)dpy * year + day;
 
+  const int *dpm = NULL;
   if      ( dpy == 360 ) dpm = month_360;
   else if ( dpy == 365 ) dpm = month_365;
   else if ( dpy == 366 ) dpm = month_366;
@@ -2432,6 +2492,7 @@ typedef struct {
   int     self;
   bool    used;
   short   has_bounds;
+  int     datatype;       // datatype
   int     type;           // time type
   int     vdate;          // verification date
   int     vtime;          // verification time
@@ -2449,8 +2510,9 @@ typedef struct {
   int     vtime_ub;       // upper bounds of vtime
   int     fc_unit;        // forecast time unit
   double  fc_period;      // forecast time period
-  char*   name;
-  char*   longname;
+  char   *name;
+  char   *longname;
+  char   *units;
 }
 taxis_t;
 
@@ -2463,8 +2525,10 @@ double   cdiEncodeTimeval(int date, int time, taxis_t* taxis);
 void     timeval2vtime(double timevalue, taxis_t* taxis, int* vdate, int* vtime);
 double   vtime2timeval(int vdate, int vtime, taxis_t *taxis);
 
+void    ptaxisDefDatatype(taxis_t *taxisptr, int datatype);
 void    ptaxisDefName(taxis_t *taxisptr, const char *name);
-void    ptaxisDefLongname(taxis_t *taxisptr, const char *name);
+void    ptaxisDefLongname(taxis_t *taxisptr, const char *longname);
+void    ptaxisDefUnits(taxis_t *taxisptr, const char *units);
 void    taxisDestroyKernel(taxis_t *taxisptr);
 #if !defined (SX)
 extern const resOps taxisOps;
@@ -2616,7 +2680,6 @@ int  extDefDataDP(void *ext, const double *data);
 #define  IEG_LTYPE_LANDDEPTH           111
 #define  IEG_LTYPE_LANDDEPTH_LAYER     112
 #define  IEG_LTYPE_SEADEPTH            160
-#define  IEG_LTYPE_99_MARGIN          1000
 
 /*
  *  Data representation type (Grid Type) [Table 6]
@@ -2743,7 +2806,7 @@ char *strdup(const char *s);
 #endif
 
 
-#ifndef  _ERROR_H
+#ifndef  ERROR_H
 #endif
 #ifndef _BASETIME_H
 #endif
@@ -2845,9 +2908,17 @@ typedef struct
   int       ilevel2;
   int       ltype;
   short     tsteptype;
-  short     used;
+#ifdef HIRLAM_EXTENSIONS
+    // NOTE: tsteptype MUST be part of attributes used to compare variables!
+    // Modern NWP models (HARMONIE, HIRLAM) use timeRangeIndicator to specify
+    // if the field is instantanous or accumulated.
+    // Both types are typically in the same GRIB-file.
+    // (181; 105, 0, timeRangeIndicator=0) .. instantanous rain
+    // (181; 105, 0, timeRangeIndicator=4) .. accumulated rain  .. both can be in the same grib file
+#endif // HIRLAM_EXTENSIONS
   short     varID;
   short     levelID;
+  short     used;
   char      varname[32]; /* needed for grib decoding with GRIB_API */
   var_tile_t tiles;      /* tile-related meta-data, currently for GRIB-API only. */
 }
@@ -2863,7 +2934,7 @@ typedef struct {
                          /* tsID>0 number of non constant records */
   int       nallrecs;    /* number of all records                 */
   int       curRecID;    /* current record ID                     */
-  long      next;
+  bool      next;
   off_t     position;    /* timestep file position                */
   taxis_t   taxis;
 }
@@ -2902,13 +2973,17 @@ typedef struct {
 VCT;
 
 #ifdef HAVE_LIBNETCDF
+enum {
+  CDF_DIMID_X,
+  CDF_DIMID_Y,
+  CDF_VARID_X,
+  CDF_VARID_Y,
+  CDF_VARID_A,
+  CDF_SIZE_ncIDs,
+};
 typedef struct {
   int gridID;
-  int xdimID;
-  int ydimID;
-  int xvarID;
-  int yvarID;
-  int avarID;
+  int ncIDs[CDF_SIZE_ncIDs];
 }
 ncgrid_t;
 #endif
@@ -2938,9 +3013,7 @@ typedef struct {
   int         ncmode;
   int         vlistID;
 #ifdef HAVE_LIBNETCDF
-  ncgrid_t   *ncgrid;
-  int         xdimID[MAX_GRIDS_PS];
-  int         ydimID[MAX_GRIDS_PS];
+  ncgrid_t    ncgrid[MAX_GRIDS_PS];
   int         zaxisID[MAX_ZAXES_PS];	//Warning: synchronous array to vlist_to_pointer(vlistID)->zaxisIDs
   int         nczvarID[MAX_ZAXES_PS];
   VCT         vct;
@@ -2949,10 +3022,11 @@ typedef struct {
   int         globalatts;
   int         localatts;
   int         unreduced;
-  int         sortname;
   int         have_missval;
   int         comptype;      // compression type
   int         complevel;     // compression level
+  bool        sortname;
+  bool        sortparam;
 #if defined (GRIBCONTAINER2D)
   void      **gribContainers;
 #else
@@ -2979,7 +3053,7 @@ typedef enum {
 typedef struct
 {
   char*                  keyword;        /* keyword string */
-  int                    update;
+  bool                   update;
   key_val_pair_datatype  data_type;      /* data type of this key/value pair */
   double                 dbl_val;        /* double value (data_type == t_double) */
   int                    int_val;        /* integer value (data_type == t_int) */
@@ -2994,8 +3068,10 @@ typedef enum {
 } CdiTimeType;
 
 
+#define  CDI_FILETYPE_UNDEF          -1   /* Unknown/not yet defined file type */
 
 
+extern int cdiDebugExt;
 extern int CDI_Debug;      /* If set to 1, debuggig (default 0)            */
 extern int CDI_Recopt;
 extern int cdiGribApiDebug;
@@ -3011,9 +3087,11 @@ extern int cdiChunkType;
 extern int cdiSplitLtype105;
 extern int cdiDataUnreduced;
 extern int cdiSortName;
+extern int cdiSortParam;
 extern int cdiHaveMissval;
-extern int cdiIgnoreAttCoordinates;
-extern int cdiIgnoreValidRange;
+extern bool cdiIgnoreAttCoordinates;
+extern bool cdiCoordinatesLonLat;
+extern bool cdiIgnoreValidRange;
 extern int cdiSkipRecords;
 extern int cdiConvention;
 extern int cdiInventoryMode;
@@ -3045,8 +3123,6 @@ int     streamInqFileID(int streamID);
 
 void    gridDefHasDims(int gridID, int hasdims);
 int     gridInqHasDims(int gridID);
-const char *gridNamePtr(int gridtype);
-const char   *zaxisNamePtr(int leveltype);
 int     zaxisInqLevelID(int zaxisID, double level);
 
 void    streamCheckID(const char *caller, int streamID);
@@ -3080,8 +3156,6 @@ void    recordInitEntry(record_t *record);
 
 void    cdiCheckZaxis(int zaxisID);
 
-void    cdiPrintDatatypes(void);
-
 void    cdiDefAccesstype(int streamID, int type);
 int     cdiInqAccesstype(int streamID);
 
@@ -3253,6 +3327,7 @@ void cdf_put_att_double(int ncid, int varid, const char *name, nc_type xtype, si
 void cdf_get_att_string(int ncid, int varid, const char *name, char **tp);
 void cdf_get_att_text  (int ncid, int varid, const char *name, char *tp);
 void cdf_get_att_int   (int ncid, int varid, const char *name, int *ip);
+void cdf_get_att_long  (int ncid, int varid, const char *name, long *ip);
 void cdf_get_att_double(int ncid, int varid, const char *name, double *dp);
 
 void cdf_inq_att    (int ncid, int varid, const char *name, nc_type * xtypep, size_t * lenp);
@@ -3261,6 +3336,8 @@ void cdf_inq_attlen (int ncid, int varid, const char *name, size_t *lenp);
 void cdf_inq_attname(int ncid, int varid, int attnum, char *name);
 void cdf_inq_attid  (int ncid, int varid, const char *name, int *attnump);
 
+void cdf_def_var_chunking(int ncid, int varid, int storage, const size_t *chunksizesp);
+
 typedef int (*cdi_nc__create_funcp)(const char *path, int cmode,
                                     size_t initialsz, size_t *chunksizehintp,
                                     int *ncidp);
@@ -3392,18 +3469,18 @@ static int cdfOpenFile(const char *filename, const char *mode, int *filetype)
 	      (void) nc_inq_format(ncid, &format);
 	      if ( format == NC_FORMAT_NETCDF4_CLASSIC )
 		{
-		  *filetype = FILETYPE_NC4C;
+		  *filetype = CDI_FILETYPE_NC4C;
 		}
 	    }
 #endif
 	  break;
 	case 'w':
 #if  defined  (NC_64BIT_OFFSET)
-	  if      ( *filetype == FILETYPE_NC2  ) writemode |= NC_64BIT_OFFSET;
+	  if      ( *filetype == CDI_FILETYPE_NC2  ) writemode |= NC_64BIT_OFFSET;
 #endif
 #if  defined  (HAVE_NETCDF4)
-	  if      ( *filetype == FILETYPE_NC4  ) writemode |= NC_NETCDF4;
-	  else if ( *filetype == FILETYPE_NC4C ) writemode |= NC_NETCDF4 | NC_CLASSIC_MODEL;
+	  if      ( *filetype == CDI_FILETYPE_NC4  ) writemode |= NC_NETCDF4;
+	  else if ( *filetype == CDI_FILETYPE_NC4C ) writemode |= NC_NETCDF4 | NC_CLASSIC_MODEL;
 #endif
 	  cdf_create(filename, writemode, &ncid);
 	  if ( CDI_Version_Info ) cdfComment(ncid);
@@ -3424,7 +3501,7 @@ static int cdfOpenFile(const char *filename, const char *mode, int *filetype)
 
 int cdfOpen(const char *filename, const char *mode)
 {
-  int filetype = FILETYPE_NC;
+  int filetype = CDI_FILETYPE_NC;
 
   if ( CDF_Debug )
     Message("Open %s with mode %c", filename, *mode);
@@ -3441,15 +3518,15 @@ int cdfOpen(const char *filename, const char *mode)
 int cdfOpen64(const char *filename, const char *mode)
 {
   int fileID = -1;
-  int open_file = TRUE;
-  int filetype = FILETYPE_NC2;
+  int filetype = CDI_FILETYPE_NC2;
+  bool open_file = true;
 
   if ( CDF_Debug )
     Message("Open %s with mode %c", filename, *mode);
 
 #if  defined  (HAVE_LIBNETCDF)
 #if  ! defined  (NC_64BIT_OFFSET)
-  open_file = FALSE;
+  open_file = false;
 #endif
 #endif
 
@@ -3472,13 +3549,13 @@ int cdfOpen64(const char *filename, const char *mode)
 int cdf4Open(const char *filename, const char *mode, int *filetype)
 {
   int fileID = -1;
-  int open_file = FALSE;
+  bool open_file = false;
 
   if ( CDF_Debug )
     Message("Open %s with mode %c", filename, *mode);
 
 #if  defined  (HAVE_NETCDF4)
-  open_file = TRUE;
+  open_file = true;
 #endif
 
   if ( open_file )
@@ -3666,12 +3743,12 @@ void cdf_create(const char *path, int cmode, int *ncidp)
 int cdf_open(const char *path, int omode, int *ncidp)
 {
   int status = 0;
-  int dapfile = FALSE;
+  bool dapfile = false;
   struct stat filestat;
   size_t chunksizehint = 0;
 
 #if  defined  (HAVE_LIBNC_DAP)
-  if ( strncmp(path, "http:", 5) == 0 || strncmp(path, "https:", 6) == 0 ) dapfile = TRUE;
+  if ( strncmp(path, "http:", 5) == 0 || strncmp(path, "https:", 6) == 0 ) dapfile = true;
 #endif
 
   if ( dapfile )
@@ -4280,6 +4357,19 @@ void cdf_get_att_int(int ncid, int varid, const char *name, int *ip)
 }
 
 
+void cdf_get_att_long(int ncid, int varid, const char *name, long *ip)
+{
+#if  defined  (HAVE_NETCDF4)
+  int status = nc_get_att_long(ncid, varid, name, ip);
+
+  if ( CDF_Debug || status != NC_NOERR )
+    Message("ncid = %d varid = %d att = %s val = %ld", ncid, varid, name, *ip);
+
+  if ( status != NC_NOERR ) Error("%s", nc_strerror(status));
+#endif
+}
+
+
 void cdf_get_att_double(int ncid, int varid, const char *name, double *dp)
 {
   int status;
@@ -4348,6 +4438,15 @@ void cdf_inq_attid(int ncid, int varid, const char *name, int *attnump)
   if ( status != NC_NOERR ) Error("%s", nc_strerror(status));
 }
 
+
+#if  defined  (HAVE_NETCDF4)
+void cdf_def_var_chunking(int ncid, int varid, int storage, const size_t *chunksizesp)
+{
+  int status = nc_def_var_chunking(ncid, varid, storage, chunksizesp);
+  if ( status != NC_NOERR ) Error("%s", nc_strerror(status));
+}
+#endif
+
 #endif
 /*
  * Local Variables:
@@ -4478,10 +4577,8 @@ int get_timeunit(size_t len, const char *ptu)
       else if ( str_is_equal(ptu, "calendar_month") ) timeunit = TUNIT_MONTH;
       else if ( str_is_equal(ptu, "year") )           timeunit = TUNIT_YEAR;
     }
-  else if ( len == 1 )
-    {
-      if ( ptu[0] == 's' ) timeunit = TUNIT_SECOND;
-    }
+  else if ( len == 1 && ptu[0] == 's' )
+    timeunit = TUNIT_SECOND;
 
   return timeunit;
 }
@@ -4535,14 +4632,11 @@ bool is_timeaxis_units(const char *timeunits)
 
 bool is_height_units(const char *units)
 {
-  bool status = false;
   int u0 = units[0];
 
-  if ( (u0=='m' && (!units[1] || strncmp(units, "meter", 5) == 0)) ||
-       (!units[2] && units[1]=='m' && (u0=='c' || u0=='d' || u0=='k')) )
-    {
-      status = true;
-    }
+  bool status
+    = (u0=='m' && (!units[1] || strncmp(units, "meter", 5) == 0))
+    || (!units[2] && units[1]=='m' && (u0=='c' || u0=='d' || u0=='k'));
 
   return status;
 }
@@ -4633,9 +4727,9 @@ bool is_lon_axis(const char *units, const char *stdname)
     {
       status = true;
     }
-
-  if ( status == false && str_is_equal(lc_units, "degree") &&
-       !str_is_equal(stdname, "grid_latitude") && !str_is_equal(stdname, "latitude") )
+  else if ( str_is_equal(lc_units, "degree")
+            && !str_is_equal(stdname, "grid_latitude")
+            && !str_is_equal(stdname, "latitude") )
     {
       int ioff = 6;
       if ( lc_units[ioff] == 's' ) ioff++;
@@ -4661,9 +4755,9 @@ bool is_lat_axis(const char *units, const char *stdname)
     {
       status = true;
     }
-
-  if ( status == false && str_is_equal(lc_units, "degree") &&
-       !str_is_equal(stdname, "grid_longitude") && !str_is_equal(stdname, "longitude") )
+  else if ( str_is_equal(lc_units, "degree")
+            && !str_is_equal(stdname, "grid_longitude")
+            && !str_is_equal(stdname, "longitude") )
     {
       int ioff = 6;
       if ( lc_units[ioff] == 's' ) ioff++;
@@ -4709,6 +4803,8 @@ void set_gridtype(const char *attstring, int *gridtype)
     *gridtype = GRID_UNSTRUCTURED;
   else if ( strcmp(attstring, "curvilinear") == 0 )
     *gridtype = GRID_CURVILINEAR;
+  else if ( strcmp(attstring, "characterxy") == 0 )
+    *gridtype = GRID_CHARXY;
   else if ( strcmp(attstring, "sinusoidal") == 0 )
     ;
   else if ( strcmp(attstring, "laea") == 0 )
@@ -4810,6 +4906,8 @@ void cdfDefTime(stream_t* streamptr);
 
 void cdf_scale_add(size_t size, double *data, double addoffset, double scalefactor);
 
+int cdfDefDatatype(int datatype, int filetype);
+
 #endif
 /*
  * Local Variables:
@@ -4877,6 +4975,10 @@ void cdiAttsUnpack(int cdiID, int varID, void *buf, int size, int *position, voi
 #include <stdbool.h>
 
 
+extern double grid_missval;
+extern int (*proj_lonlat_to_lcc_func)();
+extern int (*proj_lcc_to_lonlat_func)();
+
 typedef unsigned char mask_t;
 
 typedef struct grid_t grid_t;
@@ -4897,9 +4999,15 @@ struct gridVirtTable
   double (*inqXVal)(grid_t *gridptr, int index);
   double (*inqYVal)(grid_t *gridptr, int index);
   int (*inqXVals)(grid_t *gridptr, double *xvals);
+  int (*inqXCvals)(grid_t *gridptr, char **xcvals);
+  int (*inqXIsc)(grid_t *gridptr);
   int (*inqYVals)(grid_t *gridptr, double *yvals);
+  int (*inqYCvals)(grid_t *gridptr, char **ycvals);
+  int (*inqYIsc)(grid_t *gridptr);
   const double *(*inqXValsPtr)(grid_t *gridptr);
+  const char **(*inqXCvalsPtr)(grid_t *gridptr);
   const double *(*inqYValsPtr)(grid_t *gridptr);
+  const char **(*inqYCvalsPtr)(grid_t *gridptr);
   /* return if for both grids, all xval and all yval are equal */
   bool (*compareXYFull)(grid_t *gridRef, grid_t *gridTest);
   /* return if for both grids, x[0], y[0], x[size-1] and y[size-1] are
@@ -4926,23 +5034,11 @@ struct gridaxis_t {
   short   flag;                  // 0: undefined 1:vals 2:first+inc
   double  first, last, inc;
   double *vals;
+  int clength;
+  char  **cvals;
   double *bounds;
 };
 
-// Lambert Conformal Conic
-struct grid_lcc_t {
-  double  originLon;
-  double  originLat;
-  double  lonParY;
-  double  lat1;
-  double  lat2;
-  double  xinc;
-  double  yinc;
-  int     projflag;
-  int     scanflag;
-  short   defined;
-};
-
 // GME Grid
 struct grid_gme_t {
   int     nd, ni, ni2, ni3;       /* parameter for GRID_GME         */
@@ -4954,6 +5050,7 @@ struct grid_t {
   char    mapping[CDI_MAX_NAME];
   char   *name;
   int     self;
+  int     size;
   int     type;                   /* grid type                      */
   int     prec;                   /* grid precision                 */
   int     proj;                   /* grid projection                */
@@ -4961,9 +5058,7 @@ struct grid_t {
   mask_t *mask;
   mask_t *mask_gme;
   double *area;
-  struct grid_lcc_t  lcc;
   struct grid_gme_t  gme;
-  short   isCyclic;               /* TRUE for global cyclic grids   */
   int     number, position;       /* parameter for GRID_REFERENCE   */
   int     trunc;                  /* parameter for GRID_SPECTEAL    */
   int     nvertex;
@@ -4971,14 +5066,27 @@ struct grid_t {
   unsigned char uuid[CDI_UUID_SIZE]; /* uuid for grid reference        */
   int    *rowlon;
   int     nrowlon;
-  int     size;
   int     np;                     /* number of parallels between a pole and the equator */
+  signed char isCyclic;           /* three possible states:
+                                   * -1 if unknown,
+                                   * 0 if found not cyclic, or
+                                   * 1 for global cyclic grids
+                                   */
   bool    lcomplex;
   bool    hasdims;
+  bool uvRelativeToGrid;  /* Some models deliver wind U,V relative to the grid-cell */
   struct gridaxis_t x;
   struct gridaxis_t y;
   const struct gridVirtTable *vtable;
   cdi_atts_t atts;
+  int  scanningMode;
+  bool iScansNegatively, jScansPositively, jPointsAreConsecutive;
+  /* scanningMode  = 128 * iScansNegatively + 64 * jScansPositively + 32 * jPointsAreConsecutive;
+               64  = 128 * 0                + 64 *        1         + 32 * 0
+               00  = 128 * 0                + 64 *        0         + 32 * 0
+               96  = 128 * 0                + 64 *        1         + 32 * 1
+     Default / implicit scanning mode is 64:
+                        i and j scan positively, i points are consecutive (row-major)        */
 };
 
 
@@ -4995,6 +5103,9 @@ void gridVerifyProj(int gridID);
 const double *gridInqXvalsPtr(int gridID);
 const double *gridInqYvalsPtr(int gridID);
 
+const char **gridInqXCvalsPtr(int gridID);
+const char **gridInqYCvalsPtr(int gridID);
+
 const double *gridInqXboundsPtr(int gridID);
 const double *gridInqYboundsPtr(int gridID);
 const double *gridInqAreaPtr(int gridID);
@@ -5020,6 +5131,9 @@ struct addIfNewRes
 
 struct addIfNewRes cdiVlistAddGridIfNew(int vlistID, grid_t *grid, int mode);
 
+int gridVerifyGribParamLCC(double missval, double *lon_0, double *lat_0, double *lat_1, double *lat_2,
+                           double *a, double *rf, double *xval_0, double *yval_0, double *x_0, double *y_0);
+
 #endif
 /*
  * Local Variables:
@@ -5086,6 +5200,10 @@ void cdfLazyGridDestroy(struct cdfLazyGrid *lazyGrid);
  * require-trailing-newline: t
  * End:
  */
+#if defined (HAVE_CONFIG_H)
+#endif
+
+#ifdef HAVE_LIBNETCDF
 
 
 static struct gridVirtTable cdfLazyGridVtable;
@@ -5110,6 +5228,7 @@ static bool cdfLazyInitialized;
 #endif
 
 
+
 void cdfLazyGridDestroy(struct cdfLazyGrid *lazyGrid)
 {
   if (lazyGrid->base.area == cdfPendingLoad)  lazyGrid->base.area = NULL;
@@ -5143,8 +5262,7 @@ cdfLazyGridDefArea(grid_t *grid, const double *area)
 {
   struct cdfLazyGrid *cdfGrid = (struct cdfLazyGrid *)grid;
   lock_lazy_load(cdfGrid);
-  if (grid->area == cdfPendingLoad)
-    grid->area = NULL;
+  if (grid->area == cdfPendingLoad) grid->area = NULL;
   cdfGrid->cellAreaGet.datasetNCId = -1;
   cdfGrid->cellAreaGet.varNCId = -1;
   cdfGrid->baseVtable->defArea(grid, area);
@@ -5179,8 +5297,7 @@ cdfLazyGridInqArea(grid_t *grid, double *area)
 static void
 cdfLazyLoadXYVals(struct xyValGet *valsGet, double **valsp)
 {
-  double *grid_vals
-    = (double *)Malloc(valsGet->size * sizeof (double));
+  double *grid_vals = (double *)Malloc(valsGet->size * sizeof (double));
   *valsp = grid_vals;
   if ( valsGet->ndims == 3 )
     cdf_get_vara_double(valsGet->datasetNCId, valsGet->varNCId,
@@ -5603,6 +5720,9 @@ void cdfBaseGridRenew(struct cdfLazyGrid *restrict *restrict gridpptr, int gridt
     *gridpptr = grid = (struct cdfLazyGrid *)Malloc(sizeof (grid_t));
   cdfBaseGridInit((grid_t*)grid, gridtype);
 }
+
+#endif
+
 /*
  * Local Variables:
  * c-file-style: "Java"
@@ -5668,7 +5788,7 @@ memcrc(const unsigned char *b, size_t n);
 
 #ifndef  CDI_CKSUM_H_
 #endif
-#ifndef  _ERROR_H
+#ifndef  ERROR_H
 #endif
 
 /*
@@ -5693,11 +5813,11 @@ serializeStrTabGetPackSize(const char **strTab, int numStr,
   {
     size_t len = strlen(strTab[i]);
     packBuffSize +=
-      serializeGetSize(1, DATATYPE_INT, context)
-      + serializeGetSize((int)len, DATATYPE_TXT, context);
+      serializeGetSize(1, CDI_DATATYPE_INT, context)
+      + serializeGetSize((int)len, CDI_DATATYPE_TXT, context);
   }
   packBuffSize +=
-    serializeGetSize(1, DATATYPE_UINT32, context);
+    serializeGetSize(1, CDI_DATATYPE_UINT32, context);
   return packBuffSize;
 }
 
@@ -5710,13 +5830,13 @@ serializeStrTabPack(const char **strTab, int numStr,
   for (size_t i = 0; i < (size_t)numStr; ++i)
   {
     int len = (int)strlen(strTab[i]);
-    serializePack(&len, 1, DATATYPE_INT,
+    serializePack(&len, 1, CDI_DATATYPE_INT,
                   buf, buf_size, position, context);
-    serializePack(strTab[i], len, DATATYPE_TXT,
+    serializePack(strTab[i], len, CDI_DATATYPE_TXT,
                   buf, buf_size, position, context);
-    d ^= cdiCheckSum(DATATYPE_TXT, len, strTab[i]);
+    d ^= cdiCheckSum(CDI_DATATYPE_TXT, len, strTab[i]);
   }
-  serializePack(&d, 1, DATATYPE_UINT32,
+  serializePack(&d, 1, CDI_DATATYPE_UINT32,
                 buf, buf_size, position, context);
 }
 
@@ -5730,14 +5850,14 @@ serializeStrTabUnpack(const void *buf, int buf_size, int *position,
     {
       int len;
       serializeUnpack(buf, buf_size, position,
-                      &len, 1, DATATYPE_INT, context);
+                      &len, 1, CDI_DATATYPE_INT, context);
       serializeUnpack(buf, buf_size, position,
-                      strTab[i], len, DATATYPE_TXT, context);
+                      strTab[i], len, CDI_DATATYPE_TXT, context);
       strTab[i][len] = '\0';
-      d2 ^= cdiCheckSum(DATATYPE_TXT, len, strTab[i]);
+      d2 ^= cdiCheckSum(CDI_DATATYPE_TXT, len, strTab[i]);
     }
   serializeUnpack(buf, buf_size, position,
-                  &d, 1, DATATYPE_UINT32, context);
+                  &d, 1, CDI_DATATYPE_UINT32, context);
   xassert(d == d2);
 }
 
@@ -5797,10 +5917,13 @@ uint32_t cdiCheckSum(int type, int count, const void *buffer)
 const char *cdiStringError(int cdiErrno)
 {
   static const char UnknownError[] = "Unknown Error";
+  static const char _EISDIR[]      = "Is a directory";
+  static const char _EISEMPTY[]    = "File is empty";
   static const char _EUFTYPE[]     = "Unsupported file type";
   static const char _ELIBNAVAIL[]  = "Unsupported file type (library support not compiled in)";
   static const char _EUFSTRUCT[]   = "Unsupported file structure";
   static const char _EUNC4[]       = "Unsupported NetCDF4 structure";
+  static const char _EDIMSIZE[]    = "Invalid dimension size";
   static const char _ELIMIT[]      = "Internal limits exceeded";
 
   switch (cdiErrno) {
@@ -5810,10 +5933,13 @@ const char *cdiStringError(int cdiErrno)
       if ( cp == NULL ) break;
       return cp;
     }
+  case CDI_EISDIR:     return _EISDIR;
+  case CDI_EISEMPTY:   return _EISEMPTY;
   case CDI_EUFTYPE:    return _EUFTYPE;
   case CDI_ELIBNAVAIL: return _ELIBNAVAIL;
   case CDI_EUFSTRUCT:  return _EUFSTRUCT;
   case CDI_EUNC4:      return _EUNC4;
+  case CDI_EDIMSIZE:   return _EDIMSIZE;
   case CDI_ELIMIT:     return _ELIMIT;
   }
 
@@ -5834,7 +5960,7 @@ const char *cdiStringError(int cdiErrno)
 
 #ifdef HAVE_LIBGRIB_API
 #include <grib_api.h>
-#ifndef  _ERROR_H
+#ifndef  ERROR_H
 #endif
 #endif
 
@@ -5939,7 +6065,7 @@ static inline void gribHandleDelete(void *gh)
 #endif
 
 typedef struct {
-  int init;
+  bool init;
   void *gribHandle;
 }
 gribContainer_t;
@@ -5954,10 +6080,11 @@ gribContainer_t;
  * require-trailing-newline: t
  * End:
  */
-#ifndef _CGRIBEX_H
-#define _CGRIBEX_H
+#ifndef CGRIBEX_H
+#define CGRIBEX_H
 
 #include <stdio.h>
+#include <stdbool.h>
 #include <sys/types.h>
 
 #define  GRIB_MISSVAL  -9.E33
@@ -5972,6 +6099,7 @@ gribContainer_t;
 #define  GRIB1_LTYPE_ATMOSPHERE           10
 #define  GRIB1_LTYPE_99                   99
 #define  GRIB1_LTYPE_ISOBARIC            100
+#define  GRIB1_LTYPE_ISOBARIC_PA         210
 #define  GRIB1_LTYPE_MEANSEA             102
 #define  GRIB1_LTYPE_ALTITUDE            103
 #define  GRIB1_LTYPE_HEIGHT              105
@@ -5988,7 +6116,6 @@ gribContainer_t;
 #define  GRIB1_LTYPE_SEDIMENT_BOTTOM_TA  164  /* Bottom Of Thermally Active Sediment Layer             */
 #define  GRIB1_LTYPE_SEDIMENT_BOTTOM_TW  165  /* Bottom Of Sediment Layer Penetrated By Thermal Wave   */
 #define  GRIB1_LTYPE_MIX_LAYER           166  /* Mixing Layer                                          */
-#define  GRIB1_LTYPE_99_MARGIN          1000
 
 /* GRIB1 Data representation type (Grid Type) [Table 6] */
 #define  GRIB1_GTYPE_LATLON                0  /*  latitude/longitude                                   */
@@ -6162,7 +6289,7 @@ void  gribSetCalendar(int calendar);
 void  gribDateTime(int *isec1, int *date, int *time);
 int   gribRefDate(int *isec1);
 int   gribRefTime(int *isec1);
-int   gribTimeIsFC(int *isec1);
+bool  gribTimeIsFC(int *isec1);
 
 void  gribPrintSec0(int *isec0);
 void  gribPrintSec1(int *isec0, int *isec1);
@@ -6182,7 +6309,7 @@ void  gribPrintBDS(int nrec, long recpos, long recsize, unsigned char *gribbuffe
 void  gribCheck1(int nrec, long recpos, long recsize, unsigned char *gribbuffer);
 void  gribRepair1(int nrec, long recsize, unsigned char *gribbuffer);
 
-int   gribGetZip(long recsize, unsigned char *gribbuffer, long *urecsize);
+int   gribGetZip(size_t recsize, unsigned char *gribbuffer, size_t *urecsize);
 
 int   gribBzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufsize);
 int   gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufsize);
@@ -6194,10 +6321,10 @@ void  gribClose(int fileID);
 int   gribRead(int fileID, unsigned char *buffer, size_t *buffersize);
 int   gribWrite(int fileID, unsigned char *buffer, size_t buffersize);
 off_t gribGetPos(int fileID);
-int   gribGetSize(int fileID);
+size_t gribGetSize(int fileID);
 int   gribCheckSeek(int fileID, long *offset, int *version);
 int   gribFileSeek(int fileID, long *offset);
-int   gribReadSize(int fileID);
+size_t gribReadSize(int fileID);
 int   gribVersion(unsigned char *buffer, size_t buffersize);
 
 int   grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer, int *intnum, float *fltnum, off_t *bignum);
@@ -6210,7 +6337,7 @@ double calculate_pfactor_double(const double* spectralField, long fieldTruncatio
 }
 #endif
 
-#endif  /* _CGRIBEX_H */ 
+#endif  /* CGRIBEX_H */ 
 
 #if defined (HAVE_CONFIG_H)
 #endif
@@ -6234,8 +6361,9 @@ int cdiNcChunksizehint = CDI_UNDEFID;
 int cdiChunkType       = CDI_CHUNK_GRID;
 int cdiSplitLtype105   = CDI_UNDEFID;
 
-int cdiIgnoreAttCoordinates = FALSE;
-int cdiIgnoreValidRange     = FALSE;
+bool cdiIgnoreAttCoordinates = false;
+bool cdiCoordinatesLonLat    = false;
+bool cdiIgnoreValidRange     = false;
 int cdiSkipRecords          = 0;
 int cdiConvention           = CDI_CONVENTION_ECHAM;
 int cdiInventoryMode        = 1;
@@ -6270,6 +6398,7 @@ int cdiGribApiDebug     = 0;
 int cdiDefaultLeveltype = -1;
 int cdiDataUnreduced = 0;
 int cdiSortName = 0;
+int cdiSortParam = 0;
 int cdiHaveMissval = 0;
 
 
@@ -6350,6 +6479,48 @@ void cdiPrintVersion(void)
   fprintf(stderr, "    FILE library version : %s\n", fileLibraryVersion());
 }
 
+static void cdiPrintDatatypes(void)
+{
+#define XSTRING(x)	#x
+#define STRING(x)	XSTRING(x)
+  fprintf (stderr, "+-------------+-------+\n"
+           "| types       | bytes |\n"
+           "+-------------+-------+\n"
+           "| void *      |   %3d |\n"
+           "+-------------+-------+\n"
+           "| char        |   %3d |\n"
+           "+-------------+-------+\n"
+           "| bool        |   %3d |\n"
+           "| short       |   %3d |\n"
+           "| int         |   %3d |\n"
+           "| long        |   %3d |\n"
+           "| long long   |   %3d |\n"
+           "| size_t      |   %3d |\n"
+           "| off_t       |   %3d |\n"
+           "+-------------+-------+\n"
+           "| float       |   %3d |\n"
+           "| double      |   %3d |\n"
+           "| long double |   %3d |\n"
+           "+-------------+-------+\n\n"
+           "+-------------+-----------+\n"
+           "| INT32       | %-9s |\n"
+           "| INT64       | %-9s |\n"
+           "| FLT32       | %-9s |\n"
+           "| FLT64       | %-9s |\n"
+           "+-------------+-----------+\n"
+           "\n  byte ordering is %s\n\n",
+           (int) sizeof(void *), (int) sizeof(char), (int) sizeof(bool),
+           (int) sizeof(short), (int) sizeof(int), (int) sizeof(long), (int) sizeof(long long),
+           (int) sizeof(size_t), (int) sizeof(off_t),
+           (int) sizeof(float), (int) sizeof(double), (int) sizeof(long double),
+           STRING(INT32), STRING(INT64), STRING(FLT32), STRING(FLT64),
+           ((HOST_ENDIANNESS == CDI_BIGENDIAN) ? "BIGENDIAN"
+            : ((HOST_ENDIANNESS == CDI_LITTLEENDIAN) ? "LITTLEENDIAN"
+               : "Unhandled endianness!")));
+#undef STRING
+#undef XSTRING
+}
+
 void cdiDebug(int level)
 {
   if ( level == 1 || (level &  2) ) CDI_Debug = 1;
@@ -6394,30 +6565,30 @@ int cdiHaveFiletype(int filetype)
   switch (filetype)
     {
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:  { status = 1; break; }
+    case CDI_FILETYPE_SRV:  { status = 1; break; }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:  { status = 1; break; }
+    case CDI_FILETYPE_EXT:  { status = 1; break; }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:  { status = 1; break; }
+    case CDI_FILETYPE_IEG:  { status = 1; break; }
 #endif
 #if  defined  (HAVE_LIBGRIB)
 #if  defined  (HAVE_LIBGRIB_API) || defined  (HAVE_LIBCGRIBEX)
-    case FILETYPE_GRB:  { status = 1; break; }
+    case CDI_FILETYPE_GRB:  { status = 1; break; }
 #endif
 #if  defined  (HAVE_LIBGRIB_API)
-    case FILETYPE_GRB2: { status = 1; break; }
+    case CDI_FILETYPE_GRB2: { status = 1; break; }
 #endif
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:   { status = 1; break; }
+    case CDI_FILETYPE_NC:   { status = 1; break; }
 #if  defined  (HAVE_NETCDF2)
-    case FILETYPE_NC2:  { status = 1; break; }
+    case CDI_FILETYPE_NC2:  { status = 1; break; }
 #endif
 #if  defined  (HAVE_NETCDF4)
-    case FILETYPE_NC4:  { status = 1; break; }
-    case FILETYPE_NC4C: { status = 1; break; }
+    case CDI_FILETYPE_NC4:  { status = 1; break; }
+    case CDI_FILETYPE_NC4C: { status = 1; break; }
 #endif
 #endif
     default: { status = 0; break; }
@@ -6472,13 +6643,13 @@ void cdiSetChunk(const char *chunkAlgo)
 
 void cdiInitialize(void)
 {
-  static int Init_CDI = FALSE;
-  char *envstr;
-  long value;
+  static bool Init_CDI = false;
 
   if ( ! Init_CDI )
     {
-      Init_CDI = TRUE;
+      Init_CDI = true;
+      char *envstr;
+      long value;
 
 #if  defined  (HAVE_LIBCGRIBEX)
       gribFixZSE(1);   // 1: Fix ZeroShiftError of simple packed spherical harmonics
@@ -6500,6 +6671,9 @@ void cdiInitialize(void)
       value = cdiGetenvInt("CDI_SORTNAME");
       if ( value >= 0 ) cdiSortName = (int) value;
 
+      value = cdiGetenvInt("CDI_SORTPARAM");
+      if ( value >= 0 ) cdiSortParam = (int) value;
+
       value = cdiGetenvInt("CDI_HAVE_MISSVAL");
       if ( value >= 0 ) cdiHaveMissval = (int) value;
 
@@ -6525,10 +6699,13 @@ void cdiInitialize(void)
       if ( envstr ) cdiSplitLtype105 = atoi(envstr);
 
       envstr = getenv("IGNORE_ATT_COORDINATES");
-      if ( envstr ) cdiIgnoreAttCoordinates = atoi(envstr);
+      if ( envstr ) cdiIgnoreAttCoordinates = atoi(envstr) > 0;
+
+      envstr = getenv("CDI_COORDINATES_LONLAT");
+      if ( envstr ) cdiCoordinatesLonLat = atoi(envstr) > 0;
 
       envstr = getenv("IGNORE_VALID_RANGE");
-      if ( envstr ) cdiIgnoreValidRange = atoi(envstr);
+      if ( envstr ) cdiIgnoreValidRange = atoi(envstr) > 0;
 
       envstr = getenv("CDI_SKIP_RECORDS");
       if ( envstr )
@@ -6623,6 +6800,7 @@ void cdiDefGlobal(const char *string, int val)
   if      ( strcmp(string, "REGULARGRID")      == 0 ) cdiDataUnreduced = val;
   else if ( strcmp(string, "GRIBAPI_DEBUG")    == 0 ) cdiGribApiDebug = val;
   else if ( strcmp(string, "SORTNAME")         == 0 ) cdiSortName = val;
+  else if ( strcmp(string, "SORTPARAM")        == 0 ) cdiSortParam = val;
   else if ( strcmp(string, "HAVE_MISSVAL")     == 0 ) cdiHaveMissval = val;
   else if ( strcmp(string, "NC_CHUNKSIZEHINT") == 0 ) cdiNcChunksizehint = val;
   else if ( strcmp(string, "CMOR_MODE")        == 0 ) CDI_cmor_mode = val;
@@ -6829,9 +7007,9 @@ cdiGetPageSize(bool largePageAlign)
  * End:
  */
 
-/* Automatically generated by m214003 at 2016-06-03, do not edit */
+/* Automatically generated by m214003 at 2017-06-06, do not edit */
 
-/* CGRIBEXLIB_VERSION="1.7.5" */
+/* CGRIBEXLIB_VERSION="1.8.1" */
 
 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5) || defined (__clang__)
 #pragma GCC diagnostic push
@@ -6850,13 +7028,14 @@ cdiGetPageSize(bool largePageAlign)
 #include <string.h>
 #include <ctype.h>
 #include <stdarg.h>
+#include <stdbool.h>
 #include <sys/types.h>
 #include <inttypes.h>
 
 
 
-#ifndef _TEMPLATES_H
-#define _TEMPLATES_H
+#ifndef CGRIBEX_TEMPLATES_H
+#define CGRIBEX_TEMPLATES_H
 
 #define CAT(X,Y)      X##_##Y
 #define TEMPLATE(X,Y) CAT(X,Y)
@@ -6870,24 +7049,18 @@ cdiGetPageSize(bool largePageAlign)
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdbool.h>
 #include <math.h>
 #include <float.h>
 
 
-#if ! defined   (_CGRIBEX_H)
-#endif
-#if ! defined   (_ERROR_H)
+#if ! defined   (CGRIBEX_H)
 #endif
-#if ! defined   (_DTYPES_H)
+#if ! defined   (ERROR_H)
 #endif
-
-#if ! defined   (FALSE)
-#  define  FALSE  0
+#if ! defined   (DTYPES_H)
 #endif
 
-#if ! defined   (TRUE)
-#  define  TRUE  1
-#endif
 
 #if ! defined   (UCHAR)
 #  define  UCHAR  unsigned char
@@ -7043,8 +7216,8 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
 #endif
 
 #endif  /* GRIB_INT_H */
-#ifndef _GRIBDECODE_H
-#define _GRIBDECODE_H
+#ifndef GRIBDECODE_H
+#define GRIBDECODE_H
 
 #define  UNDEFINED          9.999e20
 
@@ -7183,9 +7356,9 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
 #define  GRIB2_SECLEN(section)   (GET_UINT4(section[0], section[1], section[2], section[3]))
 #define  GRIB2_SECNUM(section)   (GET_UINT1(section[4]))
 
-#endif  /* _GRIBDECODE_H */
-#ifndef _GRIB_ENCODE_H
-#define _GRIB_ENCODE_H
+#endif  /* GRIBDECODE_H */
+#ifndef CGRIBEX_GRIB_ENCODE_H
+#define CGRIBEX_GRIB_ENCODE_H
 
 #include <limits.h>
 
@@ -7222,7 +7395,7 @@ enum {
   Put3Byte(mantissa);            \
 }
 
-#endif  /* _GRIB_ENCODE_H */
+#endif  /* CGRIBEX_GRIB_ENCODE_H */
 #ifndef CODEC_COMMON_H
 #define CODEC_COMMON_H
 #define gribSwapByteOrder_uint16(ui16)  ((uint16_t)((ui16<<8) | (ui16>>8)))
@@ -7993,6 +8166,7 @@ xlc_r -g -O3 -qhot -q64 -qarch=auto -qtune=auto -qreport -DTEST_ENCODE encode_ar
 #endif
 
 #include <stdint.h>
+#include <math.h>
 
 #ifndef DISABLE_SIMD
 #if   defined(__GNUC__) && (__GNUC__ >= 4)
@@ -8762,7 +8936,6 @@ LABEL900:
 
   return (pval);
 } /* decfp2 */
-#include <stdio.h>
 #include <stdint.h>
 #include <string.h>
 #include <stdarg.h>
@@ -8771,14 +8944,11 @@ LABEL900:
 
 int gribRefDate(int *isec1)
 {
-  int date, ryear, rmonth, rday;
-  int century;
-
-  century = ISEC1_Century;
+  int century = ISEC1_Century;
   if ( century < 0 ) century = -century;
   century -= 1;
 
-  ryear   = ISEC1_Year;
+  int ryear   = ISEC1_Year;
 
   /* if ( century != 0 ) */
     {
@@ -8797,50 +8967,44 @@ int gribRefDate(int *isec1)
 	ryear = 1;
     }
 
-  rmonth  = ISEC1_Month;
-  rday    = ISEC1_Day;
+  int rmonth  = ISEC1_Month;
+  int rday    = ISEC1_Day;
 
-  date = cdiEncodeDate(ryear, rmonth, rday);
+  int date = cdiEncodeDate(ryear, rmonth, rday);
 
-  return (date) ;
+  return date ;
 }
 
 
 int gribRefTime(int *isec1)
 {
-  int time, rhour, rminute;
-
-  rhour   = ISEC1_Hour;
-  rminute = ISEC1_Minute;
+  int rhour   = ISEC1_Hour;
+  int rminute = ISEC1_Minute;
 
-  time = cdiEncodeTime(rhour, rminute, 0);
+  int time = cdiEncodeTime(rhour, rminute, 0);
 
-  return (time) ;
+  return time;
 }
 
 
-int gribTimeIsFC(int *isec1)
+bool gribTimeIsFC(int *isec1)
 {
-  int isFC = FALSE;
-  int time_period;
+  bool isFC = false;
 
-  if ( ISEC1_TimeRange == 10 )
-    time_period = (ISEC1_TimePeriod1<<8) + ISEC1_TimePeriod2;
-  else
-    time_period = ISEC1_TimePeriod1;
+  int time_period =  (ISEC1_TimeRange == 10) ? (ISEC1_TimePeriod1<<8) + ISEC1_TimePeriod2 : ISEC1_TimePeriod1;
 
   if ( time_period > 0 && ISEC1_Day > 0 )
     {
-      if ( ISEC1_TimeRange == 0 || ISEC1_TimeRange == 10 ) isFC = TRUE;
+      if ( ISEC1_TimeRange == 0 || ISEC1_TimeRange == 10 ) isFC = true;
     }
 
-  return (isFC);
+  return isFC;
 }
 
 
 void gribDateTime(int *isec1, int *date, int *time)
 {
-  static int lprint = TRUE;
+  static bool lprint = true;
   int julday, secofday;
   int64_t addsec = 0;
   int64_t time_period = 0;
@@ -8912,7 +9076,7 @@ void gribDateTime(int *isec1, int *date, int *time)
 	  if ( lprint )
 	    {
 	      gprintf(__func__, "Time unit %d unsupported", ISEC1_TimeUnit);
-	      lprint = FALSE;
+	      lprint = false;
 	    }
 	  break;
 	}
@@ -10776,8 +10940,10 @@ read3ByteMSBFirst(void *fileptr)
   return (int)((b1 << 16) + (b2 << 8) + b3);
 }
 
-int gribReadSize(int fileID)
+
+size_t gribReadSize(int fileID)
 {
+  size_t rgribsize = 0;
   void *fileptr = filePtr(fileID);
   off_t pos = fileGetPos(fileID); 
 
@@ -10828,6 +10994,7 @@ int gribReadSize(int fileID)
       if ( CGRIBEX_Debug ) Message("bdssize     = %d", bdssize);
 
       gribsize = issize + pdssize + gdssize + bmssize + bdssize + essize;
+      rgribsize = (size_t) gribsize;
     }
   else if ( gribversion == 1 )
     {
@@ -10863,51 +11030,50 @@ int gribReadSize(int fileID)
 	  bdssize = correct_bdslen(bdssize, gribsize, issize+pdssize+gdssize+bmssize);
 	  if ( CGRIBEX_Debug ) Message("bdssize     = %d", bdssize);
 
-	  gribsize = issize+pdssize+gdssize+bmssize+bdssize+essize;
+	  gribsize = issize + pdssize + gdssize + bmssize + bdssize + essize;
 	}
+      rgribsize = (size_t) gribsize;
     }
   else if ( gribversion == 2 )
     {
-      int i;
       /* we set gribsize the following way because it doesn't matter then
 	 whether int is 4 or 8 bytes long - we don't have to care if the size
 	 really fits: if it does not, the record can not be read at all */
-      gribsize = 0;
-      for ( i = 0; i < 8; i++ ) gribsize = (gribsize << 8) | filePtrGetc(fileptr);
+      rgribsize = 0;
+      for ( int i = 0; i < 8; i++ ) rgribsize = (rgribsize << 8) | filePtrGetc(fileptr);
     }
   else
     {
-      gribsize = 0;
+      rgribsize = 0;
       Warning("GRIB version %d unsupported!", gribversion);
     }
 
-  if ( filePtrEOF(fileptr) ) gribsize = 0;
+  if ( filePtrEOF(fileptr) ) rgribsize = 0;
 
-  if ( CGRIBEX_Debug )
-    Message("gribsize    = %d", gribsize);
+  if ( CGRIBEX_Debug ) Message("gribsize = %zu", rgribsize);
 
   fileSetPos(fileID, pos, SEEK_SET);
 
-  return gribsize;
+  return rgribsize;
 }
 
 
-int gribGetSize(int fileID)
+size_t gribGetSize(int fileID)
 {
   long offset;
   int ierr = gribFileSeek(fileID, &offset); /* position file pointer after GRIB */
   if ( ierr > 0 )
     {
       Warning("GRIB record not found!");
-      return (0);
+      return 0;
     }
 
   if      ( ierr == -1 ) return 0;
   else if ( ierr ==  1 ) return 0;
 
-  int recSize = gribReadSize(fileID);
+  size_t recSize = gribReadSize(fileID);
 
-  if ( CGRIBEX_Debug ) Message("recsize = %d", recSize);
+  if ( CGRIBEX_Debug ) Message("recsize = %zu", recSize);
 
   fileSetPos(fileID, (off_t) -4, SEEK_CUR);
 
@@ -10928,7 +11094,7 @@ int gribRead(int fileID, unsigned char *buffer, size_t *buffersize)
   if      ( ierr == -1 ) { *buffersize = 0; return -1; }
   else if ( ierr ==  1 ) { *buffersize = 0; return -2; }
 
-  size_t recSize  = (size_t)gribReadSize(fileID);
+  size_t recSize  = gribReadSize(fileID);
   size_t readSize = recSize;
 
   if ( readSize > *buffersize )
@@ -10986,7 +11152,6 @@ int gribrec_len(unsigned b1, unsigned b2, unsigned b3)
   return gribsize;
 }
 
-#include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 
@@ -11085,7 +11250,7 @@ C     ----------------------------------------------------------------
   */
   char *envString;
   char *env_stream;
-  static int lfirst = TRUE;
+  static bool lfirst = true;
   extern int CGRIBEX_Const;
 
   if ( ! lfirst ) return;
@@ -11227,7 +11392,7 @@ C     ----------------------------------------------------------------
   /*
     Mark common area values set by user.
   */
-  lfirst = FALSE;
+  lfirst = false;
   /*
     Exhaustive use of all possible second-order packing methods
     for HOPER='K'. Set to off.
@@ -11859,7 +12024,7 @@ int correct_bdslen(int bdslen, long recsize, long gribpos)
     the (default) rounding for GRIB products is 120 bytes.
   */
   if ( recsize > JP23SET ) bdslen = (int)(recsize - gribpos - bdslen);
-  return (bdslen);
+  return bdslen;
 }
 
 
@@ -11884,7 +12049,7 @@ int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **p
     {
       fprintf(stderr, "Wrong GRIB indicator section: found >%c%c%c%c<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-1);
+      return -1;
     }
 
   recsize = gribrec_len(section[4], section[5], section[6]);
@@ -11940,7 +12105,7 @@ int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **p
   if ( gribbufsize < gribsize )
     {
       fprintf(stderr, "Length of GRIB message is inconsistent (grib_buffer_size=%ld < grib_record_size=%ld)!\n", gribbufsize, gribsize);
-      return (1);
+      return 1;
     }
 
   /* end section - "7777" in ascii */
@@ -11948,10 +12113,10 @@ int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **p
     {
       fprintf(stderr, "Missing GRIB end section: found >%c%c%c%c<\n",
 	      bufpointer[0], bufpointer[1], bufpointer[2], bufpointer[3]);
-      return (-2);
+      return -2;
     }
 
-  return (0);
+  return 0;
 }
 
 
@@ -11984,14 +12149,14 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
     {
       fprintf(stderr, "wrong indicator section >%c%c%c%c<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-1);
+      return -1;
     }
 
   gribversion = GRIB_EDITION(section);
   if ( gribversion != 2 )
     {
       fprintf(stderr, "wrong GRIB version %d\n", gribversion);
-      return (-1);      
+      return -1;      
     }
 
   gribsize = 0;
@@ -12008,7 +12173,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 1 )
     {
       fprintf(stderr, "Unexpected section1 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *idsp = section;
@@ -12042,7 +12207,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   else
     {
       fprintf(stderr, "Unexpected section3 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   grib_len += sec_len;
@@ -12056,7 +12221,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 4 )
     {
       fprintf(stderr, "Unexpected section4 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *pdsp = section;
@@ -12072,7 +12237,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 5 )
     {
       fprintf(stderr, "Unexpected section5 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *drsp = section;
@@ -12088,7 +12253,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 6 )
     {
       fprintf(stderr, "Unexpected section6 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *bmsp = section;
@@ -12104,7 +12269,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 7 )
     {
       fprintf(stderr, "Unexpected section7 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *bdsp = section;
@@ -12135,10 +12300,10 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
     {
       fprintf(stderr, "Missing end section >%2x %2x %2x %2x<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-2);
+      return -2;
     }
 
-  return (0);
+  return 0;
 }
 
 
@@ -12159,7 +12324,7 @@ int grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer,
     {
       fprintf(stderr, "wrong indicator section >%c%c%c%c<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-1);
+      return -1;
     }
 
   gribversion = GRIB_EDITION(section);
@@ -12212,7 +12377,7 @@ int grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer,
   if ( gribsize > recsize )
     {
       fprintf(stderr, "GRIB buffer size %ld too small! Min size = %ld\n", recsize, gribsize);
-      return (1);
+      return 1;
     }
 
   /* end section - "7777" in ascii */
@@ -12240,7 +12405,7 @@ int grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer,
   printf("intnum %d %d %d\n", intnum[0], intnum[1], intnum[2]);
   printf("fltnum %g %g %g\n", fltnum[0], fltnum[1], fltnum[2]);
   */
-  return (0);
+  return 0;
 }
 
 
@@ -12756,7 +12921,7 @@ void repair1(unsigned char *gbuf, long gbufsize)
   int bds_head = 11;
   int bds_ext = 0, bds_ubits;
   int datstart = 0;
-  /* int llarge = FALSE; */
+  // bool llarge = false;
 
   long gribrecsize;
   nerr = grib1Sections(gbuf, gbufsize, &pds, &gds, &bms, &bds, &gribrecsize);
@@ -12773,7 +12938,7 @@ void repair1(unsigned char *gbuf, long gbufsize)
     }
 
   /* recLen = gribrec_len(gbuf[4], gbuf[5], gbuf[6]); */
-  /* if ( recLen > JP23SET ) llarge = TRUE; */
+  /* if ( recLen > JP23SET ) llarge = true; */
 
   bds_len   = BDS_Len;
   bds_nbits = BDS_NumBits;
@@ -12867,34 +13032,25 @@ void gribRepair1(int nrec, long recsize, unsigned char *gribbuffer)
 #if defined (HAVE_CONFIG_H)
 #endif
 
-#if  defined (HAVE_LIBSZ) || defined (HAVE_LIBAEC)
+#if  defined (HAVE_LIBSZ)
 #if defined(__cplusplus)
 extern "C" {
 #endif
-#if defined (HAVE_LIBAEC)
-#  include <libaec.h>
-#else
-#  include <szlib.h>
-#endif
+#include <szlib.h>
 #if defined (__cplusplus)
 }
 #endif
 
-#if defined (HAVE_LIBAEC)
-#  define AEC_FLAGS           (AEC_DATA_MSB | AEC_DATA_PREPROCESS)
-#else
-#  define OPTIONS_MASK        (SZ_RAW_OPTION_MASK | SZ_MSB_OPTION_MASK | SZ_NN_OPTION_MASK)
-#endif
+#define OPTIONS_MASK        (SZ_RAW_OPTION_MASK | SZ_MSB_OPTION_MASK | SZ_NN_OPTION_MASK)
 
-#  define PIXELS_PER_BLOCK    (8)
-#  define PIXELS_PER_SCANLINE (PIXELS_PER_BLOCK*128)
+#define PIXELS_PER_BLOCK    (8)
+#define PIXELS_PER_SCANLINE (PIXELS_PER_BLOCK*128)
 
-#  define MIN_COMPRESS        (0.95)
-#  define MIN_SIZE            (256)
+#define MIN_COMPRESS        (0.95)
+#define MIN_SIZE            (256)
 #endif
 
 #define  Z_SZIP  128
-#define  Z_AEC   130
 
 
 #define SetLen3(var, offset, value) ((var[offset+0] = 0xFF & (value >> 16)), \
@@ -12906,120 +13062,93 @@ extern "C" {
 				     (var[offset+3] = 0xFF & (value      )))
 
 
-int gribGetZip(long recsize, unsigned char *gribbuffer, long *urecsize)
+int gribGetZip(size_t recsize, unsigned char *gribbuffer, size_t *urecsize)
 {
-  /* urecsize : uncompressed record size  */
   int compress = 0;
-  int nerr;
-  /* int  bds_len, bds_nbits, lspherc, lcomplex; */
-  int bds_flag, lcompress;
-  long gribsize = 0;
   unsigned char *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
 
-  int gribversion = gribVersion(gribbuffer, (size_t)recsize);
+  int gribversion = gribVersion(gribbuffer, recsize);
 
-  if ( gribversion == 2 ) return (compress);
+  if ( gribversion == 2 ) return compress;
 
   long gribrecsize;
-  nerr = grib1Sections(gribbuffer, recsize, &pds, &gds, &bms, &bds, &gribrecsize);
+  int nerr = grib1Sections(gribbuffer, (long)recsize, &pds, &gds, &bms, &bds, &gribrecsize);
   if ( nerr < 0 )
     {
       fprintf(stdout, "GRIB message error\n");
-      return (compress);
+      return compress;
     }
 
   if ( nerr > 0 )
     {
       fprintf(stdout, "GRIB data corrupted!\n");
-      return (compress);
+      return compress;
     }
 
   /* bds_len   = BDS_Len; */
   /* bds_nbits = BDS_NumBits; */
-  bds_flag  = BDS_Flag;
+  int bds_flag  = BDS_Flag;
   /* lspherc   =  bds_flag >> 7; */
   /* lcomplex  = (bds_flag >> 6)&1; */
-  lcompress = (bds_flag >> 4)&1;
+  int lcompress = (bds_flag >> 4)&1;
 
-  *urecsize = 0;
+  size_t gribsize = 0;
   if ( lcompress )
     {
       compress = BDS_Z;
-      if ( compress == Z_SZIP || compress == Z_AEC )
-	{
-	  gribsize = gribrec_len(bds[14], bds[15], bds[16]);
-	}
+      if ( compress == Z_SZIP ) gribsize = (size_t) gribrec_len(bds[14], bds[15], bds[16]);
     }
 
   *urecsize = gribsize;
 
-  return (compress);
+  return compress;
 }
 
 
 int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufsize)
 {
-  int nerr;
-  int gribLen;
-  int rec_len;
-  int llarge = FALSE;
-#if ! (defined (HAVE_LIBSZ) || defined (HAVE_LIBAEC))
+#if ! defined(HAVE_LIBSZ)
   static int libszwarn = 1;
 #endif
   unsigned char *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
 
-  gribLen = gribrec_len(dbuf[4], dbuf[5], dbuf[6]);
-  if ( gribLen > JP23SET ) llarge = TRUE;
+  int gribLen = gribrec_len(dbuf[4], dbuf[5], dbuf[6]);
+  int llarge = (gribLen > JP23SET);
 
-  rec_len = gribLen;
+  int rec_len = gribLen;
 
   long gribrecsize;
-  nerr = grib1Sections(dbuf, dbufsize, &pds, &gds, &bms, &bds, &gribrecsize);
+  int nerr = grib1Sections(dbuf, dbufsize, &pds, &gds, &bms, &bds, &gribrecsize);
   if ( nerr < 0 )
     {
       fprintf(stdout, "GRIB message error\n");
-      return (rec_len);
+      return rec_len;
     }
 
   if ( nerr > 0 )
     {
       fprintf(stdout, "GRIB data corrupted!\n");
-      return (rec_len);
+      return rec_len;
     }
 
-#if  defined (HAVE_LIBSZ) || defined (HAVE_LIBAEC)
-
+#if  defined(HAVE_LIBSZ)
   {
-    long i;
-    int bdsLen;
     int gribLenOld = 0;
-    int status;
-    size_t datstart, datsize;
-#if defined (HAVE_LIBAEC)
-    struct aec_stream strm;
-#else
-    SZ_com_t sz_param;          /* szip parameter block */
-#endif
-    unsigned char *dest, *source;
-    size_t destLen, sourceLen;
-    int bits_per_sample;
-    int bds_len, bds_nbits, bds_flag, lspherc, lcomplex,/* lcompress,*/ bds_ubits;
     int bds_head = 11;
     int bds_ext = 0;
-    int bds_zoffset, bds_zstart;
     unsigned char *pbuf = NULL;
 
-    bds_zstart  = 14;
-    bds_zoffset = 12;
+    int bds_zstart  = 14;
+    int bds_zoffset = 12;
     if ( llarge ) bds_zoffset += 2;
 
-    bds_len   = BDS_Len;
+    int bds_len   = BDS_Len;
     bds_len   = correct_bdslen(bds_len, gribLen, bds-dbuf);
-    bds_nbits = BDS_NumBits;
-    bds_flag  = BDS_Flag;
-    bds_ubits = bds_flag & 15;
-    lspherc   =  bds_flag >> 7;
-    lcomplex  = (bds_flag >> 6)&1;
+    int bds_nbits = BDS_NumBits;
+    int bds_flag  = BDS_Flag;
+    int bds_ubits = bds_flag & 15;
+    int lspherc   =  bds_flag >> 7;
+    int lcomplex  = (bds_flag >> 6)&1;
     /* lcompress = (bds_flag >> 4)&1; */
     
     if ( bds_nbits != 8 && bds_nbits != 16 && bds_nbits != 24 && bds_nbits != 32 )
@@ -13030,36 +13159,23 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	    linfo = 0;
 	    fprintf(stderr, "GRIB szip only supports 8, 16, 24 and 32 bit data!\n");
 	  }
-	return (rec_len);
+	return rec_len;
       }
 
-#if defined (HAVE_LIBSZ)
-    if ( bds_nbits == 24 )
-      bits_per_sample    = 8;
-    else
-#endif
-      bits_per_sample    = bds_nbits;
+    int bits_per_sample = (bds_nbits == 24) ? 8 : bds_nbits;
 
-#if defined (HAVE_LIBAEC)
-    strm.bits_per_sample = bits_per_sample;
-    strm.block_size      = PIXELS_PER_BLOCK;
-    strm.rsi             = PIXELS_PER_SCANLINE / PIXELS_PER_BLOCK;
-    strm.flags           = AEC_FLAGS;
-    if ( bds_nbits == 24 ) strm.flags |= AEC_DATA_3BYTE; 
-#else
+    SZ_com_t sz_param;          /* szip parameter block */
     sz_param.options_mask        = OPTIONS_MASK;
     sz_param.bits_per_pixel      = bits_per_sample;
     sz_param.pixels_per_block    = PIXELS_PER_BLOCK;
     sz_param.pixels_per_scanline = PIXELS_PER_SCANLINE;
-#endif
 
     if ( lspherc )
       {
 	if ( lcomplex  )
 	  {
-	    int jup, ioff;
-	    jup  = bds[15];
-	    ioff = (jup+1)*(jup+2);
+	    int jup  = bds[15];
+	    int ioff = (jup+1)*(jup+2);
 	    bds_ext = 4 + 3 + 4*ioff;
 	  }
 	else
@@ -13068,27 +13184,25 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	  }
       }
 
-    datstart = bds_head + bds_ext;
+    size_t datstart = bds_head + bds_ext;
 
-    datsize = ((((bds_len - datstart)*8-bds_ubits)/bds_nbits)*bds_nbits)/8;
+    size_t datsize = ((((bds_len - datstart)*8-bds_ubits)/bds_nbits)*bds_nbits)/8;
 
-    if ( datsize < MIN_SIZE ) return (rec_len);
+    if ( datsize < MIN_SIZE ) return rec_len;
     /*
     fprintf(stderr, "%d %d %d %d\n", bds_len, datstart, bds_len - datstart, datsize);
     */
-    sourceLen = datsize;
-    destLen   = sbufsize;
+    size_t sourceLen = datsize;
+    size_t destLen   = sbufsize;
     
-    source = bds + datstart;
-    dest = sbuf;
+    unsigned char *source = bds + datstart;
+    unsigned char *dest = sbuf;
 
-#if defined (HAVE_LIBSZ)
     if ( bds_nbits == 24 )
       {
-	long nelem;
-	nelem = sourceLen/3;
+	long nelem = sourceLen/3;
 	pbuf = (unsigned char*) Malloc(sourceLen);
-	for ( i = 0; i < nelem; i++ )
+	for ( long i = 0; i < nelem; i++ )
 	  {
 	    pbuf[        i] = source[3*i  ];
 	    pbuf[  nelem+i] = source[3*i+1];
@@ -13096,24 +13210,8 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	  }
 	source = pbuf;
       }
-#endif
-
-#if defined (HAVE_LIBAEC)
-    strm.next_in = source;
-    strm.avail_in = sourceLen;
-    strm.next_out = dest;
-    strm.avail_out = destLen;
-
-    status = aec_buffer_encode(&strm);
-    if ( status != AEC_OK )
-      {
-       	if ( status != AEC_DATA_ERROR )
-	  Warning("AEC ERROR: %d code %3d level %3d", status, PDS_Parameter, PDS_Level2);
-      }
 
-    destLen = strm.total_out;
-#else
-    status = SZ_BufftoBuffCompress(dest, &destLen, source, sourceLen, &sz_param);
+    int status = SZ_BufftoBuffCompress(dest, &destLen, source, sourceLen, &sz_param);
     if ( status != SZ_OK )
       {
 	if ( status == SZ_NO_ENCODER_ERROR )
@@ -13127,7 +13225,6 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	else
 	  Warning("SZ ERROR: %d code %3d level %3d", status, PDS_Parameter, PDS_Level2);
       }
-#endif
     
     if ( pbuf ) Free(pbuf);
     /*
@@ -13145,7 +13242,7 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	gribLenOld = gribLen;
 
 	if ( bds_ext )
-	  for ( i = bds_ext-1; i >= 0; --i )
+	  for ( long i = bds_ext-1; i >= 0; --i )
 	    bds[bds_zoffset+bds_head+i] = bds[bds_head+i];
 
 	/*
@@ -13177,15 +13274,12 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	    SetLen3(bds, bds_zstart+6, destLen);
 	  }
 
-	bdsLen = datstart + bds_zoffset + destLen;
+	int bdsLen = datstart + bds_zoffset + destLen;
 
 	bds[11] = 0;
 	bds[12] = 0;
-#if defined (HAVE_LIBAEC)
-	BDS_Z   = Z_AEC;
-#else
+
 	BDS_Z   = Z_SZIP;
-#endif
 
 	BDS_Flag += 16;
 	if ( (bdsLen%2) == 1 )
@@ -13205,7 +13299,6 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 
 	if ( llarge )
 	  {
-	    long itemp;
 	    long bdslen = gribLen - 4;
 
 	    /*
@@ -13218,7 +13311,7 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 	    */
 	    while ( gribLen%120 ) dbuf[gribLen++] = 0;
 
-	    itemp = gribLen / (-120);
+	    long itemp = gribLen / (-120);
 	    itemp = JP23SET - itemp + 1;
 
 	    SetLen3(dbuf, 4, itemp);
@@ -13250,7 +13343,7 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 
   if ( libszwarn )
     {
-      Warning("Compression disabled, szlib or libaec not available!");
+      Warning("Compression disabled, szlib not available!");
       libszwarn = 0;
     }
 #endif
@@ -13262,24 +13355,21 @@ int  gribZip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufs
 
   rec_len = gribLen;
 
-  return (rec_len);
+  return rec_len;
 }
 
 
 int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbufsize)
 {
-#if ! (defined (HAVE_LIBSZ) || defined (HAVE_LIBAEC))
+#if ! defined(HAVE_LIBSZ)
   static int libszwarn = 1;
 #endif
   unsigned char *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
   size_t gribLen = 0;
-  unsigned char *dest, *source;
   size_t destLen, sourceLen;
-  int /* bds_len, */ bds_nbits, bds_flag, lspherc, lcomplex /*, lcompress*/;
   enum { bds_head = 11 };
   int bds_ext = 0;
-  int bds_zoffset, bds_zstart;
-  int llarge = FALSE;
+  bool llarge = false;
 
   UNUSED(dbufsize);
 
@@ -13288,37 +13378,36 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
   if ( nerr < 0 )
     {
       fprintf(stdout, "GRIB message error\n");
-      return (0);
+      return 0;
     }
 
   if ( nerr > 0 )
     {
       fprintf(stdout, "GRIB data corrupted!\n");
-      return (0);
+      return 0;
     }
 
-  bds_zstart = 14;
+  int bds_zstart = 14;
 
   int recLen = gribrec_len(bds[bds_zstart], bds[bds_zstart+1], bds[bds_zstart+2]);
-  if ( recLen > JP23SET ) llarge = TRUE;
+  if ( recLen > JP23SET ) llarge = true;
 
-  bds_zoffset = 12;
+  int bds_zoffset = 12;
   if ( llarge ) bds_zoffset += 2;
 
   /* bds_len   = BDS_Len; */
-  bds_nbits = BDS_NumBits;
-  bds_flag  = BDS_Flag;
-  lspherc   =  bds_flag >> 7;
-  lcomplex  = (bds_flag >> 6)&1;
+  int bds_nbits = BDS_NumBits;
+  int bds_flag  = BDS_Flag;
+  int lspherc   =  bds_flag >> 7;
+  int lcomplex  = (bds_flag >> 6)&1;
   /* lcompress = (bds_flag >> 4)&1; */
 
   if ( lspherc )
     {
       if ( lcomplex  )
 	{
-	  int jup, ioff;
-	  jup  = bds[bds_zoffset+15];
-	  ioff = (jup+1)*(jup+2);
+	  int jup  = bds[bds_zoffset+15];
+	  int ioff = (jup+1)*(jup+2);
 	  bds_ext = 4 + 3 + 4*ioff;
 	}
       else
@@ -13329,7 +13418,7 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
 
   size_t datstart = bds_head + (size_t)bds_ext;
 
-  source = bds + datstart + bds_zoffset;
+  unsigned char *source = bds + datstart + bds_zoffset;
   if ( llarge )
     sourceLen = ((size_t) ((bds[21]<<24)+(bds[22]<<16)+(bds[23]<<8)+bds[24]));
   else
@@ -13339,16 +13428,16 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
   if ( nerr < 0 )
     {
       fprintf(stdout, "GRIB message error\n");
-      return (0);
+      return 0;
     }
 
   if ( nerr > 0 )
     {
       fprintf(stdout, "GRIB data corrupted!\n");
-      return (0);
+      return 0;
     }
 
-  dest = bds + datstart;
+  unsigned char *dest = bds + datstart;
   if ( llarge )
     destLen = ((size_t) ((bds[17]<<24)+(bds[18]<<16)+(bds[19]<<8)+bds[20]));
   else
@@ -13358,63 +13447,28 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
 
   size_t bdsLen = datstart + destLen;
 
-#if  defined (HAVE_LIBSZ) || defined (HAVE_LIBAEC)
+#if  defined(HAVE_LIBSZ)
   {
-    int status;
-    long i;
-    size_t tmpLen;
-    int bds_ubits;
-    int bits_per_sample;
-#if defined (HAVE_LIBAEC)
-    struct aec_stream strm;
-#else
-    SZ_com_t sz_param;          /* szip parameter block */
-#endif
+    int bits_per_sample = (bds_nbits == 24) ? 8 : bds_nbits;
 
-#if defined (HAVE_LIBSZ)
-    if ( bds_nbits == 24 )
-      bits_per_sample    = 8;
-    else
-#endif
-      bits_per_sample    = bds_nbits;
-
-#if defined (HAVE_LIBAEC)
-    strm.bits_per_sample         = bits_per_sample;
-    strm.block_size              = PIXELS_PER_BLOCK;
-    strm.rsi                     = PIXELS_PER_SCANLINE / PIXELS_PER_BLOCK;
-    strm.flags                   = AEC_FLAGS;
-    if ( bds_nbits == 24 ) strm.flags |= AEC_DATA_3BYTE; 
-#else
+    SZ_com_t sz_param;          /* szip parameter block */
     sz_param.options_mask        = OPTIONS_MASK;
     sz_param.bits_per_pixel      = bits_per_sample;
     sz_param.pixels_per_block    = PIXELS_PER_BLOCK;
     sz_param.pixels_per_scanline = PIXELS_PER_SCANLINE;
-#endif
 
     if ( bds_ext )
-      for ( i = 0; i < bds_ext; ++i )
+      for ( long i = 0; i < bds_ext; ++i )
 	bds[bds_head+i] = bds[bds_zoffset+bds_head+i];
 
-    /*
-    fprintf(stderr, "gribUnzip: sourceLen %ld; destLen %ld\n", (long)sourceLen, (long)destLen);
+    /*    fprintf(stderr, "gribUnzip: sourceLen %ld; destLen %ld\n", (long)sourceLen, (long)destLen);
     fprintf(stderr, "gribUnzip: sourceOff %d; destOff %d\n", bds[12], bds[11]);
     fprintf(stderr, "gribUnzip: reclen %d; bdslen %d\n", recLen, bdsLen);
     */
 
-    tmpLen = destLen;
-#if defined (HAVE_LIBAEC)
-    strm.next_in   = source;
-    strm.avail_in  = sourceLen;
-    strm.next_out  = dest;
-    strm.avail_out = tmpLen;
+    size_t tmpLen = destLen;
 
-    status = aec_buffer_decode(&strm);
-    if ( status != AEC_OK )
-      Warning("AEC ERROR: %d code %3d level %3d", status, PDS_Parameter, PDS_Level2);
-
-    tmpLen = strm.total_out;
-#else
-    status = SZ_BufftoBuffDecompress(dest, &tmpLen, source, sourceLen, &sz_param);
+    int status = SZ_BufftoBuffDecompress(dest, &tmpLen, source, sourceLen, &sz_param);
     if ( status != SZ_OK )
       {
 	if ( status == SZ_NO_ENCODER_ERROR )
@@ -13428,7 +13482,6 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
 	else
 	  Warning("SZ ERROR: %d code %3d level %3d", status, PDS_Parameter, PDS_Level2);
       }
-#endif
     /*
     fprintf(stderr, "gribUnzip: sl = %ld  dl = %ld   tl = %ld\n",
 	    (long)sourceLen, (long)destLen,(long) tmpLen);
@@ -13437,14 +13490,11 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
       Warning("unzip size differ: code %3d level %3d  ibuflen %ld ubuflen %ld",
 	      PDS_Parameter, PDS_Level2, (long) destLen, (long) tmpLen);
 
-#if defined (HAVE_LIBSZ)
     if ( bds_nbits == 24 )
       {
-	long nelem;
-	unsigned char *pbuf;
-	nelem = tmpLen/3;
-	pbuf = (unsigned char*) Malloc(tmpLen);
-	for ( i = 0; i < nelem; i++ )
+	long nelem = tmpLen/3;
+	unsigned char *pbuf = (unsigned char*) Malloc(tmpLen);
+	for ( long i = 0; i < nelem; i++ )
 	  {
 	    pbuf[3*i  ] = dest[        i];
 	    pbuf[3*i+1] = dest[  nelem+i];
@@ -13453,9 +13503,8 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
 	memcpy(dest, pbuf, tmpLen);
 	Free(pbuf);
       }
-#endif
 
-    bds_ubits = BDS_Flag & 15;
+    int bds_ubits = BDS_Flag & 15;
     BDS_Flag -= bds_ubits;
 
     if ( (bdsLen%2) == 1 )
@@ -13523,7 +13572,7 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
   
   if ( libszwarn )
     {
-      Warning("Decompression disabled, szlib or libaec not available!");
+      Warning("Decompression disabled, szlib not available!");
       libszwarn = 0;
     }
 #endif
@@ -15398,18 +15447,16 @@ int gribVersion(unsigned char *is, size_t buffersize)
   if ( buffersize < 8 )
     Error("Buffer too small (current size %d)!", (int) buffersize);
 
-  return (GRIB_EDITION(is));
+  return GRIB_EDITION(is);
 }
 
 static 
 double GET_Real(unsigned char *grib)
 {
-  int iexp, imant;
-
-  iexp  = GET_UINT1(grib[0]);
-  imant = GET_UINT3(grib[1], grib[2], grib[3]);
+  int iexp  = GET_UINT1(grib[0]);
+  int imant = GET_UINT3(grib[1], grib[2], grib[3]);
 
-  return (decfp2(iexp, imant));
+  return decfp2(iexp, imant);
 }
 
 static 
@@ -15417,7 +15464,7 @@ int decodeIS(unsigned char *is, int *isec0, int *iret)
 {
   int isLen = 0;
   int grib1offset;
-  int lgrib = FALSE, lbudg = FALSE, ltide = FALSE;
+  bool lgrib = false, lbudg = false, ltide = false;
 
   /*
     Octets 1 - 4 : The letters G R I B.
@@ -15429,22 +15476,22 @@ int decodeIS(unsigned char *is, int *isec0, int *iret)
   /*
     Check that 'GRIB' is found where expected.
   */
-  if ( GRIB_START(is) ) lgrib = TRUE;
+  if ( GRIB_START(is) ) lgrib = true;
   /*
     ECMWF pseudo-grib data uses 'BUDG' and 'TIDE'.
   */
-  if ( BUDG_START(is) ) lbudg = TRUE;
-  if ( TIDE_START(is) ) ltide = TRUE;
+  if ( BUDG_START(is) ) lbudg = true;
+  if ( TIDE_START(is) ) ltide = true;
   /*
     Data is not GRIB or pseudo-grib.
   */
-  if ( lgrib == FALSE && lbudg == FALSE && ltide == FALSE )
+  if ( lgrib == false && lbudg == false && ltide == false )
     {
       *iret = 305;
       gprintf(__func__, "Input data is not GRIB or pseudo-grib.");
       gprintf(__func__, "Return code = %d", *iret);
     }
-  if ( lbudg == TRUE || ltide == TRUE )
+  if ( lbudg || ltide )
     {
       *iret = 305;
       gprintf(__func__, "Pseudo-grib data unsupported.");
@@ -15469,7 +15516,7 @@ int decodeIS(unsigned char *is, int *isec0, int *iret)
 
   isLen = 4 + grib1offset;
 
-  return (isLen);
+  return isLen;
 }
 
 static 
@@ -15555,19 +15602,20 @@ int decodePDS(unsigned char *pds, int *isec0, int *isec1)
   ISEC1_LevelType      = PDS_LevelType;
 
   if ( (ISEC1_LevelType !=  20) && 
-       (ISEC1_LevelType != GRIB1_LTYPE_99)        && 
-       (ISEC1_LevelType != GRIB1_LTYPE_ISOBARIC)  && 
-       (ISEC1_LevelType != GRIB1_LTYPE_ALTITUDE)  && 
-       (ISEC1_LevelType != GRIB1_LTYPE_HEIGHT)    && 
-       (ISEC1_LevelType != GRIB1_LTYPE_SIGMA)     && 
-       (ISEC1_LevelType != GRIB1_LTYPE_HYBRID)    && 
-       (ISEC1_LevelType != GRIB1_LTYPE_LANDDEPTH) && 
-       (ISEC1_LevelType != GRIB1_LTYPE_ISENTROPIC) && 
+       (ISEC1_LevelType != GRIB1_LTYPE_99)           && 
+       (ISEC1_LevelType != GRIB1_LTYPE_ISOBARIC)     && 
+       (ISEC1_LevelType != GRIB1_LTYPE_ISOBARIC_PA)  && 
+       (ISEC1_LevelType != GRIB1_LTYPE_ALTITUDE)     && 
+       (ISEC1_LevelType != GRIB1_LTYPE_HEIGHT)       && 
+       (ISEC1_LevelType != GRIB1_LTYPE_SIGMA)        && 
+       (ISEC1_LevelType != GRIB1_LTYPE_HYBRID)       && 
+       (ISEC1_LevelType != GRIB1_LTYPE_LANDDEPTH)    && 
+       (ISEC1_LevelType != GRIB1_LTYPE_ISENTROPIC)   && 
        (ISEC1_LevelType != 115) && 
        (ISEC1_LevelType != 117) && 
        (ISEC1_LevelType != 125) && 
        (ISEC1_LevelType != 127) && 
-       (ISEC1_LevelType != GRIB1_LTYPE_SEADEPTH)  && 
+       (ISEC1_LevelType != GRIB1_LTYPE_SEADEPTH)     && 
        (ISEC1_LevelType != 210) )
     {
       ISEC1_Level1 = PDS_Level1;
@@ -15670,7 +15718,7 @@ int decodePDS(unsigned char *pds, int *isec0, int *isec1)
 	}
     }
 
-  return (pdsLen);
+  return pdsLen;
 }
 
 
@@ -16163,7 +16211,7 @@ static
 int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2, int *numGridVals)
 {
   /* int imisng = 0; */
-  int  ReducedGrid = FALSE, VertCoorTab = FALSE;
+  bool  ReducedGrid = false, VertCoorTab = false;
 #if defined (VECTORCODE)
   unsigned char *igrib;
   GRIBPACK *lgrib = NULL;
@@ -16183,17 +16231,17 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
     { /* Either vct or reduced grid */
       if ( GDS_NV != 0 )
 	{ /* we have vct */
-	  VertCoorTab = TRUE;
+	  VertCoorTab = true;
 	  int ipl =  4*GDS_NV + ipvpl - 1;
 	  if ( ipl < gdsLen )
 	    {
-	      ReducedGrid = TRUE;
+	      ReducedGrid = true;
 	    }
 	}
       else
 	{
-	  VertCoorTab = FALSE;
-	  ReducedGrid = TRUE;
+	  VertCoorTab = false;
+	  ReducedGrid = true;
 	}
       /*	  ReducedGrid = (gdsLen - 32 - 4*GDS_NV); */
     }
@@ -16210,7 +16258,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       if ( jlenl == GDS_NumLat )
 	{
 	  *numGridVals = 0;
-	  ISEC2_Reduced = TRUE;
+	  ISEC2_Reduced = true;
 	  for ( int i = 0; i < jlenl; i++ )
 	    {
 	      ISEC2_RowLon(i) = GET_UINT2(gds[locnl+2*i], gds[locnl+2*i+1]);
@@ -16219,7 +16267,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	}
       else
 	{
-	  ReducedGrid = FALSE;
+	  ReducedGrid = false;
 	}
     }
 
@@ -16263,18 +16311,14 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_ROTSTR )
     {
-      /*
-      iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LATLON     ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROT ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROTSTR )
     {
-      /*
-      iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LCC )
     {
@@ -16307,9 +16351,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       isec2[ 8] = 0;
       isec2[ 9] = 0;
       isec2[10] = 0;
-      /*
-      iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_GME )
     {
@@ -16323,16 +16365,19 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       ISEC2_GME_LonMPL = GDS_GME_LonMPL;
       ISEC2_GME_BFlag  = GDS_GME_BFlag;
       *numGridVals  = (ISEC2_GME_NI+1)*(ISEC2_GME_NI+1)*10;
-      /*
-      iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
     }
   else
     {
+      static bool lwarn = true;
       ISEC2_NumLon = GDS_NumLon;
       ISEC2_NumLat = GDS_NumLat;
       *numGridVals  = ISEC2_NumLon*ISEC2_NumLat;
-      Message("Gridtype %d unsupported", ISEC2_GridType);
+      if ( lwarn )
+        {
+          lwarn = false;
+          Message("GRIB gridtype %d unsupported", ISEC2_GridType);
+        }
     }
 
   /*    vertical coordinate parameters for hybrid levels.     */
@@ -16343,7 +16388,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
   isec2[17] = 0;
   isec2[18] = 0;
 
-  if ( VertCoorTab == TRUE )
+  if ( VertCoorTab )
     {
       int locnv;
       if ( ISEC0_GRIB_Version  == 0 )
@@ -16395,7 +16440,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
 			  T *fsec4, int fsec4len, int dfunc, int bdsLenIn, int numGridVals, int llarge, int *iret)
 {
   unsigned char *igrib;
-  int lspherc = FALSE, lcomplex = FALSE;
+  bool lspherc = false, lcomplex = false;
   int lcompress;
   int jup, kup, mup;
   int locnd;
@@ -16436,7 +16481,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
   /* 0------- grid point           */
   /* 1------- spherical harmonics  */
 
-  lspherc = bds_flag >> 7;
+  lspherc = (bds_flag >> 7)&1;
 
   if ( lspherc ) isec4[2] = 128;
   else           isec4[2] = 0;
@@ -16681,15 +16726,15 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 {
   UCHAR *is = NULL, *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
   int isLen = 0, pdsLen = 0, gdsLen = 0, bmsLen = 0, bdsLen = 0, esLen = 0;
-  int gdsIncluded = FALSE;
-  int bmsIncluded = FALSE;
+  bool gdsIncluded = false;
+  bool bmsIncluded = false;
   int bitmapSize = 0;
   int imaskSize = 0;
-  int ldebug = FALSE;
-  int llarge = FALSE, l_iorj = FALSE;
-  int lsect2 = FALSE, lsect3 = FALSE;
+  bool ldebug = false;
+  bool llarge = false, l_iorj = false;
+  bool lsect2 = false, lsect3 = false;
   int numGridVals = 0;
-  static int lmissvalinfo = 1;
+  static bool lmissvalinfo = 1;
 
   UNUSED(kleng);
 
@@ -16697,7 +16742,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 
   grsdef();
 
-  ISEC2_Reduced = FALSE;
+  ISEC2_Reduced = false;
 
   /*
     ----------------------------------------------------------------
@@ -16705,7 +16750,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   is = (unsigned char *) &kgrib[0];
-
   isLen = decodeIS(is, isec0, iret);
 
   /*
@@ -16718,7 +16762,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     {
       if ( ldebug )
 	gprintf(__func__, "Special case, negative length multiplied by -120");
-      llarge = TRUE;
+      llarge = true;
       ISEC0_GRIB_Len *= (-120);
     }
   /*
@@ -16812,7 +16856,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */ 
   pds = is + isLen;
-
   pdsLen = decodePDS(pds, isec0, isec1);
 
   /*
@@ -16825,7 +16868,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( gdsIncluded )
     {
       gds = is + isLen + pdsLen;
-
       gdsLen = TEMPLATE(decodeGDS,T)(gds, isec0, isec2, fsec2, &numGridVals);
     }
 
@@ -16840,8 +16882,8 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( bmsIncluded )
     {
       bms = is + isLen + pdsLen + gdsLen;
-
       bmsLen = BMS_Len;
+
       imaskSize = (bmsLen - 6)<<3;
       bitmapSize = imaskSize - BMS_UnusedBits;
       /*
@@ -16855,9 +16897,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   bds = is + isLen + pdsLen + gdsLen + bmsLen;
-
   bdsLen = ISEC0_GRIB_Len - (isLen + pdsLen + gdsLen + bmsLen);
-
   bdsLen = TEMPLATE(decodeBDS,T)(ISEC1_DecScaleFactor, bds, isec2, isec4, 
 				 fsec4, fsec4len, dfunc, bdsLen, numGridVals, llarge, iret);
 
@@ -16870,7 +16910,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       if ( dfunc != 'L' && dfunc != 'J' )
 	if ( DBL_IS_NAN(FSEC3_MissVal) && lmissvalinfo )
 	  {
-	    lmissvalinfo = 0;
+	    lmissvalinfo = false;
 	    FSEC3_MissVal = (T)GRIB_MISSVAL;
 	    Message("Missing value = NaN is unsupported, set to %g!", GRIB_MISSVAL);
 	  }
@@ -17079,7 +17119,7 @@ static
 int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2, int *numGridVals)
 {
   /* int imisng = 0; */
-  int  ReducedGrid = FALSE, VertCoorTab = FALSE;
+  bool  ReducedGrid = false, VertCoorTab = false;
 #if defined (VECTORCODE)
   unsigned char *igrib;
   GRIBPACK *lgrib = NULL;
@@ -17099,17 +17139,17 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
     { /* Either vct or reduced grid */
       if ( GDS_NV != 0 )
 	{ /* we have vct */
-	  VertCoorTab = TRUE;
+	  VertCoorTab = true;
 	  int ipl =  4*GDS_NV + ipvpl - 1;
 	  if ( ipl < gdsLen )
 	    {
-	      ReducedGrid = TRUE;
+	      ReducedGrid = true;
 	    }
 	}
       else
 	{
-	  VertCoorTab = FALSE;
-	  ReducedGrid = TRUE;
+	  VertCoorTab = false;
+	  ReducedGrid = true;
 	}
       /*	  ReducedGrid = (gdsLen - 32 - 4*GDS_NV); */
     }
@@ -17126,7 +17166,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       if ( jlenl == GDS_NumLat )
 	{
 	  *numGridVals = 0;
-	  ISEC2_Reduced = TRUE;
+	  ISEC2_Reduced = true;
 	  for ( int i = 0; i < jlenl; i++ )
 	    {
 	      ISEC2_RowLon(i) = GET_UINT2(gds[locnl+2*i], gds[locnl+2*i+1]);
@@ -17135,7 +17175,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	}
       else
 	{
-	  ReducedGrid = FALSE;
+	  ReducedGrid = false;
 	}
     }
 
@@ -17179,18 +17219,14 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_ROTSTR )
     {
-      /*
-      iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LATLON     ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROT ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROTSTR )
     {
-      /*
-      iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LCC )
     {
@@ -17223,9 +17259,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       isec2[ 8] = 0;
       isec2[ 9] = 0;
       isec2[10] = 0;
-      /*
-      iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_GME )
     {
@@ -17239,16 +17273,19 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       ISEC2_GME_LonMPL = GDS_GME_LonMPL;
       ISEC2_GME_BFlag  = GDS_GME_BFlag;
       *numGridVals  = (ISEC2_GME_NI+1)*(ISEC2_GME_NI+1)*10;
-      /*
-      iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
     }
   else
     {
+      static bool lwarn = true;
       ISEC2_NumLon = GDS_NumLon;
       ISEC2_NumLat = GDS_NumLat;
       *numGridVals  = ISEC2_NumLon*ISEC2_NumLat;
-      Message("Gridtype %d unsupported", ISEC2_GridType);
+      if ( lwarn )
+        {
+          lwarn = false;
+          Message("GRIB gridtype %d unsupported", ISEC2_GridType);
+        }
     }
 
   /*    vertical coordinate parameters for hybrid levels.     */
@@ -17259,7 +17296,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
   isec2[17] = 0;
   isec2[18] = 0;
 
-  if ( VertCoorTab == TRUE )
+  if ( VertCoorTab )
     {
       int locnv;
       if ( ISEC0_GRIB_Version  == 0 )
@@ -17311,7 +17348,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
 			  T *fsec4, int fsec4len, int dfunc, int bdsLenIn, int numGridVals, int llarge, int *iret)
 {
   unsigned char *igrib;
-  int lspherc = FALSE, lcomplex = FALSE;
+  bool lspherc = false, lcomplex = false;
   int lcompress;
   int jup, kup, mup;
   int locnd;
@@ -17352,7 +17389,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
   /* 0------- grid point           */
   /* 1------- spherical harmonics  */
 
-  lspherc = bds_flag >> 7;
+  lspherc = (bds_flag >> 7)&1;
 
   if ( lspherc ) isec4[2] = 128;
   else           isec4[2] = 0;
@@ -17597,15 +17634,15 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 {
   UCHAR *is = NULL, *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
   int isLen = 0, pdsLen = 0, gdsLen = 0, bmsLen = 0, bdsLen = 0, esLen = 0;
-  int gdsIncluded = FALSE;
-  int bmsIncluded = FALSE;
+  bool gdsIncluded = false;
+  bool bmsIncluded = false;
   int bitmapSize = 0;
   int imaskSize = 0;
-  int ldebug = FALSE;
-  int llarge = FALSE, l_iorj = FALSE;
-  int lsect2 = FALSE, lsect3 = FALSE;
+  bool ldebug = false;
+  bool llarge = false, l_iorj = false;
+  bool lsect2 = false, lsect3 = false;
   int numGridVals = 0;
-  static int lmissvalinfo = 1;
+  static bool lmissvalinfo = 1;
 
   UNUSED(kleng);
 
@@ -17613,7 +17650,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 
   grsdef();
 
-  ISEC2_Reduced = FALSE;
+  ISEC2_Reduced = false;
 
   /*
     ----------------------------------------------------------------
@@ -17621,7 +17658,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   is = (unsigned char *) &kgrib[0];
-
   isLen = decodeIS(is, isec0, iret);
 
   /*
@@ -17634,7 +17670,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     {
       if ( ldebug )
 	gprintf(__func__, "Special case, negative length multiplied by -120");
-      llarge = TRUE;
+      llarge = true;
       ISEC0_GRIB_Len *= (-120);
     }
   /*
@@ -17728,7 +17764,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */ 
   pds = is + isLen;
-
   pdsLen = decodePDS(pds, isec0, isec1);
 
   /*
@@ -17741,7 +17776,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( gdsIncluded )
     {
       gds = is + isLen + pdsLen;
-
       gdsLen = TEMPLATE(decodeGDS,T)(gds, isec0, isec2, fsec2, &numGridVals);
     }
 
@@ -17756,8 +17790,8 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( bmsIncluded )
     {
       bms = is + isLen + pdsLen + gdsLen;
-
       bmsLen = BMS_Len;
+
       imaskSize = (bmsLen - 6)<<3;
       bitmapSize = imaskSize - BMS_UnusedBits;
       /*
@@ -17771,9 +17805,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   bds = is + isLen + pdsLen + gdsLen + bmsLen;
-
   bdsLen = ISEC0_GRIB_Len - (isLen + pdsLen + gdsLen + bmsLen);
-
   bdsLen = TEMPLATE(decodeBDS,T)(ISEC1_DecScaleFactor, bds, isec2, isec4, 
 				 fsec4, fsec4len, dfunc, bdsLen, numGridVals, llarge, iret);
 
@@ -17786,7 +17818,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       if ( dfunc != 'L' && dfunc != 'J' )
 	if ( DBL_IS_NAN(FSEC3_MissVal) && lmissvalinfo )
 	  {
-	    lmissvalinfo = 0;
+	    lmissvalinfo = false;
 	    FSEC3_MissVal = (T)GRIB_MISSVAL;
 	    Message("Missing value = NaN is unsupported, set to %g!", GRIB_MISSVAL);
 	  }
@@ -18040,7 +18072,7 @@ void encodeES(GRIBPACK *lGrib, long *gribLen, long bdsstart)
 
       if ( z > JP23SET*120 )
 	{
-	  fprintf(stderr, "Abort: GRIB record too large (max = %d)!\n", JP23SET*120);
+	  fprintf(stderr, "Abort: GRIB1 record too large (size = %ld; max = %d)!\n", z, JP23SET*120);
 	  exit(1);
 	}
 
@@ -18236,14 +18268,15 @@ void encodePDS(GRIBPACK *lpds, long pdsLen, int *isec1)
   Put1Byte(ISEC1_Parameter);      /*  8 Parameter Code           */
   Put1Byte(ISEC1_LevelType);      /*  9 Type of level            */
   if ( (ISEC1_LevelType !=  20) &&
-       (ISEC1_LevelType != GRIB1_LTYPE_99)         &&
-       (ISEC1_LevelType != GRIB1_LTYPE_ISOBARIC)   &&
-       (ISEC1_LevelType != GRIB1_LTYPE_ALTITUDE)   &&
-       (ISEC1_LevelType != GRIB1_LTYPE_HEIGHT)     &&
-       (ISEC1_LevelType != GRIB1_LTYPE_SIGMA)      &&
-       (ISEC1_LevelType != GRIB1_LTYPE_HYBRID)     &&
-       (ISEC1_LevelType != GRIB1_LTYPE_LANDDEPTH)  &&
-       (ISEC1_LevelType != GRIB1_LTYPE_ISENTROPIC) &&
+       (ISEC1_LevelType != GRIB1_LTYPE_99)           &&
+       (ISEC1_LevelType != GRIB1_LTYPE_ISOBARIC)     &&
+       (ISEC1_LevelType != GRIB1_LTYPE_ISOBARIC_PA)  &&
+       (ISEC1_LevelType != GRIB1_LTYPE_ALTITUDE)     &&
+       (ISEC1_LevelType != GRIB1_LTYPE_HEIGHT)       &&
+       (ISEC1_LevelType != GRIB1_LTYPE_SIGMA)        &&
+       (ISEC1_LevelType != GRIB1_LTYPE_HYBRID)       &&
+       (ISEC1_LevelType != GRIB1_LTYPE_LANDDEPTH)    &&
+       (ISEC1_LevelType != GRIB1_LTYPE_ISENTROPIC)   &&
        (ISEC1_LevelType != 115) &&
        (ISEC1_LevelType != 117) &&
        (ISEC1_LevelType != 125) &&
@@ -18332,6 +18365,9 @@ void encodePDS(GRIBPACK *lpds, long pdsLen, int *isec1)
 #ifdef T
 
 
+#define round_float roundf
+#define round_double round
+
 static
 void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datasize, GRIBPACK *lGrib,
 				     const T *data, T zref, T factor, size_t *gz)
@@ -18349,6 +18385,7 @@ void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datas
   for ( i = packStart; i < datasize; i++ )
     {
       /* note float -> unsigned int .. truncate */
+      // ival = (unsigned int)(TEMPLATE(round,T)((data[i] - zref) * factor));
       ival = (unsigned int) ((data[i] - zref) * factor + (T)0.5);
       /*
 	if ( ival > max_nbpv_pow2 ) ival = max_nbpv_pow2;
@@ -18394,6 +18431,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
     {
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // sgrib[i] = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           sgrib[i] = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
         }
     }
@@ -18402,6 +18440,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
       uint16_t ui16;
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // ui16 = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           ui16 = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
           sgrib[i] = gribSwapByteOrder_uint16(ui16);
         }
@@ -18429,6 +18468,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
 #endif
   for ( i = 0; i < datasize; i++ )
     {
+      // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
       tmp = ((data[i] - zref) * factor + (T)0.5);
       ui16 = (uint16_t) tmp;
       lGrib[z  ] = ui16 >>  8;
@@ -18472,6 +18512,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
 	  lGrib[z  ] = (GRIBPACK)tmp;
           z++;
@@ -18535,6 +18576,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 16);
@@ -18564,6 +18606,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 24);
@@ -18601,17 +18644,17 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
   U_BYTEORDER;
   size_t i, j, z = *gz;
 #ifdef _ARCH_PWR6
-#define __UNROLL_DEPTH_2 8
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 8 };
 #else
-#define __UNROLL_DEPTH_2 128
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 128 };
 #endif
   size_t residual;
   size_t ofs;
-  T dval[__UNROLL_DEPTH_2];
+  T dval[CGRIBEX__UNROLL_DEPTH_2];
 
   data += packStart;
   datasize -= packStart;
-  residual =  datasize % __UNROLL_DEPTH_2;
+  residual =  datasize % CGRIBEX__UNROLL_DEPTH_2;
   ofs = datasize - residual;
 
   // reducing FP operations to single FMA is slowing down on pwr6 ...
@@ -18622,13 +18665,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       hpmStart(2, "pack 8 bit unrolled");
 #endif
       unsigned char *cgrib = (unsigned char *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      *cgrib++ =  (unsigned long) dval[j];
@@ -18636,10 +18680,11 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	      *cgrib++ =  (unsigned char) dval[j];
 #endif
 	    }
-	  z += __UNROLL_DEPTH_2;
+	  z += CGRIBEX__UNROLL_DEPTH_2;
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -18668,15 +18713,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #endif
       uint16_t *sgrib = (uint16_t *) (lGrib+z);
 
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *sgrib++ = (unsigned long) dval[j];
@@ -18684,20 +18730,21 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 		  *sgrib++ = (uint16_t) dval[j];
 #endif
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 		  ival = (uint16_t) dval[j];
                   *sgrib++ = gribSwapByteOrder_uint16(ival);
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -18736,13 +18783,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #else
       uint32_t ival;
 #endif
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      ival = (unsigned long) dval[j];
@@ -18757,6 +18805,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -18782,15 +18831,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       uint32_t ival;
 #endif
       unsigned int *igrib = (unsigned int *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
  {
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *igrib = (unsigned long) dval[j];
@@ -18803,7 +18853,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
                   ival = (uint32_t) dval[j];
 		  lGrib[z  ] =  (GRIBPACK)(ival >> 24);
@@ -18816,6 +18866,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+          // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -18860,7 +18911,6 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
     }
 
   *gz = z;
-#undef __UNROLL_DEPTH_2
 }
 
 #endif /* T */
@@ -18878,6 +18928,9 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #ifdef T
 
 
+#define round_float roundf
+#define round_double round
+
 static
 void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datasize, GRIBPACK *lGrib,
 				     const T *data, T zref, T factor, size_t *gz)
@@ -18895,6 +18948,7 @@ void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datas
   for ( i = packStart; i < datasize; i++ )
     {
       /* note float -> unsigned int .. truncate */
+      // ival = (unsigned int)(TEMPLATE(round,T)((data[i] - zref) * factor));
       ival = (unsigned int) ((data[i] - zref) * factor + (T)0.5);
       /*
 	if ( ival > max_nbpv_pow2 ) ival = max_nbpv_pow2;
@@ -18940,6 +18994,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
     {
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // sgrib[i] = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           sgrib[i] = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
         }
     }
@@ -18948,6 +19003,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
       uint16_t ui16;
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // ui16 = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           ui16 = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
           sgrib[i] = gribSwapByteOrder_uint16(ui16);
         }
@@ -18975,6 +19031,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
 #endif
   for ( i = 0; i < datasize; i++ )
     {
+      // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
       tmp = ((data[i] - zref) * factor + (T)0.5);
       ui16 = (uint16_t) tmp;
       lGrib[z  ] = ui16 >>  8;
@@ -19018,6 +19075,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
 	  lGrib[z  ] = (GRIBPACK)tmp;
           z++;
@@ -19081,6 +19139,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 16);
@@ -19110,6 +19169,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 24);
@@ -19147,17 +19207,17 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
   U_BYTEORDER;
   size_t i, j, z = *gz;
 #ifdef _ARCH_PWR6
-#define __UNROLL_DEPTH_2 8
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 8 };
 #else
-#define __UNROLL_DEPTH_2 128
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 128 };
 #endif
   size_t residual;
   size_t ofs;
-  T dval[__UNROLL_DEPTH_2];
+  T dval[CGRIBEX__UNROLL_DEPTH_2];
 
   data += packStart;
   datasize -= packStart;
-  residual =  datasize % __UNROLL_DEPTH_2;
+  residual =  datasize % CGRIBEX__UNROLL_DEPTH_2;
   ofs = datasize - residual;
 
   // reducing FP operations to single FMA is slowing down on pwr6 ...
@@ -19168,13 +19228,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       hpmStart(2, "pack 8 bit unrolled");
 #endif
       unsigned char *cgrib = (unsigned char *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      *cgrib++ =  (unsigned long) dval[j];
@@ -19182,10 +19243,11 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	      *cgrib++ =  (unsigned char) dval[j];
 #endif
 	    }
-	  z += __UNROLL_DEPTH_2;
+	  z += CGRIBEX__UNROLL_DEPTH_2;
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -19214,15 +19276,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #endif
       uint16_t *sgrib = (uint16_t *) (lGrib+z);
 
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *sgrib++ = (unsigned long) dval[j];
@@ -19230,20 +19293,21 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 		  *sgrib++ = (uint16_t) dval[j];
 #endif
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 		  ival = (uint16_t) dval[j];
                   *sgrib++ = gribSwapByteOrder_uint16(ival);
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -19282,13 +19346,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #else
       uint32_t ival;
 #endif
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      ival = (unsigned long) dval[j];
@@ -19303,6 +19368,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -19328,15 +19394,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       uint32_t ival;
 #endif
       unsigned int *igrib = (unsigned int *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
  {
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *igrib = (unsigned long) dval[j];
@@ -19349,7 +19416,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
                   ival = (uint32_t) dval[j];
 		  lGrib[z  ] =  (GRIBPACK)(ival >> 24);
@@ -19362,6 +19429,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+          // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -19406,7 +19474,6 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
     }
 
   *gz = z;
-#undef __UNROLL_DEPTH_2
 }
 
 #endif /* T */
@@ -19666,7 +19733,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
   int bds_ext = 0;
   /* ibits = BitsPerInt; */
   int exponent, mantissa;
-  int lspherc = FALSE;
+  bool lspherc = false;
   int isubset = 0, itemp = 0, itrunc = 0;
   T factor = 1, fmin, fmax;
   const double jpepsln = 1.0e-12; /* -----> tolerance used to check equality     */
@@ -19681,10 +19748,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
       lspherc =  ( isec2[0] == 50 || isec2[0] == 60 ||
                    isec2[0] == 70 || isec2[0] == 80 );
 
-      if ( lspherc )
-	isec4[2] = 128;
-      else
-	isec4[2] = 0;
+      isec4[2] = lspherc ? 128 : 0;
     }
   else
     {
@@ -19695,8 +19759,8 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
 
   /* Complex packing supported for spherical harmonics. */
 
-  int lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
-                 ( lspherc && isec2 && ( isec2[5] == 2 ) );
+  bool lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
+                  ( lspherc && isec2 && ( isec2[5] == 2 ) );
 
   /* Check input specification is consistent */
 
@@ -19962,7 +20026,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   /*
   if ( ( isec4[3] == 64 ) && ( isec2[5] == 2 ) )
     {
-      static int lwarn_cplx = TRUE;
+      static bool lwarn_cplx = true;
 
       if ( lwarn_cplx )
 	Message("Complex packing of spectral data unsupported, using simple packing!");
@@ -19970,7 +20034,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       isec2[5] = 1;
       isec4[3] = 0;
 
-      lwarn_cplx = FALSE;
+      lwarn_cplx = false;
     }
   */
   TEMPLATE(encodeGDS,T)(lGrib, &gribLen, isec2, fsec2);
@@ -20275,7 +20339,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
   int bds_ext = 0;
   /* ibits = BitsPerInt; */
   int exponent, mantissa;
-  int lspherc = FALSE;
+  bool lspherc = false;
   int isubset = 0, itemp = 0, itrunc = 0;
   T factor = 1, fmin, fmax;
   const double jpepsln = 1.0e-12; /* -----> tolerance used to check equality     */
@@ -20290,10 +20354,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
       lspherc =  ( isec2[0] == 50 || isec2[0] == 60 ||
                    isec2[0] == 70 || isec2[0] == 80 );
 
-      if ( lspherc )
-	isec4[2] = 128;
-      else
-	isec4[2] = 0;
+      isec4[2] = lspherc ? 128 : 0;
     }
   else
     {
@@ -20304,8 +20365,8 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
 
   /* Complex packing supported for spherical harmonics. */
 
-  int lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
-                 ( lspherc && isec2 && ( isec2[5] == 2 ) );
+  bool lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
+                  ( lspherc && isec2 && ( isec2[5] == 2 ) );
 
   /* Check input specification is consistent */
 
@@ -20571,7 +20632,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   /*
   if ( ( isec4[3] == 64 ) && ( isec2[5] == 2 ) )
     {
-      static int lwarn_cplx = TRUE;
+      static bool lwarn_cplx = true;
 
       if ( lwarn_cplx )
 	Message("Complex packing of spectral data unsupported, using simple packing!");
@@ -20579,7 +20640,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       isec2[5] = 1;
       isec4[3] = 0;
 
-      lwarn_cplx = FALSE;
+      lwarn_cplx = false;
     }
   */
   TEMPLATE(encodeGDS,T)(lGrib, &gribLen, isec2, fsec2);
@@ -20641,7 +20702,7 @@ void encode_dummy(void)
   (void) encode_array_unrolled_double(0, 0, 0, NULL, NULL, 0, 0, NULL);
   (void) encode_array_unrolled_float(0, 0, 0, NULL, NULL, 0, 0, NULL);
 }
-static const char grb_libvers[] = "1.7.5" " of ""Jun  3 2016"" ""14:44:00";
+static const char grb_libvers[] = "1.8.1" " of ""Jun  6 2017"" ""11:54:18";
 const char *
 cgribexLibraryVersion(void)
 {
@@ -22140,9 +22201,11 @@ int extWrite(int fileID, void *ext)
 #include <ctype.h>
 #include <errno.h>
 #include <fcntl.h>
-#include <stdint.h>
+#include <limits.h>
 #include <stdarg.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
 #include <string.h>
 #include <unistd.h>
 #include <sys/types.h>
@@ -22177,14 +22240,6 @@ char *strdup(const char *s);
 #endif
 
 
-#if ! defined   (FALSE)
-#  define  FALSE  0
-#endif
-
-#if ! defined   (TRUE)
-#  define  TRUE   1
-#endif
-
 /* #define  MAX_FILES  FOPEN_MAX */
 #define  MAX_FILES  4096
 
@@ -22192,7 +22247,7 @@ static int _file_max = MAX_FILES;
 
 static void file_initialize(void);
 
-static int _file_init = FALSE;
+static bool _file_init = false;
 
 #if  defined  (HAVE_LIBPTHREAD)
 #include <pthread.h>
@@ -22203,14 +22258,14 @@ static pthread_mutex_t _file_mutex;
 #  define FILE_LOCK()         pthread_mutex_lock(&_file_mutex)
 #  define FILE_UNLOCK()       pthread_mutex_unlock(&_file_mutex)
 #  define FILE_INIT()        \
-   if ( _file_init == FALSE ) pthread_once(&_file_init_thread, file_initialize)
+   if ( _file_init == false ) pthread_once(&_file_init_thread, file_initialize)
 
 #else
 
 #  define FILE_LOCK()
 #  define FILE_UNLOCK()
 #  define FILE_INIT()        \
-   if ( _file_init == FALSE ) file_initialize()
+   if ( _file_init == false ) file_initialize()
 
 #endif
 
@@ -22255,7 +22310,7 @@ enum F_I_L_E_Flags
   };
 
 
-static int FileInfo  = FALSE;
+static bool FileInfo = false;
 
 
 #if ! defined (MIN_BUF_SIZE)
@@ -22280,7 +22335,7 @@ static void file_table_print(void);
  * A version string.
  */
 #undef   LIBVERSION
-#define  LIBVERSION      1.8.2
+#define  LIBVERSION      1.8.3
 #define  XSTRING(x)	 #x
 #define  STRING(x) 	 XSTRING(x)
 static const char file_libvers[] = STRING(LIBVERSION) " of " __DATE__ " " __TIME__;
@@ -22320,7 +22375,7 @@ void file_list_new(void)
 {
   assert(_fileList == NULL);
 
-  _fileList = (filePtrToIdx *) Malloc((size_t)_file_max * sizeof (filePtrToIdx));
+  _fileList = (filePtrToIdx *) Malloc((size_t)_file_max*sizeof(filePtrToIdx));
 }
 
 static
@@ -22336,9 +22391,7 @@ void file_list_delete(void)
 static
 void file_init_pointer(void)
 {
-  int  i;
-
-  for ( i = 0; i < _file_max; i++ )
+  for ( int i = 0; i < _file_max; i++ )
     {
       _fileList[i].next = _fileList + i + 1;
       _fileList[i].idx  = i;
@@ -22368,14 +22421,14 @@ bfile_t *file_to_pointer(int idx)
   else
     Error("file index %d undefined!", idx);
 
-  return (fileptr);
+  return fileptr;
 }
 
 /* Create an index from a pointer */
 static
 int file_from_pointer(bfile_t *ptr)
 {
-  int      idx = -1;
+  int idx = -1;
   filePtrToIdx *newptr;
 
   if ( ptr )
@@ -22401,7 +22454,7 @@ int file_from_pointer(bfile_t *ptr)
   else
     Error("Internal problem (pointer %p undefined)", ptr);
 
-  return (idx);
+  return idx;
 }
 
 static
@@ -22435,21 +22488,16 @@ void file_init_entry(bfile_t *fileptr)
 static
 bfile_t *file_new_entry(void)
 {
-  bfile_t *fileptr;
-
-  fileptr = (bfile_t *) Malloc(sizeof(bfile_t));
-
+  bfile_t *fileptr = (bfile_t *) Malloc(sizeof(bfile_t));
   if ( fileptr ) file_init_entry(fileptr);
 
-  return (fileptr);
+  return fileptr;
 }
 
 static
 void file_delete_entry(bfile_t *fileptr)
 {
-  int idx;
-
-  idx = fileptr->self;
+  int idx = fileptr->self;
 
   FILE_LOCK();
 
@@ -22468,49 +22516,41 @@ void file_delete_entry(bfile_t *fileptr)
 
 const char *fileLibraryVersion(void)
 {
-  return (file_libvers);
+  return file_libvers;
 }
 
-
 static
 int pagesize(void)
 {
 #if defined(_SC_PAGESIZE)
-  return ((int) sysconf(_SC_PAGESIZE));
+  return (int) sysconf(_SC_PAGESIZE);
 #else
 #ifndef POSIXIO_DEFAULT_PAGESIZE
 #define POSIXIO_DEFAULT_PAGESIZE 4096
 #endif
-  return ((int) POSIXIO_DEFAULT_PAGESIZE);
+  return (int) POSIXIO_DEFAULT_PAGESIZE;
 #endif
 }
 
 static
 double file_time()
 {
-  double tseconds = 0.0;
   struct timeval mytime;
   gettimeofday(&mytime, NULL);
-  tseconds = (double) mytime.tv_sec + (double) mytime.tv_usec*1.0e-6;
-  return (tseconds);
+  double tseconds = (double) mytime.tv_sec + (double) mytime.tv_usec*1.0e-6;
+  return tseconds;
 }
 
 void fileDebug(int debug)
 {
   FILE_Debug = debug;
-
-  if ( FILE_Debug )
-    Message("Debug level %d", debug);
+  if ( FILE_Debug ) Message("Debug level %d", debug);
 }
 
 
 void *filePtr(int fileID)
 {
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
-
-  return (fileptr);
+  return (void*)file_to_pointer(fileID);
 }
 
 static
@@ -22528,9 +22568,7 @@ void file_pointer_info(const char *caller, int fileID)
 int fileSetBufferType(int fileID, int type)
 {
   int ret = 0;
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
+  bfile_t *fileptr = file_to_pointer(fileID);
 
   if ( fileptr )
     {
@@ -22549,27 +22587,22 @@ int fileSetBufferType(int fileID, int type)
   if ( type == FILE_BUFTYPE_MMAP ) ret = 1;
 #endif
 
-  return (ret);
+  return ret;
 }
 
 int fileFlush(int fileID)
 {
-  bfile_t *fileptr;
   int retval = 0;
-
-  fileptr = file_to_pointer(fileID);
-
+  bfile_t *fileptr = file_to_pointer(fileID);
   if ( fileptr ) retval = fflush(fileptr->fp);
 
-  return (retval);
+  return retval;
 }
 
 
 void fileClearerr(int fileID)
 {
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
+  bfile_t *fileptr = file_to_pointer(fileID);
 
   if ( fileptr )
     {
@@ -22581,25 +22614,21 @@ void fileClearerr(int fileID)
 
 int filePtrEOF(void *vfileptr)
 {
-  bfile_t *fileptr = (bfile_t *) vfileptr;
   int retval = 0;
-
+  bfile_t *fileptr = (bfile_t *) vfileptr;
   if ( fileptr ) retval = (fileptr->flag & FILE_EOF) != 0;
 
-  return (retval);
+  return retval;
 }
 
 
 int fileEOF(int fileID)
 {
-  bfile_t *fileptr;
   int retval = 0;
-
-  fileptr = file_to_pointer(fileID);
-
+  bfile_t *fileptr = file_to_pointer(fileID);
   if ( fileptr ) retval = (fileptr->flag & FILE_EOF) != 0;
 
-  return (retval);
+  return retval;
 }
 
 void fileRewind(int fileID)
@@ -22612,9 +22641,7 @@ void fileRewind(int fileID)
 off_t fileGetPos(int fileID)
 {
   off_t filepos = 0;
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
+  bfile_t *fileptr = file_to_pointer(fileID);
 
   if ( fileptr )
     {
@@ -22626,23 +22653,21 @@ off_t fileGetPos(int fileID)
 
   if ( FILE_Debug ) Message("Position %ld", filepos);
 
-  return (filepos);
+  return filepos;
 }
 
 
 int fileSetPos(int fileID, off_t offset, int whence)
 {
   int status = 0;
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
+  bfile_t *fileptr = file_to_pointer(fileID);
 
   if ( FILE_Debug ) Message("Offset %8ld  Whence %3d", (long) offset, whence);
 
   if ( fileptr == 0 )
     {
       file_pointer_info(__func__, fileID);
-      return (1);
+      return 1;
     }
 
   switch (whence)
@@ -22723,19 +22748,17 @@ int fileSetPos(int fileID, off_t offset, int whence)
     if ( (fileptr->flag & FILE_EOF) != 0 )
       fileptr->flag -= FILE_EOF;
 
-  return (status);
+  return status;
 }
 
 static
 void file_table_print(void)
 {
-  int fileID;
   int lprintHeader = 1;
-  bfile_t *fileptr;
 
-  for ( fileID = 0; fileID < _file_max; fileID++ )
+  for ( int fileID = 0; fileID < _file_max; fileID++ )
     {
-      fileptr = file_to_pointer(fileID);
+      bfile_t *fileptr = file_to_pointer(fileID);
 
       if ( fileptr )
 	{
@@ -22782,43 +22805,34 @@ void file_table_print(void)
 
 char *fileInqName(int fileID)
 {
-  bfile_t *fileptr;
   char *name = NULL;
-
-  fileptr = file_to_pointer(fileID);
-
+  bfile_t *fileptr = file_to_pointer(fileID);
   if ( fileptr ) name = fileptr->name;
 
-  return (name);
+  return name;
 }
 
 
 int fileInqMode(int fileID)
 {
-  bfile_t *fileptr;
   int mode = 0;
-
-  fileptr = file_to_pointer(fileID);
-
+  bfile_t *fileptr = file_to_pointer(fileID);
   if ( fileptr ) mode = fileptr->mode;
 
-  return (mode);
+  return mode;
 }
 
 static
 long file_getenv(const char *envName)
 {
-  char *envString;
   long envValue = -1;
   long fact = 1;
 
-  envString = getenv(envName);
+  char *envString = getenv(envName);
 
   if ( envString )
     {
-      int loop;
-
-      for ( loop = 0; loop < (int) strlen(envString); loop++ )
+      for ( int loop = 0; loop < (int) strlen(envString); loop++ )
 	{
 	  if ( ! isdigit((int) envString[loop]) )
 	    {
@@ -22841,14 +22855,13 @@ long file_getenv(const char *envName)
       if ( FILE_Debug ) Message("Set %s to %ld", envName, envValue);
     }
 
-  return (envValue);
+  return envValue;
 }
 
 static
 void file_initialize(void)
 {
   long value;
-  char *envString;
 
 #if  defined  (HAVE_LIBPTHREAD)
   /* initialize global API mutex lock */
@@ -22864,7 +22877,7 @@ void file_initialize(void)
   if ( FILE_Debug )
     Message("FILE_MAX = %d", _file_max);
 
-  FileInfo  = (int) file_getenv("FILE_INFO");
+  FileInfo = file_getenv("FILE_INFO") > 0;
 
   value  = file_getenv("FILE_BUFSIZE");
   if ( value >= 0 ) FileBufferSizeEnv = value;
@@ -22905,7 +22918,7 @@ void file_initialize(void)
 #if defined (O_NONBLOCK)
   FileFlagWrite = O_NONBLOCK;
 #endif
-  envString = getenv("FILE_FLAG_WRITE");
+  char *envString = getenv("FILE_FLAG_WRITE");
   if ( envString )
     {
 #if defined (O_NONBLOCK)
@@ -22945,7 +22958,7 @@ void file_initialize(void)
 
   if ( FILE_Debug ) atexit(file_table_print);
 
-  _file_init = TRUE;
+  _file_init = true;
 }
 
 static
@@ -23021,20 +23034,18 @@ static
 int file_fill_buffer(bfile_t *fileptr)
 {
   ssize_t nread;
-  int fd;
   long offset = 0;
-  off_t retseek;
 
   if ( FILE_Debug )
     Message("file ptr = %p  Cnt = %ld", fileptr, fileptr->bufferCnt);
 
-  if ( (fileptr->flag & FILE_EOF) != 0 ) return (EOF);
+  if ( (fileptr->flag & FILE_EOF) != 0 ) return EOF;
 
   if ( fileptr->buffer == NULL ) file_set_buffer(fileptr);
 
-  if ( fileptr->bufferSize == 0 ) return (EOF);
+  if ( fileptr->bufferSize == 0 ) return EOF;
 
-  fd = fileptr->fd;
+  int fd = fileptr->fd;
 
 #if defined (HAVE_MMAP)
   if ( fileptr->bufferType == FILE_BUFTYPE_MMAP )
@@ -23045,15 +23056,14 @@ int file_fill_buffer(bfile_t *fileptr)
 	}
       else
 	{
-          xassert(fileptr->bufferSize <= SIZE_MAX);
+          xassert(fileptr->bufferSize <= SSIZE_MAX);
 	  nread = (ssize_t)fileptr->bufferSize;
 	  if ( (nread + fileptr->bufferPos) > fileptr->size )
 	    nread = fileptr->size - fileptr->bufferPos;
 
 	  if ( fileptr->buffer )
 	    {
-              int ret;
-	      ret = munmap(fileptr->buffer, fileptr->mappedSize);
+              int ret = munmap(fileptr->buffer, fileptr->mappedSize);
 	      if ( ret == -1 ) SysError("munmap error for read %s", fileptr->name);
 	      fileptr->buffer = NULL;
 	    }
@@ -23070,22 +23080,19 @@ int file_fill_buffer(bfile_t *fileptr)
   else
 #endif
     {
-      retseek = lseek(fileptr->fd, fileptr->bufferPos, SEEK_SET);
+      off_t retseek = lseek(fileptr->fd, fileptr->bufferPos, SEEK_SET);
       if ( retseek == (off_t)-1 )
 	SysError("lseek error at pos %ld file %s", (long) fileptr->bufferPos, fileptr->name);
 
       nread = read(fd, fileptr->buffer, fileptr->bufferSize);
+      if ( nread > 0 ) offset = fileptr->position - fileptr->bufferPos;
     }
 
   if ( nread <= 0 )
     {
-      if ( nread == 0 )
-	fileptr->flag |= FILE_EOF;
-      else
-	fileptr->flag |= FILE_ERROR;
-
+      fileptr->flag |= (nread == 0) ? FILE_EOF : FILE_ERROR;
       fileptr->bufferCnt = 0;
-      return (EOF);
+      return EOF;
     }
 
   fileptr->bufferPtr = fileptr->buffer;
@@ -23117,7 +23124,7 @@ int file_fill_buffer(bfile_t *fileptr)
 
   fileptr->bufferNumFill++;
 
-  return ((unsigned char) *fileptr->bufferPtr);
+  return (unsigned char) *fileptr->bufferPtr;
 }
 
 static
@@ -23148,7 +23155,7 @@ void file_copy_from_buffer(bfile_t *fileptr, void *ptr, size_t size)
 static
 size_t file_read_from_buffer(bfile_t *fileptr, void *ptr, size_t size)
 {
-  size_t nread, rsize;
+  size_t nread;
   size_t offset = 0;
 
   if ( FILE_Debug )
@@ -23157,7 +23164,7 @@ size_t file_read_from_buffer(bfile_t *fileptr, void *ptr, size_t size)
   if ( ((long)fileptr->bufferCnt) < 0L )
     Error("Internal problem. bufferCnt = %ld", (long) fileptr->bufferCnt);
 
-  rsize = size;
+  size_t rsize = size;
 
   while ( fileptr->bufferCnt < rsize )
     {
@@ -23210,13 +23217,12 @@ int fileOpen_serial(const char *filename, const char *mode)
   FILE *fp = NULL;    /* file pointer    (used for write) */
   int fd = -1;        /* file descriptor (used for read)  */
   int fileID = FILE_UNDEFID;
-  int fmode = 0;
   struct stat filestat;
   bfile_t *fileptr = NULL;
 
   FILE_INIT();
 
-  fmode = tolower((int) mode[0]);
+  int fmode = tolower((int) mode[0]);
 
   switch ( fmode )
     {
@@ -23243,7 +23249,7 @@ int fileOpen_serial(const char *filename, const char *mode)
 
   if ( fp )
     {
-      if ( stat(filename, &filestat) != 0 ) return (fileID);
+      if ( stat(filename, &filestat) != 0 ) return fileID;
 
       fileptr = file_new_entry();
       if ( fileptr )
@@ -23254,7 +23260,7 @@ int fileOpen_serial(const char *filename, const char *mode)
     }
   else if ( fd >= 0 )
     {
-      if ( fstat(fd, &filestat) != 0 ) return (fileID);
+      if ( fstat(fd, &filestat) != 0 ) return fileID;
 
       fileptr = file_new_entry();
       if ( fileptr )
@@ -23290,7 +23296,7 @@ int fileOpen_serial(const char *filename, const char *mode)
 	Message("File %s opened with ID %d", filename, fileID);
     }
 
-  return (fileID);
+  return fileID;
 }
 
 /*
@@ -23305,7 +23311,6 @@ int fileClose(int fileID)
 
 int fileClose_serial(int fileID)
 {
-  char *name;
   int ret;
   const char *fbtname[] = {"unknown", "standard", "mmap"};
   const char *ftname[] = {"unknown", "open", "fopen"};
@@ -23315,15 +23320,15 @@ int fileClose_serial(int fileID)
   if ( fileptr == NULL )
     {
       file_pointer_info(__func__, fileID);
-      return (1);
+      return 1;
     }
 
-  name = fileptr->name;
+  char *name = fileptr->name;
 
   if ( FILE_Debug )
     Message("fileID = %d  filename = %s", fileID, name);
 
-  if ( FileInfo > 0 )
+  if ( FileInfo )
     {
       fprintf(stderr, "____________________________________________\n");
       fprintf(stderr, " file ID          : %d\n",  fileID);
@@ -23362,9 +23367,7 @@ int fileClose_serial(int fileID)
 	}
 
       if ( fileptr->time_in_sec > 0 )
-        {
-          rout = (double)fileptr->byteTrans / (1024.*1024.*fileptr->time_in_sec);
-        }
+        rout = (double)fileptr->byteTrans / (1024.*1024.*fileptr->time_in_sec);
 
       fprintf(stderr, " wall time [s]    : %.2f\n", fileptr->time_in_sec);
       fprintf(stderr, " data rate [MB/s] : %.1f\n", rout);
@@ -23407,22 +23410,20 @@ int fileClose_serial(int fileID)
 
   file_delete_entry(fileptr);
 
-  return (0);
+  return 0;
 }
 
 
 int filePtrGetc(void *vfileptr)
 {
   int ivalue = EOF;
-  int fillret = 0;
   bfile_t *fileptr = (bfile_t *) vfileptr;
 
   if ( fileptr )
     {
       if ( fileptr->mode == 'r' && fileptr->type == FILE_TYPE_OPEN )
 	{
-	  if ( fileptr->bufferCnt == 0 ) fillret = file_fill_buffer(fileptr);
-
+	  int fillret = (fileptr->bufferCnt == 0) ? file_fill_buffer(fileptr) : 0;
 	  if ( fillret >= 0 )
 	    {
 	      ivalue = (unsigned char) *fileptr->bufferPtr++;
@@ -23446,20 +23447,14 @@ int filePtrGetc(void *vfileptr)
 	}
     }
 
-  return (ivalue);
+  return ivalue;
 }
 
 
 int fileGetc(int fileID)
 {
-  int ivalue;
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
-
-  ivalue = filePtrGetc((void *)fileptr);
-
-  return (ivalue);
+  bfile_t *fileptr = file_to_pointer(fileID);
+  return filePtrGetc((void *)fileptr);
 }
 
 
@@ -23476,12 +23471,7 @@ size_t filePtrRead(void *vfileptr, void *restrict ptr, size_t size)
 	{
 	  nread = fread(ptr, 1, size, fileptr->fp);
 	  if ( nread != size )
-	    {
-	      if ( nread == 0 )
-		fileptr->flag |= FILE_EOF;
-	      else
-		fileptr->flag |= FILE_ERROR;
-	    }
+            fileptr->flag |= (nread == 0) ? FILE_EOF : FILE_ERROR;
 	}
 
       fileptr->position  += (off_t)nread;
@@ -23491,16 +23481,14 @@ size_t filePtrRead(void *vfileptr, void *restrict ptr, size_t size)
 
   if ( FILE_Debug ) Message("size %ld  nread %ld", size, nread);
 
-  return (nread);
+  return nread;
 }
 
 
 size_t fileRead(int fileID, void *restrict ptr, size_t size)
 {
   size_t nread = 0;
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
+  bfile_t *fileptr = file_to_pointer(fileID);
 
   if ( fileptr )
     {
@@ -23531,23 +23519,19 @@ size_t fileRead(int fileID, void *restrict ptr, size_t size)
 
   if ( FILE_Debug ) Message("size %ld  nread %ld", size, nread);
 
-  return (nread);
+  return nread;
 }
 
 
 size_t fileWrite(int fileID, const void *restrict ptr, size_t size)
 {
   size_t nwrite = 0;
-  bfile_t *fileptr;
-
-  fileptr = file_to_pointer(fileID);
+  bfile_t *fileptr = file_to_pointer(fileID);
 
   if ( fileptr )
     {
       double t_begin = 0.0;
 
-      /* if ( fileptr->buffer == NULL ) file_set_buffer(fileptr); */
-
       if ( FileInfo ) t_begin = file_time();
 
       if ( fileptr->type == FILE_TYPE_FOPEN )
@@ -23571,7 +23555,7 @@ size_t fileWrite(int fileID, const void *restrict ptr, size_t size)
       fileptr->access++;
     }
 
-  return (nwrite);
+  return nwrite;
 }
 /*
  * Local Variables:
@@ -23874,7 +23858,7 @@ int main (int rgc, char *argv[])
 
 static char gribapi_libvers[64] = "";
 #if  defined  (HAVE_LIBGRIB_API)
-static int gribapi_libvers_init;
+static bool gribapi_libvers_init;
 #endif
 
 
@@ -23902,7 +23886,7 @@ const char *gribapiLibraryVersionString(void)
       gribapiLibraryVersion(&major_version, &minor_version, &revision_version);
 
       sprintf(gribapi_libvers, "%d.%d.%d", major_version, minor_version, revision_version);
-      gribapi_libvers_init = 1;
+      gribapi_libvers_init = true;
     }
 #endif
 
@@ -23912,7 +23896,7 @@ const char *gribapiLibraryVersionString(void)
 
 void gribContainersNew(stream_t * streamptr)
 {
-  int editionNumber = (streamptr->filetype == FILETYPE_GRB) ? 1 : 2;
+  int editionNumber = (streamptr->filetype == CDI_FILETYPE_GRB) ? 1 : 2;
 
 #if  defined  (HAVE_LIBCGRIBEX)
   if ( editionNumber == 1 )
@@ -23935,7 +23919,7 @@ void gribContainersNew(stream_t * streamptr)
           for ( int levelID = 0; levelID < nlevs; ++levelID )
             {
               gribContainers[varID][levelID].gribHandle = gribHandleNew(editionNumber);
-              gribContainers[varID][levelID].init = FALSE;
+              gribContainers[varID][levelID].init = false;
             }
 	}
 
@@ -23947,7 +23931,7 @@ void gribContainersNew(stream_t * streamptr)
       for ( int varID = 0; varID < nvars; ++varID )
         {
           gribContainers[varID].gribHandle = gribHandleNew(editionNumber);
-          gribContainers[varID].init = FALSE;
+          gribContainers[varID].init = false;
 	}
 
       streamptr->gribContainers = (void *) gribContainers;
@@ -24030,6 +24014,16 @@ int gribapiGetParam(grib_handle *gh);
 int gribapiGetGridType(grib_handle *gh);
 void gribapiGetGrid(grib_handle *gh, grid_t *grid);
 
+#ifdef HIRLAM_EXTENSIONS
+void gribapiSetDataTimeRangeIndicator(grib_handle *gh, int timeRangeIndicator);
+void gribapiGetDataTimeRangeIndicator(grib_handle *gh, int *timeRangeIndicator);
+#endif // #ifdef HIRLAM_EXTENSIONS
+
+extern struct cdiGribAPI_ts_str_map_elem {
+  long productionTemplate;
+  const char sname[8];
+} cdiGribAPI_ts_str_map[];
+
 #endif
 
 #endif
@@ -24066,28 +24060,29 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid);
 //A simple wrapper for grib_get_string() that returns a newly allocated string.
 char* gribCopyString(grib_handle* gribHandle, const char* key)
 {
-  char* result = NULL;
   size_t length;
 #ifdef HAVE_GRIB_GET_LENGTH
-  if(!grib_get_length(gribHandle, key, &length))
+  if (!grib_get_length(gribHandle, key, &length))
     {
-    char* result = (char *) Malloc(length);
-    if(!grib_get_string(gribHandle, key, result, &length))
-    result = (char *) Realloc(result, length);
-
-    else
-      {
+      char *result = (char *)Malloc(length);
+      if (!grib_get_string(gribHandle, key, result, &length))
+        result = (char *) Realloc(result, length);
+      else
+        {
           Free(result);
           result = NULL;
-      }
+        }
+      return result;
     }
+  else
+    return NULL;
 #else
   length = 1024;         /* there's an implementation limit
                           * that makes strings longer than
                           * this unlikely in grib_api versions
                           * not providing grib_get_length */
   int rc;
-  result = (char *) Malloc(length);
+  char *result = (char *) Malloc(length);
   while ((rc = grib_get_string(gribHandle, key, result, &length))
          == GRIB_BUFFER_TOO_SMALL || rc == GRIB_ARRAY_TOO_SMALL)
     {
@@ -24106,8 +24101,8 @@ char* gribCopyString(grib_handle* gribHandle, const char* key)
       Free(result);
       result = NULL;
     }
-#endif
   return result;
+#endif
 }
 
 //A simple wrapper for grib_get_string() for the usecase that the result is only compared to a given constant string.
@@ -24160,8 +24155,8 @@ long gribGetLong(grib_handle* gh, const char* key)
 long gribGetLongDefault(grib_handle* gribHandle, const char* key, long defaultValue)
 {
   long result;
-  if(grib_get_long(gribHandle, key, &result)) return defaultValue;
-  if(result == GRIB_MISSING_LONG) return defaultValue;
+  if ( grib_get_long(gribHandle, key, &result) || result == GRIB_MISSING_LONG )
+    result = defaultValue;
   return result;
 }
 
@@ -24177,8 +24172,9 @@ double gribGetDouble(grib_handle* gh, const char* key)
 double gribGetDoubleDefault(grib_handle* gribHandle, const char* key, double defaultValue)
 {
   double result;
-  if(grib_get_double(gribHandle, key, &result)) return defaultValue;
-  if(IS_EQUAL(result, GRIB_MISSING_DOUBLE)) return defaultValue;
+  if ( grib_get_double(gribHandle, key, &result)
+       || IS_EQUAL(result, GRIB_MISSING_DOUBLE) )
+    result = defaultValue;
   return result;
 }
 
@@ -24385,6 +24381,21 @@ int gribapiTimeIsFC(grib_handle *gh)
   return sigofrtime != 3;
 }
 
+struct cdiGribAPI_ts_str_map_elem cdiGribAPI_ts_str_map[] = {
+  [TSTEP_INSTANT] = {  0, "instant" },
+  [TSTEP_AVG] = { 8, "avg" },
+  [TSTEP_ACCUM] = {  8, "accum" },
+  [TSTEP_MAX] = {  8, "max" },
+  [TSTEP_MIN] = {  8, "min" },
+  [TSTEP_DIFF] = {  8, "diff" },
+  [TSTEP_RMS] = {  8, "rms" },
+  [TSTEP_SD] = {  8, "sd" },
+  [TSTEP_COV] = { 8, "cov" },
+  [TSTEP_RATIO] = {  8, "ratio" },
+  { 0, "" }
+};
+
+
 //Fetches the value of the "stepType" key and converts it into a constant in the TSTEP_* range.
 int gribapiGetTsteptype(grib_handle *gh)
 {
@@ -24400,26 +24411,64 @@ int gribapiGetTsteptype(grib_handle *gh)
       status = grib_get_string(gh, "stepType", stepType, &len);
       if ( status == 0 && len > 1 && len < 256 )
         {
-          if      ( strncmp("instant", stepType, len) == 0 ) tsteptype = TSTEP_INSTANT;
-          else if ( strncmp("avg",     stepType, len) == 0 ) tsteptype = TSTEP_AVG;
-          else if ( strncmp("accum",   stepType, len) == 0 ) tsteptype = TSTEP_ACCUM;
-          else if ( strncmp("max",     stepType, len) == 0 ) tsteptype = TSTEP_MAX;
-          else if ( strncmp("min",     stepType, len) == 0 ) tsteptype = TSTEP_MIN;
-          else if ( strncmp("diff",    stepType, len) == 0 ) tsteptype = TSTEP_DIFF;
-          else if ( strncmp("rms",     stepType, len) == 0 ) tsteptype = TSTEP_RMS;
-          else if ( strncmp("sd",      stepType, len) == 0 ) tsteptype = TSTEP_SD;
-          else if ( strncmp("cov",     stepType, len) == 0 ) tsteptype = TSTEP_COV;
-          else if ( strncmp("ratio",   stepType, len) == 0 ) tsteptype = TSTEP_RATIO;
-          else if ( lprint )
+          for (int i = TSTEP_INSTANT; cdiGribAPI_ts_str_map[i].sname[0]; ++i)
+            if ( strncmp(cdiGribAPI_ts_str_map[i].sname, stepType, len) == 0 )
+              {
+                tsteptype = i;
+                goto tsteptypeFound;
+              }
+
+          if ( lprint )
             {
               Message("Time stepType %s unsupported, set to instant!", stepType);
               lprint = false;
             }
-
           // printf("stepType: %s %ld %d\n", stepType, len, tsteptype);
         }
+#ifdef HIRLAM_EXTENSIONS
+      {
+      // Normaly cdo looks in grib for attribute called "stepType", see above.
+      // BUT NWP models such as Hirlam and Harmonie 37h1.2, use "timeRangeIndicator" instead!
+      // Where for example:       0: for instanteneous fields; 4: for accumulated fields
+      //  0:   Forecast product valid at reference time + P1
+      //  2:   Product with a valid time ranging between reference time + P1 and reference time + P2
+      //  4:   Accumulation (reference time + P1 to reference time + P2)
+      //  5:   Difference(reference time + P2 minus reference time + P1) product considered valid at reference time + P2
+      // More details on WMO standards:
+      //               http://www.wmo.int/pages/prog/www/WDM/Guides/Guide-binary-2.html
+      //tsteptype = TSTEP_INSTANT;  // default value for any case
+      long timeRangeIND = 0; // typically 0: for instanteneous fields; 4: for accumulated fields
+      int rc = grib_get_long(gh, "timeRangeIndicator", &timeRangeIND);
+      if (rc != 0) {
+            //if ( lprint )
+            Warning("Could not get 'stepType' either 'timeRangeIndicator'. Using defualt!");
+            return (tsteptype);
+      }
+      extern int cdiGribUseTimeRangeIndicator;
+      cdiGribUseTimeRangeIndicator = 1;
+      switch ( timeRangeIND )
+          {
+              case 0:  tsteptype = TSTEP_INSTANT; break;
+              case 2:  tsteptype = TSTEP_INSTANT2;
+                       strcpy(stepType, "instant2");  // was incorrectly set before into accum
+                       break;
+              case 4:  tsteptype = TSTEP_ACCUM; break;
+              case 5:  tsteptype = TSTEP_DIFF; break;
+              default:
+                if ( lprint )
+                {
+                  if (CDI_Debug)
+                      Warning("timeRangeIND = %d;  stepType= %s; tsteptype=%d unsupported timeRangeIND at the moment, set to instant!", timeRangeIND, stepType, tsteptype);
+                  lprint = false;
+                }
+                break;
+          }
+      if (CDI_Debug)
+          Warning("timeRangeIND = %d;  stepType= %s; tsteptype=%d", timeRangeIND, stepType, tsteptype);
+      }
+#endif // HIRLAM_EXTENSIONS
     }
-
+  tsteptypeFound:
   return tsteptype;
 }
 
@@ -24429,12 +24478,12 @@ int gribGetDatatype(grib_handle* gribHandle)
   int datatype;
   if(gribEditionNumber(gribHandle) > 1 && gribCheckString(gribHandle, "packingType", "grid_ieee"))
     {
-      datatype = gribCheckLong(gribHandle, "precision", 1) ? DATATYPE_FLT32 : DATATYPE_FLT64;
+      datatype = gribCheckLong(gribHandle, "precision", 1) ? CDI_DATATYPE_FLT32 : CDI_DATATYPE_FLT64;
     }
   else
     {
       long bitsPerValue;
-      datatype = (!grib_get_long(gribHandle, "bitsPerValue", &bitsPerValue) && bitsPerValue > 0 && bitsPerValue <= 32) ? (int)bitsPerValue : DATATYPE_PACK;
+      datatype = (!grib_get_long(gribHandle, "bitsPerValue", &bitsPerValue) && bitsPerValue > 0 && bitsPerValue <= 32) ? (int)bitsPerValue : CDI_DATATYPE_PACK;
     }
   return datatype;
 }
@@ -24492,6 +24541,11 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
   long editionNumber = gribEditionNumber(gh);
   int gridtype = gribapiGetGridType(gh);
   int projtype = (gridtype == GRID_PROJECTION && gribapiGetIsRotated(gh)) ? CDI_PROJ_RLL : CDI_UNDEFID;
+  if ( gridtype == GRID_LCC )
+    {
+      gridtype = GRID_PROJECTION;
+      projtype = CDI_PROJ_LCC;
+    }
   /*
   if ( streamptr->unreduced && gridtype == GRID_GAUSSIAN_REDUCED )
     {
@@ -24525,7 +24579,7 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
       if ( numberOfPoints != nlon*nlat )
         Error("numberOfPoints (%ld) and gridSize (%ld) differ!", numberOfPoints, nlon*nlat);
 
-      grid->size  = (int)numberOfPoints;
+      grid->size   = (int)numberOfPoints;
       grid->x.size = (int)nlon;
       grid->y.size = (int)nlat;
       grid->x.inc  = 0;
@@ -24540,17 +24594,19 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
       if ( gridtype == GRID_LONLAT && nlat > 1 )
         FAIL_ON_GRIB_ERROR(grib_get_double, gh, "jDirectionIncrementInDegrees", &grid->y.inc);
 
+      long iscan, jscan;
+      FAIL_ON_GRIB_ERROR(grib_get_long, gh, "iScansNegatively", &iscan);
+      FAIL_ON_GRIB_ERROR(grib_get_long, gh, "jScansPositively", &jscan);
+      if (  iscan ) grid->x.inc = - grid->x.inc;
+      if ( !jscan ) grid->y.inc = - grid->y.inc;
+
       if ( grid->x.inc < -999 || grid->x.inc > 999 ) grid->x.inc = 0;
       if ( grid->y.inc < -999 || grid->y.inc > 999 ) grid->y.inc = 0;
 
-      if ( grid->y.inc > 0 && grid->y.first > grid->y.last ) grid->y.inc = -grid->y.inc;
-
       /* if ( IS_NOT_EQUAL(grid->x.first, 0) || IS_NOT_EQUAL(grid->x.last, 0) ) */
       {
         if ( grid->x.size > 1 )
           {
-            if ( (grid->x.first >= grid->x.last) && (grid->x.first >= 180) ) grid->x.first -= 360;
-
             if ( editionNumber <= 1 )
               {
                 /* correct xinc if necessary */
@@ -24643,13 +24699,12 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
         grid->y.flag = 2;
       }
     }
-  else if ( gridtype == GRID_LCC )
+  else if ( projtype == CDI_PROJ_LCC )
     {
-      int nlon, nlat;
       FAIL_ON_GRIB_ERROR(grib_get_long, gh, "Nx", &lpar);
-      nlon = (int)lpar;
+      int nlon = (int)lpar;
       FAIL_ON_GRIB_ERROR(grib_get_long, gh, "Ny", &lpar);
-      nlat = (int)lpar;
+      int nlat = (int)lpar;
 
       if ( numberOfPoints != nlon*nlat )
         Error("numberOfPoints (%d) and gridSize (%d) differ!", (int)numberOfPoints, nlon*nlat);
@@ -24658,24 +24713,18 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
       grid->x.size = nlon;
       grid->y.size = nlat;
 
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "DxInMetres", &grid->lcc.xinc);
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "DyInMetres", &grid->lcc.yinc);
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "longitudeOfFirstGridPointInDegrees", &grid->lcc.originLon);
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "latitudeOfFirstGridPointInDegrees", &grid->lcc.originLat);
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "LoVInDegrees", &grid->lcc.lonParY);
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "Latin1InDegrees", &grid->lcc.lat1);
-      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "Latin2InDegrees", &grid->lcc.lat2);
+      double xinc, yinc;
+      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "DxInMetres", &xinc);
+      FAIL_ON_GRIB_ERROR(grib_get_double, gh, "DyInMetres", &yinc);
 
-      if ( editionNumber <= 1 )
-        {
-          FAIL_ON_GRIB_ERROR(grib_get_long, gh, "projectionCenterFlag", &lpar);
-          grid->lcc.projflag  = (int) lpar;
-          FAIL_ON_GRIB_ERROR(grib_get_long, gh, "scanningMode", &lpar);
-          grid->lcc.scanflag  = (int) lpar;
-        }
-
-      grid->x.flag = 0;
-      grid->y.flag = 0;
+      grid->x.first = 0;
+      grid->x.last  = 0;
+      grid->x.inc   = xinc;
+      grid->y.first = 0;
+      grid->y.last  = 0;
+      grid->y.inc   = yinc;
+      grid->x.flag  = 2;
+      grid->y.flag  = 2;
     }
   else if ( gridtype == GRID_SPECTRAL )
     {
@@ -24751,6 +24800,47 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
       Error("Unsupported grid type: %s", gridNamePtr(gridtype));
     }
 
+  if ( gridtype == GRID_GAUSSIAN || gridtype == GRID_LONLAT || gridtype == GRID_PROJECTION )
+    {
+      long temp;
+      GRIB_CHECK(grib_get_long(gh, "uvRelativeToGrid", &temp), 0);
+      assert(temp == 0 || temp == 1);
+      grid->uvRelativeToGrid = (bool)temp;
+    }
+
+  if ( gridtype == GRID_GAUSSIAN || gridtype == GRID_LONLAT || gridtype == GRID_PROJECTION )
+    {
+      long temp;
+      GRIB_CHECK(grib_get_long(gh, "iScansNegatively", &temp), 0);
+      grid->iScansNegatively = (bool)temp;
+      GRIB_CHECK(grib_get_long(gh, "jScansPositively", &temp), 0);
+      grid->jScansPositively = (bool)temp;
+      GRIB_CHECK(grib_get_long(gh, "jPointsAreConsecutive", &temp), 0);
+      grid->jPointsAreConsecutive = (bool)temp;
+      grid->scanningMode = 128*grid->iScansNegatively + 64*grid->jScansPositively + 32*grid->jPointsAreConsecutive;
+      /* scanningMode  = 128 * iScansNegatively + 64 * jScansPositively + 32 * jPointsAreConsecutive;
+                   64  = 128 * 0                + 64 *        1         + 32 * 0
+                   00  = 128 * 0                + 64 *        0         + 32 * 0
+                   96  = 128 * 0                + 64 *        1         + 32 * 1
+         Default / implicit scanning mode is 64:
+                            i and j scan positively, i points are consecutive (row-major)        */
+#ifdef HIRLAM_EXTENSIONS
+      if (cdiDebugExt>=30)
+      {
+        //  indicatorOfParameter=33,indicatorOfTypeOfLevel=105,level
+        long paramId, levelTypeId, levelId;
+        GRIB_CHECK(grib_get_long(gh, "indicatorOfParameter", &paramId), 0);
+        GRIB_CHECK(grib_get_long(gh, "indicatorOfTypeOfLevel", &levelTypeId), 0);
+        GRIB_CHECK(grib_get_long(gh, "level", &levelId), 0);
+        Message("(param,ltype,level) = (%3d,%3d,%4d); Scanning mode = %02d -> bits:(%1d.%1d.%1d)*32;  uvRelativeToGrid = %02d",\
+                (int)paramId, (int)levelTypeId, (int)levelId,
+                grid->scanningMode,grid->jPointsAreConsecutive,
+                grid->jScansPositively,grid->iScansNegatively,
+                grid->uvRelativeToGrid);
+      }
+#endif //HIRLAM_EXTENSIONS
+    }
+
   grid->type  = gridtype;
   grid->projtype  = projtype;
 }
@@ -24843,7 +24933,7 @@ int reshUnpackResources(char * unpackBuffer, int unpackBufferSize,
 #ifdef HAVE_CONFIG_H
 #endif
 
-#ifndef  _ERROR_H
+#ifndef  ERROR_H
 #endif
 
 #include <stddef.h>  /* size_t */
@@ -24856,7 +24946,7 @@ int reshUnpackResources(char * unpackBuffer, int unpackBufferSize,
 
 typedef struct
 {
-  int      flag;
+  bool     flag;
   int      index;
   int      mlevelID;
   int      flevelID;
@@ -24882,14 +24972,14 @@ ensinfo_t;
 typedef struct
 {
   bool        isUsed;
-  int         flag;
+  bool        flag;
   int         mvarID;
   int         fvarID;
   int         param;
   int         gridID;
   int         zaxisID;
   int         tsteptype; /* TSTEP_* */
-  int         datatype;  /* DATATYPE_PACKX for GRIB data, else DATATYPE_FLT32 or DATATYPE_FLT64 */
+  int         datatype;  /* CDI_DATATYPE_PACKX for GRIB data, else CDI_DATATYPE_FLT32 or CDI_DATATYPE_FLT64 */
   int         instID;
   int         modelID;
   int         tableID;
@@ -24899,8 +24989,8 @@ typedef struct
   int         productDefinitionTemplate;
   int         chunktype;
   int         xyz;
-  int         missvalused; /* TRUE if missval is defined */
-  int         lvalidrange;
+  bool        missvalused; /* true if missval is defined */
+  bool        lvalidrange;
   char       *name;
   char       *longname;
   char       *stdname;
@@ -24967,7 +25057,6 @@ int      vlistInqVarMissvalUsed(int vlistID, int varID);
 int      vlistHasTime(int vlistID);
 
 int      cdiDelAtts(int vlistID, int varID);
-int      cdiCopyVarAtts(int vlistID1, int varID_1, int vlistID2, int varID_2);
 
 void     vlistUnpack(char * buffer, int bufferSize, int * pos,
                      int originNamespace, void *context, int force_id);
@@ -25071,8 +25160,9 @@ resOps vlistOps;
 #include <limits.h> /* INT_MAX     */
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID -1
+double grid_missval = -9999.;
+int (*proj_lonlat_to_lcc_func)() = NULL;
+int (*proj_lcc_to_lonlat_func)() = NULL;
 
 /* the value in the second pair of brackets must match the length of
  * the longest string (including terminating NUL) */
@@ -25090,6 +25180,7 @@ static const char Grids[][17] = {
   /* 10 */  "curvilinear",
   /* 11 */  "lcc",
   /* 12 */  "projection",
+  /* 13 */  "characterXY",
 };
 
 /* must match table below */
@@ -25097,6 +25188,7 @@ enum xystdname_idx {
   grid_xystdname_grid_latlon,
   grid_xystdname_latlon,
   grid_xystdname_projection,
+  grid_xystdname_char,
 };
 static const char xystdname_tab[][2][24] = {
   [grid_xystdname_grid_latlon] = { "grid_longitude",
@@ -25105,7 +25197,8 @@ static const char xystdname_tab[][2][24] = {
                               "latitude" },
   [grid_xystdname_projection] = { "projection_x_coordinate",
                                   "projection_y_coordinate" },
-
+  [grid_xystdname_char] = { "region",
+                            "region" },
 };
 
 
@@ -25114,8 +25207,7 @@ static int    gridCompareP    ( void * gridptr1, void * gridptr2 );
 static void   gridDestroyP    ( void * gridptr );
 static void   gridPrintP      ( void * gridptr, FILE * fp );
 static int    gridGetPackSize ( void * gridptr, void *context);
-static void   gridPack        ( void * gridptr, void * buff, int size,
-				int *position, void *context);
+static void   gridPack        ( void * gridptr, void * buff, int size, int *position, void *context);
 static int    gridTxCode      ( void );
 
 static const resOps gridOps = {
@@ -25129,13 +25221,37 @@ static const resOps gridOps = {
 
 static int  GRID_Debug = 0;   /* If set to 1, debugging */
 
+
 grid_t *grid_to_pointer(int gridID)
 {
   return (grid_t *)reshGetVal(gridID, &gridOps);
 }
-#define grid_to_pointer(gridID) (grid_t *)reshGetVal(gridID, &gridOps)
+
 #define gridMark4Update(gridID) reshSetStatus(gridID, &gridOps, RESH_DESYNC_IN_USE)
 
+static
+bool cdiInqAttConvertedToFloat(int gridID, int atttype, const char *attname, int attlen, double *attflt)
+{
+  bool status = true;
+
+  if ( atttype == CDI_DATATYPE_INT32 )
+    {
+      int attint[attlen];
+      cdiInqAttInt(gridID, CDI_GLOBAL, attname, attlen, attint);
+      for ( int i = 0; i < attlen; ++i ) attflt[i] = (double)attint[i];
+    }
+  else if ( atttype == CDI_DATATYPE_FLT32 || atttype == CDI_DATATYPE_FLT64 )
+    {
+      cdiInqAttFlt(gridID, CDI_GLOBAL, attname, attlen, attflt);
+    }
+  else
+    {
+      status = false;
+    }
+
+  return status;
+}
+
 
 void grid_init(grid_t *gridptr)
 {
@@ -25146,7 +25262,11 @@ void grid_init(grid_t *gridptr)
   gridptr->mask          = NULL;
   gridptr->mask_gme      = NULL;
   gridptr->x.vals        = NULL;
+  gridptr->x.cvals       = NULL;
+  gridptr->x.clength     = 0;
   gridptr->y.vals        = NULL;
+  gridptr->y.cvals       = NULL;
+  gridptr->y.clength     = 0;
   gridptr->x.bounds      = NULL;
   gridptr->y.bounds      = NULL;
   gridptr->area          = NULL;
@@ -25160,17 +25280,6 @@ void grid_init(grid_t *gridptr)
   gridptr->y.last        = 0.0;
   gridptr->y.inc         = 0.0;
 
-  gridptr->lcc.originLon = 0.0;
-  gridptr->lcc.originLat = 0.0;
-  gridptr->lcc.lonParY   = 0.0;
-  gridptr->lcc.lat1      = 0.0;
-  gridptr->lcc.lat2      = 0.0;
-  gridptr->lcc.xinc      = 0.0;
-  gridptr->lcc.yinc      = 0.0;
-  gridptr->lcc.projflag  = 0;
-  gridptr->lcc.scanflag  = 0;
-  gridptr->lcc.defined   = FALSE;
-
   gridptr->gme.nd        = 0;
   gridptr->gme.ni        = 0;
   gridptr->gme.ni2       = 0;
@@ -25210,6 +25319,17 @@ void grid_init(grid_t *gridptr)
   gridptr->vtable        = &cdiGridVtable;
   gridptr->atts.nalloc   = MAX_ATTRIBUTES;
   gridptr->atts.nelems   = 0;
+  gridptr->uvRelativeToGrid      = 0;   // Some models deliver wind U,V relative to the grid-cell
+  gridptr->iScansNegatively      = 0;
+  gridptr->jScansPositively      = 1;
+  gridptr->jPointsAreConsecutive = 0;
+  gridptr->scanningMode          = 128*gridptr->iScansNegatively + 64*gridptr->jScansPositively + 32*gridptr->jPointsAreConsecutive;
+  /* scanningMode  = 128 * iScansNegatively + 64 * jScansPositively + 32 * jPointsAreConsecutive;
+               64  = 128 * 0                + 64 *        1         + 32 * 0
+               00  = 128 * 0                + 64 *        0         + 32 * 0
+               96  = 128 * 0                + 64 *        1         + 32 * 1
+     Default / implicit scanning mode is 64:
+                        i and j scan positively, i points are consecutive (row-major)        */
 }
 
 
@@ -25218,6 +25338,7 @@ void grid_free_components(grid_t *gridptr)
 {
   void *p2free[] = { gridptr->mask, gridptr->mask_gme,
                      gridptr->x.vals, gridptr->y.vals,
+                     gridptr->x.cvals, gridptr->y.cvals,
                      gridptr->x.bounds, gridptr->y.bounds,
                      gridptr->rowlon, gridptr->area,
                      gridptr->reference, gridptr->name};
@@ -25279,6 +25400,7 @@ grid_t *grid_copy_base(grid_t *gridptrOrig)
   return gridptrDup;
 }
 
+
 unsigned cdiGridCount(void)
 {
   return reshCountType(&gridOps);
@@ -25347,6 +25469,13 @@ void cdiGridTypeInit(grid_t *gridptr, int gridtype, int size)
 
         break;
       }
+    case GRID_CHARXY:
+      {
+        if ( gridptr->x.cvals )
+          gridptr->x.stdname = xystdname_tab[grid_xystdname_char][0];
+        if ( gridptr->y.cvals )
+          gridptr->y.stdname = xystdname_tab[grid_xystdname_char][0];
+      }
     case GRID_GENERIC:
     case GRID_PROJECTION:
       {
@@ -25507,7 +25636,7 @@ void gridGenYvals(int gridtype, int ysize, double yfirst, double ylast, double y
 @Parameter
     @Item  gridtype  The type of the grid, one of the set of predefined CDI grid types.
                      The valid CDI grid types are @func{GRID_GENERIC}, @func{GRID_GAUSSIAN},
-                     @func{GRID_LONLAT}, @func{GRID_LCC}, @func{GRID_SPECTRAL},
+                     @func{GRID_LONLAT}, @func{GRID_PROJECTION}, @func{GRID_SPECTRAL},
                      @func{GRID_GME}, @func{GRID_CURVILINEAR} and @func{GRID_UNSTRUCTURED}.
     @Item  size      Number of gridpoints.
 
@@ -25587,8 +25716,8 @@ void gridDestroy(int gridID)
   gridptr->vtable->destroy(gridptr);
 }
 
-
-void gridDestroyP ( void * gridptr )
+static
+void gridDestroyP(void * gridptr)
 {
   ((grid_t *)gridptr)->vtable->destroy((grid_t *)gridptr);
 }
@@ -25598,7 +25727,7 @@ const char *gridNamePtr(int gridtype)
 {
   int size = (int) (sizeof(Grids)/sizeof(Grids[0]));
 
-  const char *name = gridtype >= 0 && gridtype < size ? Grids[gridtype] : Grids[GRID_GENERIC];
+  const char *name = (gridtype >= 0 && gridtype < size) ? Grids[gridtype] : Grids[GRID_GENERIC];
 
   return name;
 }
@@ -25625,8 +25754,8 @@ void *grid_key_to_ptr(grid_t *gridptr, int key)
     case CDI_KEY_XDIMNAME:   keyptr = (void*)gridptr->x.dimname; break;
     case CDI_KEY_YDIMNAME:   keyptr = (void*)gridptr->y.dimname; break;
     case CDI_KEY_VDIMNAME:   keyptr = (void*)gridptr->vdimname; break;
-    case CDI_KEY_MAPNAME:    keyptr = (void*)gridptr->mapname; break;
-    case CDI_KEY_MAPPING:    keyptr = (void*)gridptr->mapping; break;
+    case CDI_KEY_MAPPING:    keyptr = (void*)gridptr->mapname; break;
+    case CDI_KEY_MAPNAME:    keyptr = (void*)gridptr->mapping; break;
     }
 
   return keyptr;
@@ -25898,11 +26027,12 @@ void gridInqXunits(int gridID, char *xunits)
 
 void gridInqXstdname(int gridID, char *xstdname)
 {
-  grid_t *gridptr = grid_to_pointer(gridID);
-  if ( gridptr->x.stdname )
-    strcpy(xstdname, gridptr->x.stdname);
-  else
-    xstdname[0] = 0;
+  if ( xstdname )
+    {
+      xstdname[0] = 0;
+      grid_t *gridptr = grid_to_pointer(gridID);
+      if ( gridptr->x.stdname ) strcpy(xstdname, gridptr->x.stdname);
+    }
 }
 
 /*
@@ -25980,11 +26110,12 @@ void gridInqYunits(int gridID, char *yunits)
 
 void gridInqYstdname(int gridID, char *ystdname)
 {
-  grid_t *gridptr = grid_to_pointer(gridID);
-  if ( gridptr->y.stdname )
-    strcpy(ystdname, gridptr->y.stdname);
-  else
-    ystdname[0] = 0;
+  if ( ystdname )
+    {
+      ystdname[0] = 0;
+      grid_t *gridptr = grid_to_pointer(gridID);
+      if ( gridptr->y.stdname ) strcpy(ystdname, gridptr->y.stdname);
+    }
 }
 
 
@@ -26018,7 +26149,7 @@ int gridInqProjType(int gridID)
   if ( projtype == -1 )
     {
       char mapping[CDI_MAX_NAME]; mapping[0] = 0;
-      cdiGridInqKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, mapping);
+      cdiGridInqKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapping);
       if ( mapping[0] )
         {
           if      ( strcmp(mapping, "rotated_latitude_longitude") == 0 )   projtype = CDI_PROJ_RLL;
@@ -26047,6 +26178,13 @@ void gridVerifyProj(int gridID)
       gridSetName(gridptr->x.units, "degrees");
       gridSetName(gridptr->y.units, "degrees");
     }
+  else if ( projtype == CDI_PROJ_LCC )
+    {
+      gridptr->x.stdname = xystdname_tab[grid_xystdname_projection][0];
+      gridptr->y.stdname = xystdname_tab[grid_xystdname_projection][1];
+      gridSetName(gridptr->x.units, "m");
+      gridSetName(gridptr->y.units, "m");
+    }
 }
 
 /*
@@ -26064,7 +26202,7 @@ The function @func{gridInqType} returns the type of a Grid.
 @func{gridInqType} returns the type of the grid,
 one of the set of predefined CDI grid types.
 The valid CDI grid types are @func{GRID_GENERIC}, @func{GRID_GAUSSIAN},
- at func{GRID_LONLAT}, @func{GRID_LCC}, @func{GRID_SPECTRAL}, @func{GRID_GME},
+ at func{GRID_LONLAT}, @func{GRID_PROJECTION}, @func{GRID_SPECTRAL}, @func{GRID_GME},
 @func{GRID_CURVILINEAR} and @func{GRID_UNSTRUCTURED}.
 
 @EndFunction
@@ -26233,7 +26371,6 @@ void gridDefPrec(int gridID, int prec)
 int gridInqPrec(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
-
   return gridptr->prec;
 }
 
@@ -26256,7 +26393,6 @@ The function @func{gridInqXsize} returns the number of values of a X-axis.
 int gridInqXsize(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
-
   return gridptr->x.size;
 }
 
@@ -26321,7 +26457,6 @@ The function @func{gridInqYsize} returns the number of values of a Y-axis.
 int gridInqYsize(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
-
   return gridptr->y.size;
 }
 
@@ -26371,7 +26506,6 @@ of a Gaussian grid.
 int gridInqNP(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
-
   return gridptr->np;
 }
 
@@ -26520,7 +26654,6 @@ void gridDefMaskGME(int gridID, const int *mask)
   gridMark4Update(gridID);
 }
 
-
 static
 int gridInqXValsSerial(grid_t *gridptr, double *xvals)
 {
@@ -26549,6 +26682,37 @@ int gridInqXValsSerial(grid_t *gridptr, double *xvals)
   return (int)size;
 }
 
+static
+int gridInqXCvalsSerial(grid_t *gridptr, char **xcvals)
+{
+  if ( gridptr->type != GRID_CHARXY )
+    Error("Function only valid for grid type 'GRID_CHARXY'.");
+
+  int size = gridptr->x.size;
+  int maxclength = 0;
+
+  const char **gridptr_xcvals = gridptr->vtable->inqXCvalsPtr(gridptr);
+  if ( gridptr_xcvals && size && xcvals )
+    {
+      maxclength = gridptr->x.clength;
+      for ( int i = 0; i < size; i++ )
+        memcpy(xcvals[i], gridptr_xcvals[i], (size_t)maxclength*sizeof(char));
+    }
+
+  return maxclength;
+}
+
+static
+int gridInqXIscSerial(grid_t *gridptr)
+{
+  int clen = gridptr->x.clength;
+  /*
+  if ( gridptr->type != GRID_CHARXY )
+    Error("Axis type is 'char' but grid is not type 'GRID_CHARXY'.");
+  */
+  return clen;
+}
+
 /*
 @Function  gridInqXvals
 @Title     Get all values of a X-axis
@@ -26576,6 +26740,19 @@ int gridInqXvals(int gridID, double *xvals)
 }
 
 
+int gridInqXCvals(int gridID, char **xcvals)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->vtable->inqXCvals(gridptr, xcvals);
+}
+
+
+int gridInqXIsc(int gridID)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->vtable->inqXIsc(gridptr);
+}
+
 static
 void gridDefXValsSerial(grid_t *gridptr, const double *xvals)
 {
@@ -26599,6 +26776,37 @@ void gridDefXValsSerial(grid_t *gridptr, const double *xvals)
   memcpy(gridptr->x.vals, xvals, (size_t)size * sizeof (double));
 }
 
+static
+int gridInqYCvalsSerial(grid_t *gridptr, char **ycvals)
+{
+  if ( gridptr->type != GRID_CHARXY )
+    Error("Function only valid for grid type 'GRID_CHARXY'.");
+
+  int size = gridptr->y.size;
+  int maxclength = 0;
+
+  const char **gridptr_ycvals = gridptr->vtable->inqYCvalsPtr(gridptr);
+  if ( gridptr_ycvals && size && ycvals )
+    {
+      maxclength = gridptr->y.clength;
+      for ( int i = 0; i < size; i++ )
+        memcpy(ycvals[i], gridptr_ycvals[i], (size_t)maxclength*sizeof(char));
+    }
+
+  return maxclength;
+}
+
+static
+int gridInqYIscSerial(grid_t *gridptr)
+{
+  int clen = gridptr->y.clength;
+  /*
+  if ( gridptr->type != GRID_CHARXY )
+    Error("Axis type is 'char' but grid is not type 'GRID_CHARXY'.");
+  */
+  return clen;
+}
+
 /*
 @Function  gridDefXvals
 @Title     Define the values of a X-axis
@@ -26670,6 +26878,20 @@ int gridInqYvals(int gridID, double *yvals)
   return gridptr->vtable->inqYVals(gridptr, yvals);
 }
 
+
+int gridInqYCvals(int gridID, char **ycvals)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->vtable->inqYCvals(gridptr, ycvals);
+}
+
+
+int gridInqYIsc(int gridID)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->vtable->inqYIsc(gridptr);
+}
+
 static
 void gridDefYValsSerial(grid_t *gridptr, const double *yvals)
 {
@@ -26835,7 +27057,7 @@ void gridInqParamRLL(int gridID, double *xpole, double *ypole, double *angle)
 
   const char *projection = "rotated_latitude_longitude";
   char mapping[CDI_MAX_NAME]; mapping[0] = 0;
-  cdiGridInqKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, mapping);
+  cdiGridInqKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapping);
   if ( mapping[0] && strcmp(mapping, projection) == 0 )
     {
       int atttype, attlen;
@@ -26847,13 +27069,11 @@ void gridInqParamRLL(int gridID, double *xpole, double *ypole, double *angle)
       for ( int iatt = 0; iatt < natts; ++iatt )
         {
           cdiInqAtt(gridID, CDI_GLOBAL, iatt, attname, &atttype, &attlen);
-
           if ( attlen != 1 ) continue;
 
-          if ( atttype == DATATYPE_FLT32 || atttype == DATATYPE_FLT64 )
+          double attflt;
+          if ( cdiInqAttConvertedToFloat(gridID, atttype, attname, attlen, &attflt) )
             {
-              double attflt;
-              cdiInqAttFlt(gridID, CDI_GLOBAL, attname, attlen, &attflt);
               if      ( strcmp(attname, "grid_north_pole_longitude") == 0 ) *xpole = attflt;
               else if ( strcmp(attname, "grid_north_pole_latitude")  == 0 ) *ypole = attflt;
               else if ( strcmp(attname, "north_pole_grid_longitude") == 0 ) *angle = attflt;
@@ -26876,14 +27096,14 @@ void gridInqParamRLL(int gridID, double *xpole, double *ypole, double *angle)
 */
 void gridDefParamRLL(int gridID, double xpole, double ypole, double angle)
 {
-  cdiGridDefKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, "rotated_pole");
+  cdiGridDefKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, "rotated_pole");
 
   const char *mapping = "rotated_latitude_longitude";
-  cdiGridDefKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, mapping);
-  cdiDefAttTxt(gridID, CDI_GLOBAL, "grid_mapping_name", strlen(mapping), mapping);
-  cdiDefAttFlt(gridID, CDI_GLOBAL, "grid_north_pole_longitude", DATATYPE_FLT64, 1, &xpole);
-  cdiDefAttFlt(gridID, CDI_GLOBAL, "grid_north_pole_latitude", DATATYPE_FLT64, 1, &ypole);
-  if ( IS_NOT_EQUAL(angle, 0) ) cdiDefAttFlt(gridID, CDI_GLOBAL, "north_pole_grid_longitude", DATATYPE_FLT64, 1, &angle);
+  cdiGridDefKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapping);
+  cdiDefAttTxt(gridID, CDI_GLOBAL, "grid_mapping_name", (int)(strlen(mapping)), mapping);
+  cdiDefAttFlt(gridID, CDI_GLOBAL, "grid_north_pole_longitude", CDI_DATATYPE_FLT64, 1, &xpole);
+  cdiDefAttFlt(gridID, CDI_GLOBAL, "grid_north_pole_latitude", CDI_DATATYPE_FLT64, 1, &ypole);
+  if ( IS_NOT_EQUAL(angle, 0) ) cdiDefAttFlt(gridID, CDI_GLOBAL, "north_pole_grid_longitude", CDI_DATATYPE_FLT64, 1, &angle);
 
   grid_t *gridptr = grid_to_pointer(gridID);
   gridptr->projtype = CDI_PROJ_RLL;
@@ -26962,11 +27182,12 @@ void gridChangeType(int gridID, int gridtype)
 static
 void grid_check_cyclic(grid_t *gridptr)
 {
-  gridptr->isCyclic = FALSE;
+  gridptr->isCyclic = 0;
   enum { numVertices = 4 };
   size_t xsize = gridptr->x.size >= 0 ? (size_t)gridptr->x.size : 0,
-    ysize = gridptr->y.size >= 0 ? (size_t)gridptr->y.size : 0;
+         ysize = gridptr->y.size >= 0 ? (size_t)gridptr->y.size : 0;
   const double *xvals = gridptr->vtable->inqXValsPtr(gridptr),
+               *yvals = gridptr->vtable->inqYValsPtr(gridptr),
     (*xbounds)[numVertices]
     = (const double (*)[numVertices])gridptr->vtable->inqXBoundsPtr(gridptr);
 
@@ -26981,23 +27202,31 @@ void grid_check_cyclic(grid_t *gridptr)
           double x0 = 2*xvals[xsize-1]-xvals[xsize-2]-360;
 
           if ( IS_NOT_EQUAL(xvals[0], xvals[xsize-1]) )
-            if ( fabs(x0 - xvals[0]) < 0.01*xinc ) gridptr->isCyclic = TRUE;
+            if ( fabs(x0 - xvals[0]) < 0.01*xinc ) gridptr->isCyclic = 1;
         }
     }
   else if ( gridptr->type == GRID_CURVILINEAR )
     {
-      if ( xvals && xsize > 1 )
+      bool lcheck = true;
+      if ( yvals && xvals )
+        {
+          if ( (fabs(yvals[0] - yvals[xsize-1]) > fabs(yvals[0] - yvals[xsize*ysize-xsize])) &&
+               (fabs(yvals[xsize*ysize-xsize] - yvals[xsize*ysize-1]) > fabs(yvals[xsize-1] - yvals[xsize*ysize-1])) )
+            lcheck = false;
+        }
+      else lcheck = false;
+
+      if ( lcheck && xvals && xsize > 1 )
         {
           size_t nc = 0;
           for ( size_t j = 0; j < ysize; ++j )
             {
               size_t i1 = j*xsize,
-                i2 = j*xsize+1,
-                in = j*xsize+(xsize-1);
+                     i2 = j*xsize+1,
+                     in = j*xsize+(xsize-1);
               double val1 = xvals[i1],
-                val2 = xvals[i2],
-                valn = xvals[in];
-
+                     val2 = xvals[i2],
+                     valn = xvals[in];
               double xinc = fabs(val2-val1);
 
 	      if ( val1 <    1 && valn > 300 ) val1 += 360;
@@ -27010,16 +27239,16 @@ void grid_check_cyclic(grid_t *gridptr)
 
               nc += fabs(x0-val1) < 0.5*xinc;
             }
-          gridptr->isCyclic = nc > ysize/2 ? TRUE : FALSE;
+          gridptr->isCyclic = nc > ysize/2;
         }
 
-      if ( xbounds && xsize > 1 )
+      if ( lcheck && xbounds && xsize > 1 )
 	{
           bool isCyclic = true;
 	  for ( size_t j = 0; j < ysize; ++j )
 	    {
 	      size_t i1 = j*xsize,
-                i2 = j*xsize+(xsize-1);
+                     i2 = j*xsize+(xsize-1);
 	      for (size_t k1 = 0; k1 < numVertices; ++k1 )
 		{
 		  double val1 = xbounds[i1][k1];
@@ -27043,7 +27272,7 @@ void grid_check_cyclic(grid_t *gridptr)
               foundCloseVertices:
               ;
 	    }
-          gridptr->isCyclic = (int) isCyclic;
+          gridptr->isCyclic = isCyclic;
 	}
     }
 }
@@ -27096,23 +27325,22 @@ static
 bool compareXYvals2(grid_t *gridRef, grid_t *gridTest)
 {
   int gridsize = gridTest->size;
-  bool differ
-    = ((gridTest->x.vals == NULL) ^ (gridRef->x.vals == NULL))
-    || ((gridTest->y.vals == NULL) ^ (gridRef->y.vals == NULL));
+  bool differ = ((gridTest->x.vals == NULL) ^ (gridRef->x.vals == NULL))
+             || ((gridTest->y.vals == NULL) ^ (gridRef->y.vals == NULL));
 
   typedef double (*inqVal)(grid_t *grid, int index);
   inqVal inqXValRef = gridRef->vtable->inqXVal,
-    inqYValRef = gridRef->vtable->inqXVal,
-    inqXValTest = gridTest->vtable->inqXVal,
-    inqYValTest = gridTest->vtable->inqYVal;
+         inqYValRef = gridRef->vtable->inqYVal,
+         inqXValTest = gridTest->vtable->inqXVal,
+         inqYValTest = gridTest->vtable->inqYVal;
 
   if ( !differ && gridTest->x.vals )
     differ = fabs(inqXValTest(gridTest, 0) - inqXValRef(gridRef, 0)) > 1.e-9
-      || fabs(inqXValTest(gridTest, gridsize-1) - inqXValRef(gridRef, gridsize-1)) > 1.e-9;
+          || fabs(inqXValTest(gridTest, gridsize-1) - inqXValRef(gridRef, gridsize-1)) > 1.e-9;
 
   if ( !differ && gridTest->y.vals )
     differ = fabs(inqYValTest(gridTest, 0) - inqYValRef(gridRef, 0)) > 1.e-9
-      || fabs(inqYValTest(gridTest, gridsize-1) - inqYValRef(gridRef, gridsize-1)) > 1.e-9;
+          || fabs(inqYValTest(gridTest, gridsize-1) - inqYValRef(gridRef, gridsize-1)) > 1.e-9;
 
   return differ;
 }
@@ -27242,7 +27470,7 @@ bool gridCompare(int gridID, const grid_t *grid, bool coord_compare)
               else
                 {
                   /* FIXME: not octet 0 but octet 7 is guaranteed  non-zero for any non-NULL UUID */
-                  differ = differ || ( gridRef->uuid[0] && grid->uuid[0] && memcmp(gridRef->uuid, grid->uuid, CDI_UUID_SIZE) != 0 );
+                  differ = differ || (gridRef->uuid[0] && grid->uuid[0] && memcmp(gridRef->uuid, grid->uuid, CDI_UUID_SIZE) != 0);
 
                   if ( !differ &&
                        ((grid->x.vals == NULL) ^ (gridRef->x.vals == NULL)) &&
@@ -27271,6 +27499,16 @@ bool gridCompare(int gridID, const grid_t *grid, bool coord_compare)
 	}
     }
 
+  if ( (grid->scanningMode != gridInqScanningMode(gridID)) || (grid->uvRelativeToGrid != gridInqUvRelativeToGrid(gridID)) )
+    {
+      // often grid definition may differ in UV-relativeToGrid
+      differ = 1;
+#ifdef HIRLAM_EXTENSIONS
+      if ( cdiDebugExt>=200 )
+        printf("gridCompare(gridID=%d): Differs: grid.scanningMode [%d] != gridInqScanningMode(gridID) [%d] or  grid.uvRelativeToGrid [%ld] != gridInqUvRelativeToGrid(gridID) [%d]\n",
+               gridID, grid->scanningMode, gridInqScanningMode(gridID), grid->uvRelativeToGrid, gridInqUvRelativeToGrid(gridID) );
+#endif // HIRLAM_EXTENSIONS
+    }
   return differ;
 }
 
@@ -27298,9 +27536,6 @@ int gridCompareP(void *gridptr1, void *gridptr2)
 
   if ( g1->type          != g2->type         ) return differ;
   if ( g1->prec          != g2->prec         ) return differ;
-  if ( g1->lcc.projflag  != g2->lcc.projflag ) return differ;
-  if ( g1->lcc.scanflag  != g2->lcc.scanflag ) return differ;
-  if ( g1->lcc.defined   != g2->lcc.defined  ) return differ;
   if ( g1->isCyclic      != g2->isCyclic     ) return differ;
   if ( g1->x.flag        != g2->x.flag       ) return differ;
   if ( g1->y.flag        != g2->y.flag       ) return differ;
@@ -27324,13 +27559,8 @@ int gridCompareP(void *gridptr1, void *gridptr2)
   if ( IS_NOT_EQUAL(g1->y.last        , g2->y.last)        ) return differ;
   if ( IS_NOT_EQUAL(g1->x.inc	      , g2->x.inc)         ) return differ;
   if ( IS_NOT_EQUAL(g1->y.inc	      , g2->y.inc)         ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.originLon , g2->lcc.originLon) ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.originLat , g2->lcc.originLat) ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.lonParY   , g2->lcc.lonParY)   ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.lat1      , g2->lcc.lat1)      ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.lat2      , g2->lcc.lat2)      ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.xinc      , g2->lcc.xinc)      ) return differ;
-  if ( IS_NOT_EQUAL(g1->lcc.yinc      , g2->lcc.yinc)      ) return differ;
+  if ( IS_NOT_EQUAL(g1->uvRelativeToGrid     , g2->uvRelativeToGrid)     ) return differ;
+  if ( IS_NOT_EQUAL(g1->scanningMode         , g2->scanningMode)         ) return differ;
 
   const double *restrict g1_xvals = g1->vtable->inqXValsPtr(g1),
                *restrict g2_xvals = g2->vtable->inqXValsPtr(g2);
@@ -27479,8 +27709,8 @@ void gridComplete(grid_t *grid)
     case GRID_UNSTRUCTURED:
     case GRID_CURVILINEAR:
     case GRID_GENERIC:
-    case GRID_LCC:
     case GRID_PROJECTION:
+    case GRID_CHARXY:
       {
 	if ( grid->x.size > 0 ) gridDefXsize(gridID, grid->x.size);
 	if ( grid->y.size > 0 ) gridDefYsize(gridID, grid->y.size);
@@ -27496,9 +27726,7 @@ void gridComplete(grid_t *grid)
 	    double *xvals = (double *) Malloc((size_t)grid->x.size * sizeof (double));
 	    gridGenXvals(grid->x.size, grid->x.first, grid->x.last, grid->x.inc, xvals);
 	    grid->x.vals = xvals;
-	    /*
-	    gridDefXinc(gridID, grid->x.inc);
-	    */
+	    // gridDefXinc(gridID, grid->x.inc);
 	  }
 
 	if ( grid->y.flag == 2 )
@@ -27507,9 +27735,7 @@ void gridComplete(grid_t *grid)
 	    double *yvals = (double *) Malloc((size_t)grid->y.size * sizeof (double));
 	    gridGenYvals(gridtype, grid->y.size, grid->y.first, grid->y.last, grid->y.inc, yvals);
 	    grid->y.vals = yvals;
-	    /*
-	    gridDefYinc(gridID, grid->y.inc);
-	    */
+	    // gridDefYinc(gridID, grid->y.inc);
 	  }
 
 	if ( grid->projtype == CDI_PROJ_RLL )
@@ -27524,22 +27750,13 @@ void gridComplete(grid_t *grid)
 	    if ( grid->y.units[0] == 0 ) strcpy(grid->y.units, "degrees");
 	  }
 
-        switch (gridtype)
+        if ( gridtype == GRID_UNSTRUCTURED )
           {
-          case GRID_LCC:
-            gridDefParamLCC(gridID, grid->lcc.originLon, grid->lcc.originLat, grid->lcc.lonParY,
-                       grid->lcc.lat1, grid->lcc.lat2, grid->lcc.xinc, grid->lcc.yinc,
-                       grid->lcc.projflag, grid->lcc.scanflag);
-            break;
-          case GRID_UNSTRUCTURED:
-            {
-              int number = grid->number;
-              int position = grid->position >= 0 ? grid->position : 0;
-              if ( number > 0 ) gridDefNumber(gridID, number);
-              gridDefPosition(gridID, position);
-            }
-            break;
-	  }
+            int number = grid->number;
+            int position = grid->position >= 0 ? grid->position : 0;
+            if ( number > 0 ) gridDefNumber(gridID, number);
+            gridDefPosition(gridID, position);
+          }
 
 	break;
       }
@@ -27633,7 +27850,7 @@ int gridGenerate(const grid_t *grid)
   int valdef_group1 = 0;
   static const int valdef_group1_tab[] = {
     GRID_LONLAT, GRID_GAUSSIAN, GRID_UNSTRUCTURED, GRID_CURVILINEAR,
-    GRID_GENERIC, GRID_LCC, GRID_PROJECTION
+    GRID_GENERIC, GRID_PROJECTION
   };
   for ( size_t i = 0; i < sizeof (valdef_group1_tab) / sizeof (valdef_group1_tab[0]); ++i)
     valdef_group1 |= (gridtype == valdef_group1_tab[i]);
@@ -27658,17 +27875,13 @@ int gridGenerate(const grid_t *grid)
   gridptr->y.inc = grid->y.inc;
   if ( valdef_group1 && grid->area)
     gridDefArea(gridID, grid->area);
-  gridptr->lcc.originLon = grid->lcc.originLon;
-  gridptr->lcc.originLat = grid->lcc.originLat;
-  gridptr->lcc.lonParY = grid->lcc.lonParY;
-  gridptr->lcc.lat1 = grid->lcc.lat1;
-  gridptr->lcc.lat2 = grid->lcc.lat2;
-  gridptr->lcc.xinc = grid->lcc.xinc;
-  gridptr->lcc.yinc = grid->lcc.yinc;
-  gridptr->lcc.projflag = grid->lcc.projflag;
-  gridptr->lcc.scanflag = grid->lcc.scanflag;
   gridptr->number = grid->number;
   gridptr->position = grid->position;
+  gridptr->uvRelativeToGrid       = grid->uvRelativeToGrid;
+  gridptr->scanningMode           = grid->scanningMode;
+  gridptr->iScansNegatively       = grid->iScansNegatively;
+  gridptr->jScansPositively       = grid->jScansPositively;
+  gridptr->jPointsAreConsecutive  = grid->jPointsAreConsecutive;
   memcpy(gridptr->uuid, grid->uuid, CDI_UUID_SIZE);
   if ( gridtype == GRID_UNSTRUCTURED && grid->reference )
     gridDefReference(gridID, grid->reference);
@@ -27943,7 +28156,6 @@ void gridDefNvertex(int gridID, int nvertex)
 int gridInqNvertex(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
-
   return gridptr->nvertex;
 }
 
@@ -28205,7 +28417,7 @@ printBounds(FILE *fp, int dig, const char prefix[], size_t nbyte0,
 
 static void
 printMask(FILE *fp, const char prefix[], size_t nbyte0,
-          size_t n, const mask_t mask[])
+          size_t n, const int mask[])
 {
   fputs(prefix, fp);
   size_t nbyte = nbyte0;
@@ -28216,7 +28428,7 @@ printMask(FILE *fp, const char prefix[], size_t nbyte0,
           fprintf(fp, "\n%*s", (int)nbyte0, "");
           nbyte = nbyte0;
         }
-      nbyte += (size_t)fprintf(fp, "%d ", (int)mask[i]);
+      nbyte += (size_t)fprintf(fp, "%d ", mask[i]);
     }
   fputs("\n", fp);
 }
@@ -28251,7 +28463,7 @@ void gridPrintAttributes(FILE *fp, int gridID)
 
       if ( attlen == 0 ) continue;
 
-      if ( atttype == DATATYPE_TXT )
+      if ( atttype == CDI_DATATYPE_TXT )
         {
           size_t attSize = (size_t)(attlen+1)*sizeof(char);
           char *atttxt = (char *)resizeBuffer(&attBuf, &attBufSize, attSize);
@@ -28259,9 +28471,9 @@ void gridPrintAttributes(FILE *fp, int gridID)
           atttxt[attlen] = 0;
           fprintf(fp, "ATTR_TXT: %s = \"%s\"\n", attname, atttxt);
         }
-      else if ( atttype == DATATYPE_INT8  || atttype == DATATYPE_UINT8  ||
-                atttype == DATATYPE_INT16 || atttype == DATATYPE_UINT16 ||
-                atttype == DATATYPE_INT32 || atttype == DATATYPE_UINT32 )
+      else if ( atttype == CDI_DATATYPE_INT8  || atttype == CDI_DATATYPE_UINT8  ||
+                atttype == CDI_DATATYPE_INT16 || atttype == CDI_DATATYPE_UINT16 ||
+                atttype == CDI_DATATYPE_INT32 || atttype == CDI_DATATYPE_UINT32 )
         {
           size_t attSize = (size_t)attlen*sizeof(int);
           int *attint = (int *)resizeBuffer(&attBuf, &attBufSize, attSize);
@@ -28273,11 +28485,11 @@ void gridPrintAttributes(FILE *fp, int gridID)
           for ( int i = 0; i < attlen; ++i ) fprintf(fp, " %d", attint[i]);
           fprintf(fp, "\n");
         }
-      else if ( atttype == DATATYPE_FLT32 || atttype == DATATYPE_FLT64 )
+      else if ( atttype == CDI_DATATYPE_FLT32 || atttype == CDI_DATATYPE_FLT64 )
         {
           size_t attSize = (size_t)attlen * sizeof(double);
           double *attflt = (double *)resizeBuffer(&attBuf, &attBufSize, attSize);
-          int dig = (atttype == DATATYPE_FLT64) ? 15 : 7;
+          int dig = (atttype == CDI_DATATYPE_FLT64) ? 15 : 7;
           cdiInqAttFlt(cdiID, varID, attname, attlen, attflt);
           if ( attlen == 1 )
             fprintf(fp, "ATTR_FLT: %s =", attname);
@@ -28292,35 +28504,31 @@ void gridPrintAttributes(FILE *fp, int gridID)
 }
 
 static
-void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
+void gridPrintKernel(int gridID, int opt, FILE *fp)
 {
-  int xdim, ydim;
+  size_t xdimLen, ydimLen;
+  char attstr[CDI_MAX_NAME];
+  char attstr2[CDI_MAX_NAME];
   unsigned char uuidOfHGrid[CDI_UUID_SIZE];
-  int gridID = gridptr->self;
-  const double *area    = gridInqAreaPtr(gridID);
-  const double *xvals   = gridInqXvalsPtr(gridID);
-  const double *yvals   = gridInqYvalsPtr(gridID);
-  const double *xbounds = gridInqXboundsPtr(gridID);
-  const double *ybounds = gridInqYboundsPtr(gridID);
+  const char  **xcvals  = gridInqXCvalsPtr(gridID);
+  const char  **ycvals  = gridInqYCvalsPtr(gridID);
+  size_t nxvals = (size_t) gridInqXvals(gridID, NULL);
+  size_t nyvals = (size_t) gridInqYvals(gridID, NULL);
+  size_t nxbounds = (size_t) gridInqXbounds(gridID, NULL);
+  size_t nybounds = (size_t) gridInqYbounds(gridID, NULL);
 
   int type     = gridInqType(gridID);
-  int trunc    = gridInqTrunc(gridID);
   int gridsize = gridInqSize(gridID);
   int xsize    = gridInqXsize(gridID);
   int ysize    = gridInqYsize(gridID);
+  int xstrlen  = gridInqXIsc(gridID);
+  int ystrlen  = gridInqYIsc(gridID);
   int nvertex  = gridInqNvertex(gridID);
   int prec     = gridInqPrec(gridID);
 
-  int dig = (prec == DATATYPE_FLT64) ? 15 : 7;
-
-  struct gridaxis_t *xaxis = &gridptr->x;
-  struct gridaxis_t *yaxis = &gridptr->y;
+  int dig = (prec == CDI_DATATYPE_FLT64) ? 15 : 7;
 
-  fprintf(fp, "#\n"
-          "# gridID %d\n"
-          "#\n"
-          "gridtype  = %s\n"
-          "gridsize  = %d\n", index, gridNamePtr(type), gridsize);
+  fprintf(fp, "gridtype  = %s\n" "gridsize  = %d\n", gridNamePtr(type), gridsize);
 
   if ( type != GRID_GME )
     {
@@ -28330,25 +28538,37 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
           if ( ysize > 0 ) fprintf(fp, "ysize     = %d\n", ysize);
         }
 
-      if ( xvals )
+      if ( nxvals > 0 || xcvals )
         {
-          if ( xaxis->name[0]     )  fprintf(fp, "xname     = %s\n", xaxis->name);
-          if ( xaxis->longname[0] )  fprintf(fp, "xlongname = %s\n", xaxis->longname);
-          if ( xaxis->units[0]    )  fprintf(fp, "xunits    = %s\n", xaxis->units);
-          if ( xaxis->dimname[0] && strcmp(xaxis->name, xaxis->dimname) )
-            fprintf(fp, "xdimname  = %s\n", xaxis->dimname);
+          if ( xstrlen )  fprintf(fp, "xstringlen= %d\n", xstrlen);
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_XNAME, CDI_MAX_NAME, attstr);
+          if ( attstr[0] )  fprintf(fp, "xname     = %s\n", attstr);
+          attstr2[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_XDIMNAME, CDI_MAX_NAME, attstr2);
+          if ( attstr2[0] && strcmp(attstr, attstr2) )  fprintf(fp, "xdimname  = %s\n", attstr2);
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_XLONGNAME, CDI_MAX_NAME, attstr);
+          if ( attstr[0] )  fprintf(fp, "xlongname = %s\n", attstr);
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_XUNITS, CDI_MAX_NAME, attstr);
+          if ( attstr[0] )  fprintf(fp, "xunits    = %s\n", attstr);
         }
-      if ( yvals )
+
+      if ( nyvals > 0 || ycvals )
         {
-          if ( yaxis->name[0]     )  fprintf(fp, "yname     = %s\n", yaxis->name);
-          if ( yaxis->longname[0] )  fprintf(fp, "ylongname = %s\n", yaxis->longname);
-          if ( yaxis->units[0]    )  fprintf(fp, "yunits    = %s\n", yaxis->units);
-          if ( yaxis->dimname[0] && strcmp(yaxis->name, yaxis->dimname) )
-            fprintf(fp, "ydimname  = %s\n", yaxis->dimname);
+          if ( ystrlen )  fprintf(fp, "ystringlen= %d\n", ystrlen);
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_YNAME, CDI_MAX_NAME, attstr);
+          if ( attstr[0] )  fprintf(fp, "yname     = %s\n", attstr);
+          attstr2[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_YDIMNAME, CDI_MAX_NAME, attstr2);
+          if ( attstr2[0] && strcmp(attstr, attstr2) )  fprintf(fp, "ydimname  = %s\n", attstr2);
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_YLONGNAME, CDI_MAX_NAME, attstr);
+          if ( attstr[0] )  fprintf(fp, "ylongname = %s\n", attstr);
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_YUNITS, CDI_MAX_NAME, attstr);
+          if ( attstr[0] )  fprintf(fp, "yunits    = %s\n", attstr);
         }
 
       if ( type == GRID_UNSTRUCTURED || type == GRID_CURVILINEAR )
-        if ( gridptr->vdimname[0] ) fprintf(fp, "vdimname  = %s\n", gridptr->vdimname);
+        {
+          attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_VDIMNAME, CDI_MAX_NAME, attstr);
+          if ( attstr[0] ) fprintf(fp, "vdimname  = %s\n", attstr);
+        }
       if ( type == GRID_UNSTRUCTURED && nvertex > 0 ) fprintf(fp, "nvertex   = %d\n", nvertex);
     }
 
@@ -28361,23 +28581,24 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
     case GRID_PROJECTION:
     case GRID_CURVILINEAR:
     case GRID_UNSTRUCTURED:
+    case GRID_CHARXY:
       {
-        if ( type == GRID_GAUSSIAN || type == GRID_GAUSSIAN_REDUCED ) fprintf(fp, "np        = %d\n", gridptr->np);
+        if ( type == GRID_GAUSSIAN || type == GRID_GAUSSIAN_REDUCED ) fprintf(fp, "np        = %d\n", gridInqNP(gridID));
 
 	if ( type == GRID_CURVILINEAR || type == GRID_UNSTRUCTURED )
 	  {
-	    xdim = gridsize;
-	    ydim = gridsize;
+	    xdimLen = (size_t)gridsize;
+	    ydimLen = (size_t)gridsize;
 	  }
         else if ( type == GRID_GAUSSIAN_REDUCED )
           {
-	    xdim = 2;
-	    ydim = ysize;
+	    xdimLen = 2;
+	    ydimLen = (size_t)ysize;
           }
 	else
 	  {
-	    xdim = xsize;
-	    ydim = ysize;
+	    xdimLen = (size_t)xsize;
+	    ydimLen = (size_t)ysize;
 	  }
 
 	if ( type == GRID_UNSTRUCTURED )
@@ -28405,7 +28626,7 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
               }
           }
 
-	if ( xvals )
+	if ( nxvals > 0 )
 	  {
 	    double xfirst = 0.0, xinc = 0.0;
 
@@ -28423,21 +28644,35 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
 	      }
 	    else
 	      {
+                double *xvals = (double*) Malloc(nxvals*sizeof(double));
+                gridInqXvals(gridID, xvals);
                 static const char prefix[] = "xvals     = ";
-                printDblsPrefixAutoBrk(fp, dig, prefix, sizeof(prefix)-1,
-                                       (size_t)(xdim > 0 ? xdim : 0), xvals);
+                printDblsPrefixAutoBrk(fp, dig, prefix, sizeof(prefix)-1, nxvals, xvals);
+                Free(xvals);
 	      }
 	  }
 
-	if ( xbounds )
+        if ( xcvals )
+          {
+            attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_XNAME, CDI_MAX_NAME, attstr);
+            if ( attstr[0] )
+              fprintf(fp, "x%ss = %.*s\n", attstr, xstrlen, xcvals[0]);
+            else
+              fprintf(fp, "xstrings  = %.*s\n", xstrlen, xcvals[0]);
+            for ( int i = 1; i < xsize; i++ )
+              fprintf(fp, "          = %.*s\n", xstrlen, xcvals[i]);
+          }
+
+	if ( nxbounds )
 	  {
+            double *xbounds = (double*) Malloc(nxbounds*sizeof(double));
+            gridInqXbounds(gridID, xbounds);
             static const char prefix[] = "xbounds   = ";
-            printBounds(fp, dig, prefix, sizeof(prefix)-1,
-                        (size_t)(xdim > 0 ? xdim : 0),
-                        (size_t)(nvertex > 0 ? nvertex : 0), xbounds);
+            printBounds(fp, dig, prefix, sizeof(prefix)-1, xdimLen, (size_t)nvertex, xbounds);
+            Free(xbounds);
 	  }
 
-	if ( yvals )
+	if ( nyvals > 0 )
 	  {
 	    double yfirst = 0.0, yinc = 0.0;
 
@@ -28455,25 +28690,41 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
 	      }
 	    else
 	      {
+                double *yvals = (double*) Malloc(nyvals*sizeof(double));
+                gridInqYvals(gridID, yvals);
                 static const char prefix[] = "yvals     = ";
-                printDblsPrefixAutoBrk(fp, dig, prefix, sizeof(prefix)-1,
-                                       (size_t)(ydim > 0 ? ydim : 0), yvals);
+                printDblsPrefixAutoBrk(fp, dig, prefix, sizeof(prefix)-1, nyvals, yvals);
+                Free(yvals);
 	      }
 	  }
 
-	if ( ybounds )
+        if ( ycvals )
+          {
+            attstr[0] = 0; cdiGridInqKeyStr(gridID, CDI_KEY_YNAME, CDI_MAX_NAME, attstr);
+            if ( attstr[0] )
+              fprintf(fp, "x%ss = %.*s\n", attstr, ystrlen, ycvals[0]);
+            else
+              fprintf(fp, "ystrings  = %.*s\n", ystrlen, ycvals[0]);
+            for ( int i = 1; i < ysize; i++ )
+              fprintf(fp, "          = %.*s\n", ystrlen, ycvals[i]);
+          }
+
+	if ( nybounds )
 	  {
+            double *ybounds = (double*) Malloc(nybounds*sizeof(double));
+            gridInqYbounds(gridID, ybounds);
             static const char prefix[] = "ybounds   = ";
-            printBounds(fp, dig, prefix, sizeof(prefix)-1,
-                        (size_t)(ydim > 0 ? ydim : 0),
-                        (size_t)(nvertex > 0 ? nvertex : 0), ybounds);
+            printBounds(fp, dig, prefix, sizeof(prefix)-1, ydimLen, (size_t)nvertex, ybounds);
+            Free(ybounds);
 	  }
 
-	if ( area )
+	if ( gridHasArea(gridID) )
 	  {
+            double *area = (double*) Malloc((size_t)gridsize*sizeof(double));
+            gridInqArea(gridID, area);
             static const char prefix[] = "area      = ";
-            printDblsPrefixAutoBrk(fp, dig, prefix, sizeof(prefix)-1,
-                                   (size_t)(gridsize > 0 ? gridsize : 0), area);
+            printDblsPrefixAutoBrk(fp, dig, prefix, sizeof(prefix)-1, (size_t)gridsize, area);
+            Free(area);
 	  }
 
         if ( type == GRID_GAUSSIAN_REDUCED )
@@ -28490,41 +28741,22 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
 
 	break;
       }
-    case GRID_LCC:
-      {
-	double originLon = 0, originLat = 0, lonParY = 0, lat1 = 0, lat2 = 0, xincm = 0, yincm = 0;
-	int projflag = 0, scanflag = 0;
-	gridInqParamLCC(gridID, &originLon, &originLat, &lonParY, &lat1, &lat2, &xincm, &yincm,
-		   &projflag, &scanflag);
-
-	fprintf(fp,
-                "originLon = %.*g\n"
-                "originLat = %.*g\n"
-                "lonParY   = %.*g\n"
-                "lat1      = %.*g\n"
-                "lat2      = %.*g\n"
-                "xinc      = %.*g\n"
-                "yinc      = %.*g\n"
-                "projection = %s\n",
-                dig, originLon, dig, originLat, dig, lonParY,
-                dig, lat1, dig, lat2, dig, xincm, dig, yincm,
-                (projflag & 128) == 0 ? "northpole" : "southpole");
-	break;
-      }
     case GRID_SPECTRAL:
       {
         fprintf(fp, "truncation = %d\n"
-                "complexpacking = %d\n", trunc, gridptr->lcomplex );
+                "complexpacking = %d\n", gridInqTrunc(gridID), gridInqComplexPacking(gridID) );
         break;
       }
     case GRID_FOURIER:
       {
-	fprintf(fp, "truncation = %d\n", trunc);
+	fprintf(fp, "truncation = %d\n", gridInqTrunc(gridID));
 	break;
       }
     case GRID_GME:
       {
-        fprintf(fp, "ni        = %d\n", gridptr->gme.ni );
+        int nd, ni, ni2, ni3;
+        gridInqParamGME(gridID, &nd, &ni, &ni2, &ni3);
+        fprintf(fp, "ni        = %d\n", ni );
         break;
       }
    default:
@@ -28543,30 +28775,32 @@ void gridPrintKernel(grid_t *gridptr, int index, int opt, FILE *fp)
         fprintf(fp, "uuid      = %s\n", uuidOfHGridStr);
     }
 
-  if ( gridptr->mask )
+  if ( gridInqMask(gridID, NULL) )
     {
+      int *mask = (gridsize>0) ? (int*) Malloc((size_t)gridsize*sizeof(int)) : NULL;
+      gridInqMask(gridID, mask);
       static const char prefix[] = "mask      = ";
       printMask(fp, prefix, sizeof(prefix)-1,
-                (size_t)(gridsize > 0 ? gridsize : 0), gridptr->mask);
+                (size_t)(gridsize > 0 ? gridsize : 0), mask);
+      if ( mask ) Free(mask);
     }
 }
 
-void gridPrint ( int gridID, int index, int opt )
-{
-  grid_t *gridptr = grid_to_pointer(gridID);
 
-  gridPrintKernel ( gridptr, index, opt, stdout );
+void gridPrint(int gridID, int opt)
+{
+  gridPrintKernel(gridID, opt, stdout);
 }
 
 
-
-void gridPrintP ( void * voidptr, FILE * fp )
+void gridPrintP(void *voidptr, FILE *fp)
 {
-  grid_t * gridptr = ( grid_t * ) voidptr;
+  grid_t *gridptr = (grid_t *) voidptr;
+  int gridID = gridptr->self;
 
-  xassert ( gridptr );
+  xassert( gridptr );
 
-  gridPrintKernel ( gridptr , gridptr->self, 0, fp );
+  gridPrintKernel(gridID, 0, fp);
 
   fprintf(fp,
           "precision = %d\n"
@@ -28591,12 +28825,15 @@ void gridPrintP ( void * voidptr, FILE * fp )
                                       ? gridptr->nrowlon : 0), gridptr->rowlon);
     }
 
-  if ( gridptr->mask_gme )
+  if ( gridInqMaskGME(gridID, NULL) )
     {
+      int gridsize = gridptr->size;
+      int *mask = (gridsize>0) ? (int*) Malloc((size_t)gridsize*sizeof(int)) : NULL;
+      gridInqMaskGME(gridID, mask);
       static const char prefix[] = "mask_gme  = ";
       printMask(fp, prefix, sizeof(prefix)-1,
-                (size_t)(gridptr->size > 0 ? gridptr->size : 0),
-                gridptr->mask_gme);
+                (size_t)(gridptr->size > 0 ? gridptr->size : 0), mask);
+      if ( mask ) Free(mask);
     }
 }
 
@@ -28605,6 +28842,12 @@ static const double *gridInqXValsPtrSerial(grid_t *gridptr)
   return gridptr->x.vals;
 }
 
+static const char **gridInqXCvalsPtrSerial(grid_t *gridptr)
+{
+  return (const char **) gridptr->x.cvals;
+}
+
+
 const double *gridInqXvalsPtr(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
@@ -28612,112 +28855,189 @@ const double *gridInqXvalsPtr(int gridID)
 }
 
 
+const char **gridInqXCvalsPtr(int gridID)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->vtable->inqXCvalsPtr(gridptr);
+}
+
 static const double *gridInqYValsPtrSerial(grid_t *gridptr)
 {
   return gridptr->y.vals;
 }
 
+static const char **gridInqYCvalsPtrSerial(grid_t *gridptr)
+{
+  return (const char **) gridptr->y.cvals;
+}
+
 const double *gridInqYvalsPtr(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
   return gridptr->vtable->inqYValsPtr(gridptr);
 }
 
+const char **gridInqYCvalsPtr(int gridID)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->vtable->inqYCvalsPtr(gridptr);
+}
+
 /*
 @Function  gridDefParamLCC
 @Title     Define the parameter of a Lambert Conformal Conic grid
 
- at Prototype void gridDefParamLCC(int gridID, double originLon, double originLat, double lonParY, double lat1, double lat2, double xinc, double yinc, int projflag, int scanflag)
+ at Prototype void gridDefParamLCC(int gridID, double missval, double lon_0, double lat_0, double lat_1, double lat_2, double a, double rf, double xval_0, double yval_0, double x_0, double y_0)
 @Parameter
     @Item  gridID    Grid ID, from a previous call to @fref{gridCreate}.
-    @Item  originLon Longitude of the first grid point.
-    @Item  originLat Latitude of the first grid point.
-    @Item  lonParY   The East longitude of the meridian which is parallel to the Y-axis.
-    @Item  lat1      First latitude from the pole at which the secant cone cuts the sphere.
-    @Item  lat2      Second latitude at which the secant cone cuts the sphere.
-    @Item  xinc      X-direction grid lenght in meter.
-    @Item  yinc      Y-direction grid lenght in meter.
-    @Item  projflag  Projection centre flag.
-    @Item  scanflag  Scanning mode flag.
+    @Item  missval   Missing value
+    @Item  lon_0     The East longitude of the meridian which is parallel to the Y-axis.
+    @Item  lat_0     Latitude of the projection origin
+    @Item  lat_1     First latitude from the pole at which the secant cone cuts the sphere.
+    @Item  lat_2     Second latitude at which the secant cone cuts the sphere.
+    @Item  a         Earth radius in metres (optional).
+    @Item  rf        Inverse flattening (1/f) (optional).
+    @Item  xval_0    Longitude of the first grid point in degree (optional).
+    @Item  yval_0    Latitude of the first grid point in degree (optional).
+    @Item  x_0       False easting (optional).
+    @Item  y_0       False northing (optional).
 
 @Description
 The function @func{gridDefParamLCC} defines the parameter of a Lambert Conformal Conic grid.
 
 @EndFunction
 */
-void gridDefParamLCC(int gridID, double originLon, double originLat, double lonParY,
-                double lat1, double lat2, double xinc, double yinc,
-                int projflag, int scanflag)
-{
+void gridDefParamLCC(int gridID, double missval, double lon_0, double lat_0, double lat_1, double lat_2,
+                     double a, double rf, double xval_0, double yval_0, double x_0, double y_0)
+{
+  (void)lat_0;
+  cdiGridDefKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, "Lambert_Conformal");
+
+  const char *mapname = "lambert_conformal_conic";
+  cdiGridDefKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapname);
+  cdiDefAttTxt(gridID, CDI_GLOBAL, "grid_mapping_name", (int)(strlen(mapname)), mapname);
+  int nlats = 0;
+  double lats[2];
+  lats[nlats++] = lat_1;
+  if ( IS_NOT_EQUAL(lat_1, lat_2) ) lats[nlats++] = lat_2;
+  cdiDefAttFlt(gridID, CDI_GLOBAL, "standard_parallel", CDI_DATATYPE_FLT64, nlats, lats);
+  cdiDefAttFlt(gridID, CDI_GLOBAL, "longitude_of_central_meridian", CDI_DATATYPE_FLT64, 1, &lon_0);
+  cdiDefAttFlt(gridID, CDI_GLOBAL, "latitude_of_projection_origin", CDI_DATATYPE_FLT64, 1, &lat_2);
+  if ( a > 0 ) cdiDefAttFlt(gridID, CDI_GLOBAL, "earth_radius", CDI_DATATYPE_FLT64, 1, &a);
+  if ( rf > 0 ) cdiDefAttFlt(gridID, CDI_GLOBAL, "inverse_flattening", CDI_DATATYPE_FLT64, 1, &rf);
+  if ( IS_NOT_EQUAL(x_0, missval) ) cdiDefAttFlt(gridID, CDI_GLOBAL, "false_easting", CDI_DATATYPE_FLT64, 1, &x_0);
+  if ( IS_NOT_EQUAL(y_0, missval) ) cdiDefAttFlt(gridID, CDI_GLOBAL, "false_northing", CDI_DATATYPE_FLT64, 1, &y_0);
+  if ( IS_NOT_EQUAL(xval_0, missval) ) cdiDefAttFlt(gridID, CDI_GLOBAL, "longitudeOfFirstGridPointInDegrees", CDI_DATATYPE_FLT64, 1, &xval_0);
+  if ( IS_NOT_EQUAL(yval_0, missval) ) cdiDefAttFlt(gridID, CDI_GLOBAL, "latitudeOfFirstGridPointInDegrees", CDI_DATATYPE_FLT64, 1, &yval_0);
+
   grid_t *gridptr = grid_to_pointer(gridID);
+  gridptr->projtype = CDI_PROJ_LCC;
 
-  if ( gridptr->type != GRID_LCC )
-    Warning("Definition of LCC grid for %s grid not allowed!",
-	    gridNamePtr(gridptr->type));
-  else
-    {
-      gridptr->lcc.originLon = originLon;
-      gridptr->lcc.originLat = originLat;
-      gridptr->lcc.lonParY   = lonParY;
-      gridptr->lcc.lat1      = lat1;
-      gridptr->lcc.lat2      = lat2;
-      gridptr->lcc.xinc      = xinc;
-      gridptr->lcc.yinc      = yinc;
-      gridptr->lcc.projflag  = projflag;
-      gridptr->lcc.scanflag  = scanflag;
-      gridptr->lcc.defined   = TRUE;
-      gridMark4Update(gridID);
-    }
+  gridVerifyProj(gridID);
 }
 
 /*
 @Function  gridInqParamLCC
 @Title     Get the parameter of a Lambert Conformal Conic grid
 
- at Prototype void gridInqParamLCC(int gridID, double *originLon, double *originLat, double *lonParY, double *lat1, double *lat2, double *xinc, double *yinc, int *projflag, int *scanflag)
+ at Prototype void gridInqParamLCC(int gridID, double missval, double *lon_0, double *lat_0, double *lat_1, double *lat_2, double *a, double *rf, double *xval_0, double *yval_0, double *x_0, double *y_0)
 @Parameter
     @Item  gridID    Grid ID, from a previous call to @fref{gridCreate} or @fref{vlistInqVarGrid}.
-    @Item  originLon Longitude of the first grid point.
-    @Item  originLat Latitude of the first grid point.
-    @Item  lonParY   The East longitude of the meridian which is parallel to the Y-axis.
-    @Item  lat1      First latitude from the pole at which the secant cone cuts the sphere.
-    @Item  lat2      Second latitude at which the secant cone cuts the sphere.
-    @Item  xinc      X-direction grid lenght in meter.
-    @Item  yinc      Y-direction grid lenght in meter.
-    @Item  projflag  Projection centre flag.
-    @Item  scanflag  Scanning mode flag.
- 
+    @Item  missval   Missing value
+    @Item  lon_0     The East longitude of the meridian which is parallel to the Y-axis.
+    @Item  lat_0     Latitude of the projection origin
+    @Item  lat_1     First latitude from the pole at which the secant cone cuts the sphere.
+    @Item  lat_2     Second latitude at which the secant cone cuts the sphere.
+    @Item  a         Earth radius in metres (optional).
+    @Item  rf        Inverse flattening (1/f) (optional).
+    @Item  xval_0    Longitude of the first grid point in degree (optional).
+    @Item  yval_0    Latitude of the first grid point in degree (optional).
+    @Item  x_0       False easting (optional).
+    @Item  y_0       False northing (optional).
+
 @Description
 The function @func{gridInqParamLCC} returns the parameter of a Lambert Conformal Conic grid.
 
 @EndFunction
 */
-void gridInqParamLCC(int gridID, double *originLon, double *originLat, double *lonParY,
-                double *lat1, double *lat2, double *xinc, double *yinc,
-                int *projflag, int *scanflag)
+int gridInqParamLCC(int gridID, double missval, double *lon_0, double *lat_0, double *lat_1, double *lat_2,
+                    double *a, double *rf, double *xval_0, double *yval_0, double *x_0, double *y_0)
 {
-  grid_t *gridptr = grid_to_pointer(gridID);
+  *a = 0; *rf = 0;
+  *lon_0 = missval; *lat_0 = missval, *lat_1 = missval, *lat_2 = missval;
+  *xval_0 = missval; *yval_0 = missval; *x_0 = missval, *y_0 = missval;
 
-  if ( gridptr->type != GRID_LCC )
-    Warning("Inquire of LCC grid definition for %s grid not allowed!",
-	    gridNamePtr(gridptr->type));
-  else
+  int status = -1;
+  if ( gridInqType(gridID) != GRID_PROJECTION ) return status;
+
+  status = -2;
+  const char *projection = "lambert_conformal_conic";
+  char mapname[CDI_MAX_NAME]; mapname[0] = 0;
+  cdiGridInqKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapname);
+  if ( mapname[0] && strcmp(mapname, projection) == 0 )
     {
-      if ( gridptr->lcc.defined )
+      int atttype, attlen;
+      char attname[CDI_MAX_NAME+1];
+
+      int natts;
+      cdiInqNatts(gridID, CDI_GLOBAL, &natts);
+
+      if ( natts ) status = 0;
+
+      for ( int iatt = 0; iatt < natts; ++iatt )
         {
-          *originLon = gridptr->lcc.originLon;
-          *originLat = gridptr->lcc.originLat;
-          *lonParY   = gridptr->lcc.lonParY;
-          *lat1      = gridptr->lcc.lat1;
-          *lat2      = gridptr->lcc.lat2;
-          *xinc      = gridptr->lcc.xinc;
-          *yinc      = gridptr->lcc.yinc;
-          *projflag  = gridptr->lcc.projflag;
-          *scanflag  = gridptr->lcc.scanflag;
+          cdiInqAtt(gridID, CDI_GLOBAL, iatt, attname, &atttype, &attlen);
+          if ( attlen > 2 ) continue;
+
+          double attflt[2];
+          if ( cdiInqAttConvertedToFloat(gridID, atttype, attname, attlen, attflt) )
+            {
+              if      ( strcmp(attname, "earth_radius") == 0 )                       *a      = attflt[0];
+              else if ( strcmp(attname, "inverse_flattening") == 0 )                 *rf     = attflt[0];
+              else if ( strcmp(attname, "longitude_of_central_meridian") == 0 )      *lon_0  = attflt[0];
+              else if ( strcmp(attname, "latitude_of_projection_origin") == 0 )      *lat_0  = attflt[0];
+              else if ( strcmp(attname, "false_easting")  == 0 )                     *x_0    = attflt[0];
+              else if ( strcmp(attname, "false_northing") == 0 )                     *y_0    = attflt[0];
+              else if ( strcmp(attname, "longitudeOfFirstGridPointInDegrees") == 0 ) *xval_0 = attflt[0];
+              else if ( strcmp(attname, "latitudeOfFirstGridPointInDegrees")  == 0 ) *yval_0 = attflt[0];
+              else if ( strcmp(attname, "standard_parallel") == 0 )
+                {
+                  *lat_1 = attflt[0];
+                  *lat_2 = (attlen == 2) ? attflt[1] : attflt[0];
+                }
+            }
+        }
+    }
+
+  return status;
+}
+
+
+int gridVerifyGribParamLCC(double missval, double *lon_0, double *lat_0, double *lat_1, double *lat_2,
+                           double *a, double *rf, double *xval_0, double *yval_0, double *x_0, double *y_0)
+{
+  static bool lwarn = true;
+
+  if ( lwarn )
+    {
+      // lwarn = false;
+      const char *projection = "lambert_conformal_conic";
+      if ( IS_EQUAL(*lon_0, missval) ) { Warning("%s mapping parameter %s missing!", projection, "longitude_of_central_meridian"); }
+      if ( IS_EQUAL(*lat_0, missval) ) { Warning("%s mapping parameter %s missing!", projection, "latitude_of_central_meridian"); }
+      if ( IS_EQUAL(*lat_1, missval) ) { Warning("%s mapping parameter %s missing!", projection, "standard_parallel"); }
+      if ( IS_NOT_EQUAL(*x_0, missval) && IS_NOT_EQUAL(*y_0, grid_missval) && (IS_EQUAL(*xval_0, missval) || IS_EQUAL(*yval_0, missval)) )
+        {
+          if ( proj_lcc_to_lonlat_func )
+            {
+              *xval_0 = -(*x_0); *yval_0 = -(*y_0);
+              proj_lcc_to_lonlat_func(missval, *lon_0, *lat_0, *lat_1, *lat_2, *a, *rf, 0.0, 0.0, (size_t)1, xval_0, yval_0);
+            }
+          if ( IS_EQUAL(*xval_0, missval) || IS_EQUAL(*yval_0, missval) )
+            Warning("%s mapping parameter %s missing!", projection, "longitudeOfFirstGridPointInDegrees and latitudeOfFirstGridPointInDegrees");
         }
-      else
-	Warning("Lambert Conformal grid undefined (gridID = %d)", gridID);
     }
+
+  return 0;
 }
 
 
@@ -28849,7 +29169,6 @@ The function @func{gridInqPosition} returns the position of grid in the referenc
 int gridInqPosition(int gridID)
 {
   grid_t *gridptr = grid_to_pointer(gridID);
-
   return gridptr->position;
 }
 
@@ -28965,6 +29284,50 @@ void gridInqUUID(int gridID, unsigned char uuid[CDI_UUID_SIZE])
 }
 
 
+void gridDefUvRelativeToGrid(int gridID, int uvRelativeToGrid)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+
+  if ( gridptr->uvRelativeToGrid != uvRelativeToGrid )
+    {
+      gridMark4Update(gridID);
+      gridptr->uvRelativeToGrid = (bool)uvRelativeToGrid;
+    }
+}
+
+
+int gridInqUvRelativeToGrid(int gridID)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+  return gridptr->uvRelativeToGrid;
+}
+
+
+void gridDefScanningMode(int gridID, int mode)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+
+  if ( gridptr->scanningMode != mode )
+    {
+      gridMark4Update(gridID);
+      gridptr->scanningMode = mode;
+    }
+}
+
+
+int gridInqScanningMode(int gridID)
+{
+  grid_t *gridptr = grid_to_pointer(gridID);
+
+  int scanningModeTMP  = 128 * gridptr->iScansNegatively + 64 * gridptr->jScansPositively + 32 * gridptr->jPointsAreConsecutive;
+  if ( scanningModeTMP != gridptr->scanningMode )
+    Message("WARNING: scanningMode (%d) ! = (%d) 128 * iScansNegatively(%d) + 64 * jScansPositively(%d) + 32 * jPointsAreConsecutive(%d) ",
+            gridptr->scanningMode, scanningModeTMP, gridptr->iScansNegatively,gridptr->jScansPositively,gridptr->jPointsAreConsecutive );
+
+  return gridptr->scanningMode;
+}
+
+
 void cdiGridGetIndexList(unsigned ngrids, int * gridIndexList)
 {
   reshGetResHListOfType(ngrids, gridIndexList, &gridOps);
@@ -28977,8 +29340,48 @@ gridTxCode ()
   return GRID;
 }
 
-enum { gridNint    = 28,
-       gridNdouble = 24,
+enum {
+  GRID_PACK_INT_IDX_SELF,
+  GRID_PACK_INT_IDX_TYPE,
+  GRID_PACK_INT_IDX_PREC,
+  GRID_PACK_INT_IDX_IS_CYCLIC,
+  GRID_PACK_INT_IDX_X_FLAG,
+  GRID_PACK_INT_IDX_Y_FLAG,
+  GRID_PACK_INT_IDX_GME_ND,
+  GRID_PACK_INT_IDX_GME_NI,
+  GRID_PACK_INT_IDX_GME_NI2,
+  GRID_PACK_INT_IDX_GME_NI3,
+  GRID_PACK_INT_IDX_NUMBER,
+  GRID_PACK_INT_IDX_POSITION,
+  GRID_PACK_INT_IDX_TRUNC,
+  GRID_PACK_INT_IDX_NVERTEX,
+  GRID_PACK_INT_IDX_NROWLON,
+  GRID_PACK_INT_IDX_SIZE,
+  GRID_PACK_INT_IDX_X_SIZE,
+  GRID_PACK_INT_IDX_Y_SIZE,
+  GRID_PACK_INT_IDX_LCOMPLEX,
+  GRID_PACK_INT_IDX_MEMBERMASK,
+  GRID_PACK_INT_IDX_XTSTDNNAME,
+  GRID_PACK_INT_IDX_YTSTDNNAME,
+  GRID_PACK_INT_IDX_UVRELATIVETOGRID,
+  GRID_PACK_INT_IDX_ISCANSNEGATIVELY,
+  GRID_PACK_INT_IDX_JSCANSPOSITIVELY,
+  GRID_PACK_INT_IDX_JPOINTSARECONSECUTIVE,
+  GRID_PACK_INT_IDX_SCANNINGMODE,
+  gridNint
+};
+
+enum {
+  GRID_PACK_DBL_IDX_X_FIRST,
+  GRID_PACK_DBL_IDX_Y_FIRST,
+  GRID_PACK_DBL_IDX_X_LAST,
+  GRID_PACK_DBL_IDX_Y_LAST,
+  GRID_PACK_DBL_IDX_X_INC,
+  GRID_PACK_DBL_IDX_Y_INC,
+  gridNdouble
+};
+
+enum {
        gridHasMaskFlag = 1 << 0,
        gridHasGMEMaskFlag = 1 << 1,
        gridHasXValsFlag = 1 << 2,
@@ -29017,17 +29420,17 @@ gridGetPackSize(void * voidP, void *context)
   grid_t * gridP = ( grid_t * ) voidP;
   int packBuffSize = 0, count;
 
-  packBuffSize += serializeGetSize(gridNint, DATATYPE_INT, context)
-    + serializeGetSize(1, DATATYPE_UINT32, context);
+  packBuffSize += serializeGetSize(gridNint, CDI_DATATYPE_INT, context)
+    + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
 
   if (gridP->rowlon)
     {
       xassert(gridP->nrowlon);
-      packBuffSize += serializeGetSize(gridP->nrowlon, DATATYPE_INT, context)
-        + serializeGetSize( 1, DATATYPE_UINT32, context);
+      packBuffSize += serializeGetSize(gridP->nrowlon, CDI_DATATYPE_INT, context)
+        + serializeGetSize( 1, CDI_DATATYPE_UINT32, context);
     }
 
-  packBuffSize += serializeGetSize(gridNdouble, DATATYPE_FLT64, context);
+  packBuffSize += serializeGetSize(gridNdouble, CDI_DATATYPE_FLT64, context);
 
   if (gridP->vtable->inqXValsPtr(gridP))
     {
@@ -29036,8 +29439,8 @@ gridGetPackSize(void * voidP, void *context)
       else
 	count = gridP->x.size;
       xassert(count);
-      packBuffSize += serializeGetSize(count, DATATYPE_FLT64, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+      packBuffSize += serializeGetSize(count, CDI_DATATYPE_FLT64, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   if (gridP->vtable->inqYValsPtr(gridP))
@@ -29047,16 +29450,16 @@ gridGetPackSize(void * voidP, void *context)
       else
 	count = gridP->y.size;
       xassert(count);
-      packBuffSize += serializeGetSize(count, DATATYPE_FLT64, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+      packBuffSize += serializeGetSize(count, CDI_DATATYPE_FLT64, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   if (gridP->vtable->inqAreaPtr(gridP))
     {
       xassert(gridP->size);
       packBuffSize +=
-        serializeGetSize(gridP->size, DATATYPE_FLT64, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+        serializeGetSize(gridP->size, CDI_DATATYPE_FLT64, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   if (gridP->x.bounds)
@@ -29068,8 +29471,8 @@ gridGetPackSize(void * voidP, void *context)
 	count = gridP->x.size;
       xassert(count);
       packBuffSize
-        += (serializeGetSize(gridP->nvertex * count, DATATYPE_FLT64, context)
-            + serializeGetSize(1, DATATYPE_UINT32, context));
+        += (serializeGetSize(gridP->nvertex * count, CDI_DATATYPE_FLT64, context)
+            + serializeGetSize(1, CDI_DATATYPE_UINT32, context));
     }
 
   if (gridP->y.bounds)
@@ -29081,8 +29484,8 @@ gridGetPackSize(void * voidP, void *context)
 	count = gridP->y.size;
       xassert(count);
       packBuffSize
-        += (serializeGetSize(gridP->nvertex * count, DATATYPE_FLT64, context)
-            + serializeGetSize(1, DATATYPE_UINT32, context));
+        += (serializeGetSize(gridP->nvertex * count, CDI_DATATYPE_FLT64, context)
+            + serializeGetSize(1, CDI_DATATYPE_UINT32, context));
     }
 
   {
@@ -29095,28 +29498,28 @@ gridGetPackSize(void * voidP, void *context)
   if (gridP->reference)
     {
       size_t len = strlen(gridP->reference);
-      packBuffSize += serializeGetSize(1, DATATYPE_INT, context)
-        + serializeGetSize((int)len + 1, DATATYPE_TXT, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+      packBuffSize += serializeGetSize(1, CDI_DATATYPE_INT, context)
+        + serializeGetSize((int)len + 1, CDI_DATATYPE_TXT, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   if (gridP->mask)
     {
       xassert(gridP->size);
       packBuffSize
-        += serializeGetSize(gridP->size, DATATYPE_UCHAR, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+        += serializeGetSize(gridP->size, CDI_DATATYPE_UCHAR, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   if (gridP->mask_gme)
     {
       xassert(gridP->size);
-      packBuffSize += serializeGetSize(gridP->size, DATATYPE_UCHAR, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+      packBuffSize += serializeGetSize(gridP->size, CDI_DATATYPE_UCHAR, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   if (!cdiUUIDIsNull(gridP->uuid))
-    packBuffSize += serializeGetSize(CDI_UUID_SIZE, DATATYPE_UCHAR, context);
+    packBuffSize += serializeGetSize(CDI_UUID_SIZE, CDI_DATATYPE_UCHAR, context);
 
   return packBuffSize;
 }
@@ -29135,40 +29538,44 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
   {
     int intBuffer[gridNint];
     serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                    intBuffer, gridNint, DATATYPE_INT, context);
+                    intBuffer, gridNint, CDI_DATATYPE_INT, context);
     serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                    &d, 1, DATATYPE_UINT32, context);
+                    &d, 1, CDI_DATATYPE_UINT32, context);
 
-    xassert(cdiCheckSum(DATATYPE_INT, gridNint, intBuffer) == d);
+    xassert(cdiCheckSum(CDI_DATATYPE_INT, gridNint, intBuffer) == d);
     int targetID = namespaceAdaptKey(intBuffer[0], originNamespace);
     gridP = gridNewEntry(force_id?targetID:CDI_UNDEFID);
 
     xassert(!force_id || targetID == gridP->self);
 
-    gridP->type          =   intBuffer[1];
-    gridP->prec          =   intBuffer[2];
-    gridP->lcc.projflag  =   intBuffer[3];
-    gridP->lcc.scanflag  =   intBuffer[4];
-    gridP->lcc.defined   =   (short)intBuffer[5];
-    gridP->isCyclic      =   (short)intBuffer[8];
-    gridP->x.flag        =   (short)intBuffer[10];
-    gridP->y.flag        =   (short)intBuffer[11];
-    gridP->gme.nd        =   intBuffer[12];
-    gridP->gme.ni        =   intBuffer[13];
-    gridP->gme.ni2       =   intBuffer[14];
-    gridP->gme.ni3       =   intBuffer[15];
-    gridP->number        =   intBuffer[16];
-    gridP->position      =   intBuffer[17];
-    gridP->trunc         =   intBuffer[18];
-    gridP->nvertex       =   intBuffer[19];
-    gridP->nrowlon       =   intBuffer[20];
-    gridP->size          =   intBuffer[21];
-    gridP->x.size        =   intBuffer[22];
-    gridP->y.size        =   intBuffer[23];
-    gridP->lcomplex      =   (bool)intBuffer[24];
-    memberMask           =   intBuffer[25];
-    gridP->x.stdname     =   xystdname_tab[intBuffer[26]][0];
-    gridP->y.stdname     =   xystdname_tab[intBuffer[27]][1];
+    gridP->type          =   intBuffer[GRID_PACK_INT_IDX_TYPE];
+    gridP->prec          =   intBuffer[GRID_PACK_INT_IDX_PREC];
+    gridP->isCyclic      =   (signed char)intBuffer[GRID_PACK_INT_IDX_IS_CYCLIC];
+    gridP->x.flag        =   (short)intBuffer[GRID_PACK_INT_IDX_X_FLAG];
+    gridP->y.flag        =   (short)intBuffer[GRID_PACK_INT_IDX_Y_FLAG];
+    gridP->gme.nd        =   intBuffer[GRID_PACK_INT_IDX_GME_ND];
+    gridP->gme.ni        =   intBuffer[GRID_PACK_INT_IDX_GME_NI];
+    gridP->gme.ni2       =   intBuffer[GRID_PACK_INT_IDX_GME_NI2];
+    gridP->gme.ni3       =   intBuffer[GRID_PACK_INT_IDX_GME_NI3];
+    gridP->number        =   intBuffer[GRID_PACK_INT_IDX_NUMBER];
+    gridP->position      =   intBuffer[GRID_PACK_INT_IDX_POSITION];
+    gridP->trunc         =   intBuffer[GRID_PACK_INT_IDX_TRUNC];
+    gridP->nvertex       =   intBuffer[GRID_PACK_INT_IDX_NVERTEX];
+    gridP->nrowlon       =   intBuffer[GRID_PACK_INT_IDX_NROWLON];
+    gridP->size          =   intBuffer[GRID_PACK_INT_IDX_SIZE];
+    gridP->x.size        =   intBuffer[GRID_PACK_INT_IDX_X_SIZE];
+    gridP->y.size        =   intBuffer[GRID_PACK_INT_IDX_Y_SIZE];
+    gridP->lcomplex      =   (bool)intBuffer[GRID_PACK_INT_IDX_LCOMPLEX];
+    memberMask           =   intBuffer[GRID_PACK_INT_IDX_MEMBERMASK];
+    gridP->x.stdname     =
+      xystdname_tab[intBuffer[GRID_PACK_INT_IDX_XTSTDNNAME]][0];
+    gridP->y.stdname     =
+      xystdname_tab[intBuffer[GRID_PACK_INT_IDX_YTSTDNNAME]][1];
+    gridP->uvRelativeToGrid         =   intBuffer[GRID_PACK_INT_IDX_UVRELATIVETOGRID];
+    gridP->iScansNegatively         =   (bool)intBuffer[GRID_PACK_INT_IDX_ISCANSNEGATIVELY];
+    gridP->jScansPositively         =   (bool)intBuffer[GRID_PACK_INT_IDX_JSCANSPOSITIVELY];
+    gridP->jPointsAreConsecutive    =   (bool)intBuffer[GRID_PACK_INT_IDX_JPOINTSARECONSECUTIVE];
+    gridP->scanningMode             =   intBuffer[GRID_PACK_INT_IDX_SCANNINGMODE];
   }
 
   if (memberMask & gridHasRowLonFlag)
@@ -29176,33 +29583,26 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
       xassert(gridP->nrowlon);
       gridP->rowlon = (int *) Malloc((size_t)gridP->nrowlon * sizeof (int));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->rowlon, gridP->nrowlon , DATATYPE_INT, context);
+                      gridP->rowlon, gridP->nrowlon , CDI_DATATYPE_INT, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_INT, gridP->nrowlon, gridP->rowlon) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_INT, gridP->nrowlon, gridP->rowlon) == d);
     }
 
   {
     double doubleBuffer[gridNdouble];
     serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                    doubleBuffer, gridNdouble, DATATYPE_FLT64, context);
+                    doubleBuffer, gridNdouble, CDI_DATATYPE_FLT64, context);
     serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                    &d, 1, DATATYPE_UINT32, context);
-    xassert(d == cdiCheckSum(DATATYPE_FLT, gridNdouble, doubleBuffer));
-
-    gridP->x.first = doubleBuffer[0];
-    gridP->y.first = doubleBuffer[1];
-    gridP->x.last = doubleBuffer[2];
-    gridP->y.last = doubleBuffer[3];
-    gridP->x.inc = doubleBuffer[4];
-    gridP->y.inc = doubleBuffer[5];
-    gridP->lcc.originLon = doubleBuffer[6];
-    gridP->lcc.originLat = doubleBuffer[7];
-    gridP->lcc.lonParY = doubleBuffer[8];
-    gridP->lcc.lat1 = doubleBuffer[9];
-    gridP->lcc.lat2 = doubleBuffer[10];
-    gridP->lcc.xinc = doubleBuffer[11];
-    gridP->lcc.yinc = doubleBuffer[12];
+                    &d, 1, CDI_DATATYPE_UINT32, context);
+    xassert(d == cdiCheckSum(CDI_DATATYPE_FLT, gridNdouble, doubleBuffer));
+
+    gridP->x.first = doubleBuffer[GRID_PACK_DBL_IDX_X_FIRST];
+    gridP->y.first = doubleBuffer[GRID_PACK_DBL_IDX_Y_FIRST];
+    gridP->x.last = doubleBuffer[GRID_PACK_DBL_IDX_X_LAST];
+    gridP->y.last = doubleBuffer[GRID_PACK_DBL_IDX_Y_LAST];
+    gridP->x.inc = doubleBuffer[GRID_PACK_DBL_IDX_X_INC];
+    gridP->y.inc = doubleBuffer[GRID_PACK_DBL_IDX_Y_INC];
   }
 
   int irregular = gridP->type == GRID_UNSTRUCTURED
@@ -29213,10 +29613,10 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
 
       gridP->x.vals = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->x.vals, size, DATATYPE_FLT64, context);
+                      gridP->x.vals, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, gridP->x.vals) == d );
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->x.vals) == d );
     }
 
   if (memberMask & gridHasYValsFlag)
@@ -29225,10 +29625,10 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
 
       gridP->y.vals = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->y.vals, size, DATATYPE_FLT64, context);
+                      gridP->y.vals, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, gridP->y.vals) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->y.vals) == d);
     }
 
   if (memberMask & gridHasAreaFlag)
@@ -29237,10 +29637,10 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
       xassert(size);
       gridP->area = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->area, size, DATATYPE_FLT64, context);
+                      gridP->area, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, gridP->area) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->area) == d);
     }
 
   if (memberMask & gridHasXBoundsFlag)
@@ -29250,10 +29650,10 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
 
       gridP->x.bounds = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->x.bounds, size, DATATYPE_FLT64, context);
+                      gridP->x.bounds, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, gridP->x.bounds) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->x.bounds) == d);
     }
 
   if (memberMask & gridHasYBoundsFlag)
@@ -29263,10 +29663,10 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
 
       gridP->y.bounds = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-			  gridP->y.bounds, size, DATATYPE_FLT64, context);
+			  gridP->y.bounds, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, gridP->y.bounds) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->y.bounds) == d);
     }
 
   {
@@ -29280,13 +29680,13 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
     {
       int referenceSize;
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &referenceSize, 1, DATATYPE_INT, context);
+                      &referenceSize, 1, CDI_DATATYPE_INT, context);
       gridP->reference = (char *) Malloc((size_t)referenceSize);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->reference, referenceSize, DATATYPE_TXT, context);
+                      gridP->reference, referenceSize, CDI_DATATYPE_TXT, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_TXT, referenceSize, gridP->reference) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_TXT, referenceSize, gridP->reference) == d);
     }
 
   if (memberMask & gridHasMaskFlag)
@@ -29294,10 +29694,10 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
       xassert((size = gridP->size));
       gridP->mask = (mask_t *) Malloc((size_t)size * sizeof (mask_t));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->mask, gridP->size, DATATYPE_UCHAR, context);
+                      gridP->mask, gridP->size, CDI_DATATYPE_UCHAR, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_UCHAR, gridP->size, gridP->mask) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_UCHAR, gridP->size, gridP->mask) == d);
     }
 
   if (memberMask & gridHasGMEMaskFlag)
@@ -29305,15 +29705,15 @@ gridUnpack(char * unpackBuffer, int unpackBufferSize,
       xassert((size = gridP->size));
       gridP->mask_gme = (mask_t *) Malloc((size_t)size * sizeof (mask_t));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->mask_gme, gridP->size, DATATYPE_UCHAR, context);
+                      gridP->mask_gme, gridP->size, CDI_DATATYPE_UCHAR, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_UCHAR, gridP->size, gridP->mask_gme) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_UCHAR, gridP->size, gridP->mask_gme) == d);
     }
   if (memberMask & gridHasUUIDFlag)
     {
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      gridP->uuid, CDI_UUID_SIZE, DATATYPE_UCHAR, context);
+                      gridP->uuid, CDI_UUID_SIZE, CDI_DATATYPE_UCHAR, context);
     }
 
   reshSetStatus(gridP->self, &gridOps,
@@ -29333,38 +29733,43 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
   {
     int intBuffer[gridNint];
 
-    intBuffer[0]  = gridP->self;
-    intBuffer[1]  = gridP->type;
-    intBuffer[2]  = gridP->prec;
-    intBuffer[3]  = gridP->lcc.projflag;
-    intBuffer[4]  = gridP->lcc.scanflag;
-    intBuffer[5]  = gridP->lcc.defined;
-    intBuffer[8]  = gridP->isCyclic;
-    intBuffer[10] = gridP->x.flag;
-    intBuffer[11] = gridP->y.flag;
-    intBuffer[12] = gridP->gme.nd;
-    intBuffer[13] = gridP->gme.ni;
-    intBuffer[14] = gridP->gme.ni2;
-    intBuffer[15] = gridP->gme.ni3;
-    intBuffer[16] = gridP->number;
-    intBuffer[17] = gridP->position;
-    intBuffer[18] = gridP->trunc;
-    intBuffer[19] = gridP->nvertex;
-    intBuffer[20] = gridP->nrowlon;
-    intBuffer[21] = gridP->size;
-    intBuffer[22] = gridP->x.size;
-    intBuffer[23] = gridP->y.size;
-    intBuffer[24] = gridP->lcomplex;
-    intBuffer[25] = memberMask = gridGetComponentFlags(gridP);
-    intBuffer[26] = (int)((const char (*)[2][24])gridP->x.stdname
-                          - xystdname_tab);
-    intBuffer[27] = (int)((const char (*)[2][24])gridP->y.stdname
-                          - (const char (*)[2][24])xystdname_tab[0][1]);
-
-    serializePack(intBuffer, gridNint, DATATYPE_INT,
+    intBuffer[GRID_PACK_INT_IDX_SELF]         = gridP->self;
+    intBuffer[GRID_PACK_INT_IDX_TYPE]         = gridP->type;
+    intBuffer[GRID_PACK_INT_IDX_PREC]         = gridP->prec;
+    intBuffer[GRID_PACK_INT_IDX_IS_CYCLIC]    = gridP->isCyclic;
+    intBuffer[GRID_PACK_INT_IDX_X_FLAG]       = gridP->x.flag;
+    intBuffer[GRID_PACK_INT_IDX_Y_FLAG]       = gridP->y.flag;
+    intBuffer[GRID_PACK_INT_IDX_GME_ND]       = gridP->gme.nd;
+    intBuffer[GRID_PACK_INT_IDX_GME_NI]       = gridP->gme.ni;
+    intBuffer[GRID_PACK_INT_IDX_GME_NI2]      = gridP->gme.ni2;
+    intBuffer[GRID_PACK_INT_IDX_GME_NI3]      = gridP->gme.ni3;
+    intBuffer[GRID_PACK_INT_IDX_NUMBER]       = gridP->number;
+    intBuffer[GRID_PACK_INT_IDX_POSITION]     = gridP->position;
+    intBuffer[GRID_PACK_INT_IDX_TRUNC]        = gridP->trunc;
+    intBuffer[GRID_PACK_INT_IDX_NVERTEX]      = gridP->nvertex;
+    intBuffer[GRID_PACK_INT_IDX_NROWLON]      = gridP->nrowlon;
+    intBuffer[GRID_PACK_INT_IDX_SIZE]         = gridP->size;
+    intBuffer[GRID_PACK_INT_IDX_X_SIZE]       = gridP->x.size;
+    intBuffer[GRID_PACK_INT_IDX_Y_SIZE]       = gridP->y.size;
+    intBuffer[GRID_PACK_INT_IDX_LCOMPLEX]     = gridP->lcomplex;
+    intBuffer[GRID_PACK_INT_IDX_MEMBERMASK]   = memberMask
+                                              = gridGetComponentFlags(gridP);
+    intBuffer[GRID_PACK_INT_IDX_XTSTDNNAME]   =
+      (int)((const char (*)[2][24])gridP->x.stdname - xystdname_tab);
+    intBuffer[GRID_PACK_INT_IDX_YTSTDNNAME]   =
+      (int)((const char (*)[2][24])gridP->y.stdname
+            - (const char (*)[2][24])xystdname_tab[0][1]);
+
+    intBuffer[GRID_PACK_INT_IDX_UVRELATIVETOGRID] = gridP->uvRelativeToGrid;
+    intBuffer[GRID_PACK_INT_IDX_ISCANSNEGATIVELY] = gridP->iScansNegatively;
+    intBuffer[GRID_PACK_INT_IDX_JSCANSPOSITIVELY] = gridP->jScansPositively;
+    intBuffer[GRID_PACK_INT_IDX_JPOINTSARECONSECUTIVE] = gridP->jPointsAreConsecutive;
+    intBuffer[GRID_PACK_INT_IDX_SCANNINGMODE] = gridP->scanningMode;
+
+    serializePack(intBuffer, gridNint, CDI_DATATYPE_INT,
                   packBuffer, packBufferSize, packBufferPos, context);
-    d = cdiCheckSum(DATATYPE_INT, gridNint, intBuffer);
-    serializePack(&d, 1, DATATYPE_UINT32,
+    d = cdiCheckSum(CDI_DATATYPE_INT, gridNint, intBuffer);
+    serializePack(&d, 1, CDI_DATATYPE_UINT32,
                   packBuffer, packBufferSize, packBufferPos, context);
   }
 
@@ -29372,34 +29777,27 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
     {
       size = gridP->nrowlon;
       xassert(size > 0);
-      serializePack(gridP->rowlon, size, DATATYPE_INT,
+      serializePack(gridP->rowlon, size, CDI_DATATYPE_INT,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_INT , size, gridP->rowlon);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_INT , size, gridP->rowlon);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
   {
     double doubleBuffer[gridNdouble];
 
-    doubleBuffer[0]  = gridP->x.first;
-    doubleBuffer[1]  = gridP->y.first;
-    doubleBuffer[2]  = gridP->x.last;
-    doubleBuffer[3]  = gridP->y.last;
-    doubleBuffer[4]  = gridP->x.inc;
-    doubleBuffer[5]  = gridP->y.inc;
-    doubleBuffer[6]  = gridP->lcc.originLon;
-    doubleBuffer[7]  = gridP->lcc.originLat;
-    doubleBuffer[8]  = gridP->lcc.lonParY;
-    doubleBuffer[9]  = gridP->lcc.lat1;
-    doubleBuffer[10] = gridP->lcc.lat2;
-    doubleBuffer[11] = gridP->lcc.xinc;
-    doubleBuffer[12] = gridP->lcc.yinc;
-
-    serializePack(doubleBuffer, gridNdouble, DATATYPE_FLT64,
+    doubleBuffer[GRID_PACK_DBL_IDX_X_FIRST]        = gridP->x.first;
+    doubleBuffer[GRID_PACK_DBL_IDX_Y_FIRST]        = gridP->y.first;
+    doubleBuffer[GRID_PACK_DBL_IDX_X_LAST]         = gridP->x.last;
+    doubleBuffer[GRID_PACK_DBL_IDX_Y_LAST]         = gridP->y.last;
+    doubleBuffer[GRID_PACK_DBL_IDX_X_INC]          = gridP->x.inc;
+    doubleBuffer[GRID_PACK_DBL_IDX_Y_INC]          = gridP->y.inc;
+
+    serializePack(doubleBuffer, gridNdouble, CDI_DATATYPE_FLT64,
                   packBuffer, packBufferSize, packBufferPos, context);
-    d = cdiCheckSum(DATATYPE_FLT, gridNdouble, doubleBuffer);
-    serializePack(&d, 1, DATATYPE_UINT32,
+    d = cdiCheckSum(CDI_DATATYPE_FLT, gridNdouble, doubleBuffer);
+    serializePack(&d, 1, CDI_DATATYPE_UINT32,
                   packBuffer, packBufferSize, packBufferPos, context);
   }
 
@@ -29412,10 +29810,10 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
       xassert(size);
 
       const double *gridP_xvals = gridP->vtable->inqXValsPtr(gridP);
-      serializePack(gridP_xvals, size, DATATYPE_FLT64,
+      serializePack(gridP_xvals, size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, size, gridP_xvals);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, size, gridP_xvals);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -29427,10 +29825,10 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
 	size = gridP->y.size;
       xassert(size);
       const double *gridP_yvals = gridP->vtable->inqYValsPtr(gridP);
-      serializePack(gridP_yvals, size, DATATYPE_FLT64,
+      serializePack(gridP_yvals, size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, size, gridP_yvals);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, size, gridP_yvals);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -29438,10 +29836,10 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
     {
       xassert(gridP->size);
 
-      serializePack(gridP->area, gridP->size, DATATYPE_FLT64,
+      serializePack(gridP->area, gridP->size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, gridP->size, gridP->area);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, gridP->size, gridP->area);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -29454,10 +29852,10 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
 	size = gridP->nvertex * gridP->x.size;
       xassert ( size );
 
-      serializePack(gridP->x.bounds, size, DATATYPE_FLT64,
+      serializePack(gridP->x.bounds, size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, size, gridP->x.bounds);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->x.bounds);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -29470,10 +29868,10 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
 	size = gridP->nvertex * gridP->y.size;
       xassert ( size );
 
-      serializePack(gridP->y.bounds, size, DATATYPE_FLT64,
+      serializePack(gridP->y.bounds, size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, size, gridP->y.bounds);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, size, gridP->y.bounds);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -29487,22 +29885,22 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
   if (memberMask & gridHasReferenceFlag)
     {
       size = (int)strlen(gridP->reference) + 1;
-      serializePack(&size, 1, DATATYPE_INT,
+      serializePack(&size, 1, CDI_DATATYPE_INT,
                     packBuffer, packBufferSize, packBufferPos, context);
-      serializePack(gridP->reference, size, DATATYPE_TXT,
+      serializePack(gridP->reference, size, CDI_DATATYPE_TXT,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_TXT, size, gridP->reference);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_TXT, size, gridP->reference);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
   if (memberMask & gridHasMaskFlag)
     {
       xassert((size = gridP->size));
-      serializePack(gridP->mask, size, DATATYPE_UCHAR,
+      serializePack(gridP->mask, size, CDI_DATATYPE_UCHAR,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_UCHAR, size, gridP->mask);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_UCHAR, size, gridP->mask);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -29510,15 +29908,15 @@ gridPack(void * voidP, void * packBuffer, int packBufferSize,
     {
       xassert((size = gridP->size));
 
-      serializePack(gridP->mask_gme, size, DATATYPE_UCHAR,
+      serializePack(gridP->mask_gme, size, CDI_DATATYPE_UCHAR,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_UCHAR, size, gridP->mask_gme);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_UCHAR, size, gridP->mask_gme);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
   if (memberMask & gridHasUUIDFlag)
-    serializePack(gridP->uuid, CDI_UUID_SIZE, DATATYPE_UCHAR,
+    serializePack(gridP->uuid, CDI_UUID_SIZE, CDI_DATATYPE_UCHAR,
                   packBuffer, packBufferSize, packBufferPos, context);
 }
 
@@ -29536,7 +29934,7 @@ gridCompareSearch(int id, void *res, void *data)
 {
   struct gridCompareSearchState *state = (struct gridCompareSearchState*)data;
   (void)res;
-  if ( gridCompare(id, state->queryKey, false) == false )
+  if ( gridCompare(id, state->queryKey, true) == false )
     {
       state->resIDValue = id;
       return CDI_APPLY_STOP;
@@ -29627,9 +30025,15 @@ const struct gridVirtTable cdiGridVtable
   .inqXVal = gridInqXValSerial,
   .inqYVal = gridInqYValSerial,
   .inqXVals = gridInqXValsSerial,
+  .inqXCvals = gridInqXCvalsSerial,
+  .inqXIsc = gridInqXIscSerial,
   .inqYVals = gridInqYValsSerial,
+  .inqYCvals = gridInqYCvalsSerial,
+  .inqYIsc = gridInqYIscSerial,
   .inqXValsPtr = gridInqXValsPtrSerial,
   .inqYValsPtr = gridInqYValsPtrSerial,
+  .inqXCvalsPtr = gridInqXCvalsPtrSerial,
+  .inqYCvalsPtr = gridInqYCvalsPtrSerial,
   .compareXYFull = compareXYvals,
   .compareXYAO = compareXYvals2,
   .inqArea = gridInqAreaSerial,
@@ -30485,8 +30889,6 @@ void instituteDefaultEntries(void);
 #include <limits.h>
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  -1
 
 static int ECMWF  = CDI_UNDEFID,
   MPIMET = CDI_UNDEFID,
@@ -30774,9 +31176,9 @@ static int instituteGetPackSize(institute_t *ip, void *context)
 {
   size_t namelen = strlen(ip->name), longnamelen = strlen(ip->longname);
   xassert(namelen < INT_MAX && longnamelen < INT_MAX);
-  size_t txsize = (size_t)serializeGetSize(institute_nints, DATATYPE_INT, context)
-    + (size_t)serializeGetSize((int)namelen + 1, DATATYPE_TXT, context)
-    + (size_t)serializeGetSize((int)longnamelen + 1, DATATYPE_TXT, context);
+  size_t txsize = (size_t)serializeGetSize(institute_nints, CDI_DATATYPE_INT, context)
+    + (size_t)serializeGetSize((int)namelen + 1, CDI_DATATYPE_TXT, context)
+    + (size_t)serializeGetSize((int)longnamelen + 1, CDI_DATATYPE_TXT, context);
   xassert(txsize <= INT_MAX);
   return (int)txsize;
 }
@@ -30790,9 +31192,9 @@ static void institutePackP(void * instituteptr, void *buf, int size, int *positi
   tempbuf[2] = p->subcenter;
   tempbuf[3] = (int)strlen(p->name) + 1;
   tempbuf[4] = (int)strlen(p->longname) + 1;
-  serializePack(tempbuf, institute_nints, DATATYPE_INT, buf, size, position, context);
-  serializePack(p->name, tempbuf[3], DATATYPE_TXT, buf, size, position, context);
-  serializePack(p->longname, tempbuf[4], DATATYPE_TXT, buf, size, position, context);
+  serializePack(tempbuf, institute_nints, CDI_DATATYPE_INT, buf, size, position, context);
+  serializePack(p->name, tempbuf[3], CDI_DATATYPE_TXT, buf, size, position, context);
+  serializePack(p->longname, tempbuf[4], CDI_DATATYPE_TXT, buf, size, position, context);
 }
 
 int instituteUnpack(void *buf, int size, int *position, int originNamespace,
@@ -30801,11 +31203,11 @@ int instituteUnpack(void *buf, int size, int *position, int originNamespace,
   int tempbuf[institute_nints];
   int instituteID;
   char *name, *longname;
-  serializeUnpack(buf, size, position, tempbuf, institute_nints, DATATYPE_INT, context);
+  serializeUnpack(buf, size, position, tempbuf, institute_nints, CDI_DATATYPE_INT, context);
   name = (char *) Malloc((size_t)tempbuf[3] + (size_t)tempbuf[4]);
   longname = name + tempbuf[3];
-  serializeUnpack(buf, size, position, name, tempbuf[3], DATATYPE_TXT, context);
-  serializeUnpack(buf, size, position, longname, tempbuf[4], DATATYPE_TXT, context);
+  serializeUnpack(buf, size, position, name, tempbuf[3], CDI_DATATYPE_TXT, context);
+  serializeUnpack(buf, size, position, longname, tempbuf[4], CDI_DATATYPE_TXT, context);
   int targetID = namespaceAdaptKey(tempbuf[0], originNamespace);
   institute_t *ip = instituteNewEntry(force_id?targetID:CDI_UNDEFID,
                                       tempbuf[1], tempbuf[2], name, longname);
@@ -30893,6 +31295,11 @@ void baseIterDestruct(CdiIterator *me);
 #ifndef INCLUDE_GUARD_CDI_ITERATOR_FALLBACK_H
 #define INCLUDE_GUARD_CDI_ITERATOR_FALLBACK_H
 
+#if defined (HAVE_CONFIG_H)
+#endif
+
+#include <stdlib.h>
+
 
 typedef struct CdiFallbackIterator CdiFallbackIterator;
 
@@ -30937,6 +31344,9 @@ void cdiFallbackIterator_delete(CdiIterator *super);
 #ifndef INCLUDE_GUARD_CDI_ITERATOR_GRIB_H
 #define INCLUDE_GUARD_CDI_ITERATOR_GRIB_H
 
+#if defined (HAVE_CONFIG_H)
+#endif
+
 
 #ifdef HAVE_LIBGRIB_API
 #include <grib_api.h>
@@ -30991,23 +31401,23 @@ static const char* fileType2String(int fileType)
   switch(fileType)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB: return "CDI::Iterator::GRIB1";
-        case FILETYPE_GRB2: return "CDI::Iterator::GRIB2";
+        case CDI_FILETYPE_GRB: return "CDI::Iterator::GRIB1";
+        case CDI_FILETYPE_GRB2: return "CDI::Iterator::GRIB2";
 #endif
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC: return "CDI::Iterator::NetCDF";
-        case FILETYPE_NC2: return "CDI::Iterator::NetCDF2";
-        case FILETYPE_NC4: return "CDI::Iterator::NetCDF4";
-        case FILETYPE_NC4C: return "CDI::Iterator::NetCDF4C";
+        case CDI_FILETYPE_NC: return "CDI::Iterator::NetCDF";
+        case CDI_FILETYPE_NC2: return "CDI::Iterator::NetCDF2";
+        case CDI_FILETYPE_NC4: return "CDI::Iterator::NetCDF4";
+        case CDI_FILETYPE_NC4C: return "CDI::Iterator::NetCDF4C";
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV: return "CDI::Iterator::SRV";
+        case CDI_FILETYPE_SRV: return "CDI::Iterator::SRV";
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT: return "CDI::Iterator::EXT";
+        case CDI_FILETYPE_EXT: return "CDI::Iterator::EXT";
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG: return "CDI::Iterator::IEG";
+        case CDI_FILETYPE_IEG: return "CDI::Iterator::IEG";
 #endif
 
       default: return NULL;
@@ -31024,24 +31434,24 @@ static int string2FileType(const char* fileType, const char **outRestString)
           if(outRestString) *outRestString = givenString + strlen(typeString); \
           if(fileType2String(typeConstant)) return typeConstant; \
           Error("Support for " typeString " not compiled in. Please check that the result of `cdiIterator_serialize()` is only passed to a `cdiIterator_deserialize()` implementation of the same CDI library version."); \
-          return FILETYPE_UNDEF; \
+          return CDI_FILETYPE_UNDEF; \
         } \
     } while(0)
-  check(fileType, "CDI::Iterator::GRIB1", FILETYPE_GRB);
-  check(fileType, "CDI::Iterator::GRIB2", FILETYPE_GRB2);
-  check(fileType, "CDI::Iterator::NetCDF", FILETYPE_NC);
-  check(fileType, "CDI::Iterator::NetCDF2", FILETYPE_NC2);
-  check(fileType, "CDI::Iterator::NetCDF4", FILETYPE_NC4);
-  check(fileType, "CDI::Iterator::NetCDF4C", FILETYPE_NC4C);
-  check(fileType, "CDI::Iterator::SRV", FILETYPE_SRV);
-  check(fileType, "CDI::Iterator::EXT", FILETYPE_EXT);
-  check(fileType, "CDI::Iterator::IEG", FILETYPE_IEG);
+  check(fileType, "CDI::Iterator::GRIB1", CDI_FILETYPE_GRB);
+  check(fileType, "CDI::Iterator::GRIB2", CDI_FILETYPE_GRB2);
+  check(fileType, "CDI::Iterator::NetCDF", CDI_FILETYPE_NC);
+  check(fileType, "CDI::Iterator::NetCDF2", CDI_FILETYPE_NC2);
+  check(fileType, "CDI::Iterator::NetCDF4", CDI_FILETYPE_NC4);
+  check(fileType, "CDI::Iterator::NetCDF4C", CDI_FILETYPE_NC4C);
+  check(fileType, "CDI::Iterator::SRV", CDI_FILETYPE_SRV);
+  check(fileType, "CDI::Iterator::EXT", CDI_FILETYPE_EXT);
+  check(fileType, "CDI::Iterator::IEG", CDI_FILETYPE_IEG);
 #undef check
 
   //If this point is reached, the given string does not seem to be produced by a cdiIterator_serialize() call.
   Error("The string \"%s\" does not start with a valid iterator type. Please check the source of this string.", fileType);
   *outRestString = fileType;
-  return FILETYPE_UNDEF;
+  return CDI_FILETYPE_UNDEF;
 }
 
 /*
@@ -31069,30 +31479,30 @@ CdiIterator* cdiIterator_new(const char* path)
   int filetype = cdiGetFiletype(path, &trash);
   switch(filetype)
     {
-      case FILETYPE_UNDEF:
+      case CDI_FILETYPE_UNDEF:
         Warning("Can't open file \"%s\": unknown format\n", path);
         return NULL;
 
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_new(path, filetype);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_new(path, filetype);
 
@@ -31112,7 +31522,7 @@ const char* baseIter_constructFromString(CdiIterator* me, const char* descriptio
 {
   const char* result = description;
   me->filetype = string2FileType(result, &result);
-  assert(me->filetype != FILETYPE_UNDEF && "Please report this error.");        //This condition should have been checked for in a calling function.
+  assert(me->filetype != CDI_FILETYPE_UNDEF && "Please report this error.");        //This condition should have been checked for in a calling function.
   for(; *result && isspace(*result); result++);
   if(result == strstr(result, kAdvancedString))
     {
@@ -31163,25 +31573,25 @@ CdiIterator* cdiIterator_clone(CdiIterator* me)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_getSuper(cdiGribIterator_clone(me));
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_getSuper(cdiFallbackIterator_clone(me));
 
@@ -31213,8 +31623,8 @@ CdiGribIterator* cdiGribIterator_clone(CdiIterator* me)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_makeClone(me);
 #endif
 
@@ -31243,26 +31653,26 @@ char* cdiIterator_serialize(CdiIterator* me)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           subclassDescription = cdiGribIterator_serialize(me);
           break;
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           subclassDescription = cdiFallbackIterator_serialize(me);
           break;
@@ -31303,25 +31713,25 @@ CdiIterator* cdiIterator_deserialize(const char* description)
   switch(string2FileType(description, NULL))
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_getSuper(cdiGribIterator_deserialize(description));
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_getSuper(cdiFallbackIterator_deserialize(description));
 
@@ -31375,25 +31785,25 @@ int cdiIterator_nextField(CdiIterator* me)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_nextField(me);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_nextField(me);
 
@@ -31409,25 +31819,25 @@ static char* cdiIterator_inqTime(CdiIterator* me, CdiTimeType timeType)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_inqTime(me, timeType);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_inqTime(me, timeType);
 
@@ -31569,25 +31979,25 @@ int cdiIterator_inqLevelType(CdiIterator* me, int levelSelector, char **outName,
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_levelType(me, levelSelector, outName, outLongName, outStdName, outUnit);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_levelType(me, levelSelector, outName, outLongName, outStdName, outUnit);
 
@@ -31619,25 +32029,25 @@ int cdiIterator_inqLevel(CdiIterator* me, int levelSelector, double* outValue1,
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_level(me, levelSelector, outValue1, outValue2);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_level(me, levelSelector, outValue1, outValue2);
 
@@ -31669,25 +32079,25 @@ int cdiIterator_inqLevelUuid(CdiIterator* me, int* outVgridNumber, int* outLevel
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_zaxisUuid(me, outVgridNumber, outLevelCount, outUuid);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_zaxisUuid(me, outVgridNumber, outLevelCount, outUuid);
 
@@ -31718,25 +32128,25 @@ int cdiIterator_inqTile(CdiIterator* me, int* outTileIndex, int* outTileAttribut
   switch(me->filetype)
     {
       #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_inqTile(me, outTileIndex, outTileAttribute);
       #endif
 
       #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
       #endif
       #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
       #endif
       #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
       #endif
       #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
       #endif
           return cdiFallbackIterator_inqTile(me, outTileIndex, outTileAttribute);
 
@@ -31768,25 +32178,25 @@ int cdiIterator_inqTileCount(CdiIterator* me, int* outTileCount, int* outTileAtt
   switch(me->filetype)
     {
       #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_inqTileCount(me, outTileCount, outTileAttributeCount);
       #endif
 
       #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
       #endif
       #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
       #endif
       #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
       #endif
       #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
       #endif
           return cdiFallbackIterator_inqTileCount(me, outTileCount, outTileAttributeCount);
 
@@ -31898,25 +32308,25 @@ char* cdiIterator_inqVariableName(CdiIterator* me)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           return cdiGribIterator_copyVariableName(me);
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           return cdiFallbackIterator_copyVariableName(me);
 
@@ -31967,26 +32377,26 @@ void cdiIterator_readField(CdiIterator* me, double* buffer, size_t* nmiss)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           cdiGribIterator_readField(me, buffer, nmiss);
 	  return;
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           cdiFallbackIterator_readField(me, buffer, nmiss);
           return;
@@ -32016,26 +32426,26 @@ void cdiIterator_readFieldF(CdiIterator* me, float* buffer, size_t* nmiss)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           cdiGribIterator_readFieldF(me, buffer, nmiss);
 	  return;
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           cdiFallbackIterator_readFieldF(me, buffer, nmiss);
           return; 
@@ -32061,26 +32471,26 @@ void cdiIterator_delete(CdiIterator* me)
   switch(me->filetype)
     {
 #ifdef HAVE_LIBGRIB_API
-        case FILETYPE_GRB:
-        case FILETYPE_GRB2:
+        case CDI_FILETYPE_GRB:
+        case CDI_FILETYPE_GRB2:
           cdiGribIterator_delete((CdiGribIterator*)me);
           break;
 #endif
 
 #ifdef HAVE_LIBNETCDF
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
 #endif
 #ifdef HAVE_LIBSERVICE
-        case FILETYPE_SRV:
+        case CDI_FILETYPE_SRV:
 #endif
 #ifdef HAVE_LIBEXTRA
-        case FILETYPE_EXT:
+        case CDI_FILETYPE_EXT:
 #endif
 #ifdef HAVE_LIBIEG
-        case FILETYPE_IEG:
+        case CDI_FILETYPE_IEG:
 #endif
           cdiFallbackIterator_delete(me);
           break;
@@ -32105,6 +32515,9 @@ void baseIterDestruct(CdiIterator* me)
  * require-trailing-newline: t
  * End:
  */
+#if defined (HAVE_CONFIG_H)
+#endif
+
 
 
 #include <assert.h>
@@ -32507,6 +32920,10 @@ void cdiFallbackIterator_delete(CdiIterator *super)
 #ifndef _STREAM_GRB_H
 #define _STREAM_GRB_H
 
+static inline bool gribbyte_get_bit(int number, int bit) { return (bool)((number >> (8-bit)) & 1); }
+static inline void gribbyte_set_bit(int *number, int bit) { *number |= 1 << (8-bit); }
+static inline void gribbyte_clear_bit(int *number, int bit) { *number &= ~(1 << (8-bit)); }
+
 int   grbBitsPerValue(int datatype);
 
 int   grbInqContents(stream_t *streamptr);
@@ -32530,6 +32947,34 @@ int   grib2ltypeToZaxisType(int grib_ltype);
 int   zaxisTypeToGrib1ltype(int zaxistype);
 int   zaxisTypeToGrib2ltype(int zaxistype);
 
+struct cdiGribParamChange
+{
+  int code, ltype, lev;
+  bool active;
+};
+
+struct cdiGribModeChange
+{
+  bool mode;
+  bool active;
+};
+
+struct cdiGribScanModeChange
+{
+  int value;
+  bool active;
+};
+
+extern struct cdiGribParamChange cdiGribChangeParameterID;
+extern struct cdiGribModeChange cdiGribChangeModeUvRelativeToGrid;
+extern struct cdiGribScanModeChange cdiGribDataScanningMode;
+
+// Used in CDO
+void streamGrbChangeParameterIdentification(int code, int ltype, int lev);
+void streamGrbChangeModeUvRelativeToGrid(int mode);
+void streamGrbDefDataScanningMode(int scanmode);
+int  streamGrbInqDataScanningMode(void);
+
 #endif  /* _STREAM_GRB_H */
 /*
  * Local Variables:
@@ -32543,6 +32988,13 @@ int   zaxisTypeToGrib2ltype(int zaxistype);
 #ifndef _ZAXIS_H
 #define _ZAXIS_H
 
+
+typedef struct {
+  double value;
+  bool defined;
+}
+zkey_double_t;
+
 typedef struct {
   char     dimname[CDI_MAX_NAME];
   char     vdimname[CDI_MAX_NAME];
@@ -32551,7 +33003,11 @@ typedef struct {
   char     stdname[CDI_MAX_NAME];
   char     units[CDI_MAX_NAME];
   char     psname[CDI_MAX_NAME];
+  char     p0name[CDI_MAX_NAME];
+  zkey_double_t p0value;
   double  *vals;
+  char   **cvals;
+  int      clength;
   double  *lbounds;
   double  *ubounds;
   double  *weights;
@@ -32594,6 +33050,9 @@ const resOps *getZaxisOps(void);
 const char *zaxisInqNamePtr(int zaxisID);
 
 const double *zaxisInqLevelsPtr(int zaxisID);
+char **zaxisInqCValsPtr(int zaxisID);
+
+void zaxisResize(int zaxisID, int size);
 
 #endif
 
@@ -32606,6 +33065,9 @@ const double *zaxisInqLevelsPtr(int zaxisID);
  * require-trailing-newline: t
  * End:
  */
+#if defined (HAVE_CONFIG_H)
+#endif
+
 
 
 #include <assert.h>
@@ -32623,11 +33085,7 @@ struct CdiGribIterator {
   off_t fileOffset;
   unsigned char *gribBuffer;
   size_t bufferSize, curRecordSize;
-#ifdef HAVE_LIBGRIB_API
   grib_handle *gribHandle;
-#else
-  void *gribHandle;
-#endif
 };
 
 CdiIterator *cdiGribIterator_getSuper(CdiGribIterator *me)
@@ -32683,7 +33141,7 @@ CdiIterator *cdiGribIterator_new(const char *path, int filetype)
 
 CdiGribIterator *cdiGribIterator_makeClone(CdiIterator *super)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   //Allocate memory and copy data. (operations that may fail)
   CdiGribIterator *result = (struct CdiGribIterator *) Malloc(sizeof(*result));
@@ -32735,7 +33193,7 @@ fail:
 
 char *cdiGribIterator_serialize(CdiIterator *super)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   const char *path = cdiInputFile_getPath(me->file);
   char *escapedPath = cdiEscapeSpaces(path);
@@ -32764,7 +33222,9 @@ CdiGribIterator *cdiGribIterator_deserialize(const char *description)
 
   {
     const char *savedStart = description;
-    long long decodedOffset = strtoll(description, (char**)&description, 0);    //The cast is a workaround for the wrong signature of strtoll() (it should have been `long long strtoll(const char*, const char**, int)`, not `long long strtoll(const char*, char**, int)`.
+    char *description_ = (char *)description;
+    long long decodedOffset = strtoll(description, &description_, 0);
+    description = description_;
     me->fileOffset = (off_t)decodedOffset;
     if(savedStart == description) goto closeFile;
     if((unsigned long long)decodedOffset > (unsigned long long)me->fileOffset) goto closeFile;
@@ -32946,7 +33406,7 @@ fail:
 
 int cdiGribIterator_nextField(CdiIterator *super)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   if(super->gridId != CDI_UNDEFID) gridDestroy(super->gridId), super->gridId = CDI_UNDEFID;
 
@@ -32967,13 +33427,13 @@ int cdiGribIterator_nextField(CdiIterator *super)
 
 char *cdiGribIterator_inqTime(CdiIterator *super, CdiTimeType timeType)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
   return gribMakeTimeString(me->gribHandle, timeType);
 }
 
 int cdiGribIterator_levelType(CdiIterator *super, int levelSelector, char **outName, char **outLongName, char **outStdName, char **outUnit)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   //First determine the zaxis type corresponding to the given level.
   int zaxisType = ZAXIS_GENERIC;
@@ -33060,7 +33520,7 @@ static int readLevel2(grib_handle *gribHandle, const char *levelTypeKey, const c
 
 int cdiGribIterator_level(CdiIterator *super, int levelSelector, double *outValue1, double *outValue2)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
   double trash;
   if(!outValue1) outValue1 = &trash;
   if(!outValue2) outValue2 = &trash;
@@ -33084,15 +33544,15 @@ int cdiGribIterator_level(CdiIterator *super, int levelSelector, double *outValu
         {}
       else if(isGrib1DualLevel((int)levelType))
         {
-          *outValue1 = (double)gribGetLongDefault(me->gribHandle, (levelSelector ? "bottomLevel" : "topLevel"), 0);
+          *outValue1 = (double)(gribGetLongDefault(me->gribHandle, (levelSelector ? "bottomLevel" : "topLevel"), 0));
         }
       else if(levelType == 100)
         {
-          *outValue1 = 100 * (double)gribGetLongDefault(me->gribHandle, "level", 0);        //2 bytes
+          *outValue1 = 100 * (double)(gribGetLongDefault(me->gribHandle, "level", 0));        //2 bytes
         }
       else
         {
-          *outValue1 = (double)gribGetLongDefault(me->gribHandle, "level", 0);        //2 bytes
+          *outValue1 = (double)(gribGetLongDefault(me->gribHandle, "level", 0));        //2 bytes
         }
     }
   return CDI_NOERR;
@@ -33100,7 +33560,7 @@ int cdiGribIterator_level(CdiIterator *super, int levelSelector, double *outValu
 
 int cdiGribIterator_zaxisUuid(CdiIterator *super, int *outVgridNumber, int *outLevelCount, unsigned char outUuid[CDI_UUID_SIZE])
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   if(outVgridNumber)
     {
@@ -33126,7 +33586,7 @@ int cdiGribIterator_zaxisUuid(CdiIterator *super, int *outVgridNumber, int *outL
 
 int cdiGribIterator_inqTile(CdiIterator *super, int *outTileIndex, int *outTileAttribute)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
   int trash;
   if(!outTileIndex) outTileIndex = &trash;
   if(!outTileAttribute) outTileAttribute = &trash;
@@ -33146,7 +33606,7 @@ int cdiGribIterator_inqTile(CdiIterator *super, int *outTileIndex, int *outTileA
 
 int cdiGribIterator_inqTileCount(CdiIterator *super, int *outTileCount, int *outTileAttributeCount)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
   int trash;
   if(!outTileCount) outTileCount = &trash;
   if(!outTileAttributeCount) outTileAttributeCount = &trash;
@@ -33166,13 +33626,13 @@ int cdiGribIterator_inqTileCount(CdiIterator *super, int *outTileCount, int *out
 
 char *cdiGribIterator_copyVariableName(CdiIterator *super)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
   return gribCopyString(me->gribHandle, "shortName");
 }
 
 void cdiGribIterator_readField(CdiIterator *super, double *buffer, size_t *nmiss)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   GRIB_CHECK(my_grib_set_double(me->gribHandle, "missingValue", cdiDefaultMissval), 0);
   gribGetDoubleArray(me->gribHandle, "values", buffer);
@@ -33185,7 +33645,7 @@ void cdiGribIterator_readField(CdiIterator *super, double *buffer, size_t *nmiss
 
 void cdiGribIterator_readFieldF(CdiIterator *super, float *buffer, size_t *nmiss)
 {
-  CdiGribIterator *me = (CdiGribIterator*)super;
+  CdiGribIterator *me = (CdiGribIterator*)(void *)super;
 
   size_t valueCount = gribGetArraySize(me->gribHandle, "values");
   double *temp = (double *) Malloc(valueCount*sizeof(*temp));
@@ -33241,6 +33701,7 @@ int cdiGribIterator_inqEdition(CdiGribIterator *me)
 #else
   (void)me;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33267,6 +33728,7 @@ int cdiGribIterator_getLong(CdiGribIterator *me, const char *key, long *result)
   (void)key;
   (void)result;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33299,6 +33761,7 @@ int cdiGribIterator_getLength(CdiGribIterator *me, const char *key, size_t *resu
   (void)key;
   (void)result;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33326,6 +33789,7 @@ int cdiGribIterator_getString(CdiGribIterator *me, const char *key, char *result
   (void)result;
   (void)length;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33352,6 +33816,7 @@ long cdiGribIterator_inqLongValue(CdiGribIterator *me, const char *key)
   (void)me;
   (void)key;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33380,6 +33845,7 @@ long cdiGribIterator_inqLongDefaultValue(CdiGribIterator *me, const char *key, l
   (void)key;
   (void)defaultValue;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33407,6 +33873,7 @@ char *cdiGribIterator_inqStringValue(CdiGribIterator *me, const char *key)
   (void)me;
   (void)key;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return NULL;
 #endif
 }
 
@@ -33433,6 +33900,7 @@ int cdiGribIterator_getDouble(CdiGribIterator *me, const char *key, double *resu
   (void)key;
   (void)result;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33459,6 +33927,7 @@ int cdiGribIterator_getSize(CdiGribIterator *me, const char *key, size_t *result
   (void)key;
   (void)result;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33486,6 +33955,7 @@ int cdiGribIterator_getLongArray(CdiGribIterator *me, const char *key, long *res
   (void)result;
   (void)size;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33513,6 +33983,7 @@ int cdiGribIterator_getDoubleArray(CdiGribIterator *me, const char *key, double
   (void)result;
   (void)size;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33539,6 +34010,7 @@ double cdiGribIterator_inqDoubleValue(CdiGribIterator *me, const char *key)
   (void)me;
   (void)key;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33567,6 +34039,7 @@ double cdiGribIterator_inqDoubleDefaultValue(CdiGribIterator *me, const char *ke
   (void)key;
   (void)defaultValue;
   xabort("CDI was compiled without GribAPI support, so you can't possibly have a valid CdiGribIterator* to call this function with");
+  return -4;
 #endif
 }
 
@@ -33889,8 +34362,8 @@ enum {
 static int modelGetSizeP(void * modelptr, void *context)
 {
   model_t *p = (model_t*)modelptr;
-  size_t txsize = (size_t)serializeGetSize(model_nints, DATATYPE_INT, context)
-    + (size_t)serializeGetSize(p->name?(int)strlen(p->name) + 1:0, DATATYPE_TXT, context);
+  size_t txsize = (size_t)serializeGetSize(model_nints, CDI_DATATYPE_INT, context)
+    + (size_t)serializeGetSize(p->name?(int)strlen(p->name) + 1:0, CDI_DATATYPE_TXT, context);
   xassert(txsize <= INT_MAX);
   return (int)txsize;
 }
@@ -33904,9 +34377,9 @@ static void modelPackP(void * modelptr, void * buf, int size, int *position, voi
   tempbuf[1] = p->instID;
   tempbuf[2] = p->modelgribID;
   tempbuf[3] = p->name ? (int)strlen(p->name) + 1 : 0;
-  serializePack(tempbuf, model_nints, DATATYPE_INT, buf, size, position, context);
+  serializePack(tempbuf, model_nints, CDI_DATATYPE_INT, buf, size, position, context);
   if (p->name)
-    serializePack(p->name, tempbuf[3], DATATYPE_TXT, buf, size, position, context);
+    serializePack(p->name, tempbuf[3], CDI_DATATYPE_TXT, buf, size, position, context);
 }
 
 int
@@ -33915,12 +34388,12 @@ modelUnpack(void *buf, int size, int *position, int originNamespace, void *conte
 {
   int tempbuf[model_nints];
   char *name;
-  serializeUnpack(buf, size, position, tempbuf, model_nints, DATATYPE_INT, context);
+  serializeUnpack(buf, size, position, tempbuf, model_nints, CDI_DATATYPE_INT, context);
   if (tempbuf[3] != 0)
     {
       name = (char *) Malloc((size_t)tempbuf[3]);
       serializeUnpack(buf, size, position,
-                      name, tempbuf[3], DATATYPE_TXT, context);
+                      name, tempbuf[3], CDI_DATATYPE_TXT, context);
     }
   else
     {
@@ -34826,7 +35299,7 @@ static int getPackBufferSize(void *context)
   int nsp = namespaceGetActive ();
 
   /* pack start marker, namespace and sererator marker */
-  packBufferSize += resHPackHeaderNInt * (intpacksize = serializeGetSize(1, DATATYPE_INT, context));
+  packBufferSize += resHPackHeaderNInt * (intpacksize = serializeGetSize(1, CDI_DATATYPE_INT, context));
 
   /* pack resources, type marker and seperator marker */
   listElem_t *r = resHList[nsp].resources;
@@ -34903,7 +35376,7 @@ int reshPackBufferCreate(char **packBuffer, int *packBufferSize, void *context)
 
   {
     int header[resHPackHeaderNInt] = { START, nsp };
-    serializePack(header, resHPackHeaderNInt,  DATATYPE_INT, pB, pBSize, &packBufferPos, context);
+    serializePack(header, resHPackHeaderNInt,  CDI_DATATYPE_INT, pB, pBSize, &packBufferPos, context);
   }
 
   listElem_t *r = resHList[nsp].resources;
@@ -34914,7 +35387,7 @@ int reshPackBufferCreate(char **packBuffer, int *packBufferSize, void *context)
           {
             int temp[resHDeleteNInt]
               = { RESH_DELETE, namespaceIdxEncode2(nsp, i) };
-            serializePack(temp, resHDeleteNInt, DATATYPE_INT,
+            serializePack(temp, resHDeleteNInt, CDI_DATATYPE_INT,
                           pB, pBSize, &packBufferPos, context);
           }
         else
@@ -34923,7 +35396,7 @@ int reshPackBufferCreate(char **packBuffer, int *packBufferSize, void *context)
             xassert ( curr->res.v.ops );
             int type = curr->res.v.ops->valTxCode();
             if ( ! type ) continue;
-            serializePack(&type, 1, DATATYPE_INT, pB,
+            serializePack(&type, 1, CDI_DATATYPE_INT, pB,
                           pBSize, &packBufferPos, context);
             curr->res.v.ops->valPack(curr->res.v.val,
                                      pB, pBSize, &packBufferPos, context);
@@ -34933,7 +35406,7 @@ int reshPackBufferCreate(char **packBuffer, int *packBufferSize, void *context)
 
   LIST_UNLOCK();
 
-  serializePack(&end, 1,  DATATYPE_INT, pB, pBSize, &packBufferPos, context);
+  serializePack(&end, 1,  CDI_DATATYPE_INT, pB, pBSize, &packBufferPos, context);
 
   return packBufferPos;
 }
@@ -35166,27 +35639,27 @@ serializeGetSizeInCore(int count, int datatype, void *context)
   (void)context;
   switch (datatype)
   {
-  case DATATYPE_INT8:
+  case CDI_DATATYPE_INT8:
     elemSize = sizeof (int8_t);
     break;
-  case DATATYPE_INT16:
+  case CDI_DATATYPE_INT16:
     elemSize = sizeof (int16_t);
     break;
-  case DATATYPE_UINT32:
+  case CDI_DATATYPE_UINT32:
     elemSize = sizeof (uint32_t);
     break;
-  case DATATYPE_INT:
+  case CDI_DATATYPE_INT:
     elemSize = sizeof (int);
     break;
-  case DATATYPE_FLT:
-  case DATATYPE_FLT64:
+  case CDI_DATATYPE_FLT:
+  case CDI_DATATYPE_FLT64:
     elemSize = sizeof (double);
     break;
-  case DATATYPE_TXT:
-  case DATATYPE_UCHAR:
+  case CDI_DATATYPE_TXT:
+  case CDI_DATATYPE_UCHAR:
     elemSize = 1;
     break;
-  case DATATYPE_LONG:
+  case CDI_DATATYPE_LONG:
     elemSize = sizeof (long);
     break;
   default:
@@ -35915,6 +36388,7 @@ void   iegWriteVarSliceDP(stream_t *streamptr, int varID, int levelID, const dou
 #define _XOPEN_SOURCE 600
 #endif
 
+#include <sys/stat.h> // struct stat
 #include <ctype.h>
 
 
@@ -35967,19 +36441,29 @@ int cdiGetFiletype(const char *filename, int *byteorder)
   int swap = 0;
   int version;
   long recpos;
-  char buffer[8];
 
   int fileID = fileOpen(filename, "r");
 
   if ( fileID == CDI_UNDEFID )
     {
       if ( strncmp(filename, "http:", 5) == 0 || strncmp(filename, "https:", 6) == 0 )
-	return FILETYPE_NC;
+	return CDI_FILETYPE_NC;
       else
 	return CDI_ESYSTEM;
     }
 
-  if ( fileRead(fileID, buffer, 8) != 8 ) return CDI_EUFTYPE;
+  char buffer[8];
+  if ( fileRead(fileID, buffer, 8) != 8 )
+    {
+      struct stat buf;
+      if ( stat(filename, &buf) == 0 )
+        {
+          if ( buf.st_size == 0 ) return CDI_EISEMPTY;
+          if ( buf.st_mode&S_IFDIR ) return CDI_EISDIR;
+        }
+
+      return CDI_EUFTYPE;
+    }
 
   fileRewind(fileID);
 
@@ -35988,66 +36472,58 @@ int cdiGetFiletype(const char *filename, int *byteorder)
       version = buffer[7];
       if ( version <= 1 )
 	{
-	  filetype = FILETYPE_GRB;
+	  filetype = CDI_FILETYPE_GRB;
 	  if ( CDI_Debug ) Message("found GRIB file = %s, version %d", filename, version);
 	}
       else if ( version == 2 )
 	{
-	  filetype = FILETYPE_GRB2;
+	  filetype = CDI_FILETYPE_GRB2;
 	  if ( CDI_Debug ) Message("found GRIB2 file = %s", filename);
 	}
     }
   else if ( memcmp(buffer, "CDF\001", 4) == 0 )
     {
-      filetype = FILETYPE_NC;
+      filetype = CDI_FILETYPE_NC;
       if ( CDI_Debug ) Message("found CDF1 file = %s", filename);
     }
   else if ( memcmp(buffer, "CDF\002", 4) == 0 )
     {
-      filetype = FILETYPE_NC2;
+      filetype = CDI_FILETYPE_NC2;
       if ( CDI_Debug ) Message("found CDF2 file = %s", filename);
     }
   else if ( memcmp(buffer+1, "HDF", 3) == 0 )
     {
-      filetype = FILETYPE_NC4;
+      filetype = CDI_FILETYPE_NC4;
       if ( CDI_Debug ) Message("found HDF file = %s", filename);
     }
-#if  defined  (HAVE_LIBSERVICE)
   else if ( srvCheckFiletype(fileID, &swap) )
     {
-      filetype = FILETYPE_SRV;
+      filetype = CDI_FILETYPE_SRV;
       if ( CDI_Debug ) Message("found SRV file = %s", filename);
     }
-#endif
-#if  defined  (HAVE_LIBEXTRA)
   else if ( extCheckFiletype(fileID, &swap) )
     {
-      filetype = FILETYPE_EXT;
+      filetype = CDI_FILETYPE_EXT;
       if ( CDI_Debug ) Message("found EXT file = %s", filename);
     }
-#endif
-#if  defined  (HAVE_LIBIEG)
   else if ( iegCheckFiletype(fileID, &swap) )
     {
-      filetype = FILETYPE_IEG;
+      filetype = CDI_FILETYPE_IEG;
       if ( CDI_Debug ) Message("found IEG file = %s", filename);
     }
-#endif
-#if  defined  (HAVE_LIBCGRIBEX)
   else if ( gribCheckSeek(fileID, &recpos, &version) == 0 )
     {
       if ( version <= 1 )
 	{
-	  filetype = FILETYPE_GRB;
+	  filetype = CDI_FILETYPE_GRB;
 	  if ( CDI_Debug ) Message("found seeked GRIB file = %s", filename);
 	}
       else if ( version == 2 )
 	{
-	  filetype = FILETYPE_GRB2;
+	  filetype = CDI_FILETYPE_GRB2;
 	  if ( CDI_Debug ) Message("found seeked GRIB2 file = %s", filename);
 	}
     }
-#endif
 
   fileClose(fileID);
 
@@ -36070,8 +36546,8 @@ The function @func{streamInqFiletype} returns the filetype of a stream.
 @Result
 @func{streamInqFiletype} returns the type of the file format,
 one of the set of predefined CDI file format types.
-The valid CDI file format types are @func{FILETYPE_GRB}, @func{FILETYPE_GRB2}, @func{FILETYPE_NC}, @func{FILETYPE_NC2},
- at func{FILETYPE_NC4}, @func{FILETYPE_NC4C}, @func{FILETYPE_SRV}, @func{FILETYPE_EXT} and @func{FILETYPE_IEG}.
+The valid CDI file format types are @func{CDI_FILETYPE_GRB}, @func{CDI_FILETYPE_GRB2}, @func{CDI_FILETYPE_NC}, @func{CDI_FILETYPE_NC2},
+ at func{CDI_FILETYPE_NC4}, @func{CDI_FILETYPE_NC4C}, @func{CDI_FILETYPE_SRV}, @func{CDI_FILETYPE_EXT} and @func{CDI_FILETYPE_IEG}.
 
 @EndFunction
 */
@@ -36114,7 +36590,7 @@ int getByteswap(int byteorder)
 
 @Description
 The function @func{streamDefByteorder} defines the byte order of a binary dataset
-with the file format type @func{FILETYPE_SRV}, @func{FILETYPE_EXT} or @func{FILETYPE_IEG}.
+with the file format type @func{CDI_FILETYPE_SRV}, @func{CDI_FILETYPE_EXT} or @func{CDI_FILETYPE_IEG}.
 
 @EndFunction
 */
@@ -36127,7 +36603,7 @@ void streamDefByteorder(int streamID, int byteorder)
   switch (filetype)
     {
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
 	srvrec_t *srvp = (srvrec_t*) streamptr->record->exsep;
 	srvp->byteswap = getByteswap(byteorder);
@@ -36136,7 +36612,7 @@ void streamDefByteorder(int streamID, int byteorder)
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
 	extrec_t *extp = (extrec_t*) streamptr->record->exsep;
 	extp->byteswap = getByteswap(byteorder);
@@ -36145,7 +36621,7 @@ void streamDefByteorder(int streamID, int byteorder)
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
 	iegrec_t *iegp = (iegrec_t*) streamptr->record->exsep;
 	iegp->byteswap = getByteswap(byteorder);
@@ -36167,7 +36643,7 @@ void streamDefByteorder(int streamID, int byteorder)
 
 @Description
 The function @func{streamInqByteorder} returns the byte order of a binary dataset
-with the file format type @func{FILETYPE_SRV}, @func{FILETYPE_EXT} or @func{FILETYPE_IEG}.
+with the file format type @func{CDI_FILETYPE_SRV}, @func{CDI_FILETYPE_EXT} or @func{CDI_FILETYPE_IEG}.
 
 @Result
 @func{streamInqByteorder} returns the type of the byte order.
@@ -36227,39 +36703,39 @@ int cdiInqContents(stream_t *streamptr)
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       {
         status = grbInqContents(streamptr);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         status = srvInqContents(streamptr);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         status = extInqContents(streamptr);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         status = iegInqContents(streamptr);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
         status = cdfInqContents(streamptr);
 	break;
@@ -36298,9 +36774,9 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
+    case CDI_FILETYPE_GRB:
 #if  defined  (HAVE_LIBGRIB_API)
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB2:
 #endif
       {
 #ifndef __cplusplus
@@ -36319,7 +36795,7 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
 #ifndef __cplusplus
         fileID = fileOpen(filename, (char [2]){filemode, 0});
@@ -36338,7 +36814,7 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
 #ifndef __cplusplus
         fileID = fileOpen(filename, (char [2]){filemode, 0});
@@ -36358,7 +36834,7 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
 #ifndef __cplusplus
         fileID = fileOpen(filename, (char [2]){filemode, 0});
@@ -36377,7 +36853,7 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
+    case CDI_FILETYPE_NC:
       {
 #ifndef __cplusplus
         fileID = cdfOpen(filename, (char [2]){filemode, 0});
@@ -36387,7 +36863,7 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
 #endif
         break;
       }
-    case FILETYPE_NC2:
+    case CDI_FILETYPE_NC2:
       {
 #ifndef __cplusplus
         fileID = cdfOpen64(filename, (char [2]){filemode, 0});
@@ -36397,8 +36873,8 @@ int cdiStreamOpenDefaultDelegate(const char *filename, char filemode,
 #endif
         break;
       }
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
 #ifndef __cplusplus
         fileID = cdf4Open(filename, (char [2]){filemode, 0}, &filetype);
@@ -36526,7 +37002,12 @@ int streamOpenA(const char *filename, const char *filemode, int filetype)
   if ( status < 0 ) return status;
   vlist_t *vlistptr = vlist_to_pointer(streamptr->vlistID);
   vlistptr->ntsteps = (int)cdiInqTimeSize(streamID);
-  if(!strcmp(filemode, "r")) cdiVlistMakeImmutable(streamptr->vlistID);
+
+  // Needed for NetCDF4
+  for ( int varID = 0; varID < vlistptr->nvars; ++varID )
+    streamptr->vars[varID].defmiss = true;
+
+  if ( !strcmp(filemode, "r") ) cdiVlistMakeImmutable(streamptr->vlistID);
 
   {
     void (*streamCloseDelegate)(stream_t *streamptr, int recordBufIsToBeDeleted)
@@ -36539,9 +37020,9 @@ int streamOpenA(const char *filename, const char *filemode, int filetype)
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
+    case CDI_FILETYPE_GRB:
 #if  defined  (HAVE_LIBGRIB_API)
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB2:
 #endif
       {
         fileID = gribOpen(filename, filemode);
@@ -36550,41 +37031,41 @@ int streamOpenA(const char *filename, const char *filemode, int filetype)
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         fileID = fileOpen(filename, filemode);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         fileID = fileOpen(filename, filemode);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         fileID = fileOpen(filename, filemode);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
+    case CDI_FILETYPE_NC:
       {
 	fileID = cdfOpen(filename, filemode);
 	streamptr->ncmode = 2;
 	break;
       }
-    case FILETYPE_NC2:
+    case CDI_FILETYPE_NC2:
       {
 	fileID = cdfOpen64(filename, filemode);
 	streamptr->ncmode = 2;
 	break;
       }
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
 	fileID = cdf4Open(filename, filemode, &filetype);
 	streamptr->ncmode = 2;
@@ -36692,9 +37173,9 @@ int streamOpenAppend(const char *filename)
 @Parameter
     @Item  path      The name of the new dataset.
     @Item  filetype  The type of the file format, one of the set of predefined CDI file format types.
-                     The valid CDI file format types are @func{FILETYPE_GRB}, @func{FILETYPE_GRB2}, @func{FILETYPE_NC},
-                     @func{FILETYPE_NC2}, @func{FILETYPE_NC4}, @func{FILETYPE_NC4C}, @func{FILETYPE_SRV},
-                     @func{FILETYPE_EXT} and @func{FILETYPE_IEG}.
+                     The valid CDI file format types are @func{CDI_FILETYPE_GRB}, @func{CDI_FILETYPE_GRB2}, @func{CDI_FILETYPE_NC},
+                     @func{CDI_FILETYPE_NC2}, @func{CDI_FILETYPE_NC4}, @func{CDI_FILETYPE_NC4C}, @func{CDI_FILETYPE_SRV},
+                     @func{CDI_FILETYPE_EXT} and @func{CDI_FILETYPE_IEG}.
 
 @Description
 The function @func{streamOpenWrite} creates a new datset.
@@ -36717,7 +37198,7 @@ Here is an example using @func{streamOpenWrite} to create a new NetCDF file name
    ...
 int streamID;
    ...
-streamID = streamOpenWrite("foo.nc", FILETYPE_NC);
+streamID = streamOpenWrite("foo.nc", CDI_FILETYPE_NC);
 if ( streamID < 0 ) handle_error(streamID);
    ...
 @EndSource
@@ -36736,7 +37217,7 @@ void streamDefaultValue ( stream_t * streamptr )
   streamptr->self              = CDI_UNDEFID;
   streamptr->accesstype        = CDI_UNDEFID;
   streamptr->accessmode        = 0;
-  streamptr->filetype          = FILETYPE_UNDEF;
+  streamptr->filetype          = CDI_FILETYPE_UNDEF;
   streamptr->byteorder         = CDI_UNDEFID;
   streamptr->fileID            = 0;
   streamptr->filemode          = 0;
@@ -36759,7 +37240,8 @@ void streamDefaultValue ( stream_t * streamptr )
   streamptr->globalatts        = 0;
   streamptr->localatts         = 0;
   streamptr->unreduced         = cdiDataUnreduced;
-  streamptr->sortname          = cdiSortName;
+  streamptr->sortname          = cdiSortName > 0;
+  streamptr->sortparam         = cdiSortParam > 0;
   streamptr->have_missval      = cdiHaveMissval;
   streamptr->comptype          = CDI_COMPRESS_NONE;
   streamptr->complevel         = 0;
@@ -36767,13 +37249,15 @@ void streamDefaultValue ( stream_t * streamptr )
   basetimeInit(&streamptr->basetime);
 
 #ifdef HAVE_LIBNETCDF
-  int i;
-  for ( i = 0; i < MAX_GRIDS_PS; i++ ) streamptr->xdimID[i]  = CDI_UNDEFID;
-  for ( i = 0; i < MAX_GRIDS_PS; i++ ) streamptr->ydimID[i]  = CDI_UNDEFID;
-  for ( i = 0; i < MAX_ZAXES_PS; i++ ) streamptr->zaxisID[i]  = CDI_UNDEFID;
-  for ( i = 0; i < MAX_ZAXES_PS; i++ ) streamptr->nczvarID[i] = CDI_UNDEFID;
+  for ( int i = 0; i < MAX_ZAXES_PS; i++ ) streamptr->zaxisID[i]  = CDI_UNDEFID;
+  for ( int i = 0; i < MAX_ZAXES_PS; i++ ) streamptr->nczvarID[i] = CDI_UNDEFID;
 
-  streamptr->ncgrid            = NULL;
+  for ( int i = 0; i < MAX_GRIDS_PS; i++ )
+    {
+      streamptr->ncgrid[i].gridID = CDI_UNDEFID;
+      for (size_t j = 0; j < CDF_SIZE_ncIDs; ++j)
+        streamptr->ncgrid[i].ncIDs[j] = CDI_UNDEFID;
+    }
 
   streamptr->vct.ilev          = 0;
   streamptr->vct.mlev          = 0;
@@ -36814,8 +37298,8 @@ void cdiStreamCloseDefaultDelegate(stream_t *streamptr, int recordBufIsToBeDelet
     switch (filetype)
       {
 #if  defined  (HAVE_LIBGRIB)
-      case FILETYPE_GRB:
-      case FILETYPE_GRB2:
+      case CDI_FILETYPE_GRB:
+      case CDI_FILETYPE_GRB2:
         {
           gribClose(fileID);
           if ( recordBufIsToBeDeleted ) gribContainersDelete(streamptr);
@@ -36823,7 +37307,7 @@ void cdiStreamCloseDefaultDelegate(stream_t *streamptr, int recordBufIsToBeDelet
         }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-      case FILETYPE_SRV:
+      case CDI_FILETYPE_SRV:
         {
           fileClose(fileID);
           if ( recordBufIsToBeDeleted ) srvDelete(streamptr->record->exsep);
@@ -36831,7 +37315,7 @@ void cdiStreamCloseDefaultDelegate(stream_t *streamptr, int recordBufIsToBeDelet
         }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-      case FILETYPE_EXT:
+      case CDI_FILETYPE_EXT:
         {
           fileClose(fileID);
           if ( recordBufIsToBeDeleted ) extDelete(streamptr->record->exsep);
@@ -36839,7 +37323,7 @@ void cdiStreamCloseDefaultDelegate(stream_t *streamptr, int recordBufIsToBeDelet
         }
 #endif
 #if  defined  (HAVE_LIBIEG)
-      case FILETYPE_IEG:
+      case CDI_FILETYPE_IEG:
         {
           fileClose(fileID);
           if ( recordBufIsToBeDeleted ) iegDelete(streamptr->record->exsep);
@@ -36847,13 +37331,17 @@ void cdiStreamCloseDefaultDelegate(stream_t *streamptr, int recordBufIsToBeDelet
         }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-      case FILETYPE_NC:
-      case FILETYPE_NC2:
-      case FILETYPE_NC4:
-      case FILETYPE_NC4C:
+      case CDI_FILETYPE_NC:
+      case CDI_FILETYPE_NC2:
+      case CDI_FILETYPE_NC4:
+      case CDI_FILETYPE_NC4C:
         {
           cdfClose(fileID);
-          if ( streamptr->ncgrid ) { Free(streamptr->ncgrid); streamptr->ncgrid = NULL; }
+          if (streamptr->ntsteps == 0)
+            {
+              Free(streamptr->tsteps[0].records);
+              Free(streamptr->tsteps[0].recIDs);
+            }
           break;
         }
 #endif
@@ -36982,10 +37470,10 @@ void cdiStreamSync_(stream_t *streamptr)
 	  switch (filetype)
 	    {
 #if  defined  (HAVE_LIBNETCDF)
-	    case FILETYPE_NC:
-	    case FILETYPE_NC2:
-	    case FILETYPE_NC4:
-	    case FILETYPE_NC4C:
+	    case CDI_FILETYPE_NC:
+	    case CDI_FILETYPE_NC2:
+	    case CDI_FILETYPE_NC4:
+	    case CDI_FILETYPE_NC4C:
 	      {
 		void cdf_sync(int ncid);
 		if ( streamptr->ncmode == 2 ) cdf_sync(fileID);
@@ -37065,10 +37553,10 @@ int cdiStreamDefTimestep_(stream_t *streamptr, int tsID)
   streamptr->ntsteps = tsID + 1;
 
 #ifdef HAVE_LIBNETCDF
-  if ((streamptr->filetype == FILETYPE_NC  ||
-       streamptr->filetype == FILETYPE_NC2 ||
-       streamptr->filetype == FILETYPE_NC4 ||
-       streamptr->filetype == FILETYPE_NC4C)
+  if ((streamptr->filetype == CDI_FILETYPE_NC  ||
+       streamptr->filetype == CDI_FILETYPE_NC2 ||
+       streamptr->filetype == CDI_FILETYPE_NC4 ||
+       streamptr->filetype == CDI_FILETYPE_NC4C)
       && time_is_varying)
     {
       void (*myCdfDefTimestep)(stream_t *streamptr, int tsID)
@@ -37166,39 +37654,39 @@ int streamInqTimestep(int streamID, int tsID)
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       {
         nrecs = grbInqTimestep(streamptr, tsID);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         nrecs = srvInqTimestep(streamptr, tsID);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         nrecs = extInqTimestep(streamptr, tsID);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         nrecs = iegInqTimestep(streamptr, tsID);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
         nrecs = cdfInqTimestep(streamptr, tsID);
 	break;
@@ -37231,15 +37719,14 @@ void streamWriteContents(int streamID, char *cname)
 
   if ( cnp == NULL ) SysError(cname);
 
-  fprintf(cnp, "#CDI library version %s\n", cdiLibraryVersion());
-  fprintf(cnp, "#\n");
+  fprintf(cnp, "#CDI library version %s\n"
+          "#\n", cdiLibraryVersion());
 
-  fprintf(cnp, "filename: %s\n", streamptr->filename);
   int filetype = streamptr->filetype;
-  fprintf(cnp, "filetype: %s\n", strfiletype(filetype));
+  fprintf(cnp, "filename: %s\n"
+          "filetype: %s\n", streamptr->filename, strfiletype(filetype));
 
-  fprintf(cnp, "#\n");
-  fprintf(cnp, "#grids:\n");
+  fputs("#\n#grids:\n", cnp);
 
   int ngrids = vlistNgrids(vlistID);
   for ( int i = 0; i < ngrids; i++ )
@@ -37251,9 +37738,7 @@ void streamWriteContents(int streamID, char *cname)
       fprintf(cnp, "%4d:%4d:%4d:%4d\n", i+1, gridtype, xsize, ysize);
     }
 
-  fprintf(cnp, "#\n");
-
-  fprintf(cnp, "varID:code:gridID:zaxisID:tsteptype:datatype\n");
+  fputs("#\nvarID:code:gridID:zaxisID:tsteptype:datatype\n", cnp);
 
   int nvars = vlistNvars(vlistID);
   for ( int varID = 0; varID < nvars; varID++ )
@@ -37267,9 +37752,7 @@ void streamWriteContents(int streamID, char *cname)
 	      varID+1, code, gridID, zaxisID, tsteptype, datatype);
     }
 
-  fprintf(cnp, "#\n");
-
-  fprintf(cnp, "tsID:nrecs:date:time\n");
+  fputs("#\ntsID:nrecs:date:time\n", cnp);
 
   int tsID = 0;
   while (1)
@@ -37288,9 +37771,7 @@ void streamWriteContents(int streamID, char *cname)
 	break;
     }
 
-  fprintf(cnp, "#\n");
-
-  fprintf(cnp, "tsID:recID:varID:levID:size:pos\n");
+  fputs("#\ntsID:recID:varID:levID:size:pos\n", cnp);
 
   tsID = 0;
   while (1)
@@ -37481,11 +37962,14 @@ void cdiStreamSetupVlist_(stream_t *streamptr, int vlistID)
     switch (streamptr->filetype)
       {
 #ifdef HAVE_LIBNETCDF
-      case FILETYPE_NC:
-      case FILETYPE_NC2:
-      case FILETYPE_NC4:
-      case FILETYPE_NC4C:
+      case CDI_FILETYPE_NC:
+      case CDI_FILETYPE_NC2:
+      case CDI_FILETYPE_NC4:
+      case CDI_FILETYPE_NC4C:
         {
+          /* calls cdfDefVars in serial mode but
+           * cdiPioClientStreamNOP (i.e. nothing) on client ranks
+           * and cdiPioServerCdfDefVars on server ranks in parallel mode*/
           void (*myCdfDefVars)(stream_t *streamptr)
             = (void (*)(stream_t *)) namespaceSwitchGet(NSSWITCH_CDF_STREAM_SETUP).func;
           myCdfDefVars(streamptr);
@@ -37493,8 +37977,8 @@ void cdiStreamSetupVlist_(stream_t *streamptr, int vlistID)
         break;
 #endif
 #ifdef HAVE_LIBGRIB
-      case FILETYPE_GRB:
-      case FILETYPE_GRB2:
+      case CDI_FILETYPE_GRB:
+      case CDI_FILETYPE_GRB2:
         gribContainersNew(streamptr);
         break;
 #endif
@@ -37609,11 +38093,11 @@ streamGetPackSize(void * voidP, void *context)
 {
   stream_t * streamP = ( stream_t * ) voidP;
   int packBufferSize
-    = serializeGetSize(streamNint, DATATYPE_INT, context)
-    + serializeGetSize(2, DATATYPE_UINT32, context)
+    = serializeGetSize(streamNint, CDI_DATATYPE_INT, context)
+    + serializeGetSize(2, CDI_DATATYPE_UINT32, context)
     + serializeGetSize((int)strlen(streamP->filename) + 1,
-                       DATATYPE_TXT, context)
-    + serializeGetSize(1, DATATYPE_FLT64, context);
+                       CDI_DATATYPE_TXT, context)
+    + serializeGetSize(1, CDI_DATATYPE_FLT64, context);
   return packBufferSize;
 }
 
@@ -37636,14 +38120,14 @@ streamPack(void * streamptr, void * packBuffer, int packBufferSize,
   intBuffer[8] = streamP->sortname;
   intBuffer[9] = streamP->have_missval;
 
-  serializePack(intBuffer, streamNint, DATATYPE_INT, packBuffer, packBufferSize, packBufferPos, context);
-  uint32_t d = cdiCheckSum(DATATYPE_INT, streamNint, intBuffer);
-  serializePack(&d, 1, DATATYPE_UINT32, packBuffer, packBufferSize, packBufferPos, context);
+  serializePack(intBuffer, streamNint, CDI_DATATYPE_INT, packBuffer, packBufferSize, packBufferPos, context);
+  uint32_t d = cdiCheckSum(CDI_DATATYPE_INT, streamNint, intBuffer);
+  serializePack(&d, 1, CDI_DATATYPE_UINT32, packBuffer, packBufferSize, packBufferPos, context);
 
-  serializePack(&cdiDefaultMissval, 1, DATATYPE_FLT64, packBuffer, packBufferSize, packBufferPos, context);
-  serializePack(streamP->filename, intBuffer[2], DATATYPE_TXT, packBuffer, packBufferSize, packBufferPos, context);
-  d = cdiCheckSum(DATATYPE_TXT, intBuffer[2], streamP->filename);
-  serializePack(&d, 1, DATATYPE_UINT32, packBuffer, packBufferSize, packBufferPos, context);
+  serializePack(&cdiDefaultMissval, 1, CDI_DATATYPE_FLT64, packBuffer, packBufferSize, packBufferPos, context);
+  serializePack(streamP->filename, intBuffer[2], CDI_DATATYPE_TXT, packBuffer, packBufferSize, packBufferPos, context);
+  d = cdiCheckSum(CDI_DATATYPE_TXT, intBuffer[2], streamP->filename);
+  serializePack(&d, 1, CDI_DATATYPE_UINT32, packBuffer, packBufferSize, packBufferPos, context);
 }
 
 struct streamAssoc
@@ -37655,18 +38139,18 @@ streamUnpack(char * unpackBuffer, int unpackBufferSize,
   char filename[CDI_MAX_NAME];
 
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  intBuffer, streamNint, DATATYPE_INT, context);
+                  intBuffer, streamNint, CDI_DATATYPE_INT, context);
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &d, 1, DATATYPE_UINT32, context);
-  xassert(cdiCheckSum(DATATYPE_INT, streamNint, intBuffer) == d);
+                  &d, 1, CDI_DATATYPE_UINT32, context);
+  xassert(cdiCheckSum(CDI_DATATYPE_INT, streamNint, intBuffer) == d);
 
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &cdiDefaultMissval, 1, DATATYPE_FLT64, context);
+                  &cdiDefaultMissval, 1, CDI_DATATYPE_FLT64, context);
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &filename, intBuffer[2], DATATYPE_TXT, context);
+                  &filename, intBuffer[2], CDI_DATATYPE_TXT, context);
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &d, 1, DATATYPE_UINT32, context);
-  xassert(d == cdiCheckSum(DATATYPE_TXT, intBuffer[2], filename));
+                  &d, 1, CDI_DATATYPE_UINT32, context);
+  xassert(d == cdiCheckSum(CDI_DATATYPE_TXT, intBuffer[2], filename));
   int targetStreamID = namespaceAdaptKey(intBuffer[0], originNamespace),
     streamID = streamOpenID(filename, 'w', intBuffer[1], targetStreamID);
   xassert(streamID >= 0 && targetStreamID == streamID);
@@ -37718,15 +38202,15 @@ int cdiStreamWriteVar_(int streamID, int varID, int memtype, const void *data, i
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       {
         grb_write_var(streamptr, varID, memtype, data, nmiss);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         srvWriteVarDP(streamptr, varID, (double *)data);
@@ -37734,7 +38218,7 @@ int cdiStreamWriteVar_(int streamID, int varID, int memtype, const void *data, i
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         extWriteVarDP(streamptr, varID, (double *)data);
@@ -37742,7 +38226,7 @@ int cdiStreamWriteVar_(int streamID, int varID, int memtype, const void *data, i
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         iegWriteVarDP(streamptr, varID, (double *)data);
@@ -37750,10 +38234,10 @@ int cdiStreamWriteVar_(int streamID, int varID, int memtype, const void *data, i
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
         cdf_write_var(streamptr, varID, memtype, data, nmiss);
 	break;
@@ -37815,13 +38299,15 @@ void streamWriteVarF(int streamID, int varID, const float *data, int nmiss)
   int (*myCdiStreamWriteVar_)(int streamID, int varID, int memtype, const void *data, int nmiss)
     = (int (*)(int, int, int, const void *, int))
     namespaceSwitchGet(NSSWITCH_STREAM_WRITE_VAR_).func;
-  
+
   if ( myCdiStreamWriteVar_(streamID, varID, MEMTYPE_FLOAT, (const void *) data, nmiss) )
     {
       // In case the file format does not support single precision writing,
-      // we fall back to double precision writing, converting the data on the fly.
-      size_t elementCount = (size_t) gridInqSize(vlistInqVarGrid(streamInqVlist(streamID), varID));
-      elementCount *= (size_t) zaxisInqSize(vlistInqVarZaxis(streamInqVlist(streamID), varID));
+      // we fall back to double precision writing, converting the data
+      // on the fly.
+      int vlistID = streamInqVlist(streamID);
+      size_t elementCount = (size_t) gridInqSize(vlistInqVarGrid(vlistID, varID));
+      elementCount *= (size_t) zaxisInqSize(vlistInqVarZaxis(vlistID, varID));
       double *conversionBuffer = (double *) Malloc(elementCount*sizeof(*conversionBuffer));
       for ( size_t i = elementCount; i--; ) conversionBuffer[i] = (double) data[i];
       myCdiStreamWriteVar_(streamID, varID, MEMTYPE_DOUBLE, (const void *) conversionBuffer, nmiss);
@@ -37852,15 +38338,15 @@ int cdiStreamWriteVarSlice(int streamID, int varID, int levelID, int memtype, co
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       {
         grb_write_var_slice(streamptr, varID, levelID, memtype, data, nmiss);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         srvWriteVarSliceDP(streamptr, varID, levelID, (double *)data);
@@ -37868,7 +38354,7 @@ int cdiStreamWriteVarSlice(int streamID, int varID, int levelID, int memtype, co
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         extWriteVarSliceDP(streamptr, varID, levelID, (double *)data);
@@ -37876,7 +38362,7 @@ int cdiStreamWriteVarSlice(int streamID, int varID, int levelID, int memtype, co
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         iegWriteVarSliceDP(streamptr, varID, levelID, (double *)data);
@@ -37884,10 +38370,10 @@ int cdiStreamWriteVarSlice(int streamID, int varID, int levelID, int memtype, co
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       cdf_write_var_slice(streamptr, varID, levelID, memtype, data, nmiss);
       break;
 #endif
@@ -37980,17 +38466,17 @@ void cdiStreamWriteVarChunk_(int streamID, int varID, int memtype,
   switch (filetype)
     {
 #if defined (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
 #endif
 #if defined (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
 #endif
 #if defined (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
 #endif
 #if defined (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
 #endif
 #if  defined (HAVE_LIBGRIB) || defined (HAVE_LIBSERVICE)      \
   || defined (HAVE_LIBEXTRA) || defined (HAVE_LIBIEG)
@@ -37999,10 +38485,10 @@ void cdiStreamWriteVarChunk_(int streamID, int varID, int memtype,
       break;
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       cdf_write_var_chunk(streamptr, varID, memtype, rect, data, nmiss);
       break;
 #endif
@@ -38026,34 +38512,34 @@ int stream_write_record(int streamID, int memtype, const void *data, int nmiss)
   switch (streamptr->filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       grb_write_record(streamptr, memtype, data, nmiss);
       break;
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       if ( memtype == MEMTYPE_FLOAT ) return 1;
       srvWriteRecord(streamptr, (const double *)data);
       break;
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       if ( memtype == MEMTYPE_FLOAT ) return 1;
       extWriteRecord(streamptr, (const double *)data);
       break;
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       if ( memtype == MEMTYPE_FLOAT ) return 1;
       iegWriteRecord(streamptr, (const double *)data);
       break;
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
 	cdf_write_record(streamptr, memtype, data, nmiss);
 	break;
@@ -38132,15 +38618,15 @@ int cdiStreamReadVar(int streamID, int varID, int memtype, void *data, int *nmis
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       {
         grb_read_var(streamptr, varID, memtype, data, nmiss);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         srvReadVarDP(streamptr, varID, (double *)data, nmiss);
@@ -38148,7 +38634,7 @@ int cdiStreamReadVar(int streamID, int varID, int memtype, void *data, int *nmis
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         extReadVarDP(streamptr, varID, (double *)data, nmiss);
@@ -38156,7 +38642,7 @@ int cdiStreamReadVar(int streamID, int varID, int memtype, void *data, int *nmis
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         iegReadVarDP(streamptr, varID, (double *)data, nmiss);
@@ -38164,10 +38650,10 @@ int cdiStreamReadVar(int streamID, int varID, int memtype, void *data, int *nmis
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
         cdf_read_var(streamptr, varID, memtype, data, nmiss);
 	break;
@@ -38258,15 +38744,15 @@ int cdiStreamReadVarSlice(int streamID, int varID, int levelID, int memtype, voi
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       {
         grb_read_var_slice(streamptr, varID, levelID, memtype, data, nmiss);
 	break;
       }
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         srvReadVarSliceDP(streamptr, varID, levelID, (double *)data, nmiss);
@@ -38274,7 +38760,7 @@ int cdiStreamReadVarSlice(int streamID, int varID, int levelID, int memtype, voi
       }
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         extReadVarSliceDP(streamptr, varID, levelID, (double *)data, nmiss);
@@ -38282,7 +38768,7 @@ int cdiStreamReadVarSlice(int streamID, int varID, int levelID, int memtype, voi
       }
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       {
         if ( memtype == MEMTYPE_FLOAT ) return 1;
         iegReadVarSliceDP(streamptr, varID, levelID, (double *)data, nmiss);
@@ -38290,10 +38776,10 @@ int cdiStreamReadVarSlice(int streamID, int varID, int levelID, int memtype, voi
       }
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       {
         cdf_read_var_slice(streamptr, varID, levelID, memtype, data, nmiss);
         break;
@@ -38387,34 +38873,34 @@ int stream_read_record(int streamID, int memtype, void *data, int *nmiss)
   switch (streamptr->filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       grb_read_record(streamptr, memtype, data, nmiss);
       break;
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       if ( memtype == MEMTYPE_FLOAT ) return 1;
       srvReadRecord(streamptr, (double *)data, nmiss);
       break;
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       if ( memtype == MEMTYPE_FLOAT ) return 1;
       extReadRecord(streamptr, (double *)data, nmiss);
       break;
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       if ( memtype == MEMTYPE_FLOAT ) return 1;
       iegReadRecord(streamptr, (double *)data, nmiss);
       break;
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       cdf_read_record(streamptr, memtype, data, nmiss);
       break;
 #endif
@@ -38469,7 +38955,7 @@ void varAddRecord(int recID, int param, int gridID, int zaxistype, int lbounds,
 void varDefVCT(size_t vctsize, double *vctptr);
 void varDefZAxisReference(int nlev, int nvgrid, unsigned char uuid[CDI_UUID_SIZE]);
 
-int  varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, bool lbounds,
+int  varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, const char **cvals, size_t clength, bool lbounds,
 		 const double *levels1, const double *levels2, int vctsize, const double *vct, char *name,
 		 const char *longname, const char *units, int prec, int mode, int ltype);
 
@@ -38512,10 +38998,9 @@ bool zaxisCompare(int zaxisID, int zaxistype, int nlevels, bool lbounds, const d
 //#define TEST_GROUPS 1
 
 #include <ctype.h>
+#include <limits.h>
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
 
 #define  X_AXIS  1
 #define  Y_AXIS  2
@@ -38541,11 +39026,13 @@ typedef struct {
   bool     ignore;
   bool     isx;
   bool     isy;
+  bool     isc;
   bool     islon;
   bool     islat;
   bool     islev;
   bool     istime;
   bool     warn;
+  bool     calendar;
   bool     climatology;
   bool     lformulaterms;
   int      tsteptype;
@@ -38563,6 +39050,7 @@ typedef struct {
   int      xvarid;
   int      yvarid;
   int      zvarid;
+  int      cvarids[MAX_COORDVARS];
   int      tvarid;
   int      psvarid;
   int      p0varid;
@@ -38571,16 +39059,15 @@ typedef struct {
   int      nauxvars;
   int      auxvarids[MAX_AUXVARS];
   int      cellarea;
-  int      calendar;
   int      tableID;
   int      truncation;
   int      position;
   bool     defmissval;
   bool     deffillval;
   int      xtype;
-  int      ndims;
   int      gmapid;
   int      positive;
+  int      ndims;
   int      dimids[8];
   int      dimtype[8];
   int      chunks[8];
@@ -38679,17 +39166,11 @@ int scanTimeUnit(const char *unitstr)
 static
 void setForecastTime(const char *timestr, taxis_t *taxis)
 {
-  (*taxis).fdate = 0;
-  (*taxis).ftime = 0;
-
-  int len = (int) strlen(timestr);
-  if ( len == 0 ) return;
-
-  int fdate = 0, ftime = 0;
-  scanTimeString(timestr, &fdate, &ftime);
-
-  (*taxis).fdate = fdate;
-  (*taxis).ftime = ftime;
+  size_t len = strlen(timestr);
+  if ( len != 0 )
+    scanTimeString(timestr, &taxis->fdate, &taxis->ftime);
+  else
+    taxis->fdate = taxis->ftime = 0;
 }
 
 static
@@ -38699,53 +39180,57 @@ int setBaseTime(const char *timeunits, taxis_t *taxis)
   int rdate = -1, rtime = -1;
 
   size_t len = strlen(timeunits);
-  char *tu = (char *) Malloc((len+1) * sizeof (char));
-  memcpy(tu, timeunits, (len+1) * sizeof (char));
-  char *ptu = tu;
+  char *restrict tu = (char *)Malloc((len+1) * sizeof(char));
 
-  for ( size_t i = 0; i < len; i++ ) ptu[i] = (char)tolower((int) ptu[i]);
+  for ( size_t i = 0; i < len; i++ ) tu[i] = (char)tolower((int)timeunits[i]);
+  tu[len] = 0;
 
-  int timeunit = get_timeunit(len, ptu);
+  int timeunit = get_timeunit(len, tu);
   if ( timeunit == -1 )
     {
       Message("Unsupported TIMEUNIT: %s!", timeunits);
       return 1;
     }
 
-  while ( ! isspace(*ptu) && *ptu != 0 ) ptu++;
-  if ( *ptu )
+  size_t pos = 0;
+  while ( pos < len && !isspace(tu[pos]) ) ++pos;
+  if ( tu[pos] )
     {
-      while ( isspace(*ptu) ) ptu++;
+      while ( isspace(tu[pos]) ) ++pos;
 
-      if ( str_is_equal(ptu, "as") )
-        timetype = TAXIS_ABSOLUTE;
-      else if ( str_is_equal(ptu, "since") )
+      if ( str_is_equal(tu+pos, "since") )
         timetype = TAXIS_RELATIVE;
 
-      while ( ! isspace(*ptu) && *ptu != 0 ) ptu++;
-      if ( *ptu )
+      while ( pos < len && !isspace(tu[pos]) ) ++pos;
+      if ( tu[pos] )
         {
-          while ( isspace(*ptu) ) ptu++;
+          while ( isspace(tu[pos]) ) ++pos;
 
           if ( timetype == TAXIS_ABSOLUTE )
             {
-              if ( !str_is_equal(ptu, "%y%m%d.%f") && timeunit == TUNIT_DAY )
+              if ( timeunit == TUNIT_DAY )
                 {
-                  Message("Unsupported format %s for TIMEUNIT day!", ptu);
-                  timeunit = -1;
+                  if ( !str_is_equal(tu+pos, "%y%m%d.%f") )
+                    {
+                      Message("Unsupported format %s for TIMEUNIT day!", tu+pos);
+                      timeunit = -1;
+                    }
                 }
-              else if ( !str_is_equal(ptu, "%y%m.%f") && timeunit == TUNIT_MONTH )
+              else if ( timeunit == TUNIT_MONTH )
                 {
-                  Message("Unsupported format %s for TIMEUNIT month!", ptu);
-                  timeunit = -1;
+                  if ( !str_is_equal(tu+pos, "%y%m.%f") )
+                    {
+                      Message("Unsupported format %s for TIMEUNIT month!", tu+pos);
+                      timeunit = -1;
+                    }
                 }
             }
           else if ( timetype == TAXIS_RELATIVE )
             {
-              scanTimeString(ptu, &rdate, &rtime);
+              scanTimeString(tu+pos, &rdate, &rtime);
 
-              (*taxis).rdate = rdate;
-              (*taxis).rtime = rtime;
+              taxis->rdate = rdate;
+              taxis->rtime = rtime;
 
               if ( CDI_Debug )
                 Message("rdate = %d  rtime = %d", rdate, rtime);
@@ -38753,8 +39238,8 @@ int setBaseTime(const char *timeunits, taxis_t *taxis)
         }
     }
 
-  (*taxis).type = timetype;
-  (*taxis).unit = timeunit;
+  taxis->type = timetype;
+  taxis->unit = timeunit;
 
   Free(tu);
 
@@ -38765,56 +39250,106 @@ int setBaseTime(const char *timeunits, taxis_t *taxis)
 }
 
 static
-void cdfGetAttInt(int fileID, int ncvarid, const char *attname, int attlen, int *attint)
+bool xtypeIsText(int xtype)
 {
-  nc_type atttype;
-  size_t nc_attlen;
+  bool isText = ( xtype == NC_CHAR )
+#if  defined  (HAVE_NETCDF4)
+    || ( xtype == NC_STRING )
+#endif
+    ;
+  return isText;
+}
+
+static
+bool xtypeIsFloat(nc_type xtype)
+{
+  bool isFloat = xtype == NC_FLOAT || xtype == NC_DOUBLE;
+
+  return isFloat;
+}
+
+static
+bool xtypeIsInt(nc_type xtype)
+{
+  bool isInt = xtype == NC_SHORT || xtype == NC_INT
+            || xtype == NC_BYTE
+#if  defined  (HAVE_NETCDF4)
+            || xtype == NC_USHORT || xtype == NC_UINT
+            || xtype == NC_UBYTE
+#endif
+             ;
 
+  return isInt;
+}
+
+static
+int cdfInqDatatype(int xtype, bool lunsigned)
+{
+  int datatype = -1;
+
+#if  defined  (HAVE_NETCDF4)
+  if ( xtype == NC_BYTE && lunsigned ) xtype = NC_UBYTE;
+#endif
+
+  if      ( xtype == NC_BYTE   )  datatype = CDI_DATATYPE_INT8;
+  else if ( xtype == NC_CHAR   )  datatype = CDI_DATATYPE_UINT8;
+  else if ( xtype == NC_SHORT  )  datatype = CDI_DATATYPE_INT16;
+  else if ( xtype == NC_INT    )  datatype = CDI_DATATYPE_INT32;
+  else if ( xtype == NC_FLOAT  )  datatype = CDI_DATATYPE_FLT32;
+  else if ( xtype == NC_DOUBLE )  datatype = CDI_DATATYPE_FLT64;
+#if  defined  (HAVE_NETCDF4)
+  else if ( xtype == NC_UBYTE  )  datatype = CDI_DATATYPE_UINT8;
+  else if ( xtype == NC_LONG   )  datatype = CDI_DATATYPE_INT32;
+  else if ( xtype == NC_USHORT )  datatype = CDI_DATATYPE_UINT16;
+  else if ( xtype == NC_UINT   )  datatype = CDI_DATATYPE_UINT32;
+  else if ( xtype == NC_INT64  )  datatype = CDI_DATATYPE_FLT64;
+  else if ( xtype == NC_UINT64 )  datatype = CDI_DATATYPE_FLT64;
+#endif
+
+  return datatype;
+}
+
+static
+void cdfGetAttInt(int fileID, int ncvarid, const char *attname, size_t attlen, int *attint)
+{
   *attint = 0;
 
+  nc_type atttype;
+  size_t nc_attlen;
   cdf_inq_atttype(fileID, ncvarid, attname, &atttype);
   cdf_inq_attlen(fileID, ncvarid, attname, &nc_attlen);
 
-  if ( atttype != NC_CHAR )
+  if ( xtypeIsFloat(atttype) || xtypeIsInt(atttype) )
     {
-      int *pintatt = (int)nc_attlen > attlen
-        ? (int *)(Malloc(nc_attlen * sizeof (int))) : attint;
-
+      bool lalloc = nc_attlen > attlen;
+      int *pintatt = lalloc ? (int *)(Malloc(nc_attlen*sizeof(int))) : attint;
       cdf_get_att_int(fileID, ncvarid, attname, pintatt);
-
-      if ( (int)nc_attlen > attlen )
+      if ( lalloc )
         {
-          memcpy(attint, pintatt, (size_t)attlen * sizeof (int));
+          memcpy(attint, pintatt, attlen*sizeof(int));
           Free(pintatt);
         }
     }
 }
 
 static
-void cdfGetAttDouble(int fileID, int ncvarid, char *attname, int attlen, double *attdouble)
+void cdfGetAttDouble(int fileID, int ncvarid, char *attname, size_t attlen, double *attdouble)
 {
-  nc_type atttype;
-  size_t nc_attlen;
-
   *attdouble = 0;
 
+  nc_type atttype;
+  size_t nc_attlen;
   cdf_inq_atttype(fileID, ncvarid, attname, &atttype);
   cdf_inq_attlen(fileID, ncvarid, attname, &nc_attlen);
 
-  if ( atttype != NC_CHAR )
+  if ( xtypeIsFloat(atttype) || xtypeIsInt(atttype) )
     {
-      double *pdoubleatt = NULL;
-
-      if ( (int)nc_attlen > attlen )
-        pdoubleatt = (double *) Malloc(nc_attlen * sizeof (double));
-      else
-        pdoubleatt = attdouble;
-
+      bool lalloc = nc_attlen > attlen;
+      double *pdoubleatt = lalloc ? (double*)Malloc(nc_attlen*sizeof(double)) : attdouble;
       cdf_get_att_double(fileID, ncvarid, attname, pdoubleatt);
-
-      if ( (int)nc_attlen > attlen )
+      if ( lalloc )
         {
-          memcpy(attdouble, pdoubleatt, (size_t)attlen * sizeof (double));
+          memcpy(attdouble, pdoubleatt, attlen*sizeof(double));
           Free(pdoubleatt);
         }
     }
@@ -38890,108 +39425,26 @@ void cdfGetAttText(int fileID, int ncvarid, const char *attname, size_t attlen,
 #endif
 }
 
-static
-bool xtypeIsText(nc_type xtype)
-{
-  bool isText = false;
-
-  if      ( xtype == NC_CHAR ) isText = true;
-#if  defined  (HAVE_NETCDF4)
-  else if ( xtype == NC_STRING ) isText = true;
-#endif
-
-  return isText;
-}
-
-static
-bool xtypeIsFloat(nc_type xtype)
-{
-  bool isFloat = xtype == NC_FLOAT || xtype == NC_DOUBLE;
-
-  return isFloat;
-}
-
-static
-bool xtypeIsInt(nc_type xtype)
-{
-  bool isInt = xtype == NC_SHORT || xtype == NC_INT
-            || xtype == NC_BYTE
-#if  defined  (HAVE_NETCDF4)
-            || xtype == NC_USHORT || xtype == NC_UINT
-            || xtype == NC_UBYTE
-#endif
-             ;
-
-  return isInt;
-}
-
-static
-int cdfInqDatatype(int xtype, bool lunsigned)
-{
-  int datatype = -1;
-
-#if  defined  (HAVE_NETCDF4)
-  if ( xtype == NC_BYTE && lunsigned ) xtype = NC_UBYTE;
-#endif
-
-  if      ( xtype == NC_BYTE   )  datatype = DATATYPE_INT8;
-  /* else if ( xtype == NC_CHAR   )  datatype = DATATYPE_UINT8; */
-  else if ( xtype == NC_SHORT  )  datatype = DATATYPE_INT16;
-  else if ( xtype == NC_INT    )  datatype = DATATYPE_INT32;
-  else if ( xtype == NC_FLOAT  )  datatype = DATATYPE_FLT32;
-  else if ( xtype == NC_DOUBLE )  datatype = DATATYPE_FLT64;
-#if  defined  (HAVE_NETCDF4)
-  else if ( xtype == NC_UBYTE  )  datatype = DATATYPE_UINT8;
-  else if ( xtype == NC_LONG   )  datatype = DATATYPE_INT32;
-  else if ( xtype == NC_USHORT )  datatype = DATATYPE_UINT16;
-  else if ( xtype == NC_UINT   )  datatype = DATATYPE_UINT32;
-  else if ( xtype == NC_INT64  )  datatype = DATATYPE_FLT64;
-  else if ( xtype == NC_UINT64 )  datatype = DATATYPE_FLT64;
-#endif
 
-  return datatype;
-}
-
-
-/* not used
-int cdfInqRecord(stream_t *streamptr, int *varID, int *levelID)
+void cdf_scale_add(size_t size, double *data, double addoffset, double scalefactor)
 {
-  int tsID, recID;
-
-  recID = streamptr->tsteps[0].curRecID++;
-  printf("cdfInqRecord recID %d %d\n", recID, streamptr->tsteps[0].curRecID);
-  printf("cdfInqRecord tsID %d\n", streamptr->curTsID);
+  bool laddoffset   = IS_NOT_EQUAL(addoffset, 0);
+  bool lscalefactor = IS_NOT_EQUAL(scalefactor, 1);
 
-  if ( streamptr->tsteps[0].curRecID >= streamptr->tsteps[0].nrecs )
+  if ( laddoffset && lscalefactor )
     {
-      streamptr->tsteps[0].curRecID = 0;
+      for (size_t i = 0; i < size; ++i )
+        data[i] = data[i] * scalefactor + addoffset;
     }
-
-  *varID   = streamptr->tsteps[0].records[recID].varID;
-  *levelID = streamptr->tsteps[0].records[recID].levelID;
-
-  streamptr->record->varID   = *varID;
-  streamptr->record->levelID = *levelID;
-
-  if ( CDI_Debug )
-    Message("recID = %d  varID = %d  levelID = %d", recID, *varID, *levelID);
-
-  return (recID+1);
-}
-*/
-
-void cdf_scale_add(size_t size, double *data, double addoffset, double scalefactor)
-{
-  int laddoffset   = IS_NOT_EQUAL(addoffset, 0);
-  int lscalefactor = IS_NOT_EQUAL(scalefactor, 1);
-
-  if ( laddoffset || lscalefactor )
+  else if (lscalefactor)
     {
-      for ( size_t i = 0; i < size; ++i )
-        {
-          if ( lscalefactor ) data[i] *= scalefactor;
-          if ( laddoffset )   data[i] += addoffset;
-        }
+      for (size_t i = 0; i < size; ++i )
+        data[i] *= scalefactor;
+    }
+  else if (laddoffset)
+    {
+      for (size_t i = 0; i < size; ++i )
+        data[i] += addoffset;
     }
 }
 
@@ -39157,18 +39610,19 @@ void init_ncvars(long nvars, ncvar_t *ncvars)
       ncvars[ncvarid].ignore          = false;
       ncvars[ncvarid].isx             = false;
       ncvars[ncvarid].isy             = false;
+      ncvars[ncvarid].isc             = false;
       ncvars[ncvarid].islon           = false;
       ncvars[ncvarid].islat           = false;
       ncvars[ncvarid].islev           = false;
       ncvars[ncvarid].istime          = false;
       ncvars[ncvarid].warn            = false;
+      ncvars[ncvarid].calendar        = false;
       ncvars[ncvarid].climatology     = false;
       ncvars[ncvarid].lformulaterms   = false;
       ncvars[ncvarid].tsteptype       = TSTEP_CONSTANT;
       ncvars[ncvarid].param           = CDI_UNDEFID;
       ncvars[ncvarid].code            = CDI_UNDEFID;
       ncvars[ncvarid].tabnum          = 0;
-      ncvars[ncvarid].calendar        = FALSE;
       ncvars[ncvarid].bounds          = CDI_UNDEFID;
       ncvars[ncvarid].gridID          = CDI_UNDEFID;
       ncvars[ncvarid].zaxisID         = CDI_UNDEFID;
@@ -39185,7 +39639,10 @@ void init_ncvars(long nvars, ncvar_t *ncvars)
       ncvars[ncvarid].p0varid         = CDI_UNDEFID;
       ncvars[ncvarid].ncoordvars      = 0;
       for ( int i = 0; i < MAX_COORDVARS; ++i )
-        ncvars[ncvarid].coordvarids[i]  = CDI_UNDEFID;
+        {
+          ncvars[ncvarid].coordvarids[i]  = CDI_UNDEFID;
+          ncvars[ncvarid].cvarids[i]      = CDI_UNDEFID;
+        }
       ncvars[ncvarid].nauxvars      = 0;
       for ( int i = 0; i < MAX_AUXVARS; ++i )
         ncvars[ncvarid].auxvarids[i]  = CDI_UNDEFID;
@@ -39254,21 +39711,18 @@ void cdf_set_dim(ncvar_t *ncvars, int ncvarid, int dimid, int dimtype)
 }
 
 static
-int scan_hybrid_formulaterms(int ncid, int ncfvarid, int *apvarid, int *bvarid, int *psvarid, int *avarid, int *p0varid)
+void scan_hybrid_formulaterms(int ncid, int ncfvarid, int *avarid, int *bvarid, int *psvarid, int *p0varid)
 {
-  int status = 1;
-  *apvarid = -1;
+  *avarid  = -1;
   *bvarid  = -1;
   *psvarid = -1;
-  *avarid  = -1;
   *p0varid = -1;
-  char attstring[1024];
 
-  bool lstop = false;
-  int dimvarid;
+  char attstring[1024];
   cdfGetAttText(ncid, ncfvarid, "formula_terms", sizeof(attstring), attstring);
   char *pstring = attstring;
 
+  bool lstop = false;
   for ( int i = 0; i < 4; i++ )
     {
       while ( isspace((int) *pstring) ) pstring++;
@@ -39285,10 +39739,12 @@ int scan_hybrid_formulaterms(int ncid, int ncfvarid, int *apvarid, int *bvarid,
       if ( *pstring == 0 ) lstop = true;
       *pstring++ = 0;
 
+      int dimvarid;
       int status_nc = nc_inq_varid(ncid, varname, &dimvarid);
       if ( status_nc == NC_NOERR )
         {
-          if      ( strcmp(tagname, "ap:") == 0 ) *apvarid = dimvarid;
+          if      ( strcmp(tagname, "ap:") == 0 ) *avarid  = dimvarid;
+          else if ( strcmp(tagname, "a:")  == 0 ) *avarid  = dimvarid;
           else if ( strcmp(tagname, "b:")  == 0 ) *bvarid  = dimvarid;
           else if ( strcmp(tagname, "ps:") == 0 ) *psvarid = dimvarid;
           else if ( strcmp(tagname, "p0:") == 0 ) *p0varid = dimvarid;
@@ -39300,8 +39756,6 @@ int scan_hybrid_formulaterms(int ncid, int ncfvarid, int *apvarid, int *bvarid,
 
       if ( lstop ) break;
     }
-
-  return status;
 }
 
 static
@@ -39316,59 +39770,68 @@ bool isHybridSigmaPressureCoordinate(int ncid, int ncvarid, ncvar_t *ncvars, con
 
       status = true;
       ncvar->zaxistype = ZAXIS_HYBRID;
+      //int ndims = ncvar->ndims;
       int dimid = ncvar->dimids[0];
       size_t dimlen = ncdims[dimid].len;
-
-      int ret = 0;
-      int apvarid1 = -1, bvarid1 = -1, psvarid1 = -1, avarid1 = -1, p0varid1 = -1;
+      int avarid1 = -1, bvarid1 = -1, psvarid1 = -1, p0varid1 = -1;
       int ncfvarid = ncvarid;
       if ( ncvars[ncfvarid].lformulaterms )
-        ret = scan_hybrid_formulaterms(ncid, ncfvarid, &apvarid1, &bvarid1, &psvarid1, &avarid1, &p0varid1);
-      // printf("ret %d apvarid1, bvarid1, psvarid1, avarid1, p0varid1 %d %d %d %d %d\n", ret, apvarid1, bvarid1, psvarid1, avarid1, p0varid1);
-      if ( apvarid1 != -1 ) ncvars[apvarid1].isvar = FALSE;
-      if ( bvarid1  != -1 ) ncvars[bvarid1].isvar  = FALSE;
-      if ( psvarid1 != -1 ) ncvar->psvarid = psvarid1;
+        scan_hybrid_formulaterms(ncid, ncfvarid, &avarid1, &bvarid1, &psvarid1, &p0varid1);
+      // printf("avarid1, bvarid1, psvarid1, p0varid1 %d %d %d %d\n", avarid1, bvarid1, psvarid1, p0varid1);
       if ( avarid1  != -1 ) ncvars[avarid1].isvar = FALSE;
+      if ( bvarid1  != -1 ) ncvars[bvarid1].isvar = FALSE;
+      if ( psvarid1 != -1 ) ncvar->psvarid = psvarid1;
       if ( p0varid1 != -1 ) ncvar->p0varid = p0varid1;
 
       if ( ncvar->bounds != CDI_UNDEFID && ncvars[ncvar->bounds].lformulaterms )
         {
           ncfvarid = ncvar->bounds;
-          int apvarid2 = -1, bvarid2 = -1, psvarid2 = -1, avarid2 = -1, p0varid2 = -1;
-          ret = 0;
+          int avarid2 = -1, bvarid2 = -1, psvarid2 = -1, p0varid2 = -1;
           if ( ncvars[ncfvarid].lformulaterms )
-            ret = scan_hybrid_formulaterms(ncid, ncfvarid, &apvarid2, &bvarid2, &psvarid2, &avarid2, &p0varid2);
-          // printf("ret %d apvarid2, bvarid2, psvarid2, avarid2, p0varid2 %d %d %d %d %d\n", ret, apvarid2, bvarid2, psvarid2, avarid2, p0varid2);
-          if ( ret == 1 ) avarid2 = apvarid2;
+            scan_hybrid_formulaterms(ncid, ncfvarid, &avarid2, &bvarid2, &psvarid2, &p0varid2);
+          // printf("avarid2, bvarid2, psvarid2, p0varid2 %d %d %d %d\n", avarid2, bvarid2, psvarid2, p0varid2);
           if ( avarid2 != -1 && bvarid2 != -1 )
             {
               ncvars[avarid2].isvar = FALSE;
               ncvars[bvarid2].isvar = FALSE;
 
-              if ( dimid == ncvars[avarid2].dimids[0] && ncdims[ncvars[avarid2].dimids[1]].len == 2 )
+              int ndims2 = ncvars[avarid2].ndims;
+              int dimid2 = ncvars[avarid2].dimids[0];
+              size_t dimlen2 = ncdims[dimid2].len;
+
+              if ( (ndims2 == 2 && dimid == ncvars[avarid2].dimids[0] ) ||
+                   (ndims2 == 1 && dimlen == dimlen2-1 ) )
                 {
                   double px = 1;
-                  if ( ret == 2 && p0varid1 == p0varid2 )
+                  if ( p0varid1 != -1 && p0varid1 == p0varid2 )
                     cdf_get_var_double(ncid, p0varid2, &px);
 
                   double abuf[dimlen*2], bbuf[dimlen*2];
                   cdf_get_var_double(ncid, avarid2, abuf);
                   cdf_get_var_double(ncid, bvarid2, bbuf);
-                  /*
-                  for ( int i = 0; i < dimlen; ++i )
-                    printf("%d  %g %g    %g %g\n", i, abuf[i*2], abuf[i*2+1], bbuf[i*2], bbuf[i*2+1]);
-                  */
+
                   size_t vctsize = (dimlen+1)*2;
-                  double *vct = (double *) Malloc(vctsize * sizeof(double));
-                  for ( size_t i = 0; i < dimlen; ++i )
+                  double *vct = (double *) Malloc(vctsize*sizeof(double));
+                  if ( ndims2 == 2 )
                     {
-                      vct[i] = abuf[i*2];
-                      vct[i+dimlen+1] = bbuf[i*2];
+                      for ( size_t i = 0; i < dimlen; ++i )
+                        {
+                          vct[i] = abuf[i*2];
+                          vct[i+dimlen+1] = bbuf[i*2];
+                        }
+                      vct[dimlen]     = abuf[dimlen*2-1];
+                      vct[dimlen*2+1] = bbuf[dimlen*2-1];
+                    }
+                  else
+                    {
+                       for ( size_t i = 0; i < dimlen2; ++i )
+                        {
+                          vct[i] = abuf[i];
+                          vct[i+dimlen+1] = bbuf[i];
+                        }
                     }
-                  vct[dimlen]     = abuf[dimlen*2-1];
-                  vct[dimlen*2+1] = bbuf[dimlen*2-1];
 
-                  if ( ret == 2 && IS_NOT_EQUAL(px, 1) )
+                  if ( p0varid1 != -1 && IS_NOT_EQUAL(px, 1) )
                     for ( size_t i = 0; i < dimlen+1; ++i ) vct[i] *= px;
 
                   ncvar->vct = vct;
@@ -39391,26 +39854,25 @@ void cdf_set_cdi_attr(int ncid, int ncvarid, int attnum, int cdiID, int varID)
   cdf_inq_attname(ncid, ncvarid, attnum, attname);
   cdf_inq_attlen(ncid, ncvarid, attname, &attlen);
   cdf_inq_atttype(ncid, ncvarid, attname, &atttype);
-
   if ( xtypeIsInt(atttype) )
     {
       int attint[attlen];
-      cdfGetAttInt(ncid, ncvarid, attname, (int)attlen, attint);
-      int datatype = (atttype == NC_SHORT)  ? DATATYPE_INT16 :
-                     (atttype == NC_BYTE)   ? DATATYPE_INT8 :
+      cdfGetAttInt(ncid, ncvarid, attname, attlen, attint);
+      int datatype = (atttype == NC_SHORT)  ? CDI_DATATYPE_INT16 :
+                     (atttype == NC_BYTE)   ? CDI_DATATYPE_INT8 :
 #if  defined  (HAVE_NETCDF4)
-                     (atttype == NC_UBYTE)  ? DATATYPE_UINT8 :
-                     (atttype == NC_USHORT) ? DATATYPE_UINT16 :
-                     (atttype == NC_UINT)   ? DATATYPE_UINT32 :
+                     (atttype == NC_UBYTE)  ? CDI_DATATYPE_UINT8 :
+                     (atttype == NC_USHORT) ? CDI_DATATYPE_UINT16 :
+                     (atttype == NC_UINT)   ? CDI_DATATYPE_UINT32 :
 #endif
-                     DATATYPE_INT32;
+                     CDI_DATATYPE_INT32;
       cdiDefAttInt(cdiID, varID, attname, datatype, (int)attlen, attint);
     }
   else if ( xtypeIsFloat(atttype) )
     {
       double attflt[attlen];
-      cdfGetAttDouble(ncid, ncvarid, attname, (int)attlen, attflt);
-      int datatype = (atttype == NC_FLOAT) ? DATATYPE_FLT32 : DATATYPE_FLT64;
+      cdfGetAttDouble(ncid, ncvarid, attname, attlen, attflt);
+      int datatype = (atttype == NC_FLOAT) ? CDI_DATATYPE_FLT32 : CDI_DATATYPE_FLT64;
       cdiDefAttFlt(cdiID, varID, attname, datatype, (int)attlen, attflt);
     }
   else if ( xtypeIsText(atttype) )
@@ -39603,7 +40065,14 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
           int storage_in;
           nc_inq_var_deflate(ncid, ncvarid, &shuffle, &deflate, &deflate_level);
           if ( deflate > 0 ) ncvars[ncvarid].deflate = 1;
-
+          /*
+          size_t cache_size, nelems;
+          float preemption;
+          nc_get_chunk_cache(&cache_size, &nelems, &preemption);
+          printf("cache_size %lu nelems %lu preemption %g\n", cache_size, nelems, preemption);
+          nc_get_var_chunk_cache(ncid, ncvarid, &cache_size, &nelems, &preemption);
+          printf("varid %d cache_size %lu nelems %lu preemption %g\n", ncvarid, cache_size, nelems, preemption);
+          */
           if ( nc_inq_var_chunking(ncid, ncvarid, &storage_in, chunks) == NC_NOERR )
             {
               if ( storage_in == NC_CHUNKED )
@@ -39664,6 +40133,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
 
           size_t attstringsize = sizeof(attstring);
           bool isText = xtypeIsText(atttype);
+          bool isNumber = xtypeIsFloat(atttype) || xtypeIsInt(atttype);
           if ( isText )
             {
               cdfGetAttText(ncid, ncvarid, attname, sizeof(attstring), attstring);
@@ -39685,7 +40155,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
             }
           else if ( strcmp(attname, "calendar") == 0 )
             {
-              ncvars[ncvarid].calendar = TRUE;
+              ncvars[ncvarid].calendar = true;
             }
           else if ( isText && strcmp(attname, "param") == 0 )
             {
@@ -39694,12 +40164,12 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
 	      ncvars[ncvarid].param = cdiEncodeParam(pnum, pcat, pdis);
               cdf_set_var(ncvars, ncvarid, TRUE);
             }
-          else if ( !isText && strcmp(attname, "code") == 0 )
+          else if ( isNumber && strcmp(attname, "code") == 0 )
             {
               cdfGetAttInt(ncid, ncvarid, attname, 1, &ncvars[ncvarid].code);
               cdf_set_var(ncvars, ncvarid, TRUE);
             }
-          else if ( !isText && strcmp(attname, "table") == 0 )
+          else if ( isNumber && strcmp(attname, "table") == 0 )
             {
               int tablenum;
               cdfGetAttInt(ncid, ncvarid, attname, 1, &tablenum);
@@ -39729,19 +40199,19 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
               set_zaxistype(attstring, &ncvars[ncvarid].zaxistype);
               cdf_set_var(ncvars, ncvarid, TRUE);
             }
-          else if ( !isText && strcmp(attname, "trunc_count") == 0 )
+          else if ( isNumber && strcmp(attname, "trunc_count") == 0 )
             {
               cdfGetAttInt(ncid, ncvarid, attname, 1, &ncvars[ncvarid].truncation);
             }
-          else if ( !isText && strcmp(attname, "truncation") == 0 )
+          else if ( isNumber && strcmp(attname, "truncation") == 0 )
             {
               cdfGetAttInt(ncid, ncvarid, attname, 1, &ncvars[ncvarid].truncation);
             }
-          else if ( !isText && strcmp(attname, "number_of_grid_in_reference") == 0 )
+          else if ( isNumber && strcmp(attname, "number_of_grid_in_reference") == 0 )
             {
               cdfGetAttInt(ncid, ncvarid, attname, 1, &ncvars[ncvarid].position);
             }
-          else if ( !isText && strcmp(attname, "add_offset") == 0 )
+          else if ( isNumber && strcmp(attname, "add_offset") == 0 )
             {
 	      cdfGetAttDouble(ncid, ncvarid, attname, 1, &ncvars[ncvarid].addoffset);
 	      /*
@@ -39751,7 +40221,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
 	      */
 	      /* (also used for lon/lat) cdf_set_var(ncvars, ncvarid, TRUE); */
             }
-          else if ( !isText && strcmp(attname, "scale_factor") == 0 )
+          else if ( isNumber && strcmp(attname, "scale_factor") == 0 )
             {
 	      cdfGetAttDouble(ncid, ncvarid, attname, 1, &ncvars[ncvarid].scalefactor);
 	      /*
@@ -39840,7 +40310,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                   if ( status == NC_NOERR )
                     {
                       cdf_set_var(ncvars, dimvarid, FALSE);
-                      if ( cdiIgnoreAttCoordinates == false )
+                      if ( !cdiIgnoreAttCoordinates )
                         {
                           ncvars[ncvarid].coordvarids[i] = dimvarid;
                           ncvars[ncvarid].ncoordvars++;
@@ -39883,7 +40353,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                   if ( status == NC_NOERR )
                     {
                       cdf_set_var(ncvars, dimvarid, FALSE);
-                      //  if ( cdiIgnoreAttCoordinates == FALSE )
+                      //  if ( !cdiIgnoreAttCoordinates )
                         {
                           ncvars[ncvarid].auxvarids[i] = dimvarid;
                           ncvars[ncvarid].nauxvars++;
@@ -39925,25 +40395,24 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                   ncdims[ncvars[ncvarid].dimids[0]].dimtype = Z_AXIS;
                 }
             }
-          else if ( !isText && strcmp(attname, "_FillValue") == 0 )
+          else if ( isNumber && strcmp(attname, "_FillValue") == 0 )
             {
 	      cdfGetAttDouble(ncid, ncvarid, attname, 1, &ncvars[ncvarid].fillval);
 	      ncvars[ncvarid].deffillval = true;
 	      /* cdf_set_var(ncvars, ncvarid, TRUE); */
             }
-          else if ( !isText && strcmp(attname, "missing_value") == 0 )
+          else if ( isNumber && strcmp(attname, "missing_value") == 0 )
             {
 	      cdfGetAttDouble(ncid, ncvarid, attname, 1, &ncvars[ncvarid].missval);
 	      ncvars[ncvarid].defmissval = true;
 	      /* cdf_set_var(ncvars, ncvarid, TRUE); */
             }
-          else if ( strcmp(attname, "valid_range") == 0 && attlen == 2 )
+          else if ( isNumber && strcmp(attname, "valid_range") == 0 && attlen == 2 )
             {
               if ( ncvars[ncvarid].lvalidrange == false )
                 {
-                  extern int cdiIgnoreValidRange;
                   bool lignore = xtypeIsFloat(atttype) != xtypeIsFloat(xtype);
-                  if ( cdiIgnoreValidRange == FALSE && lignore == false )
+                  if ( !cdiIgnoreValidRange && lignore == false )
                     {
                       cdfGetAttDouble(ncid, ncvarid, attname, 2, ncvars[ncvarid].validrange);
                       ncvars[ncvarid].lvalidrange = true;
@@ -39957,13 +40426,12 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                     }
                 }
             }
-          else if ( strcmp(attname, "valid_min") == 0 && attlen == 1 )
+          else if ( isNumber && strcmp(attname, "valid_min") == 0 && attlen == 1 )
             {
               if ( ncvars[ncvarid].lvalidrange == false )
                 {
-                  extern int cdiIgnoreValidRange;
                   bool lignore = xtypeIsFloat(atttype) != xtypeIsFloat(xtype);
-                  if ( cdiIgnoreValidRange == FALSE && lignore == false )
+                  if ( !cdiIgnoreValidRange && lignore == false )
                     {
                       cdfGetAttDouble(ncid, ncvarid, attname, 1, &(ncvars[ncvarid].validrange)[0]);
                       ncvars[ncvarid].lvalidrange = true;
@@ -39974,13 +40442,12 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                     }
                 }
             }
-          else if ( strcmp(attname, "valid_max") == 0 && attlen == 1 )
+          else if ( isNumber && strcmp(attname, "valid_max") == 0 && attlen == 1 )
             {
               if ( ncvars[ncvarid].lvalidrange == false )
                 {
-                  extern int cdiIgnoreValidRange;
                   bool lignore = xtypeIsFloat(atttype) != xtypeIsFloat(xtype);
-                  if ( cdiIgnoreValidRange == FALSE && lignore == false )
+                  if ( !cdiIgnoreValidRange && lignore == false )
                     {
                       cdfGetAttDouble(ncid, ncvarid, attname, 1, &(ncvars[ncvarid].validrange)[1]);
                       ncvars[ncvarid].lvalidrange = true;
@@ -40038,9 +40505,10 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                   cdf_scan_attr_axis(ncvars, ncdims, ncvarid, attstring, attlen, nvdims, dimidsp, name);
 		}
 	    }
-	  else if ( ( strcmp(attname, "realization") == 0 )         ||
-	            ( strcmp(attname, "ensemble_members") == 0 )    ||
-	            ( strcmp(attname, "forecast_init_type") == 0 )    )
+	  else if ( isNumber &&
+                    (strcmp(attname, "realization") == 0       ||
+                     strcmp(attname, "ensemble_members") == 0  ||
+                     strcmp(attname, "forecast_init_type") == 0) )
 	    {
 	      int temp;
 
@@ -40106,10 +40574,9 @@ void cdf_set_dimtype(int nvars, ncvar_t *ncvars, ncdim_t *ncdims)
 	  for ( int i = 0; i < ndims; i++ )
 	    {
 	      int ncdimid = ncvars[ncvarid].dimids[i];
-	      if      ( ncdims[ncdimid].dimtype == X_AXIS ) cdf_set_dim(ncvars, ncvarid, i, X_AXIS);
-	      else if ( ncdims[ncdimid].dimtype == Y_AXIS ) cdf_set_dim(ncvars, ncvarid, i, Y_AXIS);
-	      else if ( ncdims[ncdimid].dimtype == Z_AXIS ) cdf_set_dim(ncvars, ncvarid, i, Z_AXIS);
-	      else if ( ncdims[ncdimid].dimtype == T_AXIS ) cdf_set_dim(ncvars, ncvarid, i, T_AXIS);
+              int dimtype = ncdims[ncdimid].dimtype;
+	      if ( dimtype >= X_AXIS && dimtype <= T_AXIS )
+                cdf_set_dim(ncvars, ncvarid, i, dimtype);
 	    }
 
 	  if ( CDI_Debug )
@@ -40127,15 +40594,20 @@ void cdf_set_dimtype(int nvars, ncvar_t *ncvars, ncdim_t *ncdims)
       if ( ncvars[ncvarid].isvar == TRUE )
 	{
 	  bool lxdim = false, lydim = false, lzdim = false/* , ltdim = false */;
+          int lcdim = 0;
 	  int ndims = ncvars[ncvarid].ndims;
 	  for ( int i = 0; i < ndims; i++ )
 	    {
-	      if      ( ncvars[ncvarid].dimtype[i] == X_AXIS ) lxdim = true;
-	      else if ( ncvars[ncvarid].dimtype[i] == Y_AXIS ) lydim = true;
-	      else if ( ncvars[ncvarid].dimtype[i] == Z_AXIS ) lzdim = true;
+              int dimtype = ncvars[ncvarid].dimtype[i];
+              lxdim = lxdim | (dimtype == X_AXIS);
+	      lydim = lydim | (dimtype == Y_AXIS);
+	      lzdim = lzdim | (dimtype == Z_AXIS);
+              if ( ncvars[ncvarid].cvarids[i] != CDI_UNDEFID ) lcdim++;
 	      /* else if ( ncvars[ncvarid].dimtype[i] == T_AXIS ) ltdim = true; */
 	    }
 
+          int allcdims = lcdim;
+
           if ( !lxdim && ncvars[ncvarid].xvarid != CDI_UNDEFID )
             {
               if ( ncvars[ncvars[ncvarid].xvarid].ndims == 0 ) lxdim = true;
@@ -40153,6 +40625,13 @@ void cdf_set_dimtype(int nvars, ncvar_t *ncvars, ncdim_t *ncdims)
                   {
                     if ( !lzdim )
                       {
+                        if ( lcdim )
+                          {
+                            int cdimvar = ncvars[ncvarid].cvarids[allcdims-lcdim];
+                            ncvars[ncvarid].zvarid = cdimvar;
+                            lcdim--;
+		            ncvars[cdimvar].zaxistype = ZAXIS_CHAR;
+                          }
                         cdf_set_dim(ncvars, ncvarid, i, Z_AXIS);
                         lzdim = true;
                         int ncdimid = ncvars[ncvarid].dimids[i];
@@ -40186,15 +40665,19 @@ void cdf_set_dimtype(int nvars, ncvar_t *ncvars, ncdim_t *ncdims)
       if ( ncvars[ncvarid].isvar == TRUE )
 	{
 	  bool lxdim = false, lydim = false, lzdim = false/* , ltdim = false */;
+          int lcdim = 0;
 	  int ndims = ncvars[ncvarid].ndims;
 	  for ( int i = 0; i < ndims; i++ )
 	    {
 	      if      ( ncvars[ncvarid].dimtype[i] == X_AXIS ) lxdim = true;
 	      else if ( ncvars[ncvarid].dimtype[i] == Y_AXIS ) lydim = true;
 	      else if ( ncvars[ncvarid].dimtype[i] == Z_AXIS ) lzdim = true;
+              else if ( ncvars[ncvarid].cvarids[i] != CDI_UNDEFID ) lcdim++;
 	      /* else if ( ncvars[ncvarid].dimtype[i] == T_AXIS ) ltdim = true; */
 	    }
 
+          int allcdims = lcdim;
+
           if ( !lxdim && ncvars[ncvarid].xvarid != CDI_UNDEFID )
             {
               if ( ncvars[ncvars[ncvarid].xvarid].ndims == 0 ) lxdim = true;
@@ -40212,16 +40695,35 @@ void cdf_set_dimtype(int nvars, ncvar_t *ncvars, ncdim_t *ncdims)
                   {
                     if ( !lxdim )
                       {
+                        if ( lcdim && ncvars[ncvarid].xvarid == CDI_UNDEFID )
+                          {
+                            int cdimvar = ncvars[ncvarid].cvarids[allcdims-lcdim];
+                            ncvars[ncvarid].xvarid = cdimvar;
+                            lcdim--;
+                          }
                         cdf_set_dim(ncvars, ncvarid, i, X_AXIS);
                         lxdim = true;
                       }
                     else if ( !lydim && ncvars[ncvarid].gridtype != GRID_UNSTRUCTURED )
                       {
+                        if ( lcdim && ncvars[ncvarid].yvarid == CDI_UNDEFID )
+                          {
+                            int cdimvar = ncvars[ncvarid].cvarids[allcdims-lcdim];
+                            ncvars[ncvarid].yvarid = cdimvar;
+                            lcdim--;
+                          }
                         cdf_set_dim(ncvars, ncvarid, i, Y_AXIS);
                         lydim = true;
                       }
                     else if ( !lzdim )
                       {
+                        if ( lcdim > 0 )
+                          {
+                            int cdimvar = ncvars[ncvarid].cvarids[allcdims-lcdim];
+                            ncvars[ncvarid].zvarid = cdimvar;
+                            lcdim--;
+		            ncvars[cdimvar].zaxistype = ZAXIS_CHAR;
+                          }
                         cdf_set_dim(ncvars, ncvarid, i, Z_AXIS);
                         lzdim = true;
                       }
@@ -40415,6 +40917,12 @@ void verify_coordinate_vars_2(int nvars, ncvar_t *ncvars)
 		  continue;
 		}
             }
+          else if ( strcmp(ncvars[ncvarid].stdname, "region") == 0  ||
+                    strcmp(ncvars[ncvarid].stdname, "area_type") == 0 ||
+                    cdfInqDatatype(ncvars[ncvarid].xtype, ncvars[ncvarid].lunsigned) == CDI_DATATYPE_UINT8 )
+            {
+              ncvars[ncvarid].isc = true;
+            }
 
 	  /* not needed anymore for rotated grids */
 	  if ( !ncvars[ncvarid].islon && ncvars[ncvarid].longname[0] != 0 &&
@@ -40444,10 +40952,8 @@ void grid_set_chunktype(grid_t *grid, ncvar_t *ncvar)
 
       if ( grid->type == GRID_UNSTRUCTURED )
         {
-          if ( ncvar->chunks[ndims-1] == grid->size )
-            ncvar->chunktype = CDI_CHUNK_GRID;
-          else
-            ncvar->chunktype = CDI_CHUNK_AUTO;
+          ncvar->chunktype = ncvar->chunks[ndims-1] == grid->size
+            ? CDI_CHUNK_GRID : CDI_CHUNK_AUTO;
         }
       else
         {
@@ -40494,6 +41000,20 @@ void cdf_load_vals(size_t size, int ndims, int varid, ncvar_t *ncvar, double **g
 }
 
 static
+void cdf_load_cvals(size_t size, int varid, ncvar_t *ncvar, char ***gridvals, size_t dimlength)
+{
+  size_t startc[] = {0, 0};
+  size_t countc[] = {1, size/dimlength};
+  *gridvals = (char **) Malloc(dimlength * sizeof(char *));
+  for ( size_t i = 0; i < dimlength; i++ )
+    {
+      (*gridvals)[i] = (char*) Malloc((size/dimlength) * sizeof(char));
+      cdf_get_vara_text(ncvar->ncid, varid, startc, countc, (*gridvals)[i]);
+      startc[0] = i+1;
+    }
+}
+
+static
 void cdf_load_bounds(size_t size, ncvar_t *ncvar, double **gridbounds, struct cdfLazyGridIds *cellBoundsGet)
 {
   if ( CDI_netcdf_lazy_grid_load )
@@ -40531,6 +41051,8 @@ void cdf_copy_axis_attr(ncvar_t *ncvar, struct gridaxis_t *gridaxis)
   strcpy(gridaxis->name, ncvar->name);
   strcpy(gridaxis->longname, ncvar->longname);
   strcpy(gridaxis->units, ncvar->units);
+  if ( gridaxis->cvals )
+    gridaxis->stdname = ncvar->stdname;
 }
 
 static
@@ -40613,16 +41135,28 @@ bool cdf_read_xcoord(struct cdfLazyGrid *restrict lazyGrid, ncdim_t *ncdims, ncv
   *islon = axisvar->islon;
   int ndims = axisvar->ndims;
   size_t size = 0;
+  int prec = cdfInqDatatype(axisvar->xtype, axisvar->lunsigned);
+
   if ( (ndims - ntdims) == 2 )
     {
-      ncvar->gridtype = GRID_CURVILINEAR;
-      size = (*xsize)*ysize;
       /* Check size of 2 dimensional coordinate variables */
       int dimid = axisvar->dimids[ndims-2];
       size_t dimsize1 = ncdims[dimid].len;
       dimid = axisvar->dimids[ndims-1];
       size_t dimsize2 = ncdims[dimid].len;
-      skipvar = dimsize1*dimsize2 != size;
+
+      if ( prec == CDI_DATATYPE_UINT8 )
+        {
+          ncvar->gridtype = GRID_CHARXY;
+          size = dimsize1*dimsize2;
+          skipvar = dimsize1 != *xsize;
+        }
+      else
+        {
+          ncvar->gridtype = GRID_CURVILINEAR;
+          size = (*xsize)*ysize;
+          skipvar = dimsize1*dimsize2 != size;
+        }
     }
   else if ( (ndims - ntdims) == 1 )
     {
@@ -40645,9 +41179,15 @@ bool cdf_read_xcoord(struct cdfLazyGrid *restrict lazyGrid, ncdim_t *ncdims, ncv
       return true;
     }
 
-  if ( axisvar->xtype == NC_FLOAT ) grid->prec = DATATYPE_FLT32;
+  if ( prec != -1 )  grid->prec = prec;
 
-  cdf_load_vals(size, ndims, xvarid, axisvar, &grid->x.vals, &lazyGrid->xValsGet, ntdims, start, count);
+  if ( prec == CDI_DATATYPE_UINT8 && !CDI_netcdf_lazy_grid_load )
+    {
+      cdf_load_cvals(size, xvarid, axisvar, &grid->x.cvals, *xsize);
+      grid->x.clength = size / (*xsize) ;
+    }
+  else
+    cdf_load_vals(size, ndims, xvarid, axisvar, &grid->x.vals, &lazyGrid->xValsGet, ntdims, start, count);
 
   cdf_copy_axis_attr(axisvar, &grid->x);
 
@@ -40663,16 +41203,28 @@ bool cdf_read_ycoord(struct cdfLazyGrid *restrict lazyGrid, ncdim_t *ncdims, ncv
   *islat = axisvar->islat;
   int ndims = axisvar->ndims;
   size_t size = 0;
+  int prec = cdfInqDatatype(axisvar->xtype, axisvar->lunsigned);
+
   if ( (ndims - ntdims) == 2 )
     {
-      ncvar->gridtype = GRID_CURVILINEAR;
-      size = xsize*(*ysize);
       /* Check size of 2 dimensional coordinate variables */
       int dimid = axisvar->dimids[ndims-2];
       size_t dimsize1 = ncdims[dimid].len;
       dimid = axisvar->dimids[ndims-1];
       size_t dimsize2 = ncdims[dimid].len;
-      skipvar = dimsize1*dimsize2 != size;
+
+      if ( prec == CDI_DATATYPE_UINT8 )
+        {
+          ncvar->gridtype = GRID_CHARXY;
+          size = dimsize1*dimsize2;
+          skipvar = dimsize1 != *ysize;
+        }
+      else
+        {
+          ncvar->gridtype = GRID_CURVILINEAR;
+          size = xsize*(*ysize);
+          skipvar = dimsize1*dimsize2 != size;
+        }
     }
   else if ( (ndims - ntdims) == 1 )
     {
@@ -40696,10 +41248,15 @@ bool cdf_read_ycoord(struct cdfLazyGrid *restrict lazyGrid, ncdim_t *ncdims, ncv
       return true;
     }
 
-  if ( axisvar->xtype == NC_FLOAT ) grid->prec = DATATYPE_FLT32;
+  if ( prec != -1 )  grid->prec = prec;
 
-  cdf_load_vals(size, ndims, yvarid, axisvar, &grid->y.vals, &lazyGrid->yValsGet,
-                ntdims, start, count);
+  if ( prec == CDI_DATATYPE_UINT8 && !CDI_netcdf_lazy_grid_load )
+    {
+      cdf_load_cvals(size, yvarid, axisvar, &grid->y.cvals, *ysize);
+      grid->y.clength = size / (*ysize) ;
+    }
+  else
+    cdf_load_vals(size, ndims, yvarid, axisvar, &grid->y.vals, &lazyGrid->yValsGet, ntdims, start, count);
 
   cdf_copy_axis_attr(axisvar, &grid->y);
 
@@ -40713,7 +41270,7 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
   grid_t *grid = &lazyGrid->base;
   size_t size = 0;
 
-  grid->prec = DATATYPE_FLT64;
+  grid->prec = CDI_DATATYPE_FLT64;
 
   if ( ncvar->gridtype == GRID_TRAJECTORY )
     {
@@ -40729,7 +41286,7 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
       if ( xvarid != CDI_UNDEFID && yvarid != CDI_UNDEFID )
         {
           int ndims = ncvars[xvarid].ndims;
-          if ( ndims != ncvars[yvarid].ndims )
+          if ( ndims != ncvars[yvarid].ndims && !ncvars[xvarid].isc && !ncvars[yvarid].isc )
             {
               Warning("Inconsistent grid structure for variable %s!", ncvar->name);
               ncvar->xvarid = xvarid = CDI_UNDEFID;
@@ -40836,7 +41393,7 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
                   {
                     *vdimid = ncvars[bvarid].dimids[nbdims-1];
                     grid->nvertex = (int)ncdims[*vdimid].len;
-                    cdf_load_bounds(grid->size*grid->nvertex, &ncvars[xvarid], &grid->x.bounds, &lazyGrid->xBoundsGet);
+                    cdf_load_bounds(size*(size_t)grid->nvertex, &ncvars[xvarid], &grid->x.bounds, &lazyGrid->xBoundsGet);
                   }
               }
           }
@@ -40854,7 +41411,7 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
                         *vdimid = ncvars[bvarid].dimids[nbdims-1];
                         grid->nvertex = (int)ncdims[*vdimid].len;
                       }
-                    cdf_load_bounds(grid->size*grid->nvertex, &ncvars[yvarid], &grid->y.bounds, &lazyGrid->yBoundsGet);
+                    cdf_load_bounds(size*(size_t)grid->nvertex, &ncvars[yvarid], &grid->y.bounds, &lazyGrid->yBoundsGet);
                   }
               }
           }
@@ -40882,6 +41439,13 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
         grid->size = 1;
         break;
       }
+    case GRID_CHARXY:
+      {
+        grid->size = (int)size;
+        grid->x.size = (int)xsize;
+        grid->y.size = (int)ysize;
+        break;
+      }
     }
 
   // if ( grid->type != GRID_PROJECTION && grid->type != ncvar->gridtype )
@@ -40907,7 +41471,7 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
         }
       else
         {
-          Warning("Variable %s has an unsupported grid, skipped!", ncvar->name);
+          Warning("Unsupported grid, skipped variable %s!", ncvar->name);
           ncvar->isvar = -1;
           return true;
         }
@@ -40917,7 +41481,7 @@ bool cdf_read_coordinates(struct cdfLazyGrid *restrict lazyGrid, ncvar_t *ncvar,
 }
 
 static
-bool cdf_set_unstructured_par(ncvar_t *ncvar, grid_t *grid, int xdimid, int ydimid, int number_of_grid_used, unsigned char *uuidOfHGrid)
+bool cdf_set_unstructured_par(ncvar_t *ncvar, grid_t *grid, int *xdimid, int *ydimid, int number_of_grid_used, unsigned char *uuidOfHGrid)
 {
   int ndims = ncvar->ndims;
   int *dimtype = ncvar->dimtype;
@@ -40932,20 +41496,20 @@ bool cdf_set_unstructured_par(ncvar_t *ncvar, grid_t *grid, int xdimid, int ydim
       else if ( dimtype[i] == Z_AXIS ) zdimid = ncvar->dimids[i];
     }
 
-  if ( xdimid != CDI_UNDEFID && ydimid != CDI_UNDEFID && zdimid == CDI_UNDEFID )
+  if ( *xdimid != CDI_UNDEFID && *ydimid != CDI_UNDEFID && zdimid == CDI_UNDEFID )
     {
       if ( grid->x.size > grid->y.size && grid->y.size < 1000 )
         {
           dimtype[ydimidx] = Z_AXIS;
-          ydimid = CDI_UNDEFID;
+          *ydimid = CDI_UNDEFID;
           grid->size  = grid->x.size;
           grid->y.size = 0;
         }
       else if ( grid->y.size > grid->x.size && grid->x.size < 1000 )
         {
           dimtype[xdimidx] = Z_AXIS;
-          xdimid = ydimid;
-          ydimid = CDI_UNDEFID;
+          *xdimid = *ydimid;
+          *ydimid = CDI_UNDEFID;
           grid->size  = grid->y.size;
           grid->x.size = grid->y.size;
           grid->y.size = 0;
@@ -40973,7 +41537,7 @@ void cdf_read_mapping_atts(int ncid, int gmapvarid, int projID, const char *varn
     {
       char attstring[CDI_MAX_NAME];
       cdfGetAttText(ncid, gmapvarid, "grid_mapping_name", CDI_MAX_NAME, attstring);
-      cdiGridDefKeyStr(projID, CDI_KEY_MAPPING, (int)(strlen(attstring)+1), attstring);
+      cdiGridDefKeyStr(projID, CDI_KEY_MAPNAME, (int)(strlen(attstring)+1), attstring);
     }
   else
     {
@@ -40995,10 +41559,10 @@ void cdf_set_grid_to_similar_vars(ncvar_t *ncvar1, ncvar_t *ncvar2, int gridtype
       int xdimidx = CDI_UNDEFID, ydimidx = CDI_UNDEFID;
       int ndims2 = ncvar2->ndims;
 
+      int *dimtype2 = ncvar2->dimtype;
+      int *dimids2 = ncvar2->dimids;
       for ( int i = 0; i < ndims2; i++ )
         {
-          int *dimtype2 = ncvar2->dimtype;
-          int *dimids2 = ncvar2->dimids;
           if      ( dimtype2[i] == X_AXIS ) { xdimid2 = dimids2[i]; xdimidx = i; }
           else if ( dimtype2[i] == Y_AXIS ) { ydimid2 = dimids2[i]; ydimidx = i; }
           else if ( dimtype2[i] == Z_AXIS ) { zdimid2 = dimids2[i]; }
@@ -41020,12 +41584,11 @@ void cdf_set_grid_to_similar_vars(ncvar_t *ncvar1, ncvar_t *ncvar2, int gridtype
             }
         }
 
-      if ( xdimid == xdimid2 &&
-           (ydimid == ydimid2 || (xdimid == ydimid && ydimid2 == CDI_UNDEFID)) )
+      if ( xdimid == xdimid2 && (ydimid == ydimid2 || (xdimid == ydimid && ydimid2 == CDI_UNDEFID)) )
         {
           bool same_grid = ncvar1->xvarid == ncvar2->xvarid
-            && ncvar1->yvarid == ncvar2->yvarid
-            && ncvar1->position == ncvar2->position;
+                        && ncvar1->yvarid == ncvar2->yvarid
+                        && ncvar1->position == ncvar2->position;
           /*
             if ( xvarid != -1 && ncvar2->xvarid != CDI_UNDEFID &&
             xvarid != ncvar2->xvarid ) same_grid = false;
@@ -41045,17 +41608,14 @@ void cdf_set_grid_to_similar_vars(ncvar_t *ncvar1, ncvar_t *ncvar2, int gridtype
 }
 
 static
-void cdf_define_all_grids(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int nvars, ncvar_t *ncvars,
-                          int timedimid, unsigned char *uuidOfHGrid, char *gridfile, int number_of_grid_used)
+int cdf_define_all_grids(ncgrid_t *ncgrid, int vlistID, ncdim_t *ncdims, int nvars, ncvar_t *ncvars,
+                         int timedimid, unsigned char *uuidOfHGrid, char *gridfile, int number_of_grid_used)
 {
   for ( int ncvarid = 0; ncvarid < nvars; ++ncvarid )
     {
       ncvar_t *ncvar = &ncvars[ncvarid];
       if ( ncvar->isvar && ncvar->gridID == CDI_UNDEFID )
 	{
-          int gmapvarid = ncvar->gmapid;
-          bool lproj = gmapvarid != CDI_UNDEFID;
-          bool lgrid = !(lproj && ncvar->xvarid == CDI_UNDEFID);
           int ndims = ncvar->ndims;
           int *dimtype = ncvar->dimtype;
           int vdimid = CDI_UNDEFID;
@@ -41081,6 +41641,27 @@ void cdf_define_all_grids(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 		}
 	    }
 
+          if ( xsize > INT_MAX )
+            {
+              Warning("Size limit exceeded for x-axis dimension (limit=%d)!", INT_MAX);
+              return CDI_EDIMSIZE;
+            }
+          if ( ysize > INT_MAX )
+            {
+              Warning("Size limit exceeded for y-axis dimension (limit=%d)!", INT_MAX);
+              return CDI_EDIMSIZE;
+            }
+
+          int gmapvarid = ncvar->gmapid;
+          bool lproj = gmapvarid != CDI_UNDEFID;
+
+          if ( !lproj && xaxisid != CDI_UNDEFID && xaxisid != xvarid && yaxisid != CDI_UNDEFID && yaxisid != yvarid )
+            {
+              lproj = true;
+            }
+
+          bool lgrid = !(lproj && ncvar->xvarid == CDI_UNDEFID);
+
           bool lunstructured = xdimid != CDI_UNDEFID && xdimid == ydimid && nydims == 0;
 	  if ( (ncvar->gridtype == CDI_UNDEFID || ncvar->gridtype == GRID_GENERIC) && lunstructured )
             ncvar->gridtype = GRID_UNSTRUCTURED;
@@ -41111,11 +41692,13 @@ void cdf_define_all_grids(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
                                     timedimid, xvarid, yvarid, xsize, ysize, &vdimid) )
             continue;
 
-	  if ( number_of_grid_used != CDI_UNDEFID && (grid->type == CDI_UNDEFID || grid->type == GRID_GENERIC) )
+	  if ( number_of_grid_used != CDI_UNDEFID &&
+               (grid->type == CDI_UNDEFID || grid->type == GRID_GENERIC) &&
+               xdimid != CDI_UNDEFID && xsize > 9999 )
             grid->type = GRID_UNSTRUCTURED;
 
           if ( grid->type == GRID_UNSTRUCTURED )
-            if ( cdf_set_unstructured_par(ncvar, grid, xdimid, ydimid, number_of_grid_used, uuidOfHGrid) )
+            if ( cdf_set_unstructured_par(ncvar, grid, &xdimid, &ydimid, number_of_grid_used, uuidOfHGrid) )
               continue;
 
           if ( lproj && lgrid )
@@ -41146,13 +41729,13 @@ void cdf_define_all_grids(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 
           int gridID = ncvar->gridID;
 
-          if ( lproj )
+          if ( lproj && gmapvarid != CDI_UNDEFID )
             {
               int projID = lgrid ? grid->proj : gridID;
               int ncid = ncvars[gmapvarid].ncid;
               const char *gmapname = ncvars[gmapvarid].name;
               cdf_read_mapping_atts(ncid, gmapvarid, projID, gmapname);
-              cdiGridDefKeyStr(projID, CDI_KEY_MAPNAME, (int)(strlen(gmapname)+1), gmapname);
+              cdiGridDefKeyStr(projID, CDI_KEY_MAPPING, (int)(strlen(gmapname)+1), gmapname);
               gridVerifyProj(projID);
             }
 
@@ -41162,8 +41745,10 @@ void cdf_define_all_grids(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
           if ( ncvar->chunked ) grid_set_chunktype(grid, ncvar);
 
 	  int gridindex = vlistGridIndex(vlistID, gridID);
-	  streamptr->xdimID[gridindex] = xdimid;
-	  streamptr->ydimID[gridindex] = ydimid;
+          ncgrid[gridindex].gridID = gridID;
+          ncgrid[gridindex].ncIDs[CDF_DIMID_X] = xdimid;
+          ncgrid[gridindex].ncIDs[CDF_DIMID_Y] = ydimid;
+
           if ( xdimid == CDI_UNDEFID && ydimid == CDI_UNDEFID && grid->size == 1 )
             gridDefHasDims(gridID, FALSE);
 
@@ -41192,12 +41777,14 @@ void cdf_define_all_grids(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
             }
 	}
     }
+
+  return 0;
 }
 
 /* define all input zaxes */
 static
-void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int nvars, ncvar_t *ncvars,
-                          size_t vctsize_echam, double *vct_echam, unsigned char *uuidOfVGrid)
+int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int nvars, ncvar_t *ncvars,
+                         size_t vctsize_echam, double *vct_echam, unsigned char *uuidOfVGrid)
 {
   char *pname, *plongname, *punits;
   size_t vctsize = vctsize_echam;
@@ -41212,10 +41799,9 @@ void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 	  bool with_bounds = false;
 	  int zdimid = CDI_UNDEFID;
 	  int zvarid = CDI_UNDEFID;
-	  int zsize = 1;
+	  size_t zsize = 1;
           int psvarid = -1;
-	  double *lbounds = NULL;
-	  double *ubounds = NULL;
+          int p0varid = -1;
 
           int positive = 0;
 	  int ndims = ncvar->ndims;
@@ -41235,20 +41821,25 @@ void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 
               if ( zdimid != CDI_UNDEFID )
                 {
-                  zvarid = ncdims[zdimid].ncvarid;
-                  zsize  = (int)ncdims[zdimid].len;
+                  // zvarid = ncdims[zdimid].ncvarid;
+                  zvarid = (ncvar->zvarid != CDI_UNDEFID) ? ncvar->zvarid : ncdims[zdimid].ncvarid;
+                  zsize  = ncdims[zdimid].len;
                 }
             }
 
-	  if ( CDI_Debug ) Message("nlevs = %d", zsize);
+	  if ( CDI_Debug ) Message("nlevs = %zu", zsize);
 
-	  double *zvar = (double *) Malloc((size_t)zsize * sizeof (double));
+	  double *zvar = NULL;
+          char **zcvals = NULL;
+          size_t zclength = 0;
 
 	  int zaxisType = CDI_UNDEFID;
 	  if ( zvarid != CDI_UNDEFID ) zaxisType = ncvars[zvarid].zaxistype;
 	  if ( zaxisType == CDI_UNDEFID ) zaxisType = ZAXIS_GENERIC;
 
-	  int zprec = DATATYPE_FLT64;
+	  int zprec = CDI_DATATYPE_FLT64;
+	  double *restrict lbounds = NULL;
+	  double *restrict ubounds = NULL;
 
 	  if ( zvarid != CDI_UNDEFID )
 	    {
@@ -41256,38 +41847,53 @@ void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 	      pname     = ncvars[zvarid].name;
 	      plongname = ncvars[zvarid].longname;
 	      punits    = ncvars[zvarid].units;
-	      if ( ncvars[zvarid].xtype == NC_FLOAT ) zprec = DATATYPE_FLT32;
+	      if ( ncvars[zvarid].xtype == NC_FLOAT ) zprec = CDI_DATATYPE_FLT32;
 	      /* don't change the name !!! */
 	      /*
 	      if ( (len = strlen(pname)) > 2 )
 		if ( pname[len-2] == '_' && isdigit((int) pname[len-1]) )
 		  pname[len-2] = 0;
 	      */
+              if ( zaxisType == ZAXIS_CHAR )
+                {
+                  if ( ncvars[zvarid].ndims == 2 )
+                    {
+                      zprec = CDI_DATATYPE_UINT8;
+                      zclength = ncdims[ncvars[zvarid].dimids[1]].len;
+                      cdf_load_cvals(zsize*zclength, zvarid, ncvar, &zcvals, zsize);
+                    }
+                }
+
               if ( zaxisType == ZAXIS_HYBRID && ncvars[zvarid].vct )
                 {
                   vct = ncvars[zvarid].vct;
                   vctsize = ncvars[zvarid].vctsize;
 
                   if ( ncvars[zvarid].psvarid != -1 ) psvarid = ncvars[zvarid].psvarid;
+                  if ( ncvars[zvarid].p0varid != -1 ) p0varid = ncvars[zvarid].p0varid;
                 }
 
-	      cdf_get_var_double(ncvars[zvarid].ncid, zvarid, zvar);
+              if ( zaxisType != ZAXIS_CHAR )
+                {
+                  zvar = (double*) Malloc(zsize*sizeof(double));
+                  cdf_get_var_double(ncvars[zvarid].ncid, zvarid, zvar);
+                }
 
 	      if ( ncvars[zvarid].bounds != CDI_UNDEFID )
 		{
 		  int nbdims = ncvars[ncvars[zvarid].bounds].ndims;
-		  if ( nbdims == 2 )
+		  if ( nbdims == 2 || is_scalar )
 		    {
-		      int nlevel  = (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[0]].len;
-		      int nvertex = (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[1]].len;
+		      size_t nlevel  = is_scalar ? 1 : (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[0]].len;
+		      int nvertex = (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[1-is_scalar]].len;
 		      if ( nlevel == zsize && nvertex == 2 )
 			{
 			  with_bounds = true;
-			  lbounds = (double *) Malloc((size_t)nlevel*sizeof(double));
-			  ubounds = (double *) Malloc((size_t)nlevel*sizeof(double));
-			  double zbounds[2*nlevel];
+			  lbounds = (double *) Malloc(4 * nlevel*sizeof(double));
+			  ubounds = lbounds + nlevel;
+			  double *restrict zbounds = lbounds + 2 * nlevel;
 			  cdf_get_var_double(ncvars[zvarid].ncid, ncvars[zvarid].bounds, zbounds);
-			  for ( int i = 0; i < nlevel; ++i )
+			  for ( size_t i = 0; i < nlevel; ++i )
 			    {
 			      lbounds[i] = zbounds[i*2];
 			      ubounds[i] = zbounds[i*2+1];
@@ -41298,32 +41904,28 @@ void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 	    }
 	  else
 	    {
-	      pname     = NULL;
+              pname     = (zdimid != CDI_UNDEFID) ? ncdims[zdimid].name : NULL;
 	      plongname = NULL;
 	      punits    = NULL;
 
-	      if ( zsize == 1 )
-		{
-                  if ( ncvar->zaxistype != CDI_UNDEFID )
-                    zaxisType = ncvar->zaxistype;
-                  else
-                    zaxisType = ZAXIS_SURFACE;
-
-		  zvar[0] = 0;
-		  /*
-		  if ( zdimid == CDI_UNDEFID )
-		    zvar[0] = 9999;
-		  else
-		    zvar[0] = 0;
-		  */
-		}
-	      else
+	      if ( zsize == 1 && zdimid == CDI_UNDEFID )
 		{
-		  for ( int ilev = 0; ilev < zsize; ilev++ ) zvar[ilev] = ilev + 1;
-		}
+                  zaxisType = (ncvar->zaxistype != CDI_UNDEFID) ? ncvar->zaxistype : ZAXIS_SURFACE;
+                  // if ( pname )
+                    {
+                      zvar = (double*) Malloc(sizeof(double));
+                      zvar[0] = 0;
+                    }
+                }
 	    }
 
-      	  ncvar->zaxisID = varDefZaxis(vlistID, zaxisType, (int) zsize, zvar, with_bounds, lbounds, ubounds,
+          if ( zsize > INT_MAX )
+            {
+              Warning("Size limit exceeded for z-axis dimension (limit=%d)!", INT_MAX);
+              return CDI_EDIMSIZE;
+            }
+
+      	  ncvar->zaxisID = varDefZaxis(vlistID, zaxisType, (int) zsize, zvar, (const char **)zcvals, zclength, with_bounds, lbounds, ubounds,
                                        (int)vctsize, vct, pname, plongname, punits, zprec, 1, 0);
 
           int zaxisID = ncvar->zaxisID;
@@ -41331,26 +41933,38 @@ void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
           if ( CDI_cmor_mode && zsize == 1 && zaxisType != ZAXIS_HYBRID ) zaxisDefScalar(zaxisID);
 
           if ( uuidOfVGrid[0] != 0 )
+            zaxisDefUUID(zaxisID, uuidOfVGrid);
+
+          if ( zaxisType == ZAXIS_HYBRID )
             {
-              // printf("uuidOfVGrid: defined\n");
-              zaxisDefUUID(zaxisID, uuidOfVGrid);
+              if ( psvarid != -1 )
+                cdiZaxisDefKeyStr(zaxisID, CDI_KEY_PSNAME, (int)(strlen(ncvars[psvarid].name)+1), ncvars[psvarid].name);
+              if ( p0varid != -1 )
+                {
+                  double px = 1;
+                  cdf_get_var_double(ncvars[p0varid].ncid, p0varid, &px);
+                  cdiZaxisDefKeyFlt(zaxisID, CDI_KEY_P0VALUE, px);
+                  cdiZaxisDefKeyStr(zaxisID, CDI_KEY_P0NAME, (int)(strlen(ncvars[p0varid].name)+1), ncvars[p0varid].name);
+                }
             }
 
-          if ( zaxisType == ZAXIS_HYBRID && psvarid != -1 )
-            cdiZaxisDefKeyStr(zaxisID, CDI_KEY_PSNAME, strlen(ncvars[psvarid].name)+1, ncvars[psvarid].name);
-
           if ( positive > 0 ) zaxisDefPositive(zaxisID, positive);
           if ( is_scalar ) zaxisDefScalar(zaxisID);
 
-          if ( zdimid != -1 )
+          if ( zdimid != CDI_UNDEFID )
             cdiZaxisDefKeyStr(zaxisID, CDI_KEY_DIMNAME, (int)(strlen(ncdims[zdimid].name)+1), ncdims[zdimid].name);
           /*
           if ( vdimid != -1 )
             cdiZaxisDefKeyStr(zaxisID, CDI_KEY_VDIMNAME, strlen(ncdims[vdimid].name)+1, ncdims[vdimid].name);
           */
-	  Free(zvar);
-	  Free(lbounds);
-	  Free(ubounds);
+	  if ( zvar    ) Free(zvar);
+	  if ( zcvals  )
+            {
+              for ( size_t i = 0; i < zsize; i++ )
+                Free(zcvals[i]);
+              Free(zcvals);
+            }
+	  if ( lbounds ) Free(lbounds);
 
           if ( zvarid != CDI_UNDEFID )
             {
@@ -41399,19 +42013,22 @@ void cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 	      }
 	}
     }
+
+  return 0;
 }
 
-struct varinfo
+
+struct cdf_varinfo
 {
-  int      ncvarid;
+  int        varid;
   const char *name;
 };
 
 static
-int cmpvarname(const void *s1, const void *s2)
+int cdf_cmp_varname(const void *s1, const void *s2)
 {
-  const struct varinfo *x = (const struct varinfo *)s1,
-                       *y = (const struct varinfo *)s2;
+  const struct cdf_varinfo *x = (const struct cdf_varinfo *)s1,
+                           *y = (const struct cdf_varinfo *)s2;
   return strcmp(x->name, y->name);
 }
 
@@ -41424,19 +42041,19 @@ void cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int model
 
   if ( streamptr->sortname )
     {
-      struct varinfo *varInfo
-        = (struct varinfo *) Malloc((size_t)nvars * sizeof (struct varinfo));
+      struct cdf_varinfo *varInfo
+        = (struct cdf_varinfo *) Malloc((size_t)nvars * sizeof(struct cdf_varinfo));
 
       for ( int varID = 0; varID < nvars; varID++ )
 	{
 	  int ncvarid = varids[varID];
-	  varInfo[varID].ncvarid = ncvarid;
+	  varInfo[varID].varid = ncvarid;
 	  varInfo[varID].name = ncvars[ncvarid].name;
 	}
-      qsort(varInfo, (size_t)nvars, sizeof(varInfo[0]), cmpvarname);
+      qsort(varInfo, (size_t)nvars, sizeof(varInfo[0]), cdf_cmp_varname);
       for ( int varID = 0; varID < nvars; varID++ )
 	{
-	  varids[varID] = varInfo[varID].ncvarid;
+	  varids[varID] = varInfo[varID].varid;
 	}
       Free(varInfo);
       if ( CDI_Debug )
@@ -41504,8 +42121,8 @@ void cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int model
 		vlistInqVarGrid(vlistID, varID), vlistInqVarZaxis(vlistID, varID));
 
       int gridindex = vlistGridIndex(vlistID, gridID);
-      int xdimid = streamptr->xdimID[gridindex];
-      int ydimid = streamptr->ydimID[gridindex];
+      int xdimid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+      int ydimid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
 
       int zaxisindex = vlistZaxisIndex(vlistID, zaxisID);
       int zdimid = streamptr->zaxisID[zaxisindex];
@@ -41513,11 +42130,11 @@ void cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int model
       int ndims = ncvars[ncvarid].ndims;
       int iodim = 0;
       int ixyz = 0;
-      int ipow10[4] = {1, 10, 100, 1000};
+      static const int ipow10[4] = {1, 10, 100, 1000};
 
       if ( ncvars[ncvarid].tsteptype != TSTEP_CONSTANT ) iodim++;
 
-      int *dimids = ncvars[ncvarid].dimids;
+      const int *dimids = ncvars[ncvarid].dimids;
 
       if ( gridInqType(gridID) == GRID_UNSTRUCTURED && ndims-iodim <= 2 && ydimid == xdimid )
         {
@@ -41753,16 +42370,16 @@ void cdf_scan_global_attr(int fileID, int vlistID, stream_t *streamptr, int ngat
  	  else
             {
               int attint[attlen];
-              cdfGetAttInt(fileID, NC_GLOBAL, attname, (int)attlen, attint);
-              int datatype = (xtype == NC_SHORT) ? DATATYPE_INT16 : DATATYPE_INT32;
+              cdfGetAttInt(fileID, NC_GLOBAL, attname, attlen, attint);
+              int datatype = (xtype == NC_SHORT) ? CDI_DATATYPE_INT16 : CDI_DATATYPE_INT32;
               cdiDefAttInt(vlistID, CDI_GLOBAL, attname, datatype, (int)attlen, attint);
             }
         }
       else if ( xtype == NC_FLOAT || xtype == NC_DOUBLE )
 	{
 	  double attflt[attlen];
-	  cdfGetAttDouble(fileID, NC_GLOBAL, attname, (int)attlen, attflt);
-          int datatype = (xtype == NC_FLOAT) ? DATATYPE_FLT32 : DATATYPE_FLT64;
+	  cdfGetAttDouble(fileID, NC_GLOBAL, attname, attlen, attflt);
+          int datatype = (xtype == NC_FLOAT) ? CDI_DATATYPE_FLT32 : CDI_DATATYPE_FLT64;
           cdiDefAttFlt(vlistID, CDI_GLOBAL, attname, datatype, (int)attlen, attflt);
 	}
     }
@@ -41957,7 +42574,7 @@ void cdf_set_ucla_dimtype(int ndims, ncdim_t *ncdims, ncvar_t *ncvars)
 }
 
 static
-int cdf_check_vars(int nvars, ncvar_t *ncvars, int ntsteps, int timedimid)
+int cdf_check_vars(int nvars, ncvar_t *ncvars, size_t ntsteps, int timedimid)
 {
   for ( int ncvarid = 0; ncvarid < nvars; ncvarid++ )
     {
@@ -42006,7 +42623,7 @@ int cdf_check_vars(int nvars, ncvar_t *ncvars, int ntsteps, int timedimid)
       if ( cdfInqDatatype(ncvars[ncvarid].xtype, ncvars[ncvarid].lunsigned) == -1 )
 	{
 	  ncvars[ncvarid].isvar = 0;
-	  Warning("Variable %s has an unsupported data type, skipped!", ncvars[ncvarid].name);
+	  Warning("Unsupported data type, skipped variable %s!", ncvars[ncvarid].name);
 	  continue;
 	}
 
@@ -42030,7 +42647,6 @@ int cdfInqContents(stream_t *streamptr)
   int ndims, nvars, ngatts, unlimdimid;
   int ncvarid;
   int ncdimid;
-  int timedimid = -1;
   int *varids;
   int nvarids;
   bool time_has_units = false;
@@ -42040,7 +42656,6 @@ int cdfInqContents(stream_t *streamptr)
   int nvars_data;
   int instID  = CDI_UNDEFID;
   int modelID = CDI_UNDEFID;
-  int taxisID;
   int calendar = CDI_UNDEFID;
   int format = 0;
   bool ucla_les = false;
@@ -42124,17 +42739,19 @@ int cdfInqContents(stream_t *streamptr)
                        uuidOfHGrid, uuidOfVGrid, gridfile, &number_of_grid_used);
 
   /* find time dim */
-  if ( unlimdimid >= 0 )
-    timedimid = unlimdimid;
-  else
-    timedimid = cdf_time_dimid(fileID, ndims, nvars);
+  int timedimid = (unlimdimid >= 0) ? unlimdimid : cdf_time_dimid(fileID, ndims, nvars);
 
   streamptr->basetime.ncdimid = timedimid;
 
   size_t ntsteps = 0;
   if ( timedimid != CDI_UNDEFID ) cdf_inq_dimlen(fileID, timedimid, &ntsteps);
+  if ( ntsteps > INT_MAX )
+    {
+      Warning("Size limit exceeded for time dimension (limit=%d)!", INT_MAX);
+      return CDI_EDIMSIZE;
+    }
 
-  if ( CDI_Debug ) Message("Number of timesteps = %d", ntsteps);
+  if ( CDI_Debug ) Message("Number of timesteps = %zu", ntsteps);
   if ( CDI_Debug ) Message("Time dimid = %d", streamptr->basetime.ncdimid);
 
   /* read ncdims */
@@ -42233,14 +42850,15 @@ int cdfInqContents(stream_t *streamptr)
       ncvar_t *ncvar = &ncvars[ncvarid];
       if ( ncvar->isvar == TRUE && ncvar->ncoordvars )
 	{
-	  int ndims = ncvar->ncoordvars;
-	  for ( int i = 0; i < ndims; i++ )
+	  int ncoordvars = ncvar->ncoordvars;
+	  for ( int i = 0; i < ncoordvars; i++ )
 	    {
 	      if      ( ncvars[ncvar->coordvarids[i]].islon ||
                         ncvars[ncvar->coordvarids[i]].isx )   ncvar->xvarid = ncvar->coordvarids[i];
 	      else if ( ncvars[ncvar->coordvarids[i]].islat ||
                         ncvars[ncvar->coordvarids[i]].isy )   ncvar->yvarid = ncvar->coordvarids[i];
 	      else if ( ncvars[ncvar->coordvarids[i]].islev ) ncvar->zvarid = ncvar->coordvarids[i];
+	      else if ( ncvars[ncvar->coordvarids[i]].isc )   ncvar->cvarids[i] = ncvar->coordvarids[i];
 	    }
 	}
     }
@@ -42257,12 +42875,14 @@ int cdfInqContents(stream_t *streamptr)
   if ( CDI_Debug ) cdf_print_vars(ncvars, nvars, "cdf_define_all_grids");
 
   /* define all grids */
-  cdf_define_all_grids(streamptr, vlistID, ncdims, nvars, ncvars, timedimid, uuidOfHGrid, gridfile, number_of_grid_used);
-
+  int status;
+  status = cdf_define_all_grids(streamptr->ncgrid, vlistID, ncdims, nvars, ncvars, timedimid, uuidOfHGrid, gridfile, number_of_grid_used);
+  if ( status < 0 ) return status;
 
   /* define all zaxes */
-  cdf_define_all_zaxes(streamptr, vlistID, ncdims, nvars, ncvars, vctsize, vct, uuidOfVGrid);
+  status = cdf_define_all_zaxes(streamptr, vlistID, ncdims, nvars, ncvars, vctsize, vct, uuidOfVGrid);
   if ( vct ) Free(vct);
+  if ( status < 0 ) return status;
 
 
   /* select vars */
@@ -42274,7 +42894,7 @@ int cdfInqContents(stream_t *streamptr)
   nvars_data = nvarids;
 
   if ( CDI_Debug ) Message("time varid = %d", streamptr->basetime.ncvarid);
-  if ( CDI_Debug ) Message("ntsteps = %d", ntsteps);
+  if ( CDI_Debug ) Message("ntsteps = %zu", ntsteps);
   if ( CDI_Debug ) Message("nvars_data = %d", nvars_data);
 
 
@@ -42332,12 +42952,19 @@ int cdfInqContents(stream_t *streamptr)
     {
       taxis_t *taxis = &streamptr->tsteps[0].taxis;
       ptaxisDefName(taxis, ncvars[nctimevarid].name);
+
       if ( ncvars[nctimevarid].longname[0] )
         ptaxisDefLongname(taxis, ncvars[nctimevarid].longname);
+
+      if ( ncvars[nctimevarid].units[0] )
+        ptaxisDefUnits(taxis, ncvars[nctimevarid].units);
+
+      int datatype = (ncvars[nctimevarid].xtype == NC_FLOAT) ? CDI_DATATYPE_FLT32 : CDI_DATATYPE_FLT64;
+      ptaxisDefDatatype(taxis, datatype);
     }
 
   if ( nctimevarid != CDI_UNDEFID )
-    if ( ncvars[nctimevarid].calendar == TRUE )
+    if ( ncvars[nctimevarid].calendar == true )
       {
         char attstring[1024];
 	cdfGetAttText(fileID, nctimevarid, "calendar", sizeof(attstring), attstring);
@@ -42345,6 +42972,7 @@ int cdfInqContents(stream_t *streamptr)
         set_calendar(attstring, &calendar);
       }
 
+  int taxisID;
   if ( streamptr->tsteps[0].taxis.type == TAXIS_FORECAST )
     {
       taxisID = taxisCreate(TAXIS_FORECAST);
@@ -42581,9 +43209,6 @@ void cdfInqHistoryString(stream_t *streamptr, char *history)
 
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
-
 #define  POSITIVE_UP    1
 #define  POSITIVE_DOWN  2
 
@@ -42601,7 +43226,7 @@ void cdfCopyRecord(stream_t *streamptr2, stream_t *streamptr1)
   int gridID   = vlistInqVarGrid(vlistID1, ivarID);
   int datasize = gridInqSize(gridID);
   int datatype = vlistInqVarDatatype(vlistID1, ivarID);
-  int memtype  = datatype != DATATYPE_FLT32 ? MEMTYPE_DOUBLE : MEMTYPE_FLOAT;
+  int memtype  = datatype != CDI_DATATYPE_FLT32 ? MEMTYPE_DOUBLE : MEMTYPE_FLOAT;
 
   void *data = Malloc((size_t)datasize
              * (memtype == MEMTYPE_DOUBLE ? sizeof(double) : sizeof(float)));
@@ -42635,12 +43260,11 @@ void cdfDefTimeValue(stream_t *streamptr, int tsID)
       streamptr->ncmode = 2;
     }
 
-  size_t index = (size_t)tsID;
-
   double timevalue = cdiEncodeTimeval(taxis->vdate, taxis->vtime, &streamptr->tsteps[0].taxis);
   if ( CDI_Debug ) Message("tsID = %d  timevalue = %f", tsID, timevalue);
 
   int ncvarid = streamptr->basetime.ncvarid;
+  size_t index = (size_t)tsID;
   cdf_put_var1_double(fileID, ncvarid, &index, &timevalue);
 
   if ( taxis->has_bounds )
@@ -42664,229 +43288,8 @@ void cdfDefTimeValue(stream_t *streamptr, int tsID)
       timevalue = taxis->fc_period;
       cdf_put_var1_double(fileID, ncvarid, &index, &timevalue);
     }
-
-  /*
-printf("fileID = %d %d %d %f\n", fileID, time_varid, index, timevalue);
-  */
-}
-
-static
-int cdfDefTimeBounds(int fileID, int nctimevarid, int nctimedimid, const char *taxis_name, taxis_t* taxis)
-{
-  int time_bndsid = -1;
-  int dims[2];
-
-  dims[0] = nctimedimid;
-
-  /* fprintf(stderr, "time has bounds\n"); */
-
-  if ( nc_inq_dimid(fileID, bndsName, &dims[1]) != NC_NOERR )
-    cdf_def_dim(fileID, bndsName, 2, &dims[1]);
-
-  const char *bndsAttName, *bndsAttVal;
-  size_t bndsAttValLen;
-  char tmpstr[CDI_MAX_NAME];
-  if ( taxis->climatology )
-    {
-      static const char climatology_bndsName[] = "climatology_bnds",
-        climatology_bndsAttName[] = "climatology";
-      bndsAttName = climatology_bndsAttName;
-      bndsAttValLen = sizeof (climatology_bndsName) - 1;
-      bndsAttVal = climatology_bndsName;
-    }
-  else
-    {
-      size_t taxisnameLen = strlen(taxis_name);
-      memcpy(tmpstr, taxis_name, taxisnameLen);
-      tmpstr[taxisnameLen] = '_';
-      memcpy(tmpstr + taxisnameLen + 1, bndsName, sizeof (bndsName));
-      size_t tmpstrLen = taxisnameLen + sizeof (bndsName);
-      static const char generic_bndsAttName[] = "bounds";
-      bndsAttName = generic_bndsAttName;
-      bndsAttValLen = tmpstrLen;
-      bndsAttVal = tmpstr;
-    }
-  cdf_def_var(fileID, bndsAttVal, NC_DOUBLE, 2, dims, &time_bndsid);
-  cdf_put_att_text(fileID, nctimevarid, bndsAttName, bndsAttValLen, bndsAttVal);
-
-  return time_bndsid;
-}
-
-static
-void cdfDefTimeUnits(char *unitstr, taxis_t* taxis0, taxis_t* taxis)
-{
-  unitstr[0] = 0;
-
-  if ( taxis0->type == TAXIS_ABSOLUTE )
-    {
-      if ( taxis0->unit == TUNIT_YEAR )
-        sprintf(unitstr, "year as %s", "%Y.%f");
-      else if ( taxis0->unit == TUNIT_MONTH )
-        sprintf(unitstr, "month as %s", "%Y%m.%f");
-      else
-        sprintf(unitstr, "day as %s", "%Y%m%d.%f");
-    }
-  else
-    {
-      int timeunit = taxis->unit != -1 ? taxis->unit : TUNIT_HOUR;
-      int rdate    = taxis->rdate;
-      int rtime    = taxis->rtime;
-      if ( rdate == -1 )
-        {
-          rdate  = taxis->vdate;
-          rtime  = taxis->vtime;
-        }
-
-      int year, month, day, hour, minute, second;
-      cdiDecodeDate(rdate, &year, &month, &day);
-      cdiDecodeTime(rtime, &hour, &minute, &second);
-
-      if ( timeunit == TUNIT_QUARTER   ) timeunit = TUNIT_MINUTE;
-      if ( timeunit == TUNIT_30MINUTES ) timeunit = TUNIT_MINUTE;
-      if ( timeunit == TUNIT_3HOURS  ||
-	   timeunit == TUNIT_6HOURS  ||
-	   timeunit == TUNIT_12HOURS ) timeunit = TUNIT_HOUR;
-
-      sprintf(unitstr, "%s since %d-%d-%d %02d:%02d:%02d",
-              tunitNamePtr(timeunit), year, month, day, hour, minute, second);
-    }
 }
 
-static
-void cdfDefForecastTimeUnits(char *unitstr, int timeunit)
-{
-  unitstr[0] = 0;
-
-  if ( timeunit == -1 ) timeunit = TUNIT_HOUR;
-
-  if ( timeunit == TUNIT_QUARTER   ) timeunit = TUNIT_MINUTE;
-  if ( timeunit == TUNIT_30MINUTES ) timeunit = TUNIT_MINUTE;
-  if ( timeunit == TUNIT_3HOURS  ||
-       timeunit == TUNIT_6HOURS  ||
-       timeunit == TUNIT_12HOURS ) timeunit = TUNIT_HOUR;
-
-  strcpy(unitstr, tunitNamePtr(timeunit));
-}
-
-static
-void cdfDefCalendar(int fileID, int ncvarid, int calendar)
-{
-  static const struct { int calCode; const char *calStr; } calTab[] = {
-    { CALENDAR_STANDARD, "standard" },
-    { CALENDAR_PROLEPTIC, "proleptic_gregorian" },
-    { CALENDAR_NONE, "none" },
-    { CALENDAR_360DAYS, "360_day" },
-    { CALENDAR_365DAYS, "365_day" },
-    { CALENDAR_366DAYS, "366_day" },
-  };
-  enum { calTabSize = sizeof calTab / sizeof calTab[0] };
-
-  for ( size_t i = 0; i < calTabSize; ++i )
-    if ( calTab[i].calCode == calendar )
-      {
-        const char *calstr = calTab[i].calStr;
-        size_t len = strlen(calstr);
-        cdf_put_att_text(fileID, ncvarid, "calendar", len, calstr);
-        break;
-      }
-}
-
-
-void cdfDefTime(stream_t* streamptr)
-{
-  int time_varid;
-  int time_dimid;
-  int time_bndsid = -1;
-  static const char default_name[] = "time";
-
-  if ( streamptr->basetime.ncvarid != CDI_UNDEFID ) return;
-
-  int fileID = streamptr->fileID;
-
-  if ( streamptr->ncmode == 0 ) streamptr->ncmode = 1;
-  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-
-  taxis_t *taxis = &streamptr->tsteps[0].taxis;
-
-  const char *taxis_name = (taxis->name && taxis->name[0]) ? taxis->name : default_name ;
-
-  cdf_def_dim(fileID, taxis_name, NC_UNLIMITED, &time_dimid);
-  streamptr->basetime.ncdimid = time_dimid;
-
-  cdf_def_var(fileID, taxis_name, NC_DOUBLE, 1, &time_dimid, &time_varid);
-
-  streamptr->basetime.ncvarid = time_varid;
-
-  {
-    static const char timeStr[] = "time";
-    cdf_put_att_text(fileID, time_varid, "standard_name", sizeof(timeStr) - 1, timeStr);
-  }
-
-  if ( taxis->longname && taxis->longname[0] )
-    cdf_put_att_text(fileID, time_varid, "long_name", strlen(taxis->longname), taxis->longname);
-
-  if ( taxis->has_bounds )
-    {
-      time_bndsid = cdfDefTimeBounds(fileID, time_varid, time_dimid, taxis_name, taxis);
-      streamptr->basetime.ncvarboundsid = time_bndsid;
-    }
-
-  {
-    char unitstr[CDI_MAX_NAME];
-    cdfDefTimeUnits(unitstr, &streamptr->tsteps[0].taxis, taxis);
-    size_t len = strlen(unitstr);
-    if ( len )
-      {
-        cdf_put_att_text(fileID, time_varid, "units", len, unitstr);
-        /*
-          if ( taxis->has_bounds )
-          cdf_put_att_text(fileID, time_bndsid, "units", len, unitstr);
-        */
-      }
-  }
-
-  if ( taxis->calendar != -1 )
-    {
-      cdfDefCalendar(fileID, time_varid, taxis->calendar);
-      /*
-      if ( taxis->has_bounds )
-        cdfDefCalendar(fileID, time_bndsid, taxis->calendar);
-      */
-    }
-
-  if ( taxis->type == TAXIS_FORECAST )
-    {
-      int leadtimeid;
-
-      cdf_def_var(fileID, "leadtime", NC_DOUBLE, 1, &time_dimid, &leadtimeid);
-
-      streamptr->basetime.leadtimeid = leadtimeid;
-
-      {
-        static const char stdname[] = "forecast_period";
-        cdf_put_att_text(fileID, leadtimeid, "standard_name", sizeof(stdname) - 1, stdname);
-      }
-
-      {
-        static const char lname[] = "Time elapsed since the start of the forecast";
-        cdf_put_att_text(fileID, leadtimeid, "long_name", sizeof(lname) - 1, lname);
-      }
-
-      {
-          char unitstr[CDI_MAX_NAME];
-          cdfDefForecastTimeUnits(unitstr, taxis->fc_unit);
-          size_t len = strlen(unitstr);
-          if ( len )
-            cdf_put_att_text(fileID, leadtimeid, "units", len, unitstr);
-      }
-    }
-
-  cdf_put_att_text(fileID, time_varid, "axis", 1, "T");
-
-  if ( streamptr->ncmode == 2 ) cdf_enddef(fileID);
-}
-
-
 void cdfDefTimestep(stream_t *streamptr, int tsID)
 {
   int vlistID = streamptr->vlistID;
@@ -42899,69 +43302,100 @@ void cdfDefTimestep(stream_t *streamptr, int tsID)
 static
 void cdfDefComplex(stream_t *streamptr, int gridID, int gridindex)
 {
-  int dimID = CDI_UNDEFID;
-  int fileID  = streamptr->fileID;
+  int dimID;
   ncgrid_t *ncgrid = streamptr->ncgrid;
 
   for ( int index = 0; index < gridindex; ++index )
     {
-      if ( ncgrid[index].xdimID != CDI_UNDEFID )
+      if ( ncgrid[index].ncIDs[CDF_DIMID_X] != CDI_UNDEFID )
         {
           int gridID0 = ncgrid[index].gridID;
           int gridtype0 = gridInqType(gridID0);
           if ( gridtype0 == GRID_SPECTRAL || gridtype0 == GRID_FOURIER )
             {
-              dimID = ncgrid[index].xdimID;
-              break;
+              dimID = ncgrid[index].ncIDs[CDF_DIMID_X];
+              goto dimIDEstablished;
             }
         }
     }
 
-  if ( dimID == CDI_UNDEFID )
-    {
-      static const char axisname[] = "nc2";
-      size_t dimlen = 2;
-
-      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-      cdf_def_dim(fileID, axisname, dimlen, &dimID);
-      cdf_enddef(fileID);
-
-      streamptr->ncmode = 2;
-    }
-
+  {
+    static const char axisname[] = "nc2";
+    size_t dimlen = 2;
+    int fileID  = streamptr->fileID;
+
+    if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+    cdf_def_dim(fileID, axisname, dimlen, &dimID);
+    cdf_enddef(fileID);
+    streamptr->ncmode = 2;
+  }
+  dimIDEstablished:
   ncgrid[gridindex].gridID = gridID;
-  ncgrid[gridindex].xdimID = dimID;
+  ncgrid[gridindex].ncIDs[CDF_DIMID_X] = dimID;
 }
 
-static void
-cdfDefSPorFC(stream_t *streamptr, int gridID, int gridindex,
-             char *restrict axisname, int gridRefType)
+struct idSearch
 {
-  int iz = 0;
-  int dimID = CDI_UNDEFID;
-  ncgrid_t *ncgrid = streamptr->ncgrid;
-
-  size_t dimlen = (size_t)gridInqSize(gridID)/2;
+  int numNonMatching, foundID;
+  size_t foundIdx;
+};
 
-  for ( int index = 0; index < gridindex; index++ )
+static inline struct idSearch
+cdfSearchIDBySize(size_t startIdx, size_t numIDs, const ncgrid_t ncgrid[numIDs],
+                  int ncIDType, int searchType, int searchSize,
+                  int (*typeInq)(int id), int (*sizeInq)(int id))
+{
+  int numNonMatching = 0,
+    foundID = CDI_UNDEFID;
+  size_t foundIdx = SIZE_MAX;
+  for ( size_t index = startIdx; index < numIDs; index++ )
     {
-      if ( ncgrid[index].ydimID != CDI_UNDEFID )
+      if ( ncgrid[index].ncIDs[ncIDType] != CDI_UNDEFID )
         {
-          int gridID0 = ncgrid[index].gridID;
-          int gridtype0 = gridInqType(gridID0);
-          if ( gridtype0 == gridRefType )
+          int id0 = ncgrid[index].gridID,
+            id0Type = typeInq(id0);
+          if ( id0Type == searchType )
             {
-              size_t dimlen0 = (size_t)gridInqSize(gridID0)/2;
-              if ( dimlen == dimlen0 )
+              int size0 = sizeInq(id0);
+              if ( searchSize == size0 )
                 {
-                  dimID = ncgrid[index].ydimID;
+                  foundID = ncgrid[index].ncIDs[ncIDType];
+                  foundIdx = index;
                   break;
                 }
-              else
-                iz++;
+              numNonMatching++;
             }
         }
     }
+  return (struct idSearch){ .numNonMatching = numNonMatching,
+      .foundID = foundID, .foundIdx = foundIdx };
+}
+
+static int
+cdfGridInqHalfSize(int gridID)
+{
+  return gridInqSize(gridID)/2;
+}
+
+
+static void
+cdfDefSPorFC(stream_t *streamptr, int gridID, int gridindex,
+             char *restrict axisname, int gridRefType)
+{
+  ncgrid_t *ncgrid = streamptr->ncgrid;
+
+  size_t dimlen = (size_t)(gridInqSize(gridID))/2;
+
+  int iz;
+  int dimID;
+  {
+    struct idSearch search
+      = cdfSearchIDBySize(0, (size_t)gridindex, ncgrid, CDF_DIMID_Y,
+                          gridRefType, (int)dimlen,
+                          gridInqType, cdfGridInqHalfSize);
+    dimID = search.foundID;
+    iz = search.numNonMatching;
+  }
 
   if ( dimID == CDI_UNDEFID )
     {
@@ -42978,7 +43412,7 @@ cdfDefSPorFC(stream_t *streamptr, int gridID, int gridindex,
     }
 
   ncgrid[gridindex].gridID = gridID;
-  ncgrid[gridindex].ydimID = dimID;
+  ncgrid[gridindex].ncIDs[CDF_DIMID_Y] = dimID;
 }
 
 static
@@ -43001,35 +43435,38 @@ void cdfDefFC(stream_t *streamptr, int gridID, int gridindex)
 
 static const struct cdfDefGridAxisInqs {
   int (*axisSize)(int gridID);
+  int (*axisDimname)(int cdiID, int key, int size, char *mesg);
   int (*axisName)(int cdiID, int key, int size, char *mesg);
-  void (*axisStdname)(int cdiID, char *dimstdname);
   int (*axisLongname)(int cdiID, int key, int size, char *mesg);
-  void (*axisUnits)(int cdiID, char *dimunits);
+  int (*axisUnits)(int cdiID, int key, int size, char *mesg);
+  void (*axisStdname)(int cdiID, char *dimstdname);
   double (*axisVal)(int gridID, int index);
   const double *(*axisValsPtr)(int gridID);
   const double *(*axisBoundsPtr)(int gridID);
 } gridInqsX = {
   .axisSize = gridInqXsize,
+  .axisDimname = cdiGridInqKeyStr,
   .axisName = cdiGridInqKeyStr,
-  .axisStdname = gridInqXstdname,
   .axisLongname = cdiGridInqKeyStr,
-  .axisUnits = gridInqXunits,
+  .axisUnits = cdiGridInqKeyStr,
+  .axisStdname = gridInqXstdname,
   .axisVal = gridInqXval,
   .axisValsPtr = gridInqXvalsPtr,
   .axisBoundsPtr = gridInqXboundsPtr,
 }, gridInqsY = {
   .axisSize = gridInqYsize,
+  .axisDimname = cdiGridInqKeyStr,
   .axisName = cdiGridInqKeyStr,
-  .axisStdname = gridInqYstdname,
   .axisLongname = cdiGridInqKeyStr,
-  .axisUnits = gridInqYunits,
+  .axisUnits = cdiGridInqKeyStr,
+  .axisStdname = gridInqYstdname,
   .axisVal = gridInqYval,
   .axisValsPtr = gridInqYvalsPtr,
   .axisBoundsPtr = gridInqYboundsPtr,
 }, gridInqsZ = {
-  .axisStdname = zaxisInqStdname,
   .axisLongname = cdiZaxisInqKeyStr,
-  .axisUnits = zaxisInqUnits,
+  .axisUnits = cdiZaxisInqKeyStr,
+  .axisStdname = zaxisInqStdname,
 };
 
 static
@@ -43045,12 +43482,13 @@ void cdfPutGridStdAtts(int fileID, int ncvarid, int gridID, int dimtype, const s
   char longname[CDI_MAX_NAME]; longname[0] = 0;
   int keyname = (dimtype == 'Z') ? CDI_KEY_LONGNAME : (dimtype == 'X') ? CDI_KEY_XLONGNAME : CDI_KEY_YLONGNAME;
   inqs->axisLongname(gridID, keyname, CDI_MAX_NAME, longname);
-  if ( (len = strlen(longname)) )
+  if ( longname[0] && (len = strlen(longname)) )
     cdf_put_att_text(fileID, ncvarid, "long_name", len, longname);
 
-  char units[CDI_MAX_NAME];
-  inqs->axisUnits(gridID, units);
-  if ( (len = strlen(units)) )
+  char units[CDI_MAX_NAME]; units[0] = 0;
+  keyname = (dimtype == 'Z') ? CDI_KEY_UNITS : (dimtype == 'X') ? CDI_KEY_XUNITS : CDI_KEY_YUNITS;
+  inqs->axisUnits(gridID, keyname, CDI_MAX_NAME, units);
+  if ( units[0] && (len = strlen(units)) )
     cdf_put_att_text(fileID, ncvarid, "units", len, units);
 }
 
@@ -43058,18 +43496,15 @@ static void
 cdfDefTrajLatLon(stream_t *streamptr, int gridID, int gridindex,
                  const struct cdfDefGridAxisInqs *inqs, int dimtype)
 {
-  nc_type xtype = (gridInqPrec(gridID) == DATATYPE_FLT32) ? NC_FLOAT : NC_DOUBLE;
+  nc_type xtype = (gridInqPrec(gridID) == CDI_DATATYPE_FLT32) ? NC_FLOAT : NC_DOUBLE;
   ncgrid_t *ncgrid = streamptr->ncgrid;
 
   int dimlen = inqs->axisSize(gridID);
   if ( dimlen != 1 )
     Error("%c size isn't 1 for %s grid!", dimtype, gridNamePtr(gridInqType(gridID)));
 
-  int ncvarid = CDI_UNDEFID;
-  if ( dimtype == 'X' )
-    ncvarid = ncgrid[gridindex].xdimID;
-  else
-    ncvarid = ncgrid[gridindex].ydimID;
+  int ncvarid
+    = ncgrid[gridindex].ncIDs[dimtype == 'X' ? CDF_DIMID_X : CDF_DIMID_Y];
 
   if ( ncvarid == CDI_UNDEFID )
     {
@@ -43087,10 +43522,8 @@ cdfDefTrajLatLon(stream_t *streamptr, int gridID, int gridindex,
     }
 
   ncgrid[gridindex].gridID = gridID;
-  if ( dimtype == 'X' )
-    ncgrid[gridindex].xdimID = ncvarid; /* var ID for trajectory !!! */
-  else
-    ncgrid[gridindex].ydimID = ncvarid; /* var ID for trajectory !!! */
+  /* var ID for trajectory !!! */
+  ncgrid[gridindex].ncIDs[dimtype == 'X' ? CDF_DIMID_X : CDF_DIMID_Y] = ncvarid;
 }
 
 static
@@ -43220,9 +43653,14 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
   int nvdimID = CDI_UNDEFID;
   int fileID  = streamptr->fileID;
   size_t dimlen = (size_t)gridAxisInq->axisSize(gridID);
-  nc_type xtype = (gridInqPrec(gridID) == DATATYPE_FLT32) ? NC_FLOAT : NC_DOUBLE;
+  nc_type xtype = (nc_type)cdfDefDatatype(gridInqPrec(gridID), streamptr->filetype);
+
   ncgrid_t *ncgrid = streamptr->ncgrid;
 
+  const double *pvals = gridAxisInq->axisValsPtr(gridID);
+  char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
+  if ( ndims && pvals == NULL ) cdiGridInqKeyStr(gridID, dimKey, CDI_MAX_NAME, dimname);
+
   for ( int index = 0; index < gridindex; ++index )
     {
       int gridID0 = ncgrid[index].gridID;
@@ -43235,16 +43673,17 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
            gridtype0 == GRID_GENERIC )
         {
           size_t dimlen0 = (size_t)gridAxisInq->axisSize(gridID0);
-          if ( dimlen == dimlen0 )
+          char dimname0[CDI_MAX_NAME]; dimname0[0] = 0;
+          if ( dimname[0] ) cdiGridInqKeyStr(gridID0, dimKey, CDI_MAX_NAME, dimname0);
+          bool lname = dimname0[0] ? strcmp(dimname, dimname0) == 0 : true;
+          if ( dimlen == dimlen0 && lname )
             {
               double (*inqVal)(int gridID, int index) = gridAxisInq->axisVal;
               if ( IS_EQUAL(inqVal(gridID0, 0), inqVal(gridID, 0)) &&
                    IS_EQUAL(inqVal(gridID0, (int)dimlen-1), inqVal(gridID, (int)dimlen-1)) )
                 {
-                  if ( dimKey == CDI_KEY_XDIMNAME )
-                    dimID = ncgrid[index].xdimID;
-                  else
-                    dimID = ncgrid[index].ydimID;
+                  dimID = ncgrid[index].ncIDs[dimKey == CDI_KEY_XDIMNAME
+                                              ? CDF_DIMID_X : CDF_DIMID_Y];
                   break;
                 }
             }
@@ -43253,8 +43692,6 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
 
   if ( dimID == CDI_UNDEFID )
     {
-      const double *pvals = gridAxisInq->axisValsPtr(gridID);
-
       char axisname[CDI_MAX_NAME]; axisname[0] = 0;
       int keyname = (axisLetter == 'X') ? CDI_KEY_XNAME : CDI_KEY_YNAME;
       gridAxisInq->axisName(gridID, keyname, CDI_MAX_NAME, axisname);
@@ -43271,11 +43708,6 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
 
       if ( ndims )
         {
-          char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
-
-          if ( pvals == NULL )
-            cdiGridInqKeyStr(gridID, dimKey, CDI_MAX_NAME, dimname);
-
           if ( dimname[0] == 0 ) strcpy(dimname, extendedAxisname);
           dimID = checkDimName(fileID, dimlen, dimname);
 
@@ -43310,7 +43742,7 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
             }
           if ( pbounds )
             {
-              size_t nvertex = 2;
+              size_t nvertex = gridInqNvertex(gridID);
               if ( nc_inq_dimid(fileID, bndsName, &nvdimID) != NC_NOERR )
                 cdf_def_dim(fileID, bndsName, nvertex, &nvdimID);
             }
@@ -43334,19 +43766,13 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
       if ( gen_bounds ) Free(pbounds);
 
       if ( ndims == 0 )
-        {
-          if ( dimKey == CDI_KEY_XDIMNAME )
-            ncgrid[gridindex].xvarID = ncvarid;
-          else
-            ncgrid[gridindex].yvarID = ncvarid;
-        }
+        ncgrid[gridindex].ncIDs[dimKey == CDI_KEY_XDIMNAME
+                                ? CDF_VARID_X : CDF_VARID_Y] = ncvarid;
     }
 
   ncgrid[gridindex].gridID = gridID;
-  if ( dimKey == CDI_KEY_XDIMNAME )
-    ncgrid[gridindex].xdimID = dimID;
-  else
-    ncgrid[gridindex].ydimID = dimID;
+  ncgrid[gridindex].ncIDs[dimKey == CDI_KEY_XDIMNAME
+                          ? CDF_DIMID_X : CDF_DIMID_Y] = dimID;
 }
 
 static
@@ -43381,497 +43807,328 @@ static
 void cdfGridCompress(int fileID, int ncvarid, int gridsize, int filetype, int comptype)
 {
 #if  defined  (HAVE_NETCDF4)
-  if ( gridsize > 1 && comptype == CDI_COMPRESS_ZIP && (filetype == FILETYPE_NC4 || filetype == FILETYPE_NC4C) )
+  if ( gridsize > 1 && comptype == CDI_COMPRESS_ZIP && (filetype == CDI_FILETYPE_NC4 || filetype == CDI_FILETYPE_NC4C) )
     {
-      nc_def_var_chunking(fileID, ncvarid, NC_CHUNKED, NULL);
+      cdf_def_var_chunking(fileID, ncvarid, NC_CHUNKED, NULL);
       cdfDefVarDeflate(fileID, ncvarid, 1);
     }
 #endif
 }
 
 static
-void cdfDefCurvilinear(stream_t *streamptr, int gridID, int gridindex)
+void cdfDefGridReference(stream_t *streamptr, int gridID)
 {
-  int xdimID = CDI_UNDEFID;
-  int ydimID = CDI_UNDEFID;
-  int ncxvarid = CDI_UNDEFID, ncyvarid = CDI_UNDEFID;
-  int ncbxvarid = CDI_UNDEFID, ncbyvarid = CDI_UNDEFID, ncavarid = CDI_UNDEFID;
-  nc_type xtype = (gridInqPrec(gridID) == DATATYPE_FLT32) ? NC_FLOAT : NC_DOUBLE;
-  ncgrid_t *ncgrid = streamptr->ncgrid;
-
   int fileID  = streamptr->fileID;
+  int number = gridInqNumber(gridID);
 
-  size_t dimlen = (size_t)gridInqSize(gridID);
-  size_t xdimlen = (size_t)gridInqXsize(gridID);
-  size_t ydimlen = (size_t)gridInqYsize(gridID);
+  if ( number > 0 )
+    {
+      cdf_put_att_int(fileID, NC_GLOBAL, "number_of_grid_used", NC_INT, 1, &number);
+    }
 
-  for ( int index = 0; index < gridindex; index++ )
+  const char *gridfile = gridInqReferencePtr(gridID);
+  if ( gridfile && gridfile[0] != 0 )
+    cdf_put_att_text(fileID, NC_GLOBAL, "grid_file_uri", strlen(gridfile), gridfile);
+}
+
+static
+void cdfDefGridUUID(stream_t *streamptr, int gridID)
+{
+  unsigned char uuidOfHGrid[CDI_UUID_SIZE];
+
+  gridInqUUID(gridID, uuidOfHGrid);
+  if ( !cdiUUIDIsNull(uuidOfHGrid) )
     {
-      if ( ncgrid[index].xdimID != CDI_UNDEFID )
+      char uuidOfHGridStr[37];
+      cdiUUID2Str(uuidOfHGrid, uuidOfHGridStr);
+      if ( uuidOfHGridStr[0] != 0 && strlen(uuidOfHGridStr) == 36 )
         {
-          int gridID0 = ncgrid[index].gridID;
-          int gridtype0 = gridInqType(gridID0);
-          if ( gridtype0 == GRID_CURVILINEAR )
-            {
-              size_t dimlen0 = (size_t)gridInqSize(gridID0);
-              if ( dimlen == dimlen0 )
-                if ( IS_EQUAL(gridInqXval(gridID0, 0), gridInqXval(gridID, 0)) &&
-                     IS_EQUAL(gridInqXval(gridID0, (int)dimlen-1), gridInqXval(gridID, (int)dimlen-1)) &&
-                     IS_EQUAL(gridInqYval(gridID0, 0), gridInqYval(gridID, 0)) &&
-                     IS_EQUAL(gridInqYval(gridID0, (int)dimlen-1), gridInqYval(gridID, (int)dimlen-1)) )
-                  {
-                    xdimID = ncgrid[index].xdimID;
-                    ydimID = ncgrid[index].ydimID;
-                    ncxvarid = ncgrid[index].xvarID;
-                    ncyvarid = ncgrid[index].yvarID;
-                    break;
-                  }
-            }
+          int fileID  = streamptr->fileID;
+          //if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+          cdf_put_att_text(fileID, NC_GLOBAL, "uuidOfHGrid", 36, uuidOfHGridStr);
+          //if ( streamptr->ncmode == 2 ) cdf_enddef(fileID);
         }
     }
+}
 
-  if ( xdimID == CDI_UNDEFID || ydimID == CDI_UNDEFID )
+struct cdfDefIrregularGridCommonIDs
+{
+  int xdimID, ydimID, ncxvarid, ncyvarid, ncavarid;
+};
+
+static struct cdfDefIrregularGridCommonIDs
+cdfDefIrregularGridCommon(stream_t *streamptr, int gridID,
+                          size_t xdimlen, size_t ydimlen,
+                          int ndims, const char *xdimname_default,
+                          size_t nvertex, const char *vdimname_default,
+                          bool setVdimname)
+{
+  nc_type xtype = (nc_type)cdfDefDatatype(gridInqPrec(gridID), streamptr->filetype);
+  int xdimID = CDI_UNDEFID;
+  int ydimID = CDI_UNDEFID;
+  int ncxvarid = CDI_UNDEFID, ncyvarid = CDI_UNDEFID, ncavarid = CDI_UNDEFID;
+  int ncbxvarid = CDI_UNDEFID, ncbyvarid = CDI_UNDEFID;
+  int fileID  = streamptr->fileID;
+  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+  {
+    char xdimname[CDI_MAX_NAME+3];
+    xdimname[0] = 0;
+    cdiGridInqKeyStr(gridID, CDI_KEY_XDIMNAME, CDI_MAX_NAME, xdimname);
+    if ( xdimname[0] == 0 ) strcpy(xdimname, xdimname_default);
+    xdimID = checkDimName(fileID, xdimlen, xdimname);
+    if ( xdimID == CDI_UNDEFID ) cdf_def_dim(fileID, xdimname, xdimlen, &xdimID);
+  }
+
+  if ( ndims == 3 )
     {
-      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-      {
-        char xdimname[CDI_MAX_NAME+3];
-        xdimname[0] = 0;
-        cdiGridInqKeyStr(gridID, CDI_KEY_XDIMNAME, CDI_MAX_NAME, xdimname);
-        if ( xdimname[0] == 0 ) { xdimname[0] = 'x'; xdimname[1] = 0; }
-        xdimID = checkDimName(fileID, xdimlen, xdimname);
-        if ( xdimID == CDI_UNDEFID ) cdf_def_dim(fileID, xdimname, xdimlen, &xdimID);
-      }
-      {
-        char ydimname[CDI_MAX_NAME+3];
-        ydimname[0] = 0;
-        cdiGridInqKeyStr(gridID, CDI_KEY_YDIMNAME, CDI_MAX_NAME, ydimname);
-        if ( ydimname[0] == 0 ) { ydimname[0] = 'y'; ydimname[1] = 0; }
-        ydimID = checkDimName(fileID, ydimlen, ydimname);
-        if ( ydimID == CDI_UNDEFID ) cdf_def_dim(fileID, ydimname, ydimlen, &ydimID);
-      }
+      char ydimname[CDI_MAX_NAME+3];
+      ydimname[0] = 0;
+      cdiGridInqKeyStr(gridID, CDI_KEY_YDIMNAME, CDI_MAX_NAME, ydimname);
+      if ( ydimname[0] == 0 ) { ydimname[0] = 'y'; ydimname[1] = 0; }
+      ydimID = checkDimName(fileID, ydimlen, ydimname);
+      if ( ydimID == CDI_UNDEFID ) cdf_def_dim(fileID, ydimname, ydimlen, &ydimID);
+    }
 
-      int nvdimID = CDI_UNDEFID;
-      int dimIDs[3];
-      if ( gridInqXboundsPtr(gridID) || gridInqYboundsPtr(gridID) )
+  int nvdimID = CDI_UNDEFID;
+  int dimIDs[3];
+  dimIDs[ndims-1] = CDI_UNDEFID;
+  if ( setVdimname )
+    {
+      char vdimname[CDI_MAX_NAME+3]; vdimname[0] = 0;
+      cdiGridInqKeyStr(gridID, CDI_KEY_VDIMNAME, CDI_MAX_NAME, vdimname);
+      if ( vdimname[0] == 0 ) strcpy(vdimname, vdimname_default);
+      nvdimID = dimIDs[ndims-1] = checkDimName(fileID, nvertex, vdimname);
+      if ( nvdimID == CDI_UNDEFID )
         {
-          char vdimname[CDI_MAX_NAME+3]; vdimname[0] = 0;
-          cdiGridInqKeyStr(gridID, CDI_KEY_VDIMNAME, CDI_MAX_NAME, vdimname);
-          if ( vdimname[0] == 0 ) strcpy(vdimname, "nv4");
-          size_t nvertex = 4;
-          nvdimID = checkDimName(fileID, nvertex, vdimname);
-          if ( nvdimID == CDI_UNDEFID ) cdf_def_dim(fileID, vdimname, nvertex, &nvdimID);
+          cdf_def_dim(fileID, vdimname, nvertex, dimIDs+ndims-1);
+          nvdimID = dimIDs[ndims-1];
         }
+    }
 
+  if ( ndims == 3 )
+    {
       dimIDs[0] = ydimID;
       dimIDs[1] = xdimID;
-      dimIDs[2] = nvdimID;
-
-      if ( gridInqXvalsPtr(gridID) )
-        {
-          char xaxisname[CDI_MAX_NAME]; xaxisname[0] = 0;
-          cdiGridInqKeyStr(gridID, CDI_KEY_XNAME, CDI_MAX_NAME, xaxisname);
-          checkGridName(xaxisname, fileID);
+    }
+  else /* ndims == 2 */
+    {
+      dimIDs[0] = xdimID;
+      cdfDefGridReference(streamptr, gridID);
+      cdfDefGridUUID(streamptr, gridID);
+    }
 
-          cdf_def_var(fileID, xaxisname, xtype, 2, dimIDs, &ncxvarid);
-          cdfGridCompress(fileID, ncxvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
+  const double *xvalsPtr = gridInqXvalsPtr(gridID),
+    *xboundsPtr = NULL;
+  if ( xvalsPtr )
+    {
+      char xaxisname[CDI_MAX_NAME]; xaxisname[0] = 0;
+      cdiGridInqKeyStr(gridID, CDI_KEY_XNAME, CDI_MAX_NAME, xaxisname);
+      checkGridName(xaxisname, fileID);
+      cdf_def_var(fileID, xaxisname, xtype, ndims-1, dimIDs, &ncxvarid);
+      cdfGridCompress(fileID, ncxvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
 
-          cdfPutGridStdAtts(fileID, ncxvarid, gridID, 'X', &gridInqsX);
+      cdfPutGridStdAtts(fileID, ncxvarid, gridID, 'X', &gridInqsX);
 
-          /* attribute for Panoply */
-          cdf_put_att_text(fileID, ncxvarid, "_CoordinateAxisType", 3, "Lon");
+      /* attribute for Panoply */
+      if ( ndims == 3 )
+        cdf_put_att_text(fileID, ncxvarid, "_CoordinateAxisType", 3, "Lon");
 
-          if ( gridInqXboundsPtr(gridID) && nvdimID != CDI_UNDEFID )
-            {
-              size_t xaxisnameLen = strlen(xaxisname);
-              xaxisname[xaxisnameLen] = '_';
-              memcpy(xaxisname + xaxisnameLen + 1, bndsName, sizeof (bndsName));
-              cdf_def_var(fileID, xaxisname, xtype, 3, dimIDs, &ncbxvarid);
-              cdfGridCompress(fileID, ncbxvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
+      if ( (xboundsPtr = gridInqXboundsPtr(gridID)) && nvdimID != CDI_UNDEFID )
+        {
+          size_t xaxisnameLen = strlen(xaxisname);
+          xaxisname[xaxisnameLen] = '_';
+          memcpy(xaxisname + xaxisnameLen + 1, bndsName, sizeof (bndsName));
+          cdf_def_var(fileID, xaxisname, xtype, ndims, dimIDs, &ncbxvarid);
+          cdfGridCompress(fileID, ncbxvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
 
-              cdf_put_att_text(fileID, ncxvarid, "bounds", xaxisnameLen + sizeof (bndsName), xaxisname);
-            }
+          cdf_put_att_text(fileID, ncxvarid, "bounds", xaxisnameLen + sizeof (bndsName), xaxisname);
         }
+    }
 
-      if ( gridInqYvalsPtr(gridID) )
-        {
-          char yaxisname[CDI_MAX_NAME];
-          gridInqYname(gridID, yaxisname);
-          checkGridName(yaxisname, fileID);
+  const double *yvalsPtr = gridInqYvalsPtr(gridID),
+    *yboundsPtr = NULL;
+  if ( yvalsPtr )
+    {
+      char yaxisname[CDI_MAX_NAME];
+      gridInqYname(gridID, yaxisname);
+      checkGridName(yaxisname, fileID);
 
-          cdf_def_var(fileID, yaxisname, xtype, 2, dimIDs, &ncyvarid);
-          cdfGridCompress(fileID, ncyvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
+      cdf_def_var(fileID, yaxisname, xtype, ndims - 1, dimIDs, &ncyvarid);
+      cdfGridCompress(fileID, ncyvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
 
-          cdfPutGridStdAtts(fileID, ncyvarid, gridID, 'Y', &gridInqsY);
+      cdfPutGridStdAtts(fileID, ncyvarid, gridID, 'Y', &gridInqsY);
 
-          /* attribute for Panoply */
-          cdf_put_att_text(fileID, ncyvarid, "_CoordinateAxisType", 3, "Lat");
+      /* attribute for Panoply */
+      if ( ndims == 3 )
+        cdf_put_att_text(fileID, ncyvarid, "_CoordinateAxisType", 3, "Lat");
 
-          if ( gridInqYboundsPtr(gridID) && nvdimID != CDI_UNDEFID )
-            {
-              size_t yaxisnameLen = strlen(yaxisname);
-              yaxisname[yaxisnameLen] = '_';
-              memcpy(yaxisname + yaxisnameLen + 1, bndsName, sizeof (bndsName));
-              cdf_def_var(fileID, yaxisname, xtype, 3, dimIDs, &ncbyvarid);
-              cdfGridCompress(fileID, ncbyvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
+      if ( (yboundsPtr = gridInqYboundsPtr(gridID)) && nvdimID != CDI_UNDEFID )
+        {
+          size_t yaxisnameLen = strlen(yaxisname);
+          yaxisname[yaxisnameLen] = '_';
+          memcpy(yaxisname + yaxisnameLen + 1, bndsName, sizeof (bndsName));
+          cdf_def_var(fileID, yaxisname, xtype, ndims, dimIDs, &ncbyvarid);
+          cdfGridCompress(fileID, ncbyvarid, (int)(xdimlen*ydimlen), streamptr->filetype, streamptr->comptype);
 
-              cdf_put_att_text(fileID, ncyvarid, "bounds", yaxisnameLen + sizeof (bndsName), yaxisname);
-            }
+          cdf_put_att_text(fileID, ncyvarid, "bounds", yaxisnameLen + sizeof (bndsName), yaxisname);
         }
+    }
 
-      if ( gridInqAreaPtr(gridID) )
-        {
-          static const char yaxisname_[] = "cell_area";
-          static const char units[] = "m2";
-          static const char longname[] = "area of grid cell";
-          static const char stdname[] = "cell_area";
+  const double *areaPtr = gridInqAreaPtr(gridID);
+  if ( areaPtr )
+    {
+      static const char yaxisname_[] = "cell_area";
+      static const char units[] = "m2";
+      static const char longname[] = "area of grid cell";
+      static const char stdname[] = "cell_area";
 
-          cdf_def_var(fileID, yaxisname_, xtype, 2, dimIDs, &ncavarid);
+      cdf_def_var(fileID, yaxisname_, xtype, ndims-1, dimIDs, &ncavarid);
 
-          cdf_put_att_text(fileID, ncavarid, "standard_name", sizeof (stdname) - 1, stdname);
-          cdf_put_att_text(fileID, ncavarid, "long_name", sizeof (longname) - 1, longname);
-          cdf_put_att_text(fileID, ncavarid, "units", sizeof (units) - 1, units);
-        }
+      cdf_put_att_text(fileID, ncavarid, "standard_name", sizeof (stdname) - 1, stdname);
+      cdf_put_att_text(fileID, ncavarid, "long_name", sizeof (longname) - 1, longname);
+      cdf_put_att_text(fileID, ncavarid, "units", sizeof (units) - 1, units);
+    }
 
-      cdf_enddef(fileID);
-      streamptr->ncmode = 2;
+  cdf_enddef(fileID);
+  streamptr->ncmode = 2;
 
-      if ( ncxvarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncxvarid,  gridInqXvalsPtr(gridID));
-      if ( ncbxvarid != CDI_UNDEFID ) cdf_put_var_double(fileID, ncbxvarid, gridInqXboundsPtr(gridID));
-      if ( ncyvarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncyvarid,  gridInqYvalsPtr(gridID));
-      if ( ncbyvarid != CDI_UNDEFID ) cdf_put_var_double(fileID, ncbyvarid, gridInqYboundsPtr(gridID));
-      if ( ncavarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncavarid,  gridInqAreaPtr(gridID));
-    }
+  if ( ncxvarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncxvarid,  xvalsPtr);
+  if ( ncbxvarid != CDI_UNDEFID ) cdf_put_var_double(fileID, ncbxvarid, xboundsPtr);
+  if ( ncyvarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncyvarid,  yvalsPtr);
+  if ( ncbyvarid != CDI_UNDEFID ) cdf_put_var_double(fileID, ncbyvarid, yboundsPtr);
+  if ( ncavarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncavarid,  areaPtr);
 
-  ncgrid[gridindex].gridID = gridID;
-  ncgrid[gridindex].xdimID = xdimID;
-  ncgrid[gridindex].ydimID = ydimID;
-  ncgrid[gridindex].xvarID = ncxvarid;
-  ncgrid[gridindex].yvarID = ncyvarid;
-  ncgrid[gridindex].avarID = ncavarid;
+  return (struct cdfDefIrregularGridCommonIDs) {
+    .xdimID=xdimID, .ydimID = ydimID,
+    .ncxvarid=ncxvarid, .ncyvarid=ncyvarid, .ncavarid=ncavarid
+  };
 }
 
 static
-void cdfDefRgrid(stream_t *streamptr, int gridID, int gridindex)
+void cdfDefCurvilinear(stream_t *streamptr, int gridID, int gridindex)
 {
   ncgrid_t *ncgrid = streamptr->ncgrid;
-  int dimID = CDI_UNDEFID;
 
   size_t dimlen = (size_t)gridInqSize(gridID);
+  size_t xdimlen = (size_t)gridInqXsize(gridID);
+  size_t ydimlen = (size_t)gridInqYsize(gridID);
 
-  int iz = 0;
-  for ( int index = 0; index < gridindex; index++ )
-    {
-      if ( ncgrid[index].xdimID != CDI_UNDEFID )
+  int xdimID = CDI_UNDEFID, ydimID = CDI_UNDEFID;
+  int ncxvarid = CDI_UNDEFID, ncyvarid = CDI_UNDEFID, ncavarid = CDI_UNDEFID;
+  {
+    size_t ofs = 0;
+    do {
+      struct idSearch search
+        = cdfSearchIDBySize(ofs, (size_t)gridindex, ncgrid, CDF_DIMID_X,
+                            GRID_CURVILINEAR, (int)dimlen,
+                            gridInqType, gridInqSize);
+      size_t index = search.foundIdx;
+      if ( index != SIZE_MAX )
         {
           int gridID0 = ncgrid[index].gridID;
-          int gridtype0 = gridInqType(gridID0);
-          if ( gridtype0 == GRID_GAUSSIAN_REDUCED )
+          if (    IS_EQUAL(gridInqXval(gridID0, 0), gridInqXval(gridID, 0))
+               && IS_EQUAL(gridInqXval(gridID0, (int)dimlen-1),
+                           gridInqXval(gridID, (int)dimlen-1))
+               && IS_EQUAL(gridInqYval(gridID0, 0), gridInqYval(gridID, 0))
+               && IS_EQUAL(gridInqYval(gridID0, (int)dimlen-1),
+                           gridInqYval(gridID, (int)dimlen-1)) )
             {
-              size_t dimlen0 = (size_t)gridInqSize(gridID0);
-
-              if ( dimlen == dimlen0 )
-                {
-                  dimID = ncgrid[index].xdimID;
-                  break;
-                }
-              iz++;
+              xdimID = ncgrid[index].ncIDs[CDF_DIMID_X];
+              ydimID = ncgrid[index].ncIDs[CDF_DIMID_Y];
+              ncxvarid = ncgrid[index].ncIDs[CDF_VARID_X];
+              ncyvarid = ncgrid[index].ncIDs[CDF_VARID_Y];
+              break;
             }
+          ofs = search.foundIdx;
+          if ( ofs < (size_t)gridindex )
+            continue;
         }
-    }
-
-  if ( dimID == CDI_UNDEFID )
-    {
-      int fileID  = streamptr->fileID;
-      static bool lwarn = true;
-      if ( lwarn )
-        {
-          Warning("Creating a NetCDF file with data on a gaussian reduced grid.");
-          Warning("The further processing of the resulting file is unsupported!");
-          lwarn = false;
-        }
-
-      char axisname[7] = "rgridX";
-      if ( iz == 0 ) axisname[5] = '\0';
-      else           sprintf(&axisname[5], "%1d", iz+1);
-
-      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-
-      cdf_def_dim(fileID, axisname, dimlen, &dimID);
-
-      cdf_enddef(fileID);
-      streamptr->ncmode = 2;
-    }
-
-  ncgrid[gridindex].gridID = gridID;
-  ncgrid[gridindex].xdimID = dimID;
-}
-
-static
-void cdfDefGdim(stream_t *streamptr, int gridID, int gridindex)
-{
-  ncgrid_t *ncgrid = streamptr->ncgrid;
-  int iz = 0;
-  int dimID = CDI_UNDEFID;
-
-  size_t dimlen = (size_t)gridInqSize(gridID);
-
-  if ( gridInqYsize(gridID) == 0 )
-    for ( int index = 0; index < gridindex; index++ )
-      {
-        if ( ncgrid[index].xdimID != CDI_UNDEFID )
-          {
-            int gridID0 = ncgrid[index].gridID;
-            int gridtype0 = gridInqType(gridID0);
-            if ( gridtype0 == GRID_GENERIC )
-              {
-                size_t dimlen0 = (size_t)gridInqSize(gridID0);
-                if ( dimlen == dimlen0 )
-                  {
-                    dimID = ncgrid[index].xdimID;
-                    break;
-                  }
-                else
-                  iz++;
-              }
-          }
-      }
-
-  if ( gridInqXsize(gridID) == 0 )
-    for ( int index = 0; index < gridindex; index++ )
-      {
-        if ( ncgrid[index].ydimID != CDI_UNDEFID )
-          {
-            int gridID0 = ncgrid[index].gridID;
-            int gridtype0 = gridInqType(gridID0);
-            if ( gridtype0 == GRID_GENERIC )
-              {
-                size_t dimlen0 = (size_t)gridInqSize(gridID0);
-                if ( dimlen == dimlen0 )
-                  {
-                    dimID = ncgrid[index].ydimID;
-                    break;
-                  }
-                else
-                  iz++;
-              }
-          }
-      }
+    } while (false);
+  }
 
-  if ( dimID == CDI_UNDEFID )
+  if ( xdimID == CDI_UNDEFID || ydimID == CDI_UNDEFID )
     {
-      int fileID  = streamptr->fileID;
-      char dimname[CDI_MAX_NAME];
-      strcpy(dimname, "gsize");
-
-      dimID = checkDimName(fileID, dimlen, dimname);
-
-      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-
-      if ( dimID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, dimlen, &dimID);
-
-      cdf_enddef(fileID);
-      streamptr->ncmode = 2;
+      struct cdfDefIrregularGridCommonIDs createdIDs
+        = cdfDefIrregularGridCommon(streamptr, gridID,
+                                    xdimlen, ydimlen, 3, "x", 4, "nv4",
+                                    gridInqXboundsPtr(gridID)
+                                    || gridInqYboundsPtr(gridID));
+      xdimID = createdIDs.xdimID;
+      ydimID = createdIDs.ydimID;
+      ncxvarid = createdIDs.ncxvarid;
+      ncyvarid = createdIDs.ncyvarid;
+      ncavarid = createdIDs.ncavarid;
     }
 
   ncgrid[gridindex].gridID = gridID;
-  ncgrid[gridindex].xdimID = dimID;
-}
-
-static
-void cdfDefGridReference(stream_t *streamptr, int gridID)
-{
-  int fileID  = streamptr->fileID;
-  int number = gridInqNumber(gridID);
-  if ( number > 0 )
-    cdf_put_att_int(fileID, NC_GLOBAL, "number_of_grid_used", NC_INT, 1, &number);
-
-  const char *gridfile = gridInqReferencePtr(gridID);
-  if ( gridfile && gridfile[0] != 0 )
-    cdf_put_att_text(fileID, NC_GLOBAL, "grid_file_uri", strlen(gridfile), gridfile);
-}
-
-static
-void cdfDefGridUUID(stream_t *streamptr, int gridID)
-{
-  unsigned char uuidOfHGrid[CDI_UUID_SIZE];
-
-  gridInqUUID(gridID, uuidOfHGrid);
-  if ( !cdiUUIDIsNull(uuidOfHGrid) )
-    {
-      char uuidOfHGridStr[37];
-      cdiUUID2Str(uuidOfHGrid, uuidOfHGridStr);
-      if ( uuidOfHGridStr[0] != 0 && strlen(uuidOfHGridStr) == 36 )
-        {
-          int fileID  = streamptr->fileID;
-          //if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-          cdf_put_att_text(fileID, NC_GLOBAL, "uuidOfHGrid", 36, uuidOfHGridStr);
-          //if ( streamptr->ncmode == 2 ) cdf_enddef(fileID);
-        }
-    }
+  ncgrid[gridindex].ncIDs[CDF_DIMID_X] = xdimID;
+  ncgrid[gridindex].ncIDs[CDF_DIMID_Y] = ydimID;
+  ncgrid[gridindex].ncIDs[CDF_VARID_X] = ncxvarid;
+  ncgrid[gridindex].ncIDs[CDF_VARID_Y] = ncyvarid;
+  ncgrid[gridindex].ncIDs[CDF_VARID_A] = ncavarid;
 }
 
-static
-void cdfDefZaxisUUID(stream_t *streamptr, int zaxisID)
-{
-  unsigned char uuidOfVGrid[CDI_UUID_SIZE];
-  zaxisInqUUID(zaxisID, uuidOfVGrid);
-
-  if ( uuidOfVGrid[0] != 0 )
-    {
-      char uuidOfVGridStr[37];
-      cdiUUID2Str(uuidOfVGrid, uuidOfVGridStr);
-      if ( uuidOfVGridStr[0] != 0 && strlen(uuidOfVGridStr) == 36 )
-        {
-          int fileID  = streamptr->fileID;
-          if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-          cdf_put_att_text(fileID, NC_GLOBAL, "uuidOfVGrid", 36, uuidOfVGridStr);
-          if ( streamptr->ncmode == 2 ) cdf_enddef(fileID);
-        }
-    }
-}
 
 static
 void cdfDefUnstructured(stream_t *streamptr, int gridID, int gridindex)
 {
-  int dimID = CDI_UNDEFID;
-  int ncxvarid = CDI_UNDEFID, ncyvarid = CDI_UNDEFID;
-  int ncbxvarid = CDI_UNDEFID, ncbyvarid = CDI_UNDEFID, ncavarid = CDI_UNDEFID;
-  int nvdimID = CDI_UNDEFID;
-  nc_type xtype = (gridInqPrec(gridID) == DATATYPE_FLT32) ? NC_FLOAT : NC_DOUBLE;
   ncgrid_t *ncgrid = streamptr->ncgrid;
 
-  int fileID  = streamptr->fileID;
-
   size_t dimlen = (size_t)gridInqSize(gridID);
 
-  for ( int index = 0; index < gridindex; index++ )
-    {
-      if ( ncgrid[index].xdimID != CDI_UNDEFID )
+  int dimID = CDI_UNDEFID;
+  int ncxvarid = CDI_UNDEFID, ncyvarid = CDI_UNDEFID, ncavarid = CDI_UNDEFID;
+  {
+    size_t ofs = 0;
+    do {
+      struct idSearch search
+        = cdfSearchIDBySize(ofs, (size_t)gridindex, ncgrid, CDF_DIMID_X,
+                            GRID_UNSTRUCTURED, (int)dimlen,
+                            gridInqType, gridInqSize);
+      size_t index = search.foundIdx;
+      if ( index != SIZE_MAX )
         {
           int gridID0 = ncgrid[index].gridID;
-          int gridtype0 = gridInqType(gridID0);
-          if ( gridtype0 == GRID_UNSTRUCTURED )
+          if ( gridInqNvertex(gridID0) == gridInqNvertex(gridID) &&
+               IS_EQUAL(gridInqXval(gridID0, 0), gridInqXval(gridID, 0)) &&
+               IS_EQUAL(gridInqXval(gridID0, (int)dimlen-1),
+                        gridInqXval(gridID, (int)dimlen-1)) &&
+               IS_EQUAL(gridInqYval(gridID0, 0), gridInqYval(gridID, 0)) &&
+               IS_EQUAL(gridInqYval(gridID0, (int)dimlen-1),
+                        gridInqYval(gridID, (int)dimlen-1)) )
             {
-              size_t dimlen0 = (size_t)gridInqSize(gridID0);
-              if ( dimlen == dimlen0 )
-		if ( gridInqNvertex(gridID0) == gridInqNvertex(gridID) &&
-		     IS_EQUAL(gridInqXval(gridID0, 0), gridInqXval(gridID, 0)) &&
-                     IS_EQUAL(gridInqXval(gridID0, (int)dimlen-1), gridInqXval(gridID, (int)dimlen-1)) &&
-		     IS_EQUAL(gridInqYval(gridID0, 0), gridInqYval(gridID, 0)) &&
-                     IS_EQUAL(gridInqYval(gridID0, (int)dimlen-1), gridInqYval(gridID, (int)dimlen-1)) )
-		  {
-		    dimID = ncgrid[index].xdimID;
-                    ncxvarid = ncgrid[index].xvarID;
-                    ncyvarid = ncgrid[index].yvarID;
-                    ncavarid = ncgrid[index].avarID;
-		    break;
-		  }
+              dimID = ncgrid[index].ncIDs[CDF_DIMID_X];
+              ncxvarid = ncgrid[index].ncIDs[CDF_VARID_X];
+              ncyvarid = ncgrid[index].ncIDs[CDF_VARID_Y];
+              ncavarid = ncgrid[index].ncIDs[CDF_VARID_A];
+              break;
             }
+          ofs = search.foundIdx;
+          if ( ofs < (size_t)gridindex )
+            continue;
         }
-    }
+    } while (false);
+  }
 
   if ( dimID == CDI_UNDEFID )
     {
-      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
-      {
-        char xdimname[CDI_MAX_NAME+3];
-        xdimname[0] = 0;
-        cdiGridInqKeyStr(gridID, CDI_KEY_XDIMNAME, CDI_MAX_NAME, xdimname);
-        if ( xdimname[0] == 0 ) strcpy(xdimname, "ncells");
-        dimID = checkDimName(fileID, dimlen, xdimname);
-        if ( dimID == CDI_UNDEFID ) cdf_def_dim(fileID, xdimname, dimlen, &dimID);
-      }
-
       size_t nvertex = (size_t)gridInqNvertex(gridID);
-      if ( nvertex > 0 )
-        {
-          char vdimname[CDI_MAX_NAME+3];
-          vdimname[0] = 0;
-          cdiGridInqKeyStr(gridID, CDI_KEY_VDIMNAME, CDI_MAX_NAME, vdimname);
-          if ( vdimname[0] == 0 ) strcpy(vdimname, "vertices");
-          nvdimID = checkDimName(fileID, nvertex, vdimname);
-          if ( nvdimID == CDI_UNDEFID ) cdf_def_dim(fileID, vdimname, nvertex, &nvdimID);
-        }
-
-      cdfDefGridReference(streamptr, gridID);
-
-      cdfDefGridUUID(streamptr, gridID);
-
-      if ( gridInqXvalsPtr(gridID) )
-        {
-          char xaxisname[CDI_MAX_NAME]; xaxisname[0] = 0;
-          cdiGridInqKeyStr(gridID, CDI_KEY_XNAME, CDI_MAX_NAME, xaxisname);
-          checkGridName(xaxisname, fileID);
-          cdf_def_var(fileID, xaxisname, xtype, 1, &dimID, &ncxvarid);
-          cdfGridCompress(fileID, ncxvarid, (int)dimlen, streamptr->filetype, streamptr->comptype);
-
-          cdfPutGridStdAtts(fileID, ncxvarid, gridID, 'X', &gridInqsX);
-
-          if ( gridInqXboundsPtr(gridID) && nvdimID != CDI_UNDEFID )
-            {
-              int dimIDs[2] = { dimID, nvdimID };
-              size_t xaxisnameLen = strlen(xaxisname);
-              xaxisname[xaxisnameLen] = '_';
-              memcpy(xaxisname + xaxisnameLen + 1, bndsName, sizeof (bndsName));
-              cdf_def_var(fileID, xaxisname, xtype, 2, dimIDs, &ncbxvarid);
-              cdfGridCompress(fileID, ncbxvarid, (int)dimlen, streamptr->filetype, streamptr->comptype);
-
-              cdf_put_att_text(fileID, ncxvarid, "bounds", xaxisnameLen + sizeof (bndsName), xaxisname);
-            }
-        }
-
-      if ( gridInqYvalsPtr(gridID) )
-        {
-          char yaxisname[CDI_MAX_NAME];
-          gridInqYname(gridID, yaxisname);
-          checkGridName(yaxisname, fileID);
-          cdf_def_var(fileID, yaxisname, xtype, 1, &dimID, &ncyvarid);
-          cdfGridCompress(fileID, ncyvarid, (int)dimlen, streamptr->filetype, streamptr->comptype);
-
-          cdfPutGridStdAtts(fileID, ncyvarid, gridID, 'Y', &gridInqsY);
-
-          if ( gridInqYboundsPtr(gridID) && nvdimID != CDI_UNDEFID )
-            {
-              int dimIDs[2] = { dimID, nvdimID };
-              size_t yaxisnameLen = strlen(yaxisname);
-              yaxisname[yaxisnameLen] = '_';
-              memcpy(yaxisname + yaxisnameLen + 1, bndsName, sizeof (bndsName));
-              cdf_def_var(fileID, yaxisname, xtype, 2, dimIDs, &ncbyvarid);
-              cdfGridCompress(fileID, ncbyvarid, (int)dimlen, streamptr->filetype, streamptr->comptype);
-
-              cdf_put_att_text(fileID, ncyvarid, "bounds", yaxisnameLen + sizeof (bndsName), yaxisname);
-            }
-        }
-
-      if ( gridInqAreaPtr(gridID) )
-        {
-          static const char yaxisname_[] = "cell_area";
-          static const char units[] = "m2";
-          static const char longname[] = "area of grid cell";
-          static const char stdname[] = "cell_area";
-
-          cdf_def_var(fileID, yaxisname_, xtype, 1, &dimID, &ncavarid);
-
-          cdf_put_att_text(fileID, ncavarid, "standard_name", sizeof (stdname) - 1, stdname);
-          cdf_put_att_text(fileID, ncavarid, "long_name", sizeof (longname) - 1, longname);
-          cdf_put_att_text(fileID, ncavarid, "units", sizeof (units) - 1, units);
-        }
-
-      cdf_enddef(fileID);
-      streamptr->ncmode = 2;
-
-      if ( ncxvarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncxvarid,  gridInqXvalsPtr(gridID));
-      if ( ncbxvarid != CDI_UNDEFID ) cdf_put_var_double(fileID, ncbxvarid, gridInqXboundsPtr(gridID));
-      if ( ncyvarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncyvarid,  gridInqYvalsPtr(gridID));
-      if ( ncbyvarid != CDI_UNDEFID ) cdf_put_var_double(fileID, ncbyvarid, gridInqYboundsPtr(gridID));
-      if ( ncavarid  != CDI_UNDEFID ) cdf_put_var_double(fileID, ncavarid,  gridInqAreaPtr(gridID));
+      struct cdfDefIrregularGridCommonIDs createdIDs
+        = cdfDefIrregularGridCommon(streamptr, gridID,
+                                    dimlen, 1, 2, "ncells",
+                                    nvertex, "vertices", nvertex > 0);
+      dimID = createdIDs.xdimID;
+      ncxvarid = createdIDs.ncxvarid;
+      ncyvarid = createdIDs.ncyvarid;
+      ncavarid = createdIDs.ncavarid;
     }
 
   ncgrid[gridindex].gridID = gridID;
-  ncgrid[gridindex].xdimID = dimID;
-  ncgrid[gridindex].xvarID = ncxvarid;
-  ncgrid[gridindex].yvarID = ncyvarid;
-  ncgrid[gridindex].avarID = ncavarid;
+  ncgrid[gridindex].ncIDs[CDF_DIMID_X] = dimID;
+  ncgrid[gridindex].ncIDs[CDF_VARID_X] = ncxvarid;
+  ncgrid[gridindex].ncIDs[CDF_VARID_Y] = ncyvarid;
+  ncgrid[gridindex].ncIDs[CDF_VARID_A] = ncavarid;
 }
 
 struct attTxtTab2
@@ -43903,46 +44160,60 @@ void cdf_def_vct_echam(stream_t *streamptr, int zaxisID)
 
       if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
 
-      int ncdimid, ncdimid2;
-      cdf_def_dim(fileID, "nhym", (size_t)mlev, &ncdimid);
+      int ncdimid = -1, ncdimid2 = -1;
+      int hyaiid, hybiid, hyamid = -1, hybmid = -1;
+
       cdf_def_dim(fileID, "nhyi", (size_t)ilev, &ncdimid2);
+      cdf_def_var(fileID, "hyai", NC_DOUBLE, 1, &ncdimid2, &hyaiid);
+      cdf_def_var(fileID, "hybi", NC_DOUBLE, 1, &ncdimid2, &hybiid);
+      if ( mlev > 0 )
+        {
+          cdf_def_dim(fileID, "nhym", (size_t)mlev, &ncdimid);
+          cdf_def_var(fileID, "hyam", NC_DOUBLE, 1, &ncdimid,  &hyamid);
+          cdf_def_var(fileID, "hybm", NC_DOUBLE, 1, &ncdimid,  &hybmid);
+        }
 
-      streamptr->vct.mlev   = mlev;
       streamptr->vct.ilev   = ilev;
+      streamptr->vct.mlev   = mlev;
       streamptr->vct.mlevID = ncdimid;
       streamptr->vct.ilevID = ncdimid2;
 
-      int hyaiid, hybiid, hyamid, hybmid;
-      cdf_def_var(fileID, "hyai", NC_DOUBLE, 1, &ncdimid2, &hyaiid);
-      cdf_def_var(fileID, "hybi", NC_DOUBLE, 1, &ncdimid2, &hybiid);
-      cdf_def_var(fileID, "hyam", NC_DOUBLE, 1, &ncdimid,  &hyamid);
-      cdf_def_var(fileID, "hybm", NC_DOUBLE, 1, &ncdimid,  &hybmid);
-
       {
         static const char lname_n[] = "long_name",
-          lname_v_ai[] = "hybrid A coefficient at layer interfaces",
           units_n[] = "units",
+          lname_v_ai[] = "hybrid A coefficient at layer interfaces",
           units_v_ai[] = "Pa",
           lname_v_bi[] = "hybrid B coefficient at layer interfaces",
-          units_v_bi[] = "1",
-          lname_v_am[] = "hybrid A coefficient at layer midpoints",
-          units_v_am[] = "Pa",
-          lname_v_bm[] = "hybrid B coefficient at layer midpoints",
-          units_v_bm[] = "1";
+          units_v_bi[] = "1";
         static const struct attTxtTab2 tab[]
           = {
           { lname_n, lname_v_ai, sizeof (lname_v_ai) - 1 },
           { units_n, units_v_ai, sizeof (units_v_ai) - 1 },
           { lname_n, lname_v_bi, sizeof (lname_v_bi) - 1 },
           { units_n, units_v_bi, sizeof (units_v_bi) - 1 },
+        };
+        enum { tabLen = sizeof (tab) / sizeof (tab[0]) };
+        int ids[tabLen] = { hyaiid, hyaiid, hybiid, hybiid };
+        for ( size_t i = 0; i < tabLen; ++i )
+          cdf_put_att_text(fileID, ids[i], tab[i].attName, tab[i].valLen, tab[i].attVal);
+      }
+
+      {
+        static const char lname_n[] = "long_name",
+          units_n[] = "units",
+          lname_v_am[] = "hybrid A coefficient at layer midpoints",
+          units_v_am[] = "Pa",
+          lname_v_bm[] = "hybrid B coefficient at layer midpoints",
+          units_v_bm[] = "1";
+        static const struct attTxtTab2 tab[]
+          = {
           { lname_n, lname_v_am, sizeof (lname_v_am) - 1 },
           { units_n, units_v_am, sizeof (units_v_am) - 1 },
           { lname_n, lname_v_bm, sizeof (lname_v_bm) - 1 },
           { units_n, units_v_bm, sizeof (units_v_bm) - 1 },
         };
         enum { tabLen = sizeof (tab) / sizeof (tab[0]) };
-        int ids[tabLen] = { hyaiid, hyaiid, hybiid, hybiid,
-                            hyamid, hyamid, hybmid, hybmid };
+        int ids[tabLen] = { hyamid, hyamid, hybmid, hybmid };
         for ( size_t i = 0; i < tabLen; ++i )
           cdf_put_att_text(fileID, ids[i], tab[i].attName, tab[i].valLen, tab[i].attVal);
       }
@@ -43970,7 +44241,7 @@ void cdf_def_vct_echam(stream_t *streamptr, int zaxisID)
 }
 
 static
-void cdf_def_vct_cf(stream_t *streamptr, int zaxisID, int nclevID, int ncbndsID)
+void cdf_def_vct_cf(stream_t *streamptr, int zaxisID, int nclevID, int ncbndsID, int p0status, double p0value)
 {
   int type = zaxisInqType(zaxisID);
 
@@ -44002,7 +44273,10 @@ void cdf_def_vct_cf(stream_t *streamptr, int zaxisID, int nclevID, int ncbndsID)
       streamptr->vct.mlevID = nclevID;
       streamptr->vct.ilevID = nclevID;
 
-      cdf_def_var(fileID, "ap", NC_DOUBLE, 1, dimIDs,  &hyamid);
+      if ( p0status == 0 )
+        cdf_def_var(fileID, "a", NC_DOUBLE, 1, dimIDs,  &hyamid);
+      else
+        cdf_def_var(fileID, "ap", NC_DOUBLE, 1, dimIDs,  &hyamid);
       cdf_def_var(fileID, "b",  NC_DOUBLE, 1, dimIDs,  &hybmid);
 
       {
@@ -44024,7 +44298,10 @@ void cdf_def_vct_cf(stream_t *streamptr, int zaxisID, int nclevID, int ncbndsID)
 
       if ( ncbndsID != -1 )
         {
-          cdf_def_var(fileID, "ap_bnds", NC_DOUBLE, 2, dimIDs, &hyaiid);
+          if ( p0status == 0 )
+            cdf_def_var(fileID, "a_bnds", NC_DOUBLE, 2, dimIDs, &hyaiid);
+          else
+            cdf_def_var(fileID, "ap_bnds", NC_DOUBLE, 2, dimIDs, &hyaiid);
           cdf_def_var(fileID, "b_bnds",  NC_DOUBLE, 2, dimIDs, &hybiid);
           {
             static const char lname[] = "vertical coordinate formula term: ap(k+1/2)";
@@ -44047,32 +44324,38 @@ void cdf_def_vct_cf(stream_t *streamptr, int zaxisID, int nclevID, int ncbndsID)
       cdf_enddef(fileID);
       streamptr->ncmode = 2;
 
-      const double *vctptr = zaxisInqVctPtr(zaxisID);
+      int vctsize = zaxisInqVctSize(zaxisID);
+      double vct[vctsize];
+      zaxisInqVct(zaxisID, vct);
+
+      if ( p0status == 0 && IS_NOT_EQUAL(p0value,0) )
+        for ( int i = 0; i < vctsize/2; ++i ) vct[i] /= p0value;
+
       double tarray[ilev*2];
 
       if ( ncbndsID != -1 )
         {
           for ( int i = 0; i < mlev; ++i )
             {
-              tarray[2*i  ] = vctptr[i];
-              tarray[2*i+1] = vctptr[i+1];
+              tarray[2*i  ] = vct[i];
+              tarray[2*i+1] = vct[i+1];
             }
           cdf_put_var_double(fileID, hyaiid, tarray);
 
           for ( int i = 0; i < mlev; ++i )
             {
-              tarray[2*i  ] = vctptr[ilev+i];
-              tarray[2*i+1] = vctptr[ilev+i+1];
+              tarray[2*i  ] = vct[ilev+i];
+              tarray[2*i+1] = vct[ilev+i+1];
             }
           cdf_put_var_double(fileID, hybiid, tarray);
         }
 
       for ( int i = 0; i < mlev; ++i )
-        tarray[i] = (vctptr[i] + vctptr[i+1]) * 0.5;
+        tarray[i] = (vct[i] + vct[i+1]) * 0.5;
       cdf_put_var_double(fileID, hyamid, tarray);
 
       for ( int i = 0; i < mlev; ++i )
-        tarray[i] = (vctptr[ilev+i] + vctptr[ilev+i+1]) * 0.5;
+        tarray[i] = (vct[ilev+i] + vct[ilev+i+1]) * 0.5;
       cdf_put_var_double(fileID, hybmid, tarray);
     }
 }
@@ -44086,10 +44369,9 @@ void cdf_def_zaxis_hybrid_echam(stream_t *streamptr, int type, int *ncvaridp, in
 
   if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
 
-  int ncvarid;
   cdf_def_dim(fileID, axisname, dimlen, dimID);
-  cdf_def_var(fileID, axisname, (nc_type) xtype, 1, dimID,  &ncvarid);
-  *ncvaridp = ncvarid;
+  cdf_def_var(fileID, axisname, (nc_type) xtype, 1, dimID,  ncvaridp);
+  int ncvarid = *ncvaridp;
 
   {
     static const char sname[] = "hybrid_sigma_pressure";
@@ -44144,65 +44426,86 @@ void cdf_def_zaxis_hybrid_echam(stream_t *streamptr, int type, int *ncvaridp, in
   cdf_def_vct_echam(streamptr, zaxisID);
 
   if ( *dimID == CDI_UNDEFID )
-    {
-      if ( type == ZAXIS_HYBRID )
-        streamptr->zaxisID[zaxisindex] = streamptr->vct.mlevID;
-      else
-        streamptr->zaxisID[zaxisindex] = streamptr->vct.ilevID;
-    }
+    streamptr->zaxisID[zaxisindex] = type == ZAXIS_HYBRID
+      ? streamptr->vct.mlevID : streamptr->vct.ilevID;
 }
 
 static
 void cdf_def_zaxis_hybrid_cf(stream_t *streamptr, int type, int *ncvaridp, int zaxisID, int zaxisindex, int xtype, size_t dimlen, int *dimID, char *axisname)
 {
+  int fileID = streamptr->fileID;
+  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
   char psname[CDI_MAX_NAME]; psname[0] = 0;
   cdiZaxisInqKeyStr(zaxisID, CDI_KEY_PSNAME, CDI_MAX_NAME, psname);
   if ( psname[0] == 0 ) strcpy(psname, "ps");
 
-  int fileID = streamptr->fileID;
-  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+  char p0name[CDI_MAX_NAME]; p0name[0] = 0;
+  double p0value = 1;
+  int p0varid = CDI_UNDEFID;
+  int p0status = cdiZaxisInqKeyFlt(zaxisID, CDI_KEY_P0VALUE, &p0value);
+  if ( p0status == 0 )
+    {
+      cdiZaxisInqKeyStr(zaxisID, CDI_KEY_P0NAME, CDI_MAX_NAME, p0name);
+      if ( p0name[0] == 0 ) strcpy(p0name, "p0");
+      cdf_def_var(fileID, p0name, NC_DOUBLE, 0, 0,  &p0varid);
+      static const char longname[] = "reference pressure";
+      cdf_put_att_text(fileID, p0varid, "long_name", strlen(longname), longname);
+      static const char units[] = "Pa";
+      cdf_put_att_text(fileID, p0varid, "units", strlen(units), units);
+    }
+
+  char zname[CDI_MAX_NAME]; zname[0] = 0;
+  char zlongname[CDI_MAX_NAME]; zlongname[0] = 0;
+  char zunits[CDI_MAX_NAME]; zunits[0] = 0;
+  cdiZaxisInqKeyStr(zaxisID, CDI_KEY_NAME, CDI_MAX_NAME, zname);
+  //cdiZaxisInqKeyStr(zaxisID, CDI_KEY_LONGNAME, CDI_MAX_NAME, zlongname);
+  cdiZaxisInqKeyStr(zaxisID, CDI_KEY_UNITS, CDI_MAX_NAME, zunits);
+  if ( zname[0] ) strcpy(axisname, zname);
+  if ( zlongname[0] == 0 ) strcpy(zlongname, "hybrid sigma pressure coordinate");
+  if ( zunits[0] == 0 ) strcpy(zunits, "1");
 
-  strcpy(axisname, "lev");
-
-  int ncvarid;
   cdf_def_dim(fileID, axisname, dimlen, dimID);
-  cdf_def_var(fileID, axisname, (nc_type) xtype, 1, dimID,  &ncvarid);
-  *ncvaridp = ncvarid;
+  cdf_def_var(fileID, axisname, (nc_type) xtype, 1, dimID, ncvaridp);
+  int ncvarid = *ncvaridp;
 
   {
     static const char sname[] = "standard_name",
       sname_v[] = "atmosphere_hybrid_sigma_pressure_coordinate",
-      lname[] = "long_name",
-      lname_v[] = "hybrid sigma pressure coordinate",
-      units[] = "units",
-      units_v[] = "1",
       axis[] = "axis",
       axis_v[] = "Z",
       direction[] = "positive",
       direction_v[] = "down";
     struct attTxtTab2 tab[] = {
       { sname, sname_v, sizeof (sname_v) - 1 },
-      { lname, lname_v, sizeof (lname_v) - 1 },
-      { units, units_v, sizeof (units_v) - 1 },
       { axis, axis_v, sizeof (axis_v) - 1 },
       { direction, direction_v, sizeof (direction_v) - 1 },
     };
     enum { nAtt = sizeof (tab) / sizeof (tab[0]) };
     for ( size_t i = 0; i < nAtt; ++i )
       cdf_put_att_text(fileID, ncvarid, tab[i].attName, tab[i].valLen, tab[i].attVal);
-  }
-  {
-    char txt[CDI_MAX_NAME];
-    size_t len = (size_t)(sprintf(txt, "%s%s", "ap: ap b: b ps: ", psname));
-    cdf_put_att_text(fileID, ncvarid, "formula_terms", len, txt);
+
+    cdf_put_att_text(fileID, ncvarid, "long_name", strlen(zlongname), zlongname);
+    cdf_put_att_text(fileID, ncvarid, "units", strlen(zunits), zunits);
   }
 
+  size_t len = 0;
+  char txt[CDI_MAX_NAME];
+  if ( p0status == 0 )
+    len = (size_t)(sprintf(txt, "%s%s %s%s", "a: a b: b p0: ", p0name, "ps: ", psname));
+  else
+    len = (size_t)(sprintf(txt, "%s%s", "ap: ap b: b ps: ", psname));
+  cdf_put_att_text(fileID, ncvarid, "formula_terms", len, txt);
+
   int ncbvarid = CDI_UNDEFID;
   int nvdimID = CDI_UNDEFID;
 
   double lbounds[dimlen], ubounds[dimlen], levels[dimlen];
 
-  zaxisInqLevels(zaxisID, levels);
+  if ( zaxisInqLevels(zaxisID, NULL) )
+    zaxisInqLevels(zaxisID, levels);
+  else
+    for ( size_t i = 0; i < dimlen; ++i ) levels[i] = i+1;
 
   if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
     {
@@ -44219,7 +44522,7 @@ void cdf_def_zaxis_hybrid_cf(stream_t *streamptr, int type, int *ncvaridp, int z
   //if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
     {
       size_t nvertex = 2;
-      if ( nc_inq_dimid(fileID, bndsName, &nvdimID) != NC_NOERR )
+      if ( dimlen > 1 && nc_inq_dimid(fileID, bndsName, &nvdimID) != NC_NOERR )
         cdf_def_dim(fileID, bndsName, nvertex, &nvdimID);
 
       if ( nvdimID != CDI_UNDEFID )
@@ -44233,22 +44536,21 @@ void cdf_def_zaxis_hybrid_cf(stream_t *streamptr, int type, int *ncvaridp, int z
           cdf_put_att_text(fileID, ncvarid, "bounds", axisnameLen, axisname);
           {
             static const char sname[] = "standard_name",
-              sname_v[] = "atmosphere_hybrid_sigma_pressure_coordinate",
-              units[] = "units",
-              units_v[] = "1";
+              sname_v[] = "atmosphere_hybrid_sigma_pressure_coordinate";
             struct attTxtTab2 tab[] = {
               { sname, sname_v, sizeof (sname_v) - 1 },
-              { units, units_v, sizeof (units_v) - 1 },
             };
             enum { nAtt = sizeof (tab) / sizeof (tab[0]) };
             for ( size_t i = 0; i < nAtt; ++i )
               cdf_put_att_text(fileID, ncbvarid, tab[i].attName, tab[i].valLen, tab[i].attVal);
+            cdf_put_att_text(fileID, ncbvarid, "units", strlen(zunits), zunits);
           }
-          {
-            char txt[CDI_MAX_NAME];
-            size_t len = (size_t)(sprintf(txt, "%s%s", "ap: ap_bnds b: b_bnds ps: ", psname));
-            cdf_put_att_text(fileID, ncbvarid, "formula_terms", len, txt);
-          }
+
+          if ( p0status == 0 )
+            len = (size_t)(sprintf(txt, "%s%s %s%s", "a: a_bnds b: b_bnds p0: ", p0name, "ps: ", psname));
+          else
+            len = (size_t)(sprintf(txt, "%s%s", "ap: ap_bnds b: b_bnds ps: ", psname));
+          cdf_put_att_text(fileID, ncbvarid, "formula_terms", len, txt);
         }
     }
 
@@ -44257,6 +44559,8 @@ void cdf_def_zaxis_hybrid_cf(stream_t *streamptr, int type, int *ncvaridp, int z
 
   cdf_put_var_double(fileID, ncvarid, levels);
 
+  if ( p0varid != CDI_UNDEFID ) cdf_put_var_double(fileID, p0varid, &p0value);
+
   if ( ncbvarid != CDI_UNDEFID )
     {
       double zbounds[2*dimlen];
@@ -44268,24 +44572,102 @@ void cdf_def_zaxis_hybrid_cf(stream_t *streamptr, int type, int *ncvaridp, int z
       cdf_put_var_double(fileID, ncbvarid, zbounds);
     }
 
-  cdf_def_vct_cf(streamptr, zaxisID, *dimID, nvdimID);
+  cdf_def_vct_cf(streamptr, zaxisID, *dimID, nvdimID, p0status, p0value);
 
   if ( *dimID == CDI_UNDEFID )
+    streamptr->zaxisID[zaxisindex] = type == ZAXIS_HYBRID
+      ? streamptr->vct.mlevID : streamptr->vct.ilevID;
+}
+
+static
+void cdf_def_zaxis_hybrid(stream_t *streamptr, int type, int *ncvarid, int zaxisID, int zaxisindex, int xtype, size_t dimlen, int *dimID, char *axisname)
+{
+  void (*def_zaxis_hybrid_delegate)(stream_t *streamptr, int type, int *ncvarid, int zaxisID, int zaxisindex, int xtype, size_t dimlen, int *dimID, char *axisname)
+    = ( (!CDI_cmor_mode && cdiConvention == CDI_CONVENTION_ECHAM)
+        || type == ZAXIS_HYBRID_HALF )
+    ? cdf_def_zaxis_hybrid_echam : cdf_def_zaxis_hybrid_cf;
+  def_zaxis_hybrid_delegate(streamptr, type, ncvarid, zaxisID, zaxisindex, xtype, dimlen, dimID, axisname);
+}
+
+static
+void cdfDefZaxisUUID(stream_t *streamptr, int zaxisID)
+{
+  unsigned char uuidOfVGrid[CDI_UUID_SIZE];
+  zaxisInqUUID(zaxisID, uuidOfVGrid);
+
+  if ( uuidOfVGrid[0] != 0 )
     {
-      if ( type == ZAXIS_HYBRID )
-        streamptr->zaxisID[zaxisindex] = streamptr->vct.mlevID;
-      else
-        streamptr->zaxisID[zaxisindex] = streamptr->vct.ilevID;
+      char uuidOfVGridStr[37];
+      cdiUUID2Str(uuidOfVGrid, uuidOfVGridStr);
+      if ( uuidOfVGridStr[0] != 0 && strlen(uuidOfVGridStr) == 36 )
+        {
+          int fileID  = streamptr->fileID;
+          if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+          cdf_put_att_text(fileID, NC_GLOBAL, "uuidOfVGrid", 36, uuidOfVGridStr);
+          if ( streamptr->ncmode == 2 ) cdf_enddef(fileID);
+        }
     }
 }
 
 static
-void cdf_def_zaxis_hybrid(stream_t *streamptr, int type, int *ncvarid, int zaxisID, int zaxisindex, int xtype, size_t dimlen, int *dimID, char *axisname)
+void cdfDefZaxisChar(stream_t *streamptr, int zaxisID, char *axisname, int *dimID, size_t dimlen, int zaxisindex)
 {
-  if ( (!CDI_cmor_mode && cdiConvention == CDI_CONVENTION_ECHAM) || type == ZAXIS_HYBRID_HALF )
-    cdf_def_zaxis_hybrid_echam(streamptr, type, ncvarid, zaxisID, zaxisindex, xtype, dimlen, dimID, axisname);
-  else
-    cdf_def_zaxis_hybrid_cf(streamptr, type, ncvarid, zaxisID, zaxisindex, xtype, dimlen, dimID, axisname);
+  int fileID  = streamptr->fileID;
+  int ncvarID = CDI_UNDEFID;
+  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+  /* Check StrlenID */
+  char strlen[7] = "strlen\0";
+  size_t clen = (size_t) zaxisInqCLen(zaxisID);
+  if ( clen == 0 )
+    Error("Maximal string length value is 0.\nA given character axis requires a dimension to save the maximal string length.");
+  int strlenID = CDI_UNDEFID;
+  strlenID = checkDimName(fileID, clen, strlen);
+
+  if ( strlenID == CDI_UNDEFID ) cdf_def_dim(fileID, strlen, clen, &strlenID);
+
+  /* Check 'areatype'dimID */
+  char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
+  cdiZaxisInqKeyStr(zaxisID, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
+  *dimID = checkDimName(fileID, dimlen, dimname);
+  if ( !(dimlen > 0) )
+    Error("No strings delivered for a character axis.");
+  if ( dimname[0] == 0 ) { memcpy(dimname, "area_type", 10); dimname[10] = 0; }
+
+  if ( *dimID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, dimlen, dimID);
+
+  int dimIDs[2];
+  dimIDs[0] = *dimID;
+  dimIDs[1] = strlenID;
+
+  /* Get Stringvalues */
+  char **cvals = zaxisInqCValsPtr(zaxisID);
+
+  if ( cvals )
+    {
+      /* Define variable and its attributes */
+      cdf_def_var(fileID, axisname, NC_CHAR, 2, dimIDs, &ncvarID);
+
+      cdfPutGridStdAtts(fileID, ncvarID, zaxisID, 'Z', &gridInqsZ);
+      cdf_put_att_text(fileID, ncvarID, "axis", 1, "Z");
+      cdfDefineAttributes(zaxisID, CDI_GLOBAL, fileID, ncvarID);
+
+      streamptr->nczvarID[zaxisindex] = ncvarID;
+      cdf_enddef(fileID);
+
+      /* Write Stringvalues */
+      size_t start[2], count[2];
+      start[1] = 0;
+      count[0] = 1;
+      count[1] = clen;
+      for ( size_t i = 0; i < dimlen; i++ )
+        {
+          start[0] = i;
+          nc_put_vara_text(fileID, ncvarID, start, count, cvals[i]);
+        }
+    }
+
+  streamptr->ncmode = 2;
 }
 
 static
@@ -44294,12 +44676,8 @@ void cdfDefZaxis(stream_t *streamptr, int zaxisID)
   /*  char zaxisname0[CDI_MAX_NAME]; */
   char axisname[CDI_MAX_NAME];
   int dimID = CDI_UNDEFID;
-  int dimIDs[2];
   int ncvarid = CDI_UNDEFID, ncbvarid = CDI_UNDEFID;
-  int nvdimID = CDI_UNDEFID;
-  int xtype = NC_DOUBLE;
-
-  if ( zaxisInqPrec(zaxisID) == DATATYPE_FLT32 ) xtype = NC_FLOAT;
+  int xtype = zaxisInqPrec(zaxisID) == CDI_DATATYPE_FLT32 ? NC_FLOAT : NC_DOUBLE;
 
   int vlistID = streamptr->vlistID;
   int fileID  = streamptr->fileID;
@@ -44311,19 +44689,18 @@ void cdfDefZaxis(stream_t *streamptr, int zaxisID)
   size_t dimlen = (size_t)zaxisInqSize(zaxisID);
   int type   = zaxisInqType(zaxisID);
 
-  int is_scalar = FALSE;
+  bool is_scalar = false;
   if ( dimlen == 1 )
     {
-      is_scalar = zaxisInqScalar(zaxisID);
+      is_scalar = zaxisInqScalar(zaxisID) > 0;
       if ( !is_scalar && CDI_cmor_mode )
         {
-          is_scalar = TRUE;
+          is_scalar = true;
           zaxisDefScalar(zaxisID);
         }
     }
 
-  int ndims = 1;
-  if ( is_scalar ) ndims = 0;
+  int ndims = is_scalar ? 0 : 1;
 
   if ( dimlen == 1 )
     switch (type)
@@ -44350,8 +44727,7 @@ void cdfDefZaxis(stream_t *streamptr, int zaxisID)
     {
       checkZaxisName(axisname, fileID, vlistID, zaxisID, nzaxis);
 
-      char dimname[CDI_MAX_NAME+3];
-      dimname[0] = 0;
+      char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
       //cdiZaxisInqKeyStr(zaxisID, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
       if ( dimname[0] == 0 ) strcpy(dimname, axisname);
 
@@ -44360,7 +44736,15 @@ void cdfDefZaxis(stream_t *streamptr, int zaxisID)
       if ( type == ZAXIS_HYBRID || type == ZAXIS_HYBRID_HALF )
         {
           cdf_def_zaxis_hybrid(streamptr, type, &ncvarid, zaxisID, zaxisindex, xtype, dimlen, &dimID, axisname);
+
+          int natts;
+          cdiInqNatts(zaxisID, CDI_GLOBAL, &natts);
+          if ( natts > 0 && streamptr->ncmode == 2 ) cdf_redef(fileID);
+          cdfDefineAttributes(zaxisID, CDI_GLOBAL, fileID, ncvarid);
+          if ( natts > 0 && streamptr->ncmode == 2 ) cdf_enddef(fileID);
         }
+      else if ( type == ZAXIS_CHAR )
+        cdfDefZaxisChar(streamptr, zaxisID, axisname, &dimID, dimlen, zaxisindex);
       else
         {
           dimID = checkDimName(fileID, dimlen, dimname);
@@ -44369,76 +44753,75 @@ void cdfDefZaxis(stream_t *streamptr, int zaxisID)
 
           if ( ndims && dimID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, dimlen, &dimID);
 
-          cdf_def_var(fileID, axisname, (nc_type) xtype, ndims, &dimID, &ncvarid);
+          if ( zaxisInqLevels(zaxisID, NULL) )
+            {
+              cdf_def_var(fileID, axisname, (nc_type) xtype, ndims, &dimID, &ncvarid);
 
-          cdfPutGridStdAtts(fileID, ncvarid, zaxisID, 'Z', &gridInqsZ);
+              cdfPutGridStdAtts(fileID, ncvarid, zaxisID, 'Z', &gridInqsZ);
 
-          {
-            int positive = zaxisInqPositive(zaxisID);
-            static const char positive_up[] = "up",
-                              positive_down[] = "down";
-            static const struct attTxtTab tab[2] = {
-              { positive_up, sizeof (positive_up) - 1 },
-              { positive_down, sizeof (positive_down) - 1 },
-            };
-            if ( positive == POSITIVE_UP || positive == POSITIVE_DOWN )
               {
-                size_t select = positive == POSITIVE_DOWN;
-                cdf_put_att_text(fileID, ncvarid, "positive", tab[select].txtLen, tab[select].txt);
+                int positive = zaxisInqPositive(zaxisID);
+                static const char positive_up[] = "up",
+                                  positive_down[] = "down";
+                static const struct attTxtTab tab[2] = {
+                  { positive_up, sizeof (positive_up) - 1 },
+                  { positive_down, sizeof (positive_down) - 1 },
+                };
+                if ( positive == POSITIVE_UP || positive == POSITIVE_DOWN )
+                  {
+                    size_t select = positive == POSITIVE_DOWN;
+                    cdf_put_att_text(fileID, ncvarid, "positive", tab[select].txtLen, tab[select].txt);
+                  }
               }
-          }
-          cdf_put_att_text(fileID, ncvarid, "axis", 1, "Z");
+              cdf_put_att_text(fileID, ncvarid, "axis", 1, "Z");
 
-	  if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
-            {
-              size_t nvertex = 2;
-	      if ( nc_inq_dimid(fileID, bndsName, &nvdimID) != NC_NOERR )
-		cdf_def_dim(fileID, bndsName, nvertex, &nvdimID);
+              if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
+                {
+                  int nvdimID = CDI_UNDEFID;
+                  size_t nvertex = 2;
+                  if ( nc_inq_dimid(fileID, bndsName, &nvdimID) != NC_NOERR )
+                    cdf_def_dim(fileID, bndsName, nvertex, &nvdimID);
 
-	      if ( nvdimID != CDI_UNDEFID )
-		{
-                  size_t axisnameLen = strlen(axisname);
-                  axisname[axisnameLen] = '_';
-                  memcpy(axisname + axisnameLen + 1, bndsName, sizeof (bndsName));
-		  dimIDs[0] = dimID;
-		  dimIDs[ndims] = nvdimID;
-		  cdf_def_var(fileID, axisname, (nc_type) xtype, ndims+1, dimIDs, &ncbvarid);
-		  cdf_put_att_text(fileID, ncvarid, "bounds", strlen(axisname), axisname);
-		}
-	    }
+                  if ( nvdimID != CDI_UNDEFID )
+                    {
+                      size_t axisnameLen = strlen(axisname);
+                      axisname[axisnameLen] = '_';
+                      memcpy(axisname + axisnameLen + 1, bndsName, sizeof (bndsName));
+                      int dimIDs[2];
+                      dimIDs[0] = dimID;
+                      dimIDs[ndims] = nvdimID;
+                      cdf_def_var(fileID, axisname, (nc_type) xtype, ndims+1, dimIDs, &ncbvarid);
+                      cdf_put_att_text(fileID, ncvarid, "bounds", strlen(axisname), axisname);
+                    }
+                }
+
+              cdfDefineAttributes(zaxisID, CDI_GLOBAL, fileID, ncvarid);
+            }
 
           cdf_enddef(fileID);
           streamptr->ncmode = 2;
 
-          cdf_put_var_double(fileID, ncvarid, zaxisInqLevelsPtr(zaxisID));
+          if ( zaxisInqLevels(zaxisID, NULL) )
+            {
+              cdf_put_var_double(fileID, ncvarid, zaxisInqLevelsPtr(zaxisID));
 
-          if ( ncbvarid != CDI_UNDEFID )
-	    {
-              double lbounds[dimlen], ubounds[dimlen], zbounds[2*dimlen];
-	      zaxisInqLbounds(zaxisID, lbounds);
-	      zaxisInqUbounds(zaxisID, ubounds);
-	      for ( size_t i = 0; i < dimlen; ++i )
-		{
-		  zbounds[2*i  ] = lbounds[i];
-		  zbounds[2*i+1] = ubounds[i];
-		}
+              if ( ncbvarid != CDI_UNDEFID )
+                {
+                  double lbounds[dimlen], ubounds[dimlen], zbounds[2*dimlen];
+                  zaxisInqLbounds(zaxisID, lbounds);
+                  zaxisInqUbounds(zaxisID, ubounds);
+                  for ( size_t i = 0; i < dimlen; ++i )
+                    {
+                      zbounds[2*i  ] = lbounds[i];
+                      zbounds[2*i+1] = ubounds[i];
+                    }
 
-	      cdf_put_var_double(fileID, ncbvarid, zbounds);
-	    }
+                  cdf_put_var_double(fileID, ncbvarid, zbounds);
+                }
 
-          if ( ndims == 0 ) streamptr->nczvarID[zaxisindex] = ncvarid;
+              if ( ndims == 0 ) streamptr->nczvarID[zaxisindex] = ncvarid;
+            }
         }
-
-      {
-        int natts;
-        cdiInqNatts(zaxisID, CDI_GLOBAL, &natts);
-
-        if ( natts > 0 && streamptr->ncmode == 2 ) cdf_redef(fileID);
-
-        cdfDefineAttributes(zaxisID, CDI_GLOBAL, fileID, ncvarid);
-
-        if ( natts > 0 && streamptr->ncmode == 2 ) cdf_enddef(fileID);
-      }
     }
 
   if ( dimID != CDI_UNDEFID )
@@ -44449,14 +44832,14 @@ static
 void cdf_def_mapping(stream_t *streamptr, int gridID)
 {
   char mapping[CDI_MAX_NAME]; mapping[0] = 0;
-  cdiGridInqKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, mapping);
+  cdiGridInqKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapping);
   if ( mapping[0] )
     {
       char gmapvarname[CDI_MAX_NAME]; gmapvarname[0] = 0;
-      cdiGridInqKeyStr(gridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, gmapvarname);
+      cdiGridInqKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, gmapvarname);
 
       int fileID = streamptr->fileID;
-      cdf_redef(fileID);
+      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
 
       int ncvarid;
       int ncerrcode = nc_def_var(fileID, gmapvarname, (nc_type) NC_INT, 0, NULL, &ncvarid);
@@ -44474,9 +44857,211 @@ void cdf_def_mapping(stream_t *streamptr, int gridID)
 }
 
 static
+void cdfDefCharacter(stream_t *streamptr, int gridID, int gridindex, int xory, int strlen)
+{
+  if ( streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X] != CDI_UNDEFID ) return;
+
+  int dimlen = ( xory == 0 ) ? gridInqXsize(gridID) : gridInqYsize(gridID);
+  int dimID, strlenID;
+  ncgrid_t *ncgrid = streamptr->ncgrid;
+
+  /* Check for all grids up to gridindex whether it already is defined */
+
+  for ( int index = 0; index < gridindex; index++ )
+    {
+      int gridID0 = ncgrid[index].gridID;
+      int gridtype0 = gridInqType(gridID0);
+      if ( gridtype0 == GRID_CHARXY )
+        {
+          if ( gridInqXIsc(gridID0) == strlen &&
+               gridInqXsize(gridID0) == dimlen )
+            return;
+          else if ( gridInqYIsc(gridID0) == strlen &&
+               gridInqYsize(gridID0) == dimlen )
+            return;
+        }
+    }
+
+  int fileID  = streamptr->fileID;
+
+  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+/* Define Dims */
+
+  char dimname[CDI_MAX_NAME+3];
+  dimname[0] = 0;
+  if ( xory == 0 )
+    cdiGridInqKeyStr(gridID, CDI_KEY_XDIMNAME, CDI_MAX_NAME, dimname);
+  else
+    cdiGridInqKeyStr(gridID, CDI_KEY_YDIMNAME, CDI_MAX_NAME, dimname);
+  if ( dimname[0] == 0 ) { memcpy(dimname, "region", 7); dimname[6] = 0; }
+  dimID = checkDimName(fileID, dimlen, dimname);
+  if ( dimID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, dimlen, &dimID);
+
+/* Define strlength dim */
+
+  strcpy(dimname, "strlen");
+  strlenID = checkDimName(fileID, strlen, dimname);
+  if ( strlenID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, strlen, &strlenID);
+
+/* Define Variable */
+
+  int dimIDs[2];
+  dimIDs[0] = dimID;
+  dimIDs[1] = strlenID;
+
+  char axisname[CDI_MAX_NAME]; axisname[0] = 0;
+  char **cvals = (char **) Malloc(dimlen * sizeof(char *));
+  for ( int i = 0; i < dimlen; i++ )
+    cvals[i] = Malloc(strlen * sizeof(char) );
+  int ncaxisid;
+  if ( xory == 0 )
+    {
+      cdiGridInqKeyStr(gridID, CDI_KEY_XNAME, CDI_MAX_NAME, axisname);
+      gridInqXCvals(gridID, cvals);
+    }
+  else
+    {
+      cdiGridInqKeyStr(gridID, CDI_KEY_YNAME, CDI_MAX_NAME, axisname);
+      gridInqXCvals(gridID, cvals);
+    }
+  int status = nc_inq_varid(fileID, axisname, &ncaxisid);
+  if ( status != NC_NOERR )
+    {
+      cdf_def_var(fileID, axisname, NC_CHAR, 2, dimIDs, &ncaxisid);
+      if ( xory == 0 )
+        cdfPutGridStdAtts(fileID, ncaxisid, gridID, 'X', &gridInqsX);
+      else
+        cdfPutGridStdAtts(fileID, ncaxisid, gridID, 'Y', &gridInqsY);
+    }
+  else
+    return;
+  cdf_enddef(fileID);
+
+/* Write Var */
+
+  size_t start[2], count[2];
+  start[1] = 0;
+  count[0] = 1;
+  count[1] = strlen;
+  for (int i = 0; i < dimlen; i++)
+    {
+      start[0] = i;
+      status = nc_put_vara_text(fileID, ncaxisid, start, count, cvals[i]);
+    }
+
+  ncgrid[gridindex].gridID = gridID;
+  if ( xory == 0 )
+    {
+      ncgrid[gridindex].ncIDs[CDF_DIMID_X] = dimID;
+      ncgrid[gridindex].ncIDs[CDF_VARID_X] = ncaxisid;
+    }
+  else
+    {
+      ncgrid[gridindex].ncIDs[CDF_DIMID_Y] = dimID;
+      ncgrid[gridindex].ncIDs[CDF_VARID_Y] = ncaxisid;
+    }
+  streamptr->ncmode = 2;
+}
+
+static
+void cdfDefRgrid(stream_t *streamptr, int gridID, int gridindex)
+{
+  ncgrid_t *ncgrid = streamptr->ncgrid;
+
+  size_t dimlen = (size_t)gridInqSize(gridID);
+
+  int iz;
+  int dimID;
+  {
+    struct idSearch search
+      = cdfSearchIDBySize(0, (size_t)gridindex, ncgrid, CDF_DIMID_X,
+                          GRID_GAUSSIAN_REDUCED, (int)dimlen,
+                          gridInqType, gridInqSize);
+    iz = search.numNonMatching;
+    dimID = search.foundID;
+  }
+
+  if ( dimID == CDI_UNDEFID )
+    {
+      int fileID  = streamptr->fileID;
+      static bool lwarn = true;
+      if ( lwarn )
+        {
+          Warning("Creating a NetCDF file with data on a gaussian reduced grid.");
+          Warning("The further processing of the resulting file is unsupported!");
+          lwarn = false;
+        }
+
+      char axisname[7] = "rgridX";
+      if ( iz == 0 ) axisname[5] = '\0';
+      else           sprintf(&axisname[5], "%1d", iz+1);
+
+      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+      cdf_def_dim(fileID, axisname, dimlen, &dimID);
+
+      cdf_enddef(fileID);
+      streamptr->ncmode = 2;
+    }
+
+  ncgrid[gridindex].gridID = gridID;
+  ncgrid[gridindex].ncIDs[CDF_DIMID_X] = dimID;
+}
+
+static
+void cdfDefGdim(stream_t *streamptr, int gridID, int gridindex)
+{
+  ncgrid_t *ncgrid = streamptr->ncgrid;
+  int iz = 0;
+  int dimID = CDI_UNDEFID;
+
+  size_t dimlen = (size_t)gridInqSize(gridID);
+
+  if ( gridInqYsize(gridID) == 0 )
+    {
+      struct idSearch search
+        = cdfSearchIDBySize(0, (size_t)gridindex, ncgrid, CDF_DIMID_X,
+                            GRID_GENERIC, (int)dimlen,
+                            gridInqType, gridInqSize);
+      iz = search.numNonMatching;
+      dimID = search.foundID;
+    }
+
+  if ( gridInqXsize(gridID) == 0 )
+    {
+      struct idSearch search
+        = cdfSearchIDBySize(0, (size_t)gridindex, ncgrid, CDF_DIMID_Y,
+                            GRID_GENERIC, (int)dimlen,
+                            gridInqType, gridInqSize);
+      iz += search.numNonMatching;
+      dimID = search.foundID;
+    }
+
+  if ( dimID == CDI_UNDEFID )
+    {
+      int fileID  = streamptr->fileID;
+      char dimname[CDI_MAX_NAME];
+      strcpy(dimname, "gsize");
+
+      dimID = checkDimName(fileID, dimlen, dimname);
+
+      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+      if ( dimID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, dimlen, &dimID);
+
+      cdf_enddef(fileID);
+      streamptr->ncmode = 2;
+    }
+
+  ncgrid[gridindex].gridID = gridID;
+  ncgrid[gridindex].ncIDs[CDF_DIMID_X] = dimID;
+}
+
+static
 void cdfDefGrid(stream_t *streamptr, int gridID, int gridindex)
 {
-  if ( streamptr->ncgrid[gridindex].xdimID != CDI_UNDEFID ) return;
+  if ( streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X] != CDI_UNDEFID ) return;
 
   int gridtype = gridInqType(gridID);
   int size     = gridInqSize(gridID);
@@ -44516,9 +45101,7 @@ void cdfDefGrid(stream_t *streamptr, int gridID, int gridindex)
         }
       else
         {
-          int ndims = 1;
-          if ( gridtype == GRID_LONLAT && size == 1 && gridInqHasDims(gridID) == FALSE )
-            ndims = 0;
+          int ndims = !(gridtype == GRID_LONLAT && size == 1 && !gridInqHasDims(gridID));
 
           if ( gridInqXsize(gridID) > 0 ) cdfDefXaxis(streamptr, gridID, gridindex, ndims);
           if ( gridInqYsize(gridID) > 0 ) cdfDefYaxis(streamptr, gridID, gridindex, ndims);
@@ -44553,12 +45136,18 @@ void cdfDefGrid(stream_t *streamptr, int gridID, int gridindex)
       cdfDefTrajLon(streamptr, gridID, gridindex);
       cdfDefTrajLat(streamptr, gridID, gridindex);
     }
-  /*
-  else if ( gridtype == GRID_LCC )
+  else if ( gridtype == GRID_CHARXY )
     {
-      cdfDefLcc(streamptr, gridID);
+      int strlen = 0;
+      if ( (strlen = gridInqXIsc(gridID)) )
+        cdfDefCharacter(streamptr, gridID, gridindex, 0, strlen);
+      else
+        if ( gridInqXsize(gridID) > 0 ) cdfDefXaxis(streamptr, gridID, gridindex, 1);
+      if ( (strlen = gridInqYIsc(gridID)) )
+        cdfDefCharacter(streamptr, gridID, gridindex, 1, strlen);
+      else
+        if ( gridInqYsize(gridID) > 0 ) cdfDefYaxis(streamptr, gridID, gridindex, 1);
     }
-  */
   else
     {
       Error("Unsupported grid type: %s", gridNamePtr(gridtype));
@@ -44575,36 +45164,33 @@ void cdfDefHistory(stream_t *streamptr, int size, const char *history)
 
 void cdfDefVars(stream_t *streamptr)
 {
-  int index = 0;
   int vlistID = streamptr->vlistID;
   if ( vlistID == CDI_UNDEFID )
     Error("Internal problem! vlist undefined for streamptr %p", streamptr);
 
   int ngrids = vlistNgrids(vlistID);
-  streamptr->ncgrid = (ncgrid_t*) Malloc(2*ngrids*sizeof(ncgrid_t));
-  for ( index = 0; index < 2*ngrids; ++index )
+  if ( 2*ngrids > MAX_GRIDS_PS ) Error("Internal problem! Too many grids per stream (max=%d)\n", MAX_GRIDS_PS);
+  for ( int index = 0; index < 2*ngrids; ++index )
     {
       streamptr->ncgrid[index].gridID = CDI_UNDEFID;
-      streamptr->ncgrid[index].xdimID = CDI_UNDEFID;
-      streamptr->ncgrid[index].ydimID = CDI_UNDEFID;
-      streamptr->ncgrid[index].xvarID = CDI_UNDEFID;
-      streamptr->ncgrid[index].yvarID = CDI_UNDEFID;
-      streamptr->ncgrid[index].avarID = CDI_UNDEFID;
+      for (size_t i = 0; i < CDF_SIZE_ncIDs; ++i)
+        streamptr->ncgrid[index].ncIDs[i] = CDI_UNDEFID;
     }
 
-  for ( index = 0; index < ngrids; ++index )
+  for ( int index = 0; index < ngrids; ++index )
     {
       int gridID = vlistGrid(vlistID, index);
       cdfDefGrid(streamptr, gridID, index);
     }
-  index = ngrids-1;
-  for ( int i = 0; i < ngrids; ++i )
-    {
-      int gridID = vlistGrid(vlistID, i);
-      int projID = gridInqProj(gridID);
-      if ( projID != CDI_UNDEFID ) cdfDefGrid(streamptr, projID, ++index);
-    }
-
+  {
+    int index = ngrids-1;
+    for ( int i = 0; i < ngrids; ++i )
+      {
+        int gridID = vlistGrid(vlistID, i);
+        int projID = gridInqProj(gridID);
+        if ( projID != CDI_UNDEFID ) cdfDefGrid(streamptr, projID, ++index);
+      }
+  }
   int nzaxis = vlistNzaxis(vlistID);
   for ( int index = 0; index < nzaxis; ++index )
     {
@@ -44624,6 +45210,254 @@ void cdfDefVars(stream_t *streamptr)
  * require-trailing-newline: t
  * End:
  */
+#if defined (HAVE_CONFIG_H)
+#endif
+
+#ifdef HAVE_LIBNETCDF
+
+#  include <stdio.h>
+#  include <string.h>
+
+#  include <netcdf.h>
+
+
+static
+int cdfDefTimeBounds(int fileID, int nctimevarid, int nctimedimid, const char *taxis_name, taxis_t* taxis)
+{
+  int time_bndsid = -1;
+  int dims[2];
+
+  dims[0] = nctimedimid;
+
+  /* fprintf(stderr, "time has bounds\n"); */
+  static const char bndsName[] = "bnds";
+  if ( nc_inq_dimid(fileID, bndsName, &dims[1]) != NC_NOERR )
+    cdf_def_dim(fileID, bndsName, 2, &dims[1]);
+
+  const char *bndsAttName, *bndsAttVal;
+  size_t bndsAttValLen;
+  char tmpstr[CDI_MAX_NAME];
+  if ( taxis->climatology )
+    {
+      static const char climatology_bndsName[] = "climatology_bnds",
+        climatology_bndsAttName[] = "climatology";
+      bndsAttName = climatology_bndsAttName;
+      bndsAttValLen = sizeof (climatology_bndsName) - 1;
+      bndsAttVal = climatology_bndsName;
+    }
+  else
+    {
+      size_t taxisnameLen = strlen(taxis_name);
+      memcpy(tmpstr, taxis_name, taxisnameLen);
+      tmpstr[taxisnameLen] = '_';
+      memcpy(tmpstr + taxisnameLen + 1, bndsName, sizeof (bndsName));
+      size_t tmpstrLen = taxisnameLen + sizeof (bndsName);
+      static const char generic_bndsAttName[] = "bounds";
+      bndsAttName = generic_bndsAttName;
+      bndsAttValLen = tmpstrLen;
+      bndsAttVal = tmpstr;
+    }
+  cdf_def_var(fileID, bndsAttVal, NC_DOUBLE, 2, dims, &time_bndsid);
+  cdf_put_att_text(fileID, nctimevarid, bndsAttName, bndsAttValLen, bndsAttVal);
+
+  return time_bndsid;
+}
+
+static
+void cdfDefTimeUnits(char *unitstr, taxis_t* taxis0, taxis_t* taxis)
+{
+  if ( taxis->units && taxis->units[0] )
+    {
+      strcpy(unitstr, taxis->units);
+    }
+  else
+    {
+      unitstr[0] = 0;
+
+      if ( taxis0->type == TAXIS_ABSOLUTE )
+        {
+          static const char *const unitstrfmt[3]
+            = { "year as %Y.%f",
+                "month as %Y%m.%f",
+                "day as %Y%m%d.%f" };
+          size_t fmtidx = (taxis0->unit == TUNIT_YEAR ? 0
+                           : (taxis0->unit == TUNIT_MONTH ? 1
+                              : 2));
+          strcpy(unitstr, unitstrfmt[fmtidx]);
+        }
+      else
+        {
+          int timeunit = taxis->unit != -1 ? taxis->unit : TUNIT_HOUR;
+          int rdate    = taxis->rdate != -1 ? taxis->rdate : taxis->vdate;
+          int rtime    = taxis->rdate != -1 ? taxis->rtime : taxis->vtime;
+          int year, month, day, hour, minute, second;
+          cdiDecodeDate(rdate, &year, &month, &day);
+          cdiDecodeTime(rtime, &hour, &minute, &second);
+
+          if ( timeunit == TUNIT_QUARTER   ) timeunit = TUNIT_MINUTE;
+          else if ( timeunit == TUNIT_30MINUTES ) timeunit = TUNIT_MINUTE;
+          else if (    timeunit == TUNIT_3HOURS
+                    || timeunit == TUNIT_6HOURS
+                    || timeunit == TUNIT_12HOURS ) timeunit = TUNIT_HOUR;
+
+          sprintf(unitstr, "%s since %d-%d-%d %02d:%02d:%02d",
+                  tunitNamePtr(timeunit), year, month, day, hour, minute, second);
+        }
+    }
+}
+
+static
+void cdfDefForecastTimeUnits(char *unitstr, int timeunit)
+{
+  unitstr[0] = 0;
+
+  if ( timeunit == -1 ) timeunit = TUNIT_HOUR;
+  else if ( timeunit == TUNIT_QUARTER   ) timeunit = TUNIT_MINUTE;
+  else if ( timeunit == TUNIT_30MINUTES ) timeunit = TUNIT_MINUTE;
+  else if (    timeunit == TUNIT_3HOURS
+            || timeunit == TUNIT_6HOURS
+            || timeunit == TUNIT_12HOURS ) timeunit = TUNIT_HOUR;
+
+  strcpy(unitstr, tunitNamePtr(timeunit));
+}
+
+static
+void cdfDefCalendar(int fileID, int ncvarid, int calendar)
+{
+  static const struct { int calCode; const char *calStr; } calTab[] = {
+    { CALENDAR_STANDARD, "standard" },
+    { CALENDAR_PROLEPTIC, "proleptic_gregorian" },
+    { CALENDAR_NONE, "none" },
+    { CALENDAR_360DAYS, "360_day" },
+    { CALENDAR_365DAYS, "365_day" },
+    { CALENDAR_366DAYS, "366_day" },
+  };
+  enum { calTabSize = sizeof calTab / sizeof calTab[0] };
+
+  for ( size_t i = 0; i < calTabSize; ++i )
+    if ( calTab[i].calCode == calendar )
+      {
+        const char *calstr = calTab[i].calStr;
+        size_t len = strlen(calstr);
+        cdf_put_att_text(fileID, ncvarid, "calendar", len, calstr);
+        break;
+      }
+}
+
+
+void cdfDefTime(stream_t* streamptr)
+{
+  int time_varid;
+  int time_dimid;
+  int time_bndsid = -1;
+  static const char default_name[] = "time";
+
+  if ( streamptr->basetime.ncvarid != CDI_UNDEFID ) return;
+
+  int fileID = streamptr->fileID;
+
+  if ( streamptr->ncmode == 0 ) streamptr->ncmode = 1;
+  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+  taxis_t *taxis = &streamptr->tsteps[0].taxis;
+
+  const char *taxis_name = (taxis->name && taxis->name[0]) ? taxis->name : default_name ;
+
+  cdf_def_dim(fileID, taxis_name, NC_UNLIMITED, &time_dimid);
+  streamptr->basetime.ncdimid = time_dimid;
+
+  nc_type xtype = (taxis->datatype == CDI_DATATYPE_FLT32) ? NC_FLOAT : NC_DOUBLE;
+
+  cdf_def_var(fileID, taxis_name, xtype, 1, &time_dimid, &time_varid);
+
+  streamptr->basetime.ncvarid = time_varid;
+
+#if  defined  (HAVE_NETCDF4)
+  if ( streamptr->filetype == CDI_FILETYPE_NC4 || streamptr->filetype == CDI_FILETYPE_NC4C )
+    {
+      size_t chunk = 512;
+      cdf_def_var_chunking(fileID, time_varid, NC_CHUNKED, &chunk);
+    }
+#endif
+
+  {
+    static const char timeStr[] = "time";
+    cdf_put_att_text(fileID, time_varid, "standard_name", sizeof(timeStr) - 1, timeStr);
+  }
+
+  if ( taxis->longname && taxis->longname[0] )
+    cdf_put_att_text(fileID, time_varid, "long_name", strlen(taxis->longname), taxis->longname);
+
+  if ( taxis->has_bounds )
+    {
+      time_bndsid = cdfDefTimeBounds(fileID, time_varid, time_dimid, taxis_name, taxis);
+      streamptr->basetime.ncvarboundsid = time_bndsid;
+    }
+
+  {
+    char unitstr[CDI_MAX_NAME];
+    cdfDefTimeUnits(unitstr, &streamptr->tsteps[0].taxis, taxis);
+    size_t len = strlen(unitstr);
+    if ( len )
+      {
+        cdf_put_att_text(fileID, time_varid, "units", len, unitstr);
+        /*
+          if ( taxis->has_bounds )
+          cdf_put_att_text(fileID, time_bndsid, "units", len, unitstr);
+        */
+      }
+  }
+
+  if ( taxis->calendar != -1 )
+    {
+      cdfDefCalendar(fileID, time_varid, taxis->calendar);
+      /*
+      if ( taxis->has_bounds )
+        cdfDefCalendar(fileID, time_bndsid, taxis->calendar);
+      */
+    }
+
+  if ( taxis->type == TAXIS_FORECAST )
+    {
+      int leadtimeid;
+      cdf_def_var(fileID, "leadtime", xtype, 1, &time_dimid, &leadtimeid);
+      streamptr->basetime.leadtimeid = leadtimeid;
+
+      {
+        static const char stdname[] = "forecast_period";
+        cdf_put_att_text(fileID, leadtimeid, "standard_name", sizeof(stdname) - 1, stdname);
+      }
+
+      {
+        static const char lname[] = "Time elapsed since the start of the forecast";
+        cdf_put_att_text(fileID, leadtimeid, "long_name", sizeof(lname) - 1, lname);
+      }
+
+      {
+          char unitstr[CDI_MAX_NAME];
+          cdfDefForecastTimeUnits(unitstr, taxis->fc_unit);
+          size_t len = strlen(unitstr);
+          if ( len )
+            cdf_put_att_text(fileID, leadtimeid, "units", len, unitstr);
+      }
+    }
+
+  cdf_put_att_text(fileID, time_varid, "axis", 1, "T");
+
+  if ( streamptr->ncmode == 2 ) cdf_enddef(fileID);
+}
+
+
+#endif
+/*
+ * Local Variables:
+ * c-file-style: "Java"
+ * c-basic-offset: 2
+ * indent-tabs-mode: nil
+ * show-trailing-whitespace: t
+ * require-trailing-newline: t
+ * End:
+ */
 #ifndef CDI_DATETIME_H
 #define CDI_DATETIME_H
 
@@ -44666,6 +45500,11 @@ size_t cgribexEncode(int memtype, int varID, int levelID, int vlistID, int gridI
 		     int vdate, int vtime, int tsteptype, int numavg,
 		     long datasize, const void *data, int nmiss, void *gribbuffer, size_t gribbuffersize);
 
+void *cgribex_handle_new_from_meassage(void *gribbuffer, size_t recsize);
+void cgribex_handle_delete(void *gh);
+
+void cgribexChangeParameterIdentification(void *gh, int code, int ltype, int lev);
+
 #endif  /* _STREAM_CGRIBEX_H */
 /*
  * Local Variables:
@@ -44706,12 +45545,7 @@ int cgribexGetGridType(int *isec2)
     case  GRIB1_GTYPE_LATLON:     { gridtype = GRID_LONLAT;     break; }
     case  GRIB1_GTYPE_LATLON_ROT: { gridtype = GRID_PROJECTION; break; }
     case  GRIB1_GTYPE_LCC:        { gridtype = GRID_LCC;        break; }
-    case  GRIB1_GTYPE_GAUSSIAN:   { if ( ISEC2_Reduced )
-	                              gridtype = GRID_GAUSSIAN_REDUCED;
-                         	    else
-				      gridtype = GRID_GAUSSIAN;
-          	                    break;
-                                  }
+    case  GRIB1_GTYPE_GAUSSIAN:   { gridtype = ISEC2_Reduced ? GRID_GAUSSIAN_REDUCED : GRID_GAUSSIAN; break; }
     case  GRIB1_GTYPE_SPECTRAL:   { gridtype = GRID_SPECTRAL;   break; }
     case  GRIB1_GTYPE_GME:        { gridtype = GRID_GME;        break; }
     }
@@ -44783,9 +45617,9 @@ bool cgribexTimeIsFC(int *isec1)
 static
 int cgribexGetTsteptype(int timerange)
 {
-  int tsteptype = TSTEP_INSTANT;
   static bool lprint = true;
 
+  int tsteptype = TSTEP_INSTANT;
   switch ( timerange )
     {
     case  0:  tsteptype = TSTEP_INSTANT;  break;
@@ -44813,11 +45647,16 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
   bool compyinc = true;
   int gridtype = cgribexGetGridType(isec2);
   int projtype = (gridtype == GRID_PROJECTION && cgribexGetIsRotated(isec2)) ? CDI_PROJ_RLL : CDI_UNDEFID;
+  if ( gridtype == GRID_LCC )
+    {
+      gridtype = GRID_PROJECTION;
+      projtype = CDI_PROJ_LCC;
+    }
 
   if ( streamptr->unreduced && gridtype == GRID_GAUSSIAN_REDUCED && iret != -801 )
     {
-      int ilat, nlon = 0;
-      for ( ilat = 0; ilat < ISEC2_NumLat; ++ilat )
+      int nlon = 0;
+      for ( int ilat = 0; ilat < ISEC2_NumLat; ++ilat )
         if ( ISEC2_RowLon(ilat) > nlon ) nlon = ISEC2_RowLon(ilat);
       gridtype = GRID_GAUSSIAN;
       ISEC2_NumLon = nlon;
@@ -44830,9 +45669,14 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
 
   if ( gridtype == GRID_LONLAT || gridtype == GRID_GAUSSIAN || projtype == CDI_PROJ_RLL )
     {
+      bool ijDirectionIncrementGiven = gribbyte_get_bit(ISEC2_ResFlag, 1);
+      bool uvRelativeToGrid = gribbyte_get_bit(ISEC2_ResFlag, 5);
+
+      if ( uvRelativeToGrid ) grid->uvRelativeToGrid = 1;
       if ( ISEC4_NumValues != ISEC2_NumLon*ISEC2_NumLat )
         Error("numberOfPoints (%d) and gridSize (%d) differ!", ISEC4_NumValues, ISEC2_NumLon*ISEC2_NumLat);
-      grid->size  = ISEC4_NumValues;
+
+      grid->size   = ISEC4_NumValues;
       grid->x.size = ISEC2_NumLon;
       grid->y.size = ISEC2_NumLat;
       if ( gridtype == GRID_GAUSSIAN ) grid->np = ISEC2_NumPar;
@@ -44847,7 +45691,7 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
 
             if ( ISEC2_LastLon < ISEC2_FirstLon && ISEC2_LastLon < 0 ) ISEC2_LastLon += 360000;
 
-            if ( ISEC2_ResFlag && ISEC2_LonIncr > 0 )
+            if ( ijDirectionIncrementGiven && ISEC2_LonIncr > 0 )
               {
                 if ( abs(ISEC2_LastLon - (ISEC2_FirstLon+ISEC2_LonIncr*(grid->x.size-1))) <= 2 )
                   {
@@ -44880,7 +45724,7 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
         if ( grid->y.size > 1 && compyinc )
           {
             bool recompinc = true;
-            if ( ISEC2_ResFlag && ISEC2_LatIncr > 0 )
+            if ( ijDirectionIncrementGiven && ISEC2_LatIncr > 0 )
               {
                 if ( abs(ISEC2_LastLat - (ISEC2_FirstLat+ISEC2_LatIncr*(grid->y.size-1))) <= 2 )
                   {
@@ -44899,6 +45743,9 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
     }
   else if ( gridtype == GRID_GAUSSIAN_REDUCED )
     {
+      bool ijDirectionIncrementGiven = gribbyte_get_bit(ISEC2_ResFlag, 1);
+      bool uvRelativeToGrid = gribbyte_get_bit(ISEC2_ResFlag, 5);
+      if ( uvRelativeToGrid ) grid->uvRelativeToGrid = 1;
       grid->np      = ISEC2_NumPar;
       grid->size    = ISEC4_NumValues;
       grid->rowlon  = ISEC2_RowLonPtr;
@@ -44913,7 +45760,7 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
           {
             if ( ISEC2_LastLon < ISEC2_FirstLon && ISEC2_LastLon < 0 ) ISEC2_LastLon += 360000;
 
-            if ( ISEC2_ResFlag && ISEC2_LonIncr > 0 )
+            if ( ijDirectionIncrementGiven && ISEC2_LonIncr > 0 )
               grid->x.inc = ISEC2_LonIncr * 0.001;
             else
               grid->x.inc = (ISEC2_LastLon - ISEC2_FirstLon) * 0.001 / (grid->x.size - 1);
@@ -44927,7 +45774,7 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
       {
         if ( grid->y.size > 1 )
           {
-            if ( ISEC2_ResFlag && ISEC2_LatIncr > 0 )
+            if ( ijDirectionIncrementGiven && ISEC2_LatIncr > 0 )
               grid->y.inc = ISEC2_LatIncr * 0.001;
             else
               grid->y.inc = (ISEC2_LastLat - ISEC2_FirstLat) * 0.001 / (grid->y.size - 1);
@@ -44937,28 +45784,26 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
         grid->y.flag  = 2;
       }
     }
-  else if ( gridtype == GRID_LCC )
+  else if ( projtype == CDI_PROJ_LCC )
     {
+      bool uvRelativeToGrid = gribbyte_get_bit(ISEC2_ResFlag, 5);
+      if ( uvRelativeToGrid ) grid->uvRelativeToGrid = 1;
+
       if ( ISEC4_NumValues != ISEC2_NumLon*ISEC2_NumLat )
-        Error("numberOfPoints (%d) and gridSize (%d) differ!",
-              ISEC4_NumValues, ISEC2_NumLon*ISEC2_NumLat);
+        Error("numberOfPoints (%d) and gridSize (%d) differ!", ISEC4_NumValues, ISEC2_NumLon*ISEC2_NumLat);
 
-      grid->size  = ISEC4_NumValues;
+      grid->size   = ISEC4_NumValues;
       grid->x.size = ISEC2_NumLon;
       grid->y.size = ISEC2_NumLat;
 
-      grid->lcc.xinc      = ISEC2_Lambert_dx;
-      grid->lcc.yinc      = ISEC2_Lambert_dy;
-      grid->lcc.originLon = ISEC2_FirstLon * 0.001;
-      grid->lcc.originLat = ISEC2_FirstLat * 0.001;
-      grid->lcc.lonParY   = ISEC2_Lambert_Lov * 0.001;
-      grid->lcc.lat1      = ISEC2_Lambert_LatS1 * 0.001;
-      grid->lcc.lat2      = ISEC2_Lambert_LatS2 * 0.001;
-      grid->lcc.projflag  = ISEC2_Lambert_ProjFlag;
-      grid->lcc.scanflag  = ISEC2_ScanFlag;
-
-      grid->x.flag = 0;
-      grid->y.flag = 0;
+      grid->x.first = 0;
+      grid->x.last  = 0;
+      grid->x.inc   = ISEC2_Lambert_dx;
+      grid->y.first = 0;
+      grid->y.last  = 0;
+      grid->y.inc   = ISEC2_Lambert_dy;
+      grid->x.flag  = 2;
+      grid->y.flag  = 2;
     }
   else if ( gridtype == GRID_SPECTRAL )
     {
@@ -44972,10 +45817,10 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
   else if ( gridtype == GRID_GME )
     {
       grid->size  = ISEC4_NumValues;
-      grid->gme.nd    = ISEC2_GME_ND;
-      grid->gme.ni    = ISEC2_GME_NI;
-      grid->gme.ni2   = ISEC2_GME_NI2;
-      grid->gme.ni3   = ISEC2_GME_NI3;
+      grid->gme.nd  = ISEC2_GME_ND;
+      grid->gme.ni  = ISEC2_GME_NI;
+      grid->gme.ni2 = ISEC2_GME_NI2;
+      grid->gme.ni3 = ISEC2_GME_NI3;
     }
   else if ( gridtype == GRID_GENERIC )
     {
@@ -44993,8 +45838,18 @@ void cgribexGetGrid(stream_t *streamptr, int *isec2, int *isec4, grid_t *grid, i
 }
 
 static
+void cgribexGetLevel(int *isec1, int *leveltype, int *level1, int *level2)
+{
+  *leveltype = ISEC1_LevelType;
+  *level1 = ISEC1_Level1;
+  *level2 = ISEC1_Level2;
+  if ( *leveltype == GRIB1_LTYPE_ISOBARIC ) *level1 *= 100;
+  else if ( *leveltype == GRIB1_LTYPE_99 || *leveltype == GRIB1_LTYPE_ISOBARIC_PA ) *leveltype = GRIB1_LTYPE_ISOBARIC;
+}
+
+static
 void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, double *fsec2, double *fsec3,
-		      int *isec4, long recsize, off_t position, int datatype, int comptype, int lmv, int iret)
+		      int *isec4, size_t recsize, off_t position, int datatype, int comptype, int lmv, int iret)
 {
   int varID;
   int levelID = 0;
@@ -45007,17 +45862,17 @@ void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, d
   int tsteptype = cgribexGetTsteptype(ISEC1_TimeRange);
   int numavg    = ISEC1_AvgNum;
 
-  int level1  = ISEC1_Level1;
-  int level2  = ISEC1_Level2;
+  int leveltype, level1, level2;
+  cgribexGetLevel(isec1, &leveltype, &level1, &level2);
 
-  /* fprintf(stderr, "param %d %d %d %d\n", param, level1, level2, ISEC1_LevelType); */
+  /* fprintf(stderr, "param %d %d %d %d\n", param, level1, level2, leveltype); */
 
-  record->size      = (size_t)recsize;
+  record->size      = recsize;
   record->position  = position;
   record->param     = param;
   record->ilevel    = level1;
   record->ilevel2   = level2;
-  record->ltype     = ISEC1_LevelType;
+  record->ltype     = leveltype;
   record->tsteptype = (short)tsteptype;
 
   grid_t *gridptr = (grid_t*) Malloc(sizeof(*gridptr));
@@ -45041,11 +45896,37 @@ void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, d
           double angle = - FSEC2_RotAngle;
           gridDefParamRLL(gridID, xpole, ypole, angle);
         }
+      else if ( gridptr->projtype == CDI_PROJ_LCC )
+        {
+          double a = 6367470., rf = 0;
+          bool earthIsOblate = gribbyte_get_bit(ISEC2_ResFlag, 2);
+          if ( earthIsOblate ) { a = 6378160.; rf = 297.0; }
+          double xval_0 = ISEC2_FirstLon * 0.001;
+          double yval_0 = ISEC2_FirstLat * 0.001;
+          double lon_0  = ISEC2_Lambert_Lov * 0.001;
+          double lat_1  = ISEC2_Lambert_LatS1 * 0.001;
+          double lat_2  = ISEC2_Lambert_LatS2 * 0.001;
+          bool lsouth = gribbyte_get_bit(ISEC2_Lambert_ProjFlag, 1);
+          if ( lsouth ) { lat_1 = -lat_1; lat_2 = -lat_2; }
+
+          double lat_0 = lat_2;
+          double x_0 = grid_missval;
+          double y_0 = grid_missval;
+
+          if ( proj_lonlat_to_lcc_func )
+            {
+              x_0 = xval_0; y_0 = yval_0;
+              proj_lonlat_to_lcc_func(grid_missval, lon_0, lat_0, lat_1, lat_2, a, rf, (size_t)1, &x_0, &y_0);
+              if ( IS_NOT_EQUAL(x_0, grid_missval) && IS_NOT_EQUAL(y_0, grid_missval) )
+                { x_0 = -x_0; y_0 = -y_0; }
+            }
+          gridDefParamLCC(gridID, grid_missval, lon_0, lat_0, lat_1, lat_2, a, rf, xval_0, yval_0, x_0, y_0);
+        }
     }
   else
     Free(gridptr);
 
-  int zaxistype = grib1ltypeToZaxisType(ISEC1_LevelType);
+  int zaxistype = grib1ltypeToZaxisType(leveltype);
 
   if ( zaxistype == ZAXIS_HYBRID || zaxistype == ZAXIS_HYBRID_HALF )
     {
@@ -45055,13 +45936,13 @@ void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, d
       varDefVCT(vctsize, vctptr);
     }
 
-  int lbounds = cgribexGetZaxisHasBounds(ISEC1_LevelType);
+  int lbounds = cgribexGetZaxisHasBounds(leveltype);
 
-  if ( datatype > 32 ) datatype = DATATYPE_PACK32;
-  if ( datatype <  0 ) datatype = DATATYPE_PACK;
+  if ( datatype > 32 ) datatype = CDI_DATATYPE_PACK32;
+  if ( datatype <  0 ) datatype = CDI_DATATYPE_PACK;
 
   varAddRecord(recID, param, gridID, zaxistype, lbounds, level1, level2, 0, 0,
-	       datatype, &varID, &levelID, tsteptype, numavg, ISEC1_LevelType, -1,
+	       datatype, &varID, &levelID, tsteptype, numavg, leveltype, -1,
                NULL, NULL, NULL, NULL, NULL, NULL);
 
   record->varID   = (short)varID;
@@ -45081,10 +45962,9 @@ void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, d
 
   if ( varInqInst(varID) == CDI_UNDEFID )
     {
-      int center, subcenter, instID;
-      center    = ISEC1_CenterID;
-      subcenter = ISEC1_SubCenterID;
-      instID    = institutInq(center, subcenter, NULL, NULL);
+      int center    = ISEC1_CenterID;
+      int subcenter = ISEC1_SubCenterID;
+      int instID    = institutInq(center, subcenter, NULL, NULL);
       if ( instID == CDI_UNDEFID )
 	instID = institutDef(center, subcenter, NULL, NULL);
       varDefInst(varID, instID);
@@ -45092,8 +45972,7 @@ void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, d
 
   if ( varInqModel(varID) == CDI_UNDEFID )
     {
-      int modelID;
-      modelID = modelInq(varInqInst(varID), ISEC1_ModelID, NULL);
+      int modelID = modelInq(varInqInst(varID), ISEC1_ModelID, NULL);
       if ( modelID == CDI_UNDEFID )
 	modelID = modelDef(varInqInst(varID), ISEC1_ModelID, NULL);
       varDefModel(varID, modelID);
@@ -45101,10 +45980,7 @@ void cgribexAddRecord(stream_t * streamptr, int param, int *isec1, int *isec2, d
 
   if ( varInqTable(varID) == CDI_UNDEFID )
     {
-      int tableID;
-
-      tableID = tableInq(varInqModel(varID), ISEC1_CodeTable, NULL);
-
+      int tableID = tableInq(varInqModel(varID), ISEC1_CodeTable, NULL);
       if ( tableID == CDI_UNDEFID )
 	tableID = tableDef(varInqModel(varID), ISEC1_CodeTable, NULL);
       varDefTable(varID, tableID);
@@ -45156,7 +46032,6 @@ void cgribexDecodeHeader(int *isec0, int *isec1, int *isec2, double *fsec2,
   if ( ISEC1_CenterID == 215 && (isec1[34] != 0 && isec1[34] != 255) )
     {
       double undef_pds, undef_eps;
-
       MCH_get_undef(isec1, &undef_pds, &undef_eps);
       FSEC3_MissVal = undef_pds;
       *lmv = 1;
@@ -45166,9 +46041,9 @@ void cgribexDecodeHeader(int *isec0, int *isec1, int *isec2, double *fsec2,
 static
 compvar_t cgribexVarSet(int param, int level1, int level2, int leveltype, int trange)
 {
-  compvar_t compVar;
   int tsteptype = cgribexGetTsteptype(trange);
 
+  compvar_t compVar;
   compVar.param     = param;
   compVar.level1    = level1;
   compVar.level2    = level2;
@@ -45181,11 +46056,10 @@ compvar_t cgribexVarSet(int param, int level1, int level2, int leveltype, int tr
 static inline int
 cgribexVarCompare(compvar_t compVar, record_t record, int flag)
 {
-  int tstepDiff = (!((flag == 0) & (((compVar.tsteptype == TSTEP_INSTANT)
-                                     & (record.tsteptype == TSTEP_INSTANT3))
-                                    |((compVar.tsteptype == TSTEP_INSTANT3)
-                                      & (record.tsteptype == TSTEP_INSTANT)))))
-    & (compVar.tsteptype != record.tsteptype);
+  bool vinst = compVar.tsteptype == TSTEP_INSTANT || compVar.tsteptype == TSTEP_INSTANT2 || compVar.tsteptype == TSTEP_INSTANT3;
+  bool rinst = record.tsteptype == TSTEP_INSTANT || record.tsteptype == TSTEP_INSTANT2 || record.tsteptype == TSTEP_INSTANT3;
+  int tstepDiff = (!((flag == 0) & (vinst && rinst)))
+                & (compVar.tsteptype != record.tsteptype);
   int rstatus = (compVar.param != record.param)
     |           (compVar.level1 != record.ilevel)
     |           (compVar.level2 != record.ilevel2)
@@ -45209,7 +46083,7 @@ cgribexScanTsFixNtsteps(stream_t *streamptr, off_t recpos)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 }
@@ -45223,16 +46097,14 @@ cgribexScanTsConstAdjust(stream_t *streamptr, taxis_t *taxis)
       if ( taxis->vdate == 0 && taxis->vtime == 0 )
 	{
 	  streamptr->ntsteps = 0;
-	  for (int varID = 0; varID < streamptr->nvars; varID++ )
-	    {
-	      vlistDefVarTsteptype(vlistID, varID, TSTEP_CONSTANT);
-	    }
+	  for ( int varID = 0; varID < streamptr->nvars; varID++ )
+            vlistDefVarTsteptype(vlistID, varID, TSTEP_CONSTANT);
 	}
     }
 }
 
 
-int cgribexScanTimestep1(stream_t * streamptr)
+int cgribexScanTimestep1(stream_t *streamptr)
 {
   double fsec2[512], fsec3[2], *fsec4 = NULL;
   int lmv = 0, iret = 0;
@@ -45241,13 +46113,13 @@ int cgribexScanTimestep1(stream_t * streamptr)
   size_t buffersize = 0;
   int rstatus;
   int param = 0;
-  int level1 = 0, level2 = 0, vdate = 0, vtime = 0;
+  int leveltype = 0, level1 = 0, level2 = 0, vdate = 0, vtime = 0;
   DateTime datetime, datetime0 = { LONG_MIN, LONG_MIN };
   size_t readsize;
   unsigned nrecords, recID;
   int nrecs_scanned = 0;
   int datatype;
-  long recsize = 0;
+  size_t recsize = 0;
   bool warn_time = true;
   bool warn_numavg = true;
   int taxisID = -1;
@@ -45255,7 +46127,7 @@ int cgribexScanTimestep1(stream_t * streamptr)
   bool fcast = false;
   int vlistID;
   int comptype;
-  long unzipsize;
+  size_t unzipsize;
   char paramstr[32];
   int nskip = cdiSkipRecords;
 
@@ -45286,7 +46158,7 @@ int cgribexScanTimestep1(stream_t * streamptr)
     }
 
   unsigned nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       recsize = gribGetSize(fileID);
       recpos  = fileGetPos(fileID);
@@ -45299,13 +46171,13 @@ int cgribexScanTimestep1(stream_t * streamptr)
 	  streamptr->ntsteps = 1;
 	  break;
 	}
-      if ( (size_t)recsize > buffersize )
+      if ( recsize > buffersize )
 	{
-	  buffersize = (size_t)recsize;
+	  buffersize = recsize;
 	  gribbuffer = Realloc(gribbuffer, buffersize);
 	}
 
-      readsize = (size_t)recsize;
+      readsize = recsize;
       rstatus = gribRead(fileID, (unsigned char *)gribbuffer, &readsize);
       if ( rstatus ) break;
 
@@ -45314,9 +46186,9 @@ int cgribexScanTimestep1(stream_t * streamptr)
 	{
 	  comptype = CDI_COMPRESS_SZIP;
 	  unzipsize += 100; /* need 0 to 1 bytes for rounding of bds */
-	  if ( buffersize < (size_t)unzipsize )
+	  if ( buffersize < unzipsize )
 	    {
-	      buffersize = (size_t)unzipsize;
+	      buffersize = unzipsize;
 	      gribbuffer = Realloc(gribbuffer, buffersize);
 	    }
 	}
@@ -45328,17 +46200,11 @@ int cgribexScanTimestep1(stream_t * streamptr)
       param = cdiEncodeParam(ISEC1_Parameter, ISEC1_CodeTable, 255);
       cdiParamToString(param, paramstr, sizeof(paramstr));
 
-      if ( ISEC1_LevelType == 100 ) ISEC1_Level1 *= 100;
-      if ( ISEC1_LevelType ==  99 ) ISEC1_LevelType = 100;
-      level1   = ISEC1_Level1;
-      level2   = ISEC1_Level2;
+      cgribexGetLevel(isec1, &leveltype, &level1, &level2);
 
       gribDateTime(isec1, &vdate, &vtime);
 
-      if ( ISEC4_NumBits > 0 && ISEC4_NumBits <= 32 )
-	datatype = ISEC4_NumBits;
-      else
-        datatype = DATATYPE_PACK;
+      datatype = (ISEC4_NumBits > 0 && ISEC4_NumBits <= 32) ? ISEC4_NumBits : CDI_DATATYPE_PACK;
 
       if ( nrecs == 0 )
 	{
@@ -45351,9 +46217,9 @@ int cgribexScanTimestep1(stream_t * streamptr)
 	}
       else
 	{
-	  datetime.date  = vdate;
-	  datetime.time  = vtime;
-	  compvar_t compVar = cgribexVarSet(param, level1, level2, ISEC1_LevelType, ISEC1_TimeRange);
+	  datetime.date = vdate;
+	  datetime.time = vtime;
+	  compvar_t compVar = cgribexVarSet(param, level1, level2, leveltype, ISEC1_TimeRange);
 	  for ( recID = 0; recID < nrecs; recID++ )
 	    {
 	      if ( cgribexVarCompare(compVar, streamptr->tsteps[0].records[recID], 0) == 0 ) break;
@@ -45444,7 +46310,7 @@ int cgribexScanTimestep1(stream_t * streamptr)
     streamptr->tsteps[0].recIDs[recID] = (int)recID;
 
   streamptr->record->buffer     = gribbuffer;
-  streamptr->record->buffersize = (size_t)buffersize;
+  streamptr->record->buffersize = buffersize;
 
   cgribexScanTsFixNtsteps(streamptr, recpos);
   cgribexScanTsConstAdjust(streamptr, taxis);
@@ -45460,15 +46326,15 @@ int cgribexScanTimestep2(stream_t * streamptr)
   int lmv = 0, iret = 0;
   off_t recpos = 0;
   int param = 0;
-  int level1 = 0, level2 = 0, vdate = 0, vtime = 0;
+  int leveltype = 0, level1 = 0, level2 = 0, vdate = 0, vtime = 0;
   DateTime datetime, datetime0 = { LONG_MIN, LONG_MIN };
   int varID, gridID;
   size_t readsize;
   int nrecs, recID;
-  long recsize = 0;
+  size_t recsize = 0;
   bool warn_numavg = true;
   int tsteptype;
-  long unzipsize;
+  size_t unzipsize;
   char paramstr[32];
 
   streamptr->curTsID = 1;
@@ -45511,7 +46377,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
 
   int nrecs_scanned = nrecords;
   int rindex = 0;
-  while ( TRUE )
+  while ( true )
     {
       if ( rindex > nrecords ) break;
 
@@ -45522,22 +46388,22 @@ int cgribexScanTimestep2(stream_t * streamptr)
 	  streamptr->ntsteps = 2;
 	  break;
 	}
-      if ( (size_t)recsize > buffersize )
+      if ( recsize > buffersize )
 	{
-	  buffersize = (size_t)recsize;
+	  buffersize = recsize;
 	  gribbuffer = Realloc(gribbuffer, buffersize);
 	}
 
-      readsize = (size_t)recsize;
+      readsize = recsize;
       rstatus = gribRead(fileID, (unsigned char *)gribbuffer, &readsize);
       if ( rstatus ) break;
 
       if ( gribGetZip(recsize, (unsigned char *)gribbuffer, &unzipsize) > 0 )
 	{
 	  unzipsize += 100; /* need 0 to 1 bytes for rounding of bds */
-	  if ( buffersize < (size_t)unzipsize )
+	  if ( buffersize < unzipsize )
 	    {
-	      buffersize = (size_t)unzipsize;
+	      buffersize = unzipsize;
 	      gribbuffer = Realloc(gribbuffer, buffersize);
 	    }
 	}
@@ -45550,10 +46416,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
       param = cdiEncodeParam(ISEC1_Parameter, ISEC1_CodeTable, 255);
       cdiParamToString(param, paramstr, sizeof(paramstr));
 
-      if ( ISEC1_LevelType == 100 ) ISEC1_Level1 *= 100;
-      if ( ISEC1_LevelType ==  99 ) ISEC1_LevelType = 100;
-      level1    = ISEC1_Level1;
-      level2    = ISEC1_Level2;
+      cgribexGetLevel(isec1, &leveltype, &level1, &level2);
 
       gribDateTime(isec1, &vdate, &vtime);
 
@@ -45598,7 +46461,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
       datetime.date  = vdate;
       datetime.time  = vtime;
 
-      compvar_t compVar = cgribexVarSet(param, level1, level2, ISEC1_LevelType, ISEC1_TimeRange);
+      compvar_t compVar = cgribexVarSet(param, level1, level2, leveltype, ISEC1_TimeRange);
 
       for ( recID = 0; recID < nrecords; recID++ )
 	{
@@ -45619,7 +46482,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
 	    }
 	  else
 	    {
-	      streamptr->tsteps[tsID].records[recID].used = TRUE;
+	      streamptr->tsteps[tsID].records[recID].used = true;
 	      streamptr->tsteps[tsID].recIDs[rindex] = recID;
 	    }
 	}
@@ -45634,7 +46497,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
 	    }
 	  else
 	    {
-	      streamptr->tsteps[tsID].records[recID].used = TRUE;
+	      streamptr->tsteps[tsID].records[recID].used = true;
 	      streamptr->tsteps[tsID].recIDs[rindex] = recID;
 	    }
 	}
@@ -45642,7 +46505,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
       if ( CDI_Debug )
 	Message("Read record %2d (id=%s lev1=%d lev2=%d) %8d %6d", nrecs_scanned, paramstr, level1, level2, vdate, vtime);
 
-      streamptr->tsteps[tsID].records[recID].size = (size_t)recsize;
+      streamptr->tsteps[tsID].records[recID].size = recsize;
 
       if ( cgribexVarCompare(compVar, streamptr->tsteps[tsID].records[recID], 0) != 0 )
 	{
@@ -45702,13 +46565,13 @@ int cgribexScanTimestep(stream_t * streamptr)
   int rstatus = 0;
   double fsec2[512], fsec3[2], *fsec4 = NULL;
   int lmv = 0, iret = 0;
-  long recsize = 0;
+  size_t recsize = 0;
   off_t recpos = 0;
   void *gribbuffer;
   size_t buffersize = 0;
   int fileID;
   int param = 0;
-  int level1 = 0, level2 = 0, vdate = 0, vtime = 0;
+  int leveltype = 0, level1 = 0, level2 = 0, vdate = 0, vtime = 0;
   DateTime datetime, datetime0 = { LONG_MIN, LONG_MIN };
   int vrecID, recID;
   bool warn_numavg = true;
@@ -45716,7 +46579,7 @@ int cgribexScanTimestep(stream_t * streamptr)
   int taxisID = -1;
   int rindex, nrecs = 0;
   int nrecs_scanned;
-  long unzipsize;
+  size_t unzipsize;
   char paramstr[32];
 
   /*
@@ -45757,7 +46620,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 
       nrecs_scanned = streamptr->tsteps[0].nallrecs + streamptr->tsteps[1].nrecs*(tsID-1);
       rindex = 0;
-      while ( TRUE )
+      while ( true )
 	{
 	  if ( rindex > nrecs ) break;
 
@@ -45768,15 +46631,15 @@ int cgribexScanTimestep(stream_t * streamptr)
 	      streamptr->ntsteps = streamptr->rtsteps + 1;
 	      break;
 	    }
-	  if ( recsize > 0 && (size_t)recsize > buffersize )
+	  if ( recsize > 0 && recsize > buffersize )
 	    {
-	      buffersize = (size_t)recsize;
+	      buffersize = recsize;
 	      gribbuffer = Realloc(gribbuffer, buffersize);
 	    }
 
 	  if ( rindex >= nrecs ) break;
 
-	  readsize = (size_t)recsize;
+	  readsize = recsize;
 	  rstatus = gribRead(fileID, (unsigned char *)gribbuffer, &readsize);
 	  if ( rstatus )
 	    {
@@ -45788,9 +46651,9 @@ int cgribexScanTimestep(stream_t * streamptr)
 	  if ( gribGetZip(recsize, (unsigned char *)gribbuffer, &unzipsize) > 0 )
 	    {
 	      unzipsize += 100; /* need 0 to 1 bytes for rounding of bds */
-	      if ( buffersize < (size_t)unzipsize )
+	      if ( buffersize < unzipsize )
 		{
-		  buffersize = (size_t)unzipsize;
+		  buffersize = unzipsize;
 		  gribbuffer = Realloc(gribbuffer, buffersize);
 		}
 	    }
@@ -45803,10 +46666,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 	  param = cdiEncodeParam(ISEC1_Parameter, ISEC1_CodeTable, 255);
           cdiParamToString(param, paramstr, sizeof(paramstr));
 
-	  if ( ISEC1_LevelType == 100 ) ISEC1_Level1 *= 100;
-	  if ( ISEC1_LevelType ==  99 ) ISEC1_LevelType = 100;
-	  level1   = ISEC1_Level1;
-	  level2   = ISEC1_Level2;
+          cgribexGetLevel(isec1, &leveltype, &level1, &level2);
 
 	  gribDateTime(isec1, &vdate, &vtime);
 
@@ -45853,7 +46713,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 	  datetime.date  = vdate;
 	  datetime.time  = vtime;
 
-	  compvar_t compVar = cgribexVarSet(param, level1, level2, ISEC1_LevelType, ISEC1_TimeRange);
+	  compvar_t compVar = cgribexVarSet(param, level1, level2, leveltype, ISEC1_TimeRange);
 
 	  for ( vrecID = 0; vrecID < nrecs; vrecID++ )
 	    {
@@ -45873,7 +46733,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 
 	  if ( cdiInventoryMode == 1 )
 	    {
-	      streamptr->tsteps[tsID].records[recID].used = TRUE;
+	      streamptr->tsteps[tsID].records[recID].used = true;
 	      streamptr->tsteps[tsID].recIDs[rindex] = recID;
 	    }
 	  else
@@ -45892,7 +46752,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	    }
@@ -45910,7 +46770,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 	    }
 
 	  streamptr->tsteps[tsID].records[recID].position = recpos;
-	  streamptr->tsteps[tsID].records[recID].size = (size_t)recsize;
+	  streamptr->tsteps[tsID].records[recID].size = recsize;
 
 	  rindex++;
 	}
@@ -45937,7 +46797,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -46027,33 +46887,18 @@ int cgribexDecode(int memtype, void *gribbuffer, int gribsize, void *data, long
 static
 void cgribexDefInstitut(int *isec1, int vlistID, int varID)
 {
-  int instID;
-
-  if ( vlistInqInstitut(vlistID) != CDI_UNDEFID )
-    instID = vlistInqInstitut(vlistID);
-  else
-    instID = vlistInqVarInstitut(vlistID, varID);
-
+  int instID = (vlistInqInstitut(vlistID) != CDI_UNDEFID) ? vlistInqInstitut(vlistID) : vlistInqVarInstitut(vlistID, varID);
   if ( instID != CDI_UNDEFID )
     {
-      int center, subcenter;
-      center    = institutInqCenter(instID);
-      subcenter = institutInqSubcenter(instID);
-      ISEC1_CenterID    = center;
-      ISEC1_SubCenterID = subcenter;
+      ISEC1_CenterID    = institutInqCenter(instID);
+      ISEC1_SubCenterID = institutInqSubcenter(instID);
     }
 }
 
 static
 void cgribexDefModel(int *isec1, int vlistID, int varID)
 {
-  int modelID;
-
-  if ( vlistInqModel(vlistID) != CDI_UNDEFID )
-    modelID = vlistInqModel(vlistID);
-  else
-    modelID = vlistInqVarModel(vlistID, varID);
-
+  int modelID = (vlistInqModel(vlistID) != CDI_UNDEFID) ? vlistInqModel(vlistID) : vlistInqVarModel(vlistID, varID);
   if ( modelID != CDI_UNDEFID )
     ISEC1_ModelID = modelInqGribID(modelID);
 }
@@ -46062,9 +46907,7 @@ static
 void cgribexDefParam(int *isec1, int param)
 {
   int pdis, pcat, pnum;
-
   cdiDecodeParam(param, &pnum, &pcat, &pdis);
-
   if ( pnum < 0 ) pnum = -pnum;
 
   static bool lwarn_pdis = true;
@@ -46092,10 +46935,8 @@ static
 int cgribexDefTimerange(int tsteptype, int factor, int calendar,
 			int rdate, int rtime, int vdate, int vtime, int *pip1, int *pip2)
 {
-  int timerange = -1;
   int year, month, day, hour, minute, second;
   int julday1, secofday1, julday2, secofday2, days, secs;
-  int ip1 = 0, ip2 = 0;
 
   cdiDecodeDate(rdate, &year, &month, &day);
   cdiDecodeTime(rtime, &hour, &minute, &second);
@@ -46107,6 +46948,8 @@ int cgribexDefTimerange(int tsteptype, int factor, int calendar,
 
   (void) julday_sub(julday1, secofday1, julday2, secofday2, &days, &secs);
 
+  int timerange = -1;
+  int ip1 = 0, ip2 = 0;
   if ( !(int)(fmod(days*86400.0 + secs, factor)) )
     {
       int ip = (int) ((days*86400.0 + secs)/factor);
@@ -46136,13 +46979,10 @@ static
 int cgribexDefDateTime(int *isec1, int timeunit, int date, int time)
 {
   int year, month, day, hour, minute, second;
-  int century = 0;
-  int factor = 1;
-
   cdiDecodeDate(date, &year, &month, &day);
   cdiDecodeTime(time, &hour, &minute, &second);
 
-  century =  year / 100;
+  int century =  year / 100;
 
   ISEC1_Year = year - century*100;
 
@@ -46168,6 +47008,7 @@ int cgribexDefDateTime(int *isec1, int timeunit, int date, int time)
 
   ISEC1_Century = century;
 
+  int factor = 1;
   switch (timeunit)
     {
     case TUNIT_MINUTE:    factor =    60; ISEC1_TimeUnit = ISEC1_TABLE4_MINUTE;    break;
@@ -46305,23 +47146,39 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
     }
   else if ( gridtype == GRID_CURVILINEAR )
     {
-      static bool lwarning = true;
-      if ( lwarning && gridInqSize(gridID) > 1 )
-	{
-	  lwarning = false;
-	  Warning("Curvilinear grids are unsupported in GRIB1! Created wrong Grid Description Section!");
-	}
-      gridtype = GRID_LONLAT;
-      lcurvi = true;
+      int projID = gridInqProj(gridID);
+      if ( projID != CDI_UNDEFID && gridInqType(projID) == GRID_PROJECTION )
+        {
+          gridID = projID;
+          gridtype = GRID_PROJECTION;
+        }
+      else
+        {
+          static bool lwarning = true;
+          if ( lwarning && gridInqSize(gridID) > 1 )
+            {
+              lwarning = false;
+              Warning("Curvilinear grid is unsupported in GRIB1! Created wrong Grid Description Section!");
+            }
+          lcurvi = true;
+          gridtype = GRID_LONLAT;
+        }
     }
 
-  if ( gridtype == GRID_PROJECTION && gridInqProjType(gridID) == CDI_PROJ_RLL )
+  if ( gridtype == GRID_PROJECTION )
     {
-      gridtype = GRID_LONLAT;
-      lrotated = true;
+      if ( gridInqProjType(gridID) == CDI_PROJ_RLL )
+        {
+          gridtype = GRID_LONLAT;
+          lrotated = true;
+        }
+      else if ( gridInqProjType(gridID) == CDI_PROJ_LCC )
+        {
+          gridtype = GRID_LCC;
+        }
     }
 
-  ISEC2_Reduced  = FALSE;
+  ISEC2_Reduced  = false;
   ISEC2_ScanFlag = 0;
 
   switch (gridtype)
@@ -46346,7 +47203,7 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
 
 	if ( gridtype == GRID_GAUSSIAN_REDUCED )
 	  {
-	    ISEC2_Reduced = TRUE;
+	    ISEC2_Reduced = true;
 	    nlon = 0;
 	    gridInqRowlon(gridID, ISEC2_RowLonPtr);
 	  }
@@ -46357,7 +47214,7 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
 	      {
 		xfirst = gridInqXval(gridID, 0);
                 xlast  = gridInqXval(gridID, (lcurvi ? nlon*nlat : nlon) - 1);
-		xinc   = gridInqXinc(gridID);
+		xinc   = fabs(gridInqXinc(gridID));
 	      }
 	  }
 
@@ -46395,7 +47252,6 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
 	else
 	  {
 	    ISEC2_LatIncr = (int)lround(yinc*1000);
-	    if ( ISEC2_LatIncr < 0 ) ISEC2_LatIncr = -ISEC2_LatIncr;
 	  }
 
 	if ( ISEC2_NumLon > 1 && ISEC2_NumLat == 1 )
@@ -46404,7 +47260,9 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
 	if ( ISEC2_NumLon == 1 && ISEC2_NumLat > 1 )
 	  if ( ISEC2_LonIncr == 0 && ISEC2_LatIncr != 0 ) ISEC2_LonIncr = ISEC2_LatIncr;
 
-        ISEC2_ResFlag = ( ISEC2_LatIncr == 0 || ISEC2_LonIncr == 0 ) ? 0 : 128;
+        ISEC2_ResFlag = 0;
+        if ( ISEC2_LatIncr && ISEC2_LonIncr )   gribbyte_set_bit(&ISEC2_ResFlag, 1);
+        if ( gridInqUvRelativeToGrid(gridID) )  gribbyte_set_bit(&ISEC2_ResFlag, 5);
 
 	if ( lrotated )
           {
@@ -46417,40 +47275,49 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
             FSEC2_RotAngle = angle;
           }
 
-	/* East -> West */
-	if ( ISEC2_LastLon < ISEC2_FirstLon ) ISEC2_ScanFlag += 128;
-
-	/* South -> North */
-	if ( ISEC2_LastLat > ISEC2_FirstLat ) ISEC2_ScanFlag += 64;
+        ISEC2_ScanFlag = 0;
+	if ( ISEC2_LastLon < ISEC2_FirstLon ) gribbyte_set_bit(&ISEC2_ScanFlag, 1); // East -> West
+	if ( ISEC2_LastLat > ISEC2_FirstLat ) gribbyte_set_bit(&ISEC2_ScanFlag, 2); // South -> North
 
 	break;
       }
     case GRID_LCC:
       {
-	double originLon = 0.0, originLat = 0.0, lonParY = 0.0,
-          lat1 = 0.0, lat2 = 0.0, xincm = 0.0, yincm = 0.0;
-	int projflag = 0, scanflag = 0;
+	int xsize = gridInqXsize(gridID);
+        int ysize = gridInqYsize(gridID);
 
-	int xsize = gridInqXsize(gridID),
-          ysize = gridInqYsize(gridID);
+        double lon_0, lat_0, lat_1, lat_2, a, rf, xval_0, yval_0, x_0, y_0;
+	gridInqParamLCC(gridID, grid_missval, &lon_0, &lat_0, &lat_1, &lat_2, &a, &rf, &xval_0, &yval_0, &x_0, &y_0);
+	gridVerifyGribParamLCC(grid_missval, &lon_0, &lat_0, &lat_1, &lat_2, &a, &rf, &xval_0, &yval_0, &x_0, &y_0);
+        bool lsouth = (lat_1 < 0);
+        if ( lsouth ) { lat_1 = -lat_2; lat_2 = -lat_2; }
 
-	gridInqParamLCC(gridID, &originLon, &originLat, &lonParY, &lat1, &lat2, &xincm, &yincm,
-		   &projflag, &scanflag);
+        double xinc = gridInqXinc(gridID);
+        double yinc = gridInqYinc(gridID);
 
 	ISEC2_GridType = GRIB1_GTYPE_LCC;
 	ISEC2_NumLon   = xsize;
 	ISEC2_NumLat   = ysize;
-	ISEC2_FirstLon = (int)lround(originLon * 1000);
-	ISEC2_FirstLat = (int)lround(originLat * 1000);
-	ISEC2_Lambert_Lov    = (int)lround(lonParY * 1000);
-	ISEC2_Lambert_LatS1  = (int)lround(lat1 * 1000);
-	ISEC2_Lambert_LatS2  = (int)lround(lat2 * 1000);
-	ISEC2_Lambert_dx     = (int)lround(xincm);
-	ISEC2_Lambert_dy     = (int)lround(yincm);
+	ISEC2_FirstLon       = (int)lround(xval_0 * 1000);
+	ISEC2_FirstLat       = (int)lround(yval_0 * 1000);
+	ISEC2_Lambert_Lov    = (int)lround(lon_0 * 1000);
+	ISEC2_Lambert_LatS1  = (int)lround(lat_1 * 1000);
+	ISEC2_Lambert_LatS2  = (int)lround(lat_2 * 1000);
+	ISEC2_Lambert_dx     = (int)lround(xinc);
+	ISEC2_Lambert_dy     = (int)lround(yinc);
 	ISEC2_Lambert_LatSP  = 0;
 	ISEC2_Lambert_LonSP  = 0;
-	ISEC2_Lambert_ProjFlag = projflag;
-	ISEC2_ScanFlag = scanflag;
+	ISEC2_Lambert_ProjFlag = 0;
+        if ( lsouth ) gribbyte_set_bit(&ISEC2_Lambert_ProjFlag, 1);
+
+        bool earthIsOblate = (IS_EQUAL(a, 6378160.) && IS_EQUAL(rf, 297.));
+        ISEC2_ResFlag = 0;
+        if ( ISEC2_Lambert_dx && ISEC2_Lambert_dy ) gribbyte_set_bit(&ISEC2_ResFlag, 1);
+        if ( earthIsOblate )                        gribbyte_set_bit(&ISEC2_ResFlag, 2);
+        if ( gridInqUvRelativeToGrid(gridID) )      gribbyte_set_bit(&ISEC2_ResFlag, 5);
+
+	ISEC2_ScanFlag = 0;
+        gribbyte_set_bit(&ISEC2_ScanFlag, 2); // South -> North
 
 	break;
       }
@@ -46501,6 +47368,18 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
 	break;
       }
     }
+
+
+  if ( cdiGribChangeModeUvRelativeToGrid.active )
+    {
+      // this will overrule/change the UvRelativeToGrid flag;
+      // typically when the wind is rotated with respect to north pole
+      bool uvRelativeToGrid = gribbyte_get_bit(ISEC2_ResFlag, 5);
+      if      ( uvRelativeToGrid && !cdiGribChangeModeUvRelativeToGrid.mode )
+        gribbyte_clear_bit(&ISEC2_ResFlag, 5);
+      else if ( !uvRelativeToGrid && cdiGribChangeModeUvRelativeToGrid.mode )
+        gribbyte_set_bit(&ISEC2_ResFlag, 5);
+    }
 }
 
 static
@@ -46516,7 +47395,6 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
 {
   char units[CDI_MAX_NAME];
   static bool lwarning_vct = true;
-  double level;
 
   int zaxistype = zaxisInqType(zaxisID);
   int ltype = zaxisInqLtype(zaxisID);
@@ -46542,7 +47420,7 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
     case ZAXIS_DEPTH_BELOW_SEA:
     case ZAXIS_ISENTROPIC:
       {
-        isec1DefLevel(isec1, grib_ltype, (int) zaxisInqLevel(zaxisID, levelID), 0);
+        isec1DefLevel(isec1, grib_ltype, (int)(zaxisInqLevel(zaxisID, levelID)), 0);
 	break;
       }
     case ZAXIS_CLOUD_BASE:
@@ -46559,10 +47437,10 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
     case ZAXIS_HYBRID_HALF:
       {
 	if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
-          isec1DefLevel(isec1, GRIB1_LTYPE_HYBRID_LAYER, (int)zaxisInqLbound(zaxisID, levelID),
-                        (int)zaxisInqUbound(zaxisID, levelID));
+          isec1DefLevel(isec1, GRIB1_LTYPE_HYBRID_LAYER, (int)(zaxisInqLbound(zaxisID, levelID)),
+                        (int)(zaxisInqUbound(zaxisID, levelID)));
 	else
-          isec1DefLevel(isec1, GRIB1_LTYPE_HYBRID, (int) zaxisInqLevel(zaxisID, levelID), 0);
+          isec1DefLevel(isec1, GRIB1_LTYPE_HYBRID, (int)(zaxisInqLevel(zaxisID, levelID)), 0);
 
 	int vctsize = zaxisInqVctSize(zaxisID);
 	if ( vctsize > 255 )
@@ -46583,7 +47461,7 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
       }
     case ZAXIS_PRESSURE:
       {
-	level = zaxisInqLevel(zaxisID, levelID);
+	double level = zaxisInqLevel(zaxisID, levelID);
 	if ( level < 0 ) Warning("Pressure level of %f Pa is below zero!", level);
 
 	zaxisInqUnits(zaxisID, units);
@@ -46591,7 +47469,7 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
 
 	double dum;
 	if ( level < 32768 && (level < 100 || modf(level/100, &dum) > 0) )
-          grib_ltype = GRIB1_LTYPE_99;
+          grib_ltype = GRIB1_LTYPE_ISOBARIC_PA;
 	else
           level = level/100;
 
@@ -46600,7 +47478,7 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
       }
     case ZAXIS_HEIGHT:
       {
-	level = zaxisInqLevel(zaxisID, levelID);
+	double level = zaxisInqLevel(zaxisID, levelID);
 
 	zaxisInqUnits(zaxisID, units);
         if ( units[1] == 'm' && !units[2] )
@@ -46616,10 +47494,10 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
     case ZAXIS_SIGMA:
       {
 	if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
-          isec1DefLevel(isec1, GRIB1_LTYPE_SIGMA_LAYER, (int) zaxisInqLbound(zaxisID, levelID),
-                        (int) zaxisInqUbound(zaxisID, levelID));
+          isec1DefLevel(isec1, GRIB1_LTYPE_SIGMA_LAYER, (int)(zaxisInqLbound(zaxisID, levelID)),
+                        (int)(zaxisInqUbound(zaxisID, levelID)));
 	else
-          isec1DefLevel(isec1, GRIB1_LTYPE_SIGMA, (int) zaxisInqLevel(zaxisID, levelID), 0);
+          isec1DefLevel(isec1, GRIB1_LTYPE_SIGMA, (int)(zaxisInqLevel(zaxisID, levelID)), 0);
 
 	break;
       }
@@ -46627,11 +47505,10 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
       {
 	zaxisInqUnits(zaxisID, units);
 
-	double factor;
+	double factor = 100; // default: meter
         if      ( units[0] == 'm' && units[1] == 'm' ) factor =   0.1;
         else if ( units[0] == 'c' && units[1] == 'm' ) factor =   1;
         else if ( units[0] == 'd' && units[1] == 'm' ) factor =  10;
-        else                                           factor = 100; // meter
 
 	if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
           isec1DefLevel(isec1, GRIB1_LTYPE_LANDDEPTH_LAYER, (int) (factor*zaxisInqLbound(zaxisID, levelID)),
@@ -46643,7 +47520,7 @@ void cgribexDefLevel(int *isec1, int *isec2, double *fsec2, int zaxisID, int lev
       }
     case ZAXIS_GENERIC:
       {
-        isec1DefLevel(isec1, ltype, (int) zaxisInqLevel(zaxisID, levelID), 0);
+        isec1DefLevel(isec1, ltype, (int)(zaxisInqLevel(zaxisID, levelID)), 0);
 	break;
       }
     default:
@@ -46709,21 +47586,17 @@ size_t cgribexEncode(int memtype, int varID, int levelID, int vlistID, int gridI
 		     int vdate, int vtime, int tsteptype, int numavg,
 		     long datasize, const void *data, int nmiss, void *gribbuffer, size_t gribbuffersize)
 {
-  size_t nbytes = 0;
-  int gribsize;
   int iret = 0, iword = 0;
   int isec0[2], isec1[4096], isec2[4096], isec3[2], isec4[512];
   float fsec2f[512], fsec3f[2];
   double fsec2[512], fsec3[2];
-  int datatype;
-  int param;
 
   memset(isec1, 0, 256*sizeof(int));
   fsec2[0] = 0; fsec2[1] = 0;
   fsec2f[0] = 0; fsec2f[1] = 0;
 
-  gribsize = (int)(gribbuffersize / sizeof(int));
-  param    = vlistInqVarParam(vlistID, varID);
+  int gribsize = (int)(gribbuffersize / sizeof(int));
+  int param    = vlistInqVarParam(vlistID, varID);
 
   cgribexDefaultSec0(isec0);
   cgribexDefaultSec1(isec1);
@@ -46732,7 +47605,7 @@ size_t cgribexEncode(int memtype, int varID, int levelID, int vlistID, int gridI
   cgribexDefInstitut(isec1, vlistID, varID);
   cgribexDefModel(isec1, vlistID, varID);
 
-  datatype = vlistInqVarDatatype(vlistID, varID);
+  int datatype = vlistInqVarDatatype(vlistID, varID);
 
   cgribexDefParam(isec1, param);
   cgribexDefTime(isec1, vdate, vtime, tsteptype, numavg, vlistInqTaxis(vlistID));
@@ -46777,9 +47650,70 @@ size_t cgribexEncode(int memtype, int varID, int levelID, int vlistID, int gridI
 
   if ( iret ) Error("Problem during GRIB encode (errno = %d)!", iret);
 
-  nbytes = (size_t)iword * sizeof (int);
+  size_t nbytes = (size_t)iword * sizeof(int);
   return nbytes;
 }
+
+
+typedef struct
+{
+  void *gribbuffer;
+  size_t gribbuffersize;
+  unsigned char *pds;
+  unsigned char *gds;
+  unsigned char *bms;
+  unsigned char *bds;
+} cgribex_handle;
+
+
+int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **pdsp,
+		  unsigned char **gdsp, unsigned char **bmsp, unsigned char **bdsp, long *gribrecsize);
+
+void *cgribex_handle_new_from_meassage(void *gribbuffer, size_t gribbuffersize)
+{
+  cgribex_handle *gh = (cgribex_handle*) Malloc(sizeof(cgribex_handle));
+  gh->gribbuffer = NULL;
+  gh->gribbuffersize = 0;
+  gh->pds = NULL;
+
+  if ( gribbuffersize && gribbuffer )
+    {
+      unsigned char *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
+      long gribrecsize;
+      int status = grib1Sections((unsigned char *)gribbuffer, (long)gribbuffersize, &pds, &gds, &bms, &bds, &gribrecsize);
+      if ( status >= 0 )
+        {
+          gh->gribbuffer = gribbuffer;
+          gh->gribbuffersize = gribbuffersize;
+          gh->pds = pds;
+          gh->gds = gds;
+          gh->bms = bms;
+          gh->bds = bds;
+        }
+    }
+
+  return (void*)gh;
+}
+
+
+void cgribex_handle_delete(void *gh)
+{
+  if ( gh ) Free(gh);
+}
+
+
+void cgribexChangeParameterIdentification(void *gh, int code, int ltype, int lev)
+{
+  if ( !gh ) return;
+
+  unsigned char *pds = ((cgribex_handle*)gh)->pds;
+  if ( !pds ) return;
+
+  pds[8]  = (unsigned char) code;
+  pds[9]  = (unsigned char) ltype;
+  pds[10] = (unsigned char) lev;
+}
+
 #endif
 /*
  * Local Variables:
@@ -46800,13 +47734,8 @@ size_t cgribexEncode(int memtype, int varID, int levelID, int vlistID, int gridI
 
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
-
-
 #if defined (HAVE_LIBEXTRA)
 
-
 typedef struct {
   int param;
   int level;
@@ -46818,9 +47747,9 @@ int extInqDatatype(int prec, int number)
   int datatype;
 
   if ( number == 2 )
-    datatype = (prec == EXSE_DOUBLE_PRECISION) ? DATATYPE_CPX64 : DATATYPE_CPX32;
+    datatype = (prec == EXSE_DOUBLE_PRECISION) ? CDI_DATATYPE_CPX64 : CDI_DATATYPE_CPX32;
   else
-    datatype = (prec == EXSE_DOUBLE_PRECISION) ? DATATYPE_FLT64 : DATATYPE_FLT32;
+    datatype = (prec == EXSE_DOUBLE_PRECISION) ? CDI_DATATYPE_FLT64 : CDI_DATATYPE_FLT32;
 
   return datatype;
 }
@@ -46829,13 +47758,13 @@ static
 void extDefDatatype(int datatype, int *prec, int *number)
 {
 
-  if ( datatype != DATATYPE_FLT32 && datatype != DATATYPE_FLT64 &&
-       datatype != DATATYPE_CPX32 && datatype != DATATYPE_CPX64 )
-    datatype = DATATYPE_FLT32;
+  if ( datatype != CDI_DATATYPE_FLT32 && datatype != CDI_DATATYPE_FLT64 &&
+       datatype != CDI_DATATYPE_CPX32 && datatype != CDI_DATATYPE_CPX64 )
+    datatype = CDI_DATATYPE_FLT32;
 
-  *number = (datatype == DATATYPE_CPX32 || datatype == DATATYPE_CPX64) ? 2 : 1;
+  *number = (datatype == CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64) ? 2 : 1;
 
-  *prec = (datatype == DATATYPE_FLT64 || datatype == DATATYPE_CPX64) ? EXSE_DOUBLE_PRECISION : EXSE_SINGLE_PRECISION;
+  *prec = (datatype == CDI_DATATYPE_FLT64 || datatype == CDI_DATATYPE_CPX64) ? EXSE_DOUBLE_PRECISION : EXSE_SINGLE_PRECISION;
 }
 
 /* not used
@@ -47021,7 +47950,7 @@ void extScanTimestep1(stream_t *streamptr)
   int fileID = streamptr->fileID;
 
   int nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       recpos = fileGetPos(fileID);
       int status = extRead(fileID, extp);
@@ -47105,7 +48034,7 @@ void extScanTimestep1(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -47206,7 +48135,7 @@ int extScanTimestep2(stream_t *streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	      break;
@@ -47263,7 +48192,7 @@ int extScanTimestep2(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -47384,7 +48313,7 @@ long extScanTimestep(stream_t *streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -47500,7 +48429,7 @@ void extWriteVarSliceDP(stream_t *streamptr, int varID, int levID, const double
   int header[4];
   header[0] = streamptr->tsteps[tsID].taxis.vdate;
   header[1] = pnum;
-  header[2] = (int) zaxisInqLevel(vlistInqVarZaxis(vlistID, varID), levID);
+  header[2] = (int)(zaxisInqLevel(vlistInqVarZaxis(vlistID, varID), levID));
   header[3] = gridInqSize(vlistInqVarGrid(vlistID, varID));
 
   extrec_t *extp = (extrec_t*) streamptr->record->exsep;
@@ -47521,7 +48450,7 @@ void extWriteVarDP(stream_t *streamptr, int varID, const double *data)
   size_t nlevs    = (size_t) zaxisInqSize(vlistInqVarZaxis(vlistID, varID));
 
   for ( size_t levID = 0;  levID < nlevs; levID++ )
-    extWriteVarSliceDP(streamptr, varID, levID, &data[levID*gridsize]);
+    extWriteVarSliceDP(streamptr, varID, (int)levID, &data[levID*gridsize]);
 }
 
 #endif /* HAVE_LIBEXTRA */
@@ -47538,6 +48467,9 @@ void extWriteVarDP(stream_t *streamptr, int varID, const double *data)
 #ifndef _STREAM_GRIBAPI_H
 #define _STREAM_GRIBAPI_H
 
+#ifdef HAVE_LIBGRIB_API
+
+
 int gribapiScanTimestep1(stream_t * streamptr);
 int gribapiScanTimestep2(stream_t * streamptr);
 int gribapiScanTimestep(stream_t * streamptr);
@@ -47550,6 +48482,13 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
 		     long datasize, const double *data, int nmiss, void **gribbuffer, size_t *gribbuffersize,
 		     int ljpeg, void *gribContainer);
 
+int gribapiGetScanningMode(grib_handle *gh);
+void gribapiSetScanningMode(grib_handle *gh, int scanningMode);
+
+void gribapiChangeParameterIdentification(grib_handle *gh, int code, int ltype, int lev);
+
+#endif
+
 #endif  /* _STREAM_GRIBAPI_H */
 /*
  * Local Variables:
@@ -47564,6 +48503,55 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
 #endif
 
 
+int cdiDebugExt                        =  0;      //  Debug level for the KNMI extensions
+#ifdef HIRLAM_EXTENSIONS
+// *** RELATED to GRIB only ***
+int cdiGribUseTimeRangeIndicator        = 0;       // normaly cdo looks in grib for attribute called "stepType"
+                                                   // but NWP models such as Harmonie 37h1.2, use "timeRangeIndicator"
+                                                   // where:  0: for instanteneous fields; 4: for accumulated fields
+#endif // HIRLAM_EXTENSIONS
+
+
+// Regarding operation to change parameter identification:
+// change if cdiGribChangeParameterID.active
+struct cdiGribParamChange cdiGribChangeParameterID;
+
+// Used only for CDO module Selmulti
+void streamGrbChangeParameterIdentification(int code, int ltype, int lev)
+{
+  // NOTE this is a "PROXY" function for gribapiChangeParameterIdentification();
+  // This just sets the globals. There are probably better solutions to this.
+  // The parameter change is done by function  gribapiChangeParameterIdentification() in stream_gribapi.c
+  // Setting this control variable to true will cause calling fnc. gribapiChangeParameterIdentification later.
+  // After grib attributes have been changed this variable goes to false.
+  cdiGribChangeParameterID.active = true;
+  cdiGribChangeParameterID.code = code;
+  cdiGribChangeParameterID.ltype = ltype;
+  cdiGribChangeParameterID.lev = lev;
+}
+
+struct cdiGribModeChange cdiGribChangeModeUvRelativeToGrid;
+
+// Used only for CDO module WindTrans
+void streamGrbChangeModeUvRelativeToGrid(int mode)
+{
+  cdiGribChangeModeUvRelativeToGrid.active = true;
+  cdiGribChangeModeUvRelativeToGrid.mode = (mode > 0);
+}
+
+struct cdiGribScanModeChange cdiGribDataScanningMode;
+
+void streamGrbDefDataScanningMode(int scanmode)
+{
+  cdiGribDataScanningMode.active = true;
+  cdiGribDataScanningMode.value = scanmode;
+}
+
+int  streamGrbInqDataScanningMode(void)
+{
+  return cdiGribDataScanningMode.value;
+}
+
 
 int grib1ltypeToZaxisType(int grib_ltype)
 {
@@ -47580,6 +48568,7 @@ int grib1ltypeToZaxisType(int grib_ltype)
     case GRIB1_LTYPE_ATMOSPHERE:         zaxistype = ZAXIS_ATMOSPHERE;             break;
     case GRIB1_LTYPE_MEANSEA:            zaxistype = ZAXIS_MEANSEA;                break;
     case GRIB1_LTYPE_99:
+    case GRIB1_LTYPE_ISOBARIC_PA:
     case GRIB1_LTYPE_ISOBARIC:           zaxistype = ZAXIS_PRESSURE;               break;
     case GRIB1_LTYPE_HEIGHT:             zaxistype = ZAXIS_HEIGHT;                 break;
     case GRIB1_LTYPE_ALTITUDE:           zaxistype = ZAXIS_ALTITUDE;	           break;
@@ -47719,14 +48708,14 @@ int grbBitsPerValue(int datatype)
 {
   int bitsPerValue = 16;
 
-  if ( datatype == DATATYPE_CPX32 || datatype == DATATYPE_CPX64 )
+  if ( datatype == CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64 )
     Error("CDI/GRIB library does not support complex numbers!");
 
   if ( datatype != CDI_UNDEFID )
     {
       if ( datatype > 0 && datatype <= 32 )
 	bitsPerValue = datatype;
-      else if ( datatype == DATATYPE_FLT64 )
+      else if ( datatype == CDI_DATATYPE_FLT64 )
 	bitsPerValue = 24;
       else
 	bitsPerValue = 16;
@@ -47760,7 +48749,7 @@ int grbScanTimestep1(stream_t * streamptr)
 #if  defined  (HAVE_LIBCGRIBEX)
   int filetype  = streamptr->filetype;
 
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     status = cgribexScanTimestep1(streamptr);
 #endif
 #if defined(HAVE_LIBCGRIBEX) && defined (HAVE_LIBGRIB_API)
@@ -47781,7 +48770,7 @@ int grbScanTimestep2(stream_t * streamptr)
 #if  defined  (HAVE_LIBCGRIBEX)
   int filetype = streamptr->filetype;
 
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
       status = cgribexScanTimestep2(streamptr);
     }
@@ -47800,15 +48789,11 @@ static
 int grbScanTimestep(stream_t * streamptr)
 {
   int status = CDI_EUFTYPE;
-  int filetype;
-
-  filetype  = streamptr->filetype;
+  int filetype  = streamptr->filetype;
 
 #if  defined  (HAVE_LIBCGRIBEX)
-  if ( filetype == FILETYPE_GRB )
-    {
-      status = cgribexScanTimestep(streamptr);
-    }
+  if ( filetype == CDI_FILETYPE_GRB )
+    status = cgribexScanTimestep(streamptr);
   else
 #endif
 #ifdef HAVE_LIBGRIB_API
@@ -47824,17 +48809,12 @@ int grbScanTimestep(stream_t * streamptr)
 #if  defined  (HAVE_LIBGRIB)
 int grbInqContents(stream_t * streamptr)
 {
-  int fileID;
-  int status = 0;
-
-  fileID = streamptr->fileID;
-
   streamptr->curTsID = 0;
 
-  status = grbScanTimestep1(streamptr);
-
+  int status = grbScanTimestep1(streamptr);
   if ( status == 0 && streamptr->ntsteps == -1 ) status = grbScanTimestep2(streamptr);
 
+  int fileID = streamptr->fileID;
   fileSetPos(fileID, 0, SEEK_SET);
 
   return status;
@@ -47843,15 +48823,13 @@ int grbInqContents(stream_t * streamptr)
 
 int grbInqTimestep(stream_t * streamptr, int tsID)
 {
-  int ntsteps, nrecs;
-
   if ( tsID == 0 && streamptr->rtsteps == 0 )
     Error("Call to cdiInqContents missing!");
 
   if ( CDI_Debug )
     Message("tsid = %d rtsteps = %d", tsID, streamptr->rtsteps);
 
-  ntsteps = CDI_UNDEFID;
+  int ntsteps = CDI_UNDEFID;
   while ( (tsID + 1) > streamptr->rtsteps && ntsteps == CDI_UNDEFID )
     {
       ntsteps = grbScanTimestep(streamptr);
@@ -47862,6 +48840,8 @@ int grbInqTimestep(stream_t * streamptr, int tsID)
 	}
     }
 
+  int nrecs;
+
   if ( tsID >= streamptr->ntsteps && streamptr->ntsteps != CDI_UNDEFID )
     {
       nrecs = 0;
@@ -47882,7 +48862,7 @@ void streamInqGRIBinfo(int streamID, int *intnum, float *fltnum, off_t *bignum)
 
   int filetype = streamptr->filetype;
 
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
       int tsID     = streamptr->curTsID;
       int vrecID   = streamptr->tsteps[tsID].curRecID;
@@ -48016,14 +48996,14 @@ int vlistInsertTrivialTileSubtype(int vlistID);
 #if defined (HAVE_CONFIG_H)
 #endif
 
-#if  defined  (HAVE_LIBGRIB_API)
+#ifdef HAVE_LIBGRIB_API
 #include <limits.h>
 #include <stdio.h>
 
 
 
 
-#  include <grib_api.h>
+#include <grib_api.h>
 
 extern int cdiInventoryMode;
 
@@ -48035,6 +49015,14 @@ typedef struct {
   int level2;
   int ltype;
   int tsteptype;
+#ifdef HIRLAM_EXTENSIONS
+    // NOTE: tsteptype MUST be part of attributes used to compare variables!
+    // Modern NWP models (HARMONIE, HIRLAM) use timeRangeIndicator to specify
+    // if the field is instantanous or accumulated.
+    // Both types are typically in the same GRIB-file.
+    // (181; 105, 0, timeRangeIndicator=0) .. instantanous rain
+    // (181; 105, 0, timeRangeIndicator=4) .. accumulated rain  .. both can be in the same grib file
+#endif // HIRLAM_EXTENSIONS
   char name[32];
 
   var_tile_t tiles;
@@ -48198,7 +49186,7 @@ int gribapiGetValidityDateTime(grib_handle *gh, int *vdate, int *vtime)
 	}
 
       {
-	static int lprint = TRUE;
+	static bool lprint = true;
 	extern int grib_calendar;
 	int ryear, rmonth, rday, rhour, rminute, rsecond;
 	int julday, secofday;
@@ -48226,7 +49214,7 @@ int gribapiGetValidityDateTime(grib_handle *gh, int *vdate, int *vtime)
                 if ( lprint )
                   {
                     Warning("Time unit %d unsupported", timeUnits);
-                    lprint = FALSE;
+                    lprint = false;
                   }
                 break;
               }
@@ -48276,9 +49264,9 @@ void grib1GetLevel(grib_handle *gh, int *leveltype, int *lbounds, int *level1, i
 	{
           double dlevel;
 	  GRIB_CHECK(grib_get_double(gh, "level", &dlevel), 0); //2 byte
-	  if ( *leveltype == 100 ) dlevel *= 100;
+	  if ( *leveltype == GRIB1_LTYPE_ISOBARIC ) dlevel *= 100;
 	  if ( dlevel < -2.e9 || dlevel > 2.e9 ) dlevel = 0;
-	  if ( *leveltype == GRIB1_LTYPE_99 ) *leveltype = 100;
+	  if ( *leveltype == GRIB1_LTYPE_99 || *leveltype == GRIB1_LTYPE_ISOBARIC_PA ) *leveltype = GRIB1_LTYPE_ISOBARIC;
 
 	  *level1 = (int) dlevel;
 	  *level2 = 0;
@@ -48430,11 +49418,11 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
   int vlistID = streamptr->vlistID;
   int tsID    = streamptr->curTsID;
   int recID   = recordNewEntry(streamptr, tsID);
-  record_t *record  = &streamptr->tsteps[tsID].records[recID];
+  record_t *record = &streamptr->tsteps[tsID].records[recID];
 
   int tsteptype = gribapiGetTsteptype(gh);
   // numavg  = ISEC1_AvgNum;
-  int numavg  = 0;
+  int numavg = 0;
 
   // fprintf(stderr, "param %d %d %d %d\n", param, level1, level2, leveltype1);
 
@@ -48471,12 +49459,42 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
       grib_get_double(gh, "latitudeOfSouthernPoleInDegrees",  &ypole);
       grib_get_double(gh, "longitudeOfSouthernPoleInDegrees", &xpole);
       grib_get_double(gh, "angleOfRotation", &angle);
-      xpole =  xpole - 180;
+      xpole -= 180;
       if ( fabs(ypole) > 0 ) ypole = -ypole; // change from south to north pole
       if ( fabs(angle) > 0 ) angle = -angle;
 
       gridDefParamRLL(gridID, xpole, ypole, angle);
     }
+  else if ( grid->projtype == CDI_PROJ_LCC )
+    {
+      double a = 6367470., rf = 0;
+      long earthIsOblate;
+      grib_get_long(gh, "earthIsOblate", &earthIsOblate);
+      if ( earthIsOblate ) { a = 6378160.; rf = 297.0; }
+      double lon_0, lat_1, lat_2, xval_0, yval_0;
+      long projflag = 0;
+      grib_get_double(gh, "longitudeOfFirstGridPointInDegrees", &xval_0);
+      grib_get_double(gh, "latitudeOfFirstGridPointInDegrees", &yval_0);
+      grib_get_double(gh, "LoVInDegrees", &lon_0);
+      grib_get_double(gh, "Latin1InDegrees", &lat_1);
+      grib_get_double(gh, "Latin2InDegrees", &lat_2);
+      grib_get_long(gh, "projectionCentreFlag", &projflag);
+      bool lsouth = gribbyte_get_bit((int)projflag, 1);
+      if ( lsouth ) { lat_1 = -lat_1; lat_2 = -lat_2; }
+
+      double lat_0 = lat_2;
+      double x_0 = grid_missval;
+      double y_0 = grid_missval;
+
+      if ( proj_lonlat_to_lcc_func )
+        {
+          x_0 = xval_0; y_0 = yval_0;
+          proj_lonlat_to_lcc_func(grid_missval, lon_0, lat_0, lat_1, lat_2, a, rf, (size_t)1, &x_0, &y_0);
+          if ( IS_NOT_EQUAL(x_0, grid_missval) && IS_NOT_EQUAL(y_0, grid_missval) )
+            { x_0 = -x_0; y_0 = -y_0; }
+        }
+      gridDefParamLCC(gridID, grid_missval, lon_0, lat_0, lat_1, lat_2, a, rf, xval_0, yval_0, x_0, y_0);
+    }
 
   int zaxistype = gribapiGetZaxisType(gribEditionNumber(gh), leveltype1);
 
@@ -48504,10 +49522,7 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
         unsigned char uuid[CDI_UUID_SIZE];
         long lpar;
         GRIB_CHECK(grib_get_long(gh, "NV", &lpar), 0);
-        if ( lpar != 6 )
-          {
-            fprintf(stderr, "Warning ...\n");
-          }
+        if ( lpar != 6 ) fprintf(stderr, "Warning ...\n");
         GRIB_CHECK(grib_get_long(gh, "nlev", &lpar), 0);
         int nhlev = (int)lpar;
         GRIB_CHECK(grib_get_long(gh, "numberOfVGridUsed", &lpar), 0);
@@ -48520,8 +49535,8 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
       }
     }
 
-  // if ( datatype > 32 ) datatype = DATATYPE_PACK32;
-  if ( datatype <  0 ) datatype = DATATYPE_PACK;
+  // if ( datatype > 32 ) datatype = CDI_DATATYPE_PACK32;
+  if ( datatype <  0 ) datatype = CDI_DATATYPE_PACK;
 
   stdname[0] = 0;
   longname[0] = 0;
@@ -48572,12 +49587,11 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
   if ( grib_get_long(gh, "productDefinitionTemplateNumber", &productDefinitionTemplate) == 0 )
     varDefProductDefinitionTemplate(varID, (int) productDefinitionTemplate);
 
-  int    i;
   long   lval;
   double dval;
 
   if (lread_additional_keys)
-    for ( i = 0; i < cdiNAdditionalGRIBKeys; i++ )
+    for ( int i = 0; i < cdiNAdditionalGRIBKeys; i++ )
       {
         /* note: if the key is not defined, we do not throw an error! */
         if ( grib_get_long(gh, cdiAdditionalGRIBKeys[i], &lval) == 0 )
@@ -48589,10 +49603,9 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
   if ( varInqInst(varID) == CDI_UNDEFID )
     {
       long center, subcenter;
-      int instID;
       GRIB_CHECK(grib_get_long(gh, "centre", &center), 0);
       GRIB_CHECK(grib_get_long(gh, "subCentre", &subcenter), 0);
-      instID    = institutInq((int)center, (int)subcenter, NULL, NULL);
+      int instID = institutInq((int)center, (int)subcenter, NULL, NULL);
       if ( instID == CDI_UNDEFID )
 	instID = institutDef((int)center, (int)subcenter, NULL, NULL);
       varDefInst(varID, instID);
@@ -48600,12 +49613,11 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
 
   if ( varInqModel(varID) == CDI_UNDEFID )
     {
-      int modelID;
       long processID;
       if ( grib_get_long(gh, "generatingProcessIdentifier", &processID) == 0 )
 	{
           /* FIXME: assert(processID >= INT_MIN && processID <= INT_MAX) */
-	  modelID = modelInq(varInqInst(varID), (int)processID, NULL);
+	  int modelID = modelInq(varInqInst(varID), (int)processID, NULL);
 	  if ( modelID == CDI_UNDEFID )
 	    modelID = modelDef(varInqInst(varID), (int)processID, NULL);
 	  varDefModel(varID, modelID);
@@ -48615,16 +49627,12 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
   if ( varInqTable(varID) == CDI_UNDEFID )
     {
       int pdis, pcat, pnum;
-
       cdiDecodeParam(param, &pnum, &pcat, &pdis);
 
       if ( pdis == 255 )
 	{
-	  int tableID;
 	  int tabnum = pcat;
-
-	  tableID = tableInq(varInqModel(varID), tabnum, NULL);
-
+	  int tableID = tableInq(varInqModel(varID), tabnum, NULL);
 	  if ( tableID == CDI_UNDEFID )
 	    tableID = tableDef(varInqModel(varID), tabnum, NULL);
 	  varDefTable(varID, tableID);
@@ -48639,7 +49647,7 @@ void gribapiAddRecord(stream_t * streamptr, int param, grib_handle *gh,
 	    varID, param, zaxistype, gridID, levelID);
 }
 
-static compvar2_t gribapiVarSet(int param, int level1, int level2, int leveltype, 
+static compvar2_t gribapiVarSet(int param, int level1, int level2, int leveltype,
                                 int tsteptype, char *name, var_tile_t tiles_data)
 {
   compvar2_t compVar;
@@ -48692,12 +49700,28 @@ void ensureBufferSize(size_t requiredSize, size_t *curSize, void **buffer)
 }
 
 static
-grib_handle *gribapiGetDiskRepresentation(size_t recsize, size_t *buffersize, void **gribbuffer, int *outDatatype, int *outCompressionType, long *outUnzipsize)
+grib_handle *gribapiGetDiskRepresentation(size_t recsize, size_t *buffersize, void **gribbuffer, int *outDatatype, int *outCompressionType, size_t *outUnzipsize)
 {
-  bool lieee = false;
+  int gribversion = (int)((char*)*gribbuffer)[7];
+
+  if ( gribversion <= 1 )
+    {
+      if ( gribGetZip(recsize, *gribbuffer, outUnzipsize) > 0 )
+        {
+          *outCompressionType = CDI_COMPRESS_SZIP;
+          ensureBufferSize(*outUnzipsize + 100, buffersize, gribbuffer);
+        }
+      else
+        {
+          *outCompressionType = CDI_COMPRESS_NONE;
+        }
+    }
 
   grib_handle *gh = grib_handle_new_from_message(NULL, *gribbuffer, recsize);
-  if(gribEditionNumber(gh) > 1)
+
+  bool lieee = false;
+
+  if ( gribversion > 1 )
     {
       size_t len = 256;
       char typeOfPacking[256];
@@ -48710,35 +49734,24 @@ grib_handle *gribapiGetDiskRepresentation(size_t recsize, size_t *buffersize, vo
           else if ( strncmp(typeOfPacking, "grid_ieee", len) == 0 ) lieee = true;
         }
     }
-  else
-    {
-      if( gribGetZip((long)recsize, *gribbuffer, outUnzipsize) > 0 )
-        {
-          *outCompressionType = CDI_COMPRESS_SZIP;
-          ensureBufferSize((size_t)*outUnzipsize + 100, buffersize, gribbuffer);
-        }
-      else
-        {
-          *outCompressionType = CDI_COMPRESS_NONE;
-        }
-    }
 
   if ( lieee )
     {
-      *outDatatype = DATATYPE_FLT64;
+      *outDatatype = CDI_DATATYPE_FLT64;
       long precision;
       int status = grib_get_long(gh, "precision", &precision);
-      if ( status == 0 && precision == 1 ) *outDatatype = DATATYPE_FLT32;
+      if ( status == 0 && precision == 1 ) *outDatatype = CDI_DATATYPE_FLT32;
     }
   else
     {
-      *outDatatype = DATATYPE_PACK;
+      *outDatatype = CDI_DATATYPE_PACK;
       long bitsPerValue;
       if ( grib_get_long(gh, "bitsPerValue", &bitsPerValue) == 0 )
         {
           if ( bitsPerValue > 0 && bitsPerValue <= 32 ) *outDatatype = (int)bitsPerValue;
         }
     }
+
   return gh;
 }
 
@@ -48785,8 +49798,8 @@ int gribapiScanTimestep1(stream_t * streamptr)
   size_t buffersize = 0;
   DateTime datetime0 = { .date = 10101, .time = 0 };
   int nrecs_scanned = 0;        //Only used for debug output.
-  int warn_time = TRUE;
-  // int warn_numavg = TRUE;
+  bool warn_time = true;
+  // bool warn_numavg = true;
   int rdate = 0, rtime = 0, tunit = 0, fcast = 0;
   grib_handle *gh = NULL;
 
@@ -48801,11 +49814,11 @@ int gribapiScanTimestep1(stream_t * streamptr)
   int fileID = streamptr->fileID;
 
   unsigned nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       int level1 = 0, level2 = 0;
-      size_t recsize = (size_t)gribGetSize(fileID);
-      recpos  = fileGetPos(fileID);
+      size_t recsize = gribGetSize(fileID);
+      recpos = fileGetPos(fileID);
 
       if ( recsize == 0 )
         {
@@ -48819,7 +49832,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
       if ( rstatus ) break;
 
       int datatype, comptype = 0;
-      long unzipsize;
+      size_t unzipsize;
       gh = gribapiGetDiskRepresentation(recsize, &buffersize, &gribbuffer, &datatype, &comptype, &unzipsize);
 
       nrecs_scanned++;
@@ -48871,7 +49884,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
           else if ( result == CHECKTIME_INCONSISTENT && warn_time )
             {
               gribWarning("Inconsistent verification time!", nrecs_scanned, tsID+1, varname, param, level1, level2);
-              warn_time = FALSE;
+              warn_time = false;
             }
           assert(result == CHECKTIME_OK || result == CHECKTIME_INCONSISTENT);
         }
@@ -48882,7 +49895,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
             {
               Message("Change numavg from %d to %d not allowed!",
                       taxis->numavg, ISEC1_AvgNum);
-              warn_numavg = FALSE;
+              warn_numavg = false;
             }
           else
             {
@@ -48960,7 +49973,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
       if ( tsID != streamptr->rtsteps )
         Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -48987,7 +50000,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
   DateTime datetime0 = { LONG_MIN, LONG_MIN };
   // int gridID;
   int recID;
-  //  int warn_numavg = TRUE;
+  //  bool warn_numavg = true;
   grib_handle *gh = NULL;
 
   streamptr->curTsID = 1;
@@ -49023,12 +50036,12 @@ int gribapiScanTimestep2(stream_t * streamptr)
 
   int nrecs_scanned = nrecords; //Only used for debug output
   int rindex = 0;
-  while ( TRUE )
+  while ( true )
     {
       if ( rindex > nrecords ) break;
 
-      size_t recsize = (size_t)gribGetSize(fileID);
-      recpos  = fileGetPos(fileID);
+      size_t recsize = gribGetSize(fileID);
+      recpos = fileGetPos(fileID);
       if ( recsize == 0 )
 	{
 	  streamptr->ntsteps = 2;
@@ -49040,9 +50053,9 @@ int gribapiScanTimestep2(stream_t * streamptr)
       rstatus = gribRead(fileID, gribbuffer, &readsize);
       if ( rstatus ) break;
 
-      long unzipsize;
-      if ( gribGetZip((long)recsize, gribbuffer, &unzipsize) > 0 )
-        ensureBufferSize((size_t)unzipsize + 100, &buffersize, &gribbuffer);
+      size_t unzipsize;
+      if ( gribGetZip(recsize, gribbuffer, &unzipsize) > 0 )
+        ensureBufferSize(unzipsize + 100, &buffersize, &gribbuffer);
 
       nrecs_scanned++;
       gh = grib_handle_new_from_message(NULL, gribbuffer, recsize);
@@ -49088,7 +50101,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 	  if (  taxis->numavg && warn_numavg &&
 		(taxis->numavg != ISEC1_AvgNum) )
 	    {
-	      warn_numavg = FALSE;
+	      warn_numavg = false;
 	    }
 	  else
 	    {
@@ -49124,7 +50137,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 	    }
 	}
 
-      streamptr->tsteps[tsID].records[recID].used = TRUE;
+      streamptr->tsteps[tsID].records[recID].used = true;
       streamptr->tsteps[tsID].recIDs[rindex] = recID;
 
       if ( CDI_Debug )
@@ -49191,7 +50204,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -49205,7 +50218,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 int gribapiScanTimestep(stream_t * streamptr)
 {
   int vrecID, recID;
-  //int warn_numavg = TRUE;
+  //bool warn_numavg = true;
   int nrecs = 0;
   int vlistID = streamptr->vlistID;
 
@@ -49244,12 +50257,12 @@ int gribapiScanTimestep(stream_t * streamptr)
       DateTime datetime0 = { LONG_MIN, LONG_MIN };
       grib_handle *gh = NULL;
       char varname[256];
-      while ( TRUE )
+      while ( true )
 	{
 	  if ( rindex > nrecs ) break;
 
-	  size_t recsize = (size_t)gribGetSize(fileID);
-	  recpos  = fileGetPos(fileID);
+	  size_t recsize = gribGetSize(fileID);
+	  recpos = fileGetPos(fileID);
 	  if ( recsize == 0 )
 	    {
 	      streamptr->ntsteps = streamptr->rtsteps + 1;
@@ -49268,9 +50281,9 @@ int gribapiScanTimestep(stream_t * streamptr)
 	      break;
 	    }
 
-          long unzipsize;
-	  if ( gribGetZip((long)recsize, gribbuffer, &unzipsize) > 0 )
-            ensureBufferSize((size_t)unzipsize + 100, &buffersize, &gribbuffer);
+          size_t unzipsize;
+	  if ( gribGetZip(recsize, gribbuffer, &unzipsize) > 0 )
+            ensureBufferSize(unzipsize + 100, &buffersize, &gribbuffer);
 
           nrecs_scanned++;
 	  gh = grib_handle_new_from_message(NULL, gribbuffer, recsize);
@@ -49316,7 +50329,7 @@ int gribapiScanTimestep(stream_t * streamptr)
 	      if (  taxis->numavg && warn_numavg &&
 		   (taxis->numavg != ISEC1_AvgNum) )
 		{
-		  warn_numavg = FALSE;
+		  warn_numavg = false;
 		}
 	      else
 		{
@@ -49362,7 +50375,7 @@ int gribapiScanTimestep(stream_t * streamptr)
 		}
 	    }
 
-          streamptr->tsteps[tsID].records[recID].used = TRUE;
+          streamptr->tsteps[tsID].records[recID].used = true;
           streamptr->tsteps[tsID].recIDs[rindex] = recID;
 
 	  if ( CDI_Debug )
@@ -49412,7 +50425,7 @@ int gribapiScanTimestep(stream_t * streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -49679,6 +50692,8 @@ void gribapiDefStepUnits(int editionNumber, grib_handle *gh, int timeunit, int p
         }
       else
         {
+	  // NOTE KNMI:  HIRLAM model files LAMH_D11 are in grib1 and do NOT have key indicatorOfUnitForTimeRange
+	  // Watch out for compatibility issues.
           GRIB_CHECK(my_grib_set_long(gh, "indicatorOfUnitOfTimeRange", unitsOfTime), 0);
         }
     }
@@ -49691,25 +50706,10 @@ int gribapiDefSteptype(int editionNumber, grib_handle *gh, int productDefinition
   size_t len = 64;
   const char *stepType;
 
-  static struct {
-    long productionTemplate;
-    const char sname[8];
-  } ts_tab[] = {
-    [TSTEP_INSTANT] = {  0, "instant" },
-    [TSTEP_AVG] = { 8, "avg" },
-    [TSTEP_ACCUM] = {  8, "accum" },
-    [TSTEP_MAX] = {  8, "max" },
-    [TSTEP_MIN] = {  8, "min" },
-    [TSTEP_DIFF] = {  8, "diff" },
-    [TSTEP_RMS] = {  8, "rms" },
-    [TSTEP_SD] = {  8, "sd" },
-    [TSTEP_COV] = { 8, "cov" },
-    [TSTEP_RATIO] = {  8, "ratio" }
-  };
   if (tsteptype >= TSTEP_INSTANT && tsteptype <= TSTEP_RATIO)
     {
-      stepType = ts_tab[tsteptype].sname;
-      proDefTempNum = ts_tab[tsteptype].productionTemplate;
+      stepType = cdiGribAPI_ts_str_map[tsteptype].sname;
+      proDefTempNum = cdiGribAPI_ts_str_map[tsteptype].productionTemplate;
     }
   else
     {
@@ -49770,7 +50770,7 @@ int gribapiDefDateTimeRel(int editionNumber, grib_handle *gh, int rdate, int rti
 
   int factor = getTimeunitFactor(timeunit);
 
-  if ( !(int) fmod(days*86400.0 + secs, factor) )
+  if ( !(int)(fmod(days*86400.0 + secs, factor)))
     {
       int proDefTempNum = gribapiDefSteptype(editionNumber, gh, productDefinitionTemplate, typeOfGeneratingProcess, tsteptype, gcinit);
 
@@ -49918,20 +50918,36 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
     }
   else if ( gridtype == GRID_CURVILINEAR )
     {
-      static bool lwarning = true;
-      if ( lwarning && gridsize > 1 )
-	{
-	  lwarning = false;
-	  Warning("Curvilinear grids are unsupported in GRIB format! Created wrong Grid Description Section!");
-	}
-      gridtype = GRID_LONLAT;
-      lcurvi = true;
+      int projID = gridInqProj(gridID);
+      if ( projID != CDI_UNDEFID && gridInqType(projID) == GRID_PROJECTION )
+        {
+          gridID = projID;
+          gridtype = GRID_PROJECTION;
+        }
+      else
+        {
+          static bool lwarning = true;
+          if ( lwarning && gridsize > 1 )
+            {
+              lwarning = false;
+              Warning("Curvilinear grid is unsupported in GRIB format! Created wrong Grid Description Section!");
+            }
+          lcurvi = true;
+          gridtype = GRID_LONLAT;
+        }
     }
 
-  if ( gridtype == GRID_PROJECTION && gridInqProjType(gridID) == CDI_PROJ_RLL )
+  if ( gridtype == GRID_PROJECTION )
     {
-      gridtype = GRID_LONLAT;
-      lrotated = true;
+      if ( gridInqProjType(gridID) == CDI_PROJ_RLL )
+        {
+          gridtype = GRID_LONLAT;
+          lrotated = true;
+        }
+      else if ( gridInqProjType(gridID) == CDI_PROJ_LCC )
+        {
+          gridtype = GRID_LCC;
+        }
     }
 
   if ( gridtype == GRID_LONLAT || gridtype == GRID_GAUSSIAN )
@@ -49958,7 +50974,6 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
       {
 	double xfirst = 0, xlast = 0, xinc = 0;
 	double yfirst = 0, ylast = 0, yinc = 0;
-	double latIncr;
 
         const char *mesg;
         size_t len;
@@ -49988,8 +51003,8 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
           }
         GRIB_CHECK(my_grib_set_string(gh, "gridType", mesg, &len), 0);
 
-	long nlon = gridInqXsize(gridID);
-	long nlat = gridInqYsize(gridID);
+	int nlon = gridInqXsize(gridID);
+	int nlat = gridInqYsize(gridID);
 
 	if ( gridtype == GRID_GAUSSIAN_REDUCED )
 	  {
@@ -50000,14 +51015,14 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
 	    gridInqRowlon(gridID, rowlon);
 	    for ( int i = 0; i < nlat; ++i ) pl[i] = rowlon[i];
 
-            GRIB_CHECK(grib_set_long_array(gh, "pl", pl, nlat), 0);
+            GRIB_CHECK(grib_set_long_array(gh, "pl", pl, (size_t)nlat), 0);
 
 	    Free(pl);
 	    Free(rowlon);
 
 	    xfirst = 0;
-	    xlast  = 360.-360./(nlat*2);
-	    xinc   = 360./(nlat*2);
+	    xinc   =        360. * 0.5 / (double)nlat;
+	    xlast  = 360. - 360. * 0.5 / (double)nlat;
 	  }
 	else
 	  {
@@ -50016,7 +51031,7 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
 	      {
 		xfirst = gridInqXval(gridID, 0);
                 xlast  = gridInqXval(gridID, (lcurvi ? nlon*nlat : nlon) - 1);
-		xinc   = gridInqXinc(gridID);
+		xinc   = fabs(gridInqXinc(gridID));
 	      }
 	  }
 
@@ -50025,7 +51040,7 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
 	  {
 	    yfirst = gridInqYval(gridID, 0);
             ylast  = gridInqYval(gridID, (lcurvi ? nlon*nlat : nlat) - 1);
-	    yinc   = gridInqYinc(gridID);
+	    yinc   = fabs(gridInqYinc(gridID));
 	  }
 
 	if ( gridtype != GRID_GAUSSIAN_REDUCED ) GRIB_CHECK(my_grib_set_long(gh, "Ni", nlon), 0);
@@ -50038,8 +51053,11 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
 	GRIB_CHECK(my_grib_set_double(gh, "latitudeOfLastGridPointInDegrees",   ylast), 0);
 
         {
-          long jscan = 0;
-          if ( yfirst < ylast ) jscan = 1;
+          long iscan = xfirst > xlast;
+          GRIB_CHECK(my_grib_set_long(gh, "iScansNegatively", iscan), 0);
+        }
+        {
+          long jscan = yfirst < ylast;
           GRIB_CHECK(my_grib_set_long(gh, "jScansPositively", jscan), 0);
         }
 
@@ -50051,9 +51069,7 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
           }
 	else
 	  {
-	    latIncr = yinc;
-	    if ( latIncr < 0 ) latIncr = -latIncr;
-	    GRIB_CHECK(my_grib_set_double(gh, "jDirectionIncrementInDegrees", latIncr), 0);
+	    GRIB_CHECK(my_grib_set_double(gh, "jDirectionIncrementInDegrees", yinc), 0);
 	  }
 
 	if ( lrotated )
@@ -50061,7 +51077,7 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
             double xpole = 0, ypole = 0, angle = 0;
             gridInqParamRLL(gridID, &xpole, &ypole, &angle);
 
-            xpole =  xpole + 180;
+            xpole += 180;
             if ( fabs(ypole) > 0 ) ypole = -ypole; // change from north to south pole
             if ( fabs(angle) > 0 ) angle = -angle;
             GRIB_CHECK(my_grib_set_double(gh, "latitudeOfSouthernPoleInDegrees",  ypole), 0);
@@ -50085,57 +51101,71 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
           }
         GRIB_CHECK(my_grib_set_string(gh, "packingType", mesg, &len), 0);
         if ( lieee )
-          GRIB_CHECK(my_grib_set_long(gh, "precision", datatype == DATATYPE_FLT64 ? 2 : 1), 0);
+          GRIB_CHECK(my_grib_set_long(gh, "precision", datatype == CDI_DATATYPE_FLT64 ? 2 : 1), 0);
+
+        long uvRelativeToGrid = gridInqUvRelativeToGrid(gridID);
+        if ( uvRelativeToGrid ) GRIB_CHECK(my_grib_set_long(gh, "uvRelativeToGrid", uvRelativeToGrid), 0);
 
 	break;
       }
     case GRID_LCC:
       {
-	double originLon, originLat, lonParY, lat1, lat2, xincm, yincm;
-	int projflag, scanflag;
-
 	int xsize = gridInqXsize(gridID);
 	int ysize = gridInqYsize(gridID);
 
-	gridInqParamLCC(gridID, &originLon, &originLat, &lonParY, &lat1, &lat2, &xincm, &yincm,
-                        &projflag, &scanflag);
+        double lon_0, lat_0, lat_1, lat_2, a, rf, xval_0, yval_0, x_0, y_0;
+	gridInqParamLCC(gridID, grid_missval, &lon_0, &lat_0, &lat_1, &lat_2, &a, &rf, &xval_0, &yval_0, &x_0, &y_0);
+	gridVerifyGribParamLCC(grid_missval, &lon_0, &lat_0, &lat_1, &lat_2, &a, &rf, &xval_0, &yval_0, &x_0, &y_0);
+        if ( xval_0 < 0 ) xval_0 += 360;
+        bool lsouth = (lat_1 < 0);
+        if ( lsouth ) { lat_1 = -lat_2; lat_2 = -lat_2; }
+        int projflag = 0;
+        if ( lsouth ) gribbyte_set_bit(&projflag, 1);
+
+        double xinc = gridInqXinc(gridID);
+        double yinc = gridInqYinc(gridID);
 
         static const char mesg[] = "lambert";
-        size_t len = sizeof (mesg) -1;
+        size_t len = sizeof(mesg) -1;
         GRIB_CHECK(my_grib_set_string(gh, "gridType", mesg, &len), 0);
 
 	GRIB_CHECK(my_grib_set_long(gh, "Nx", xsize), 0);
 	GRIB_CHECK(my_grib_set_long(gh, "Ny", ysize), 0);
-
-        /* FIXME: lround should probably be round here */
-	GRIB_CHECK(my_grib_set_double(gh, "DxInMetres", (double)lround(xincm)), 0);
-        /* FIXME: lround should probably be round here */
-	GRIB_CHECK(my_grib_set_double(gh, "DyInMetres", (double)lround(yincm)), 0);
-	GRIB_CHECK(my_grib_set_double(gh, "longitudeOfFirstGridPointInDegrees", originLon), 0);
-	GRIB_CHECK(my_grib_set_double(gh, "latitudeOfFirstGridPointInDegrees", originLat), 0);
-	GRIB_CHECK(my_grib_set_double(gh, "LoVInDegrees", lonParY), 0);
-	GRIB_CHECK(my_grib_set_double(gh, "Latin1InDegrees", lat1), 0);
-	GRIB_CHECK(my_grib_set_double(gh, "Latin2InDegrees", lat2), 0);
-
+	GRIB_CHECK(my_grib_set_long(gh, "DxInMetres", lround(xinc)), 0);
+	GRIB_CHECK(my_grib_set_long(gh, "DyInMetres", lround(yinc)), 0);
+	GRIB_CHECK(my_grib_set_double(gh, "longitudeOfFirstGridPointInDegrees", xval_0), 0);
+	GRIB_CHECK(my_grib_set_double(gh, "latitudeOfFirstGridPointInDegrees", yval_0), 0);
+	GRIB_CHECK(my_grib_set_double(gh, "LoVInDegrees", lon_0), 0);
+	GRIB_CHECK(my_grib_set_double(gh, "Latin1InDegrees", lat_1), 0);
+	GRIB_CHECK(my_grib_set_double(gh, "Latin2InDegrees", lat_2), 0);
+        GRIB_CHECK(my_grib_set_long(gh, "projectionCentreFlag", projflag), 0);
+
+        long uvRelativeToGrid = gridInqUvRelativeToGrid(gridID);
+        if ( uvRelativeToGrid ) GRIB_CHECK(my_grib_set_long(gh, "uvRelativeToGrid", uvRelativeToGrid), 0);
+        long earthIsOblate = (IS_EQUAL(a, 6378160.) && IS_EQUAL(rf, 297.));
+        if ( earthIsOblate ) GRIB_CHECK(my_grib_set_long(gh, "earthIsOblate", earthIsOblate), 0);
+
+        int scanflag = 0;
+        gribbyte_set_bit(&scanflag, 2);
         if ( editionNumber <= 1 )
-          {
-            GRIB_CHECK(my_grib_set_long(gh, "projectionCenterFlag", projflag), 0);
-            GRIB_CHECK(my_grib_set_long(gh, "scanningMode", scanflag), 0);
-          }
+          GRIB_CHECK(my_grib_set_long(gh, "scanningMode", (long)scanflag), 0);
 
 	break;
       }
     case GRID_SPECTRAL:
       {
-        static const char mesg[] = "sh";
-        size_t len = sizeof (mesg) -1;
-	GRIB_CHECK(my_grib_set_string(gh, "gridType", mesg, &len), 0);
-
-	int trunc = gridInqTrunc(gridID);
-	GRIB_CHECK(my_grib_set_long(gh, "J", trunc), 0);
-	GRIB_CHECK(my_grib_set_long(gh, "K", trunc), 0);
-	GRIB_CHECK(my_grib_set_long(gh, "M", trunc), 0);
-
+        {
+          static const char mesg[] = "sh";
+          size_t len = sizeof (mesg) -1;
+          GRIB_CHECK(my_grib_set_string(gh, "gridType", mesg, &len), 0);
+        }
+	{
+          int trunc = gridInqTrunc(gridID);
+          enum { numTruncAtt = 3 };
+          static const char truncAttNames[numTruncAtt][2] = { "J", "K", "M" };
+          for (size_t i = 0; i < numTruncAtt; ++i)
+            GRIB_CHECK(my_grib_set_long(gh, truncAttNames[i], trunc), 0);
+        }
 	// GRIB_CHECK(my_grib_set_long(gh, "numberOfDataPoints", gridsize), 0);
         /*
         if ( lieee )
@@ -50152,10 +51182,11 @@ void gribapiDefGrid(int editionNumber, grib_handle *gh, int gridID, int comptype
             static const char mesg[] = "spectral_complex";
             size_t len = sizeof (mesg) -1;
 	    GRIB_CHECK(my_grib_set_string(gh, "packingType", mesg, &len), 0);
-
-	    GRIB_CHECK(my_grib_set_long(gh, "JS", 20), 0);
-	    GRIB_CHECK(my_grib_set_long(gh, "KS", 20), 0);
-	    GRIB_CHECK(my_grib_set_long(gh, "MS", 20), 0);
+            enum { numTruncAtt = 3 };
+            static const char truncAttNames[numTruncAtt][3]
+              = { "JS", "KS", "MS" };
+            for (size_t i = 0; i < numTruncAtt; ++i)
+              GRIB_CHECK(my_grib_set_long(gh, truncAttNames[i], 20), 0);
 	  }
 	else
 	  {
@@ -50239,16 +51270,14 @@ static
 void getLevelFactor(double level, long *factor, long *out_scaled_value)
 {
   double scaled_value  = level;
-  /* FIXME: lround might be better here */
-  long   iscaled_value = (long) round(scaled_value);
+  long   iscaled_value = lround(scaled_value);
   long   i;
 
   const double eps = 1.e-8;
   for ( i=0; (fabs(scaled_value - (double) iscaled_value) >= eps) && i < 7; i++ )
     {
       scaled_value *= 10.;
-      /* FIXME: lround might be better here */
-      iscaled_value = (long)round(scaled_value);
+      iscaled_value = lround(scaled_value);
     }
 
   (*factor)           = i;
@@ -50259,7 +51288,7 @@ static
 void gribapiDefLevelType(grib_handle *gh, int gcinit, const char *keyname, long leveltype)
 {
   bool lset = false;
-  if ( (leveltype == 99 || leveltype == 100) && gribEditionNumber(gh) == 1 )
+  if ( (leveltype == GRIB1_LTYPE_ISOBARIC_PA || leveltype == 99 || leveltype == 100) && gribEditionNumber(gh) == 1 )
     {
       if ( gribGetLong(gh, "indicatorOfTypeOfLevel") != leveltype ) lset = true;
     }
@@ -50304,24 +51333,6 @@ void grib2DefLevel(grib_handle *gh, int gcinit, long leveltype1, long leveltype2
     }
 }
 
-
-/*
-void grib_verfiy_zaxis(int zaxisID, double sf)
-{
-  printf("grb_verfiy_vlist called\n");
-  int zaxisID = vlistZaxis(vlistID, index);
-  int nlevels = zaxisInqSize(zaxisID);
-  int zaxistype = zaxisInqType(zaxisID);
-  double *levels = (double *) Malloc(nlevels*sizeof(double));
-  int *ilevels = (int *) Malloc(nlevels*sizeof(int));
-  zaxisInqLevels(zaxisID, levels);
-  for ( int i = 0; i < nlevels; ++i )
-    printf("level %d %g\n", i+1, levels[i]);
-  Free(ilevels);
-  Free(levels);
-}
-*/
-
 static
 void gribapiDefLevel(int editionNumber, grib_handle *gh, int zaxisID, int levelID, int gcinit, int proddef_template_num)
 {
@@ -50332,7 +51343,7 @@ void gribapiDefLevel(int editionNumber, grib_handle *gh, int zaxisID, int levelI
   int zaxistype = zaxisInqType(zaxisID);
   long ltype = zaxisInqLtype(zaxisID);
   long ltype2 = zaxisInqLtype2(zaxisID);
-  double level = zaxisInqLevel(zaxisID, levelID);
+  double level = zaxisInqLevels(zaxisID, NULL) ? zaxisInqLevel(zaxisID, levelID) : levelID+1;
 
   if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
     {
@@ -50467,7 +51478,7 @@ void gribapiDefLevel(int editionNumber, grib_handle *gh, int zaxisID, int levelI
           {
             double dum;
             if ( level < 32768 && (level < 100 || modf(level/100, &dum) > 0) )
-              grib_ltype = GRIB1_LTYPE_99;
+              grib_ltype = GRIB1_LTYPE_ISOBARIC_PA;
             else
               level /= 100;
 
@@ -50571,6 +51582,427 @@ void gribapiDefLevel(int editionNumber, grib_handle *gh, int zaxisID, int levelI
     }
 }
 
+
+int gribapiGetScanningMode(grib_handle *gh)
+{
+  long iScansNegatively;
+  long jScansPositively;
+  long jPointsAreConsecutive;
+
+  GRIB_CHECK(grib_get_long(gh, "iScansNegatively", &iScansNegatively), 0);
+  GRIB_CHECK(grib_get_long(gh, "jScansPositively", &jScansPositively), 0);
+  GRIB_CHECK(grib_get_long(gh, "jPointsAreConsecutive", &jPointsAreConsecutive), 0);
+  int scanningMode
+    = 128*(bool)iScansNegatively
+    + 64 *(bool)jScansPositively
+    + 32 *(bool)jPointsAreConsecutive;
+  if (cdiDebugExt>=30)
+    printf("gribapiGetScanningMode(): Scanning mode = %02d (%1d%1d%1d)*32; \n",\
+            scanningMode,(int)jPointsAreConsecutive,(int)jScansPositively,(int)iScansNegatively);
+
+ return scanningMode;
+}
+
+
+void gribapiSetScanningMode(grib_handle *gh, int scanningMode)
+{
+   // 127: reserved for testing; generated test data will be in 64 scanning mode
+  //if (scanningMode== 127)  scanningMode = 64;
+
+  long iScansNegatively      = (scanningMode & 128)/128;
+  long jScansPositively      = (scanningMode & 64)/64;
+  long jPointsAreConsecutive = (scanningMode & 32)/32;
+
+  if (cdiDebugExt>=30)
+  {
+    long paramId, levelTypeId, levelId, uvRelativeToGrid;
+    GRIB_CHECK(grib_get_long(gh, "uvRelativeToGrid", &uvRelativeToGrid), 0);
+    GRIB_CHECK(grib_get_long(gh, "indicatorOfParameter", &paramId), 0);
+    GRIB_CHECK(grib_get_long(gh, "indicatorOfTypeOfLevel", &levelTypeId), 0);
+    GRIB_CHECK(grib_get_long(gh, "level", &levelId), 0);
+    printf("gribapiSetScanningMode(): (param,ltype,level) = (%3d,%3d,%4d); Scanning mode = %02d (%1d%1d%1d)*32;  uvRelativeToGrid = %02d\n",\
+            (int)paramId, (int)levelTypeId, (int)levelId,
+            scanningMode,(int)jPointsAreConsecutive,(int)jScansPositively,(int)iScansNegatively,
+            (int)uvRelativeToGrid);
+  }
+
+  GRIB_CHECK(my_grib_set_long(gh, "iScansNegatively", iScansNegatively), 0);
+  GRIB_CHECK(my_grib_set_long(gh, "jScansPositively", jScansPositively), 0);
+  GRIB_CHECK(my_grib_set_long(gh, "jPointsAreConsecutive", jPointsAreConsecutive), 0);
+}
+
+
+static void gribapiSetUvRelativeToGrid(grib_handle *gh, int mode)
+{
+  long uvRelativeToGridMode = mode;
+  long uvRelativeToGridModeOld;
+
+  GRIB_CHECK(grib_get_long(gh, "uvRelativeToGrid", &uvRelativeToGridModeOld), 0);
+
+  if (cdiDebugExt>=30)
+    printf("gribapiSetUvRelativeToGrid():  uvRelativeToGrid: %02d (old) => %02d (new); \n",(int)uvRelativeToGridModeOld,(int)uvRelativeToGridMode);
+
+  GRIB_CHECK(my_grib_set_long(gh, "uvRelativeToGrid", uvRelativeToGridMode), 0);
+}
+
+
+  /*
+    TABLE 8. SCANNING MODE FLAG
+
+    (GDS Octet 28)
+    BIT     VALUE     MEANING
+    1       0       Points scan in +i direction
+            1       Points scan in -i direction
+    2       0       Points scan in -j direction
+            1       Points scan in +j direction
+    3       0       Adjacent points in i direction are consecutive
+                      (FORTRAN: (I,J))
+            1       Adjacent points in j direction are consecutive
+                    (FORTRAN: (J,I))
+
+    => Scanning Mode     0 0 0 0 0 0 0 0  (00 dec)  +i, -j; i direction consecutive (row-major    order West->East   & North->South)
+    => Scanning Mode     0 1 0 0 0 0 0 0  (64 dec)  +i, +j; i direction consecutive (row-major    order West->East   & South->North )
+    => Scanning Mode     1 1 0 0 0 0 0 0  (96 dec)  +i, +j; j direction consecutive (column-major order South->North & West->East )
+
+    NOTE:  South->North  - As if you would plot the data as image on the screen
+                           where [0,0] of the data is the top-left pixel.
+
+                           grib2ppm LAMH_D11_201302150000_00000_oro | display ppm:-
+                           ImageMagick (display): [0,0] of an image belongs to the top-left pixel
+    [DEFAULT] : 64 dec
+
+    iScansNegatively = 0;
+    jScansPositively = 1;
+    jPointsAreConsecutive = 0;    => Scanning Mode 64
+
+    cdo selindexbox,1,726,100,550 LAMH_D11_201302150000_00000_oro LAMH_D11_201302150000_00000_oro_cropped
+    grib2ppm LAMH_D11_201302150000_00000_oro_cropped | /usr/bin/display ppm:- &
+    # ^^^ this image will be missing the souther parts of data
+
+    grib2ppm LAMH_D11_201302150000_00000_oro | /usr/bin/display ppm:- &
+    # ^ full domain data
+  */
+
+#ifdef HIRLAM_EXTENSIONS
+static void
+verticallyFlipGridDefinitionWhenScanningModeChanged(grib_handle *gh, double yfirst, double ylast, double yinc )
+{
+  /*
+  Nj = 550;
+  latitudeOfFirstGridPointInDegrees = -30.8;
+  latitudeOfLastGridPointInDegrees = 24.1;
+  iScansNegatively = 0;
+  jScansPositively = 0;
+  jPointsAreConsecutive = 0;
+  jDirectionIncrementInDegrees = 0.1;
+
+  When switching from scanning mode 0 <=> 64
+  yfirst = -30.8 + (550-1)*0.1
+
+  yfirst = yfirst + (ysize-1) * yinc
+  yinc   = -1.0*yinc
+
+  */
+
+
+  //long jDim=0;
+  //GRIB_CHECK(grib_get_long(gh, "Nj", &jDim), 0);
+
+  double latitudeOfFirstGridPointInDegrees;
+  double latitudeOfLastGridPointInDegrees;
+  double jDirectionIncrementInDegrees;
+
+  //GRIB_CHECK(grib_get_double(gh, "latitudeOfFirstGridPointInDegrees", &latitudeOfFirstGridPointInDegrees), 0);  // yfirst
+  //GRIB_CHECK(grib_get_double(gh, "latitudeOfLastGridPointInDegrees", &latitudeOfLastGridPointInDegrees), 0);    // ylast
+  //GRIB_CHECK(grib_get_double(gh, "jDirectionIncrementInDegrees", &jDirectionIncrementInDegrees), 0);  // yinc
+
+  if (cdiDebugExt>=10)
+  {
+      Message(" BEFORE: yfirst = %f; ylast = %f; yinc = %f; ", yfirst,ylast, yinc);
+  }
+
+  GRIB_CHECK(my_grib_set_double(gh, "latitudeOfFirstGridPointInDegrees", ylast), 0);
+  GRIB_CHECK(my_grib_set_double(gh, "latitudeOfLastGridPointInDegrees", yfirst), 0);
+  //yinc *= -1.0; // don't set yinc here ...
+  //GRIB_CHECK(my_grib_set_double(gh, "jDirectionIncrementInDegrees", yinc), 0);
+
+  if (cdiDebugExt>=10)
+  {
+    GRIB_CHECK(grib_get_double(gh, "latitudeOfFirstGridPointInDegrees", &latitudeOfFirstGridPointInDegrees), 0);  // yfirst
+    GRIB_CHECK(grib_get_double(gh, "latitudeOfLastGridPointInDegrees", &latitudeOfLastGridPointInDegrees), 0);    // ylast
+    GRIB_CHECK(grib_get_double(gh, "jDirectionIncrementInDegrees", &jDirectionIncrementInDegrees), 0);  // yinc
+    Message("CHANGED INTO:  yfirst = %f, ylast = %f, yinc = %f",latitudeOfFirstGridPointInDegrees,latitudeOfLastGridPointInDegrees, jDirectionIncrementInDegrees);
+  }
+}
+
+static void
+convertDataScanningMode(int scanModeIN, int scanModeOUT, double *data,
+                        int gridsize, int iDim, int jDim)
+{
+  int i,j;
+  int idxIN, idxOUT;
+
+   // 127: reserved for testing; it will generate test data in 64 scanning mode
+  if (scanModeOUT== 127)  // fill with testdata ...
+  {
+      scanModeOUT = 64;
+      if (cdiDebugExt>=30) printf("convertDataScanningMode(): Generating test data in 64 scanning mode..\n");
+      for (j=0; j<jDim; j++)
+      {
+        int jXiDim = j*iDim;
+        for (i=0; i<iDim; i++)
+        {
+          idxIN = i + jXiDim;
+          data[idxIN] = (double) (100.0*j +i);
+        }
+      }
+  }
+
+  if ( (iDim*jDim)!= gridsize)
+  {
+    if (cdiDebugExt>=30) printf("convertDataScanningMode(): ERROR: (iDim*jDim)!= gridsize;  (%d * %d) != %d\n", iDim,jDim, gridsize);
+    return;
+  }
+  if (cdiDebugExt>=30) printf("convertDataScanningMode(): scanModeIN=%02d => scanModeOUT=%02d ; where: (iDim * jDim == gridsize)  (%d*%d == %d)\n",scanModeIN, scanModeOUT, iDim,jDim, gridsize);
+
+  if (cdiDebugExt>=100)
+  {
+      printf("convertDataScanningMode(): data IN:\n");
+      for (j=0; j<jDim; j++)
+      {
+        int jXiDim = j*iDim;
+        for (i=0; i<iDim; i++)
+        {
+          idxIN = i + jXiDim;
+          printf("%03.0f, ",data[idxIN]);
+        }
+        printf("\n");
+      }
+  }
+
+  if (scanModeIN==scanModeOUT)
+  {
+    if (cdiDebugExt>=30) printf("convertDataScanningMode(): INFO: Nothing to do;  scanModeIN==scanModeOUT..\n");
+    return;
+  }
+
+  if (0)
+  {
+      return;
+      if (scanModeOUT==00)
+      {
+          if (cdiDebugExt>0) printf("convertDataScanningMode(): Leave data unchaged BUT set scanModeOUT=00.\n");
+          // CHECK:  Looks like that GRIB-API provide (no matter what) data in the scannning mode 00, even it is store in the gribfile as 64 !!
+          return;
+      }
+  }
+  double *dataCopy = NULL;
+  dataCopy = (double *) malloc(gridsize*sizeof(double));
+
+  memcpy((void*)dataCopy,(void*) data, gridsize*sizeof(double));
+
+  if (scanModeIN==64)           // Scanning Mode (00 dec)  +i, -j; i direction consecutive (row-major    order West->East   & South->North )
+  {                             // Scanning Mode (64 dec)  +i, +j; i direction consecutive (row-major    order West->East   & North->South )
+                                // Scanning Mode (96 dec)  +i, +j; j direction consecutive (column-major order North->South & West->East )
+      if (scanModeOUT==00)
+      // CHECK:  Looks like that GRIB-API provide (no matter what) data in the scannning mode 00, even it is store in the gribfile as 64 !!
+#define VERTICAL_FLIP
+#ifdef VERTICAL_FLIP
+      { // flip the data vertically ..
+        idxIN= 0; idxOUT= (jDim-1)*iDim;
+        if (cdiDebugExt>=30) printf("convertDataScanningMode():  copying rows nr. (%04d : %04d)\n",0,jDim-1);
+        for (j=0; j<jDim; j++)
+        {
+          memcpy((void*)&data[idxOUT], (void*)&dataCopy[idxIN], iDim*sizeof(double));
+          idxIN  += iDim; idxOUT -= iDim;
+        }
+      } // end if (scanModeOUT==00)*/
+#endif
+#ifdef HORIZONTAL_FLIP
+      { // flip data horizontally ...
+        if (1)
+        {
+            if (cdiDebugExt>=30) printf("convertDataScanningMode():  copying columns nr. (%04d : %04d);\n", 0, iDim-1);
+            for (i=0; i<iDim; i++)
+            {
+              for (j=0; j<jDim; j++)
+              {
+                int jXiDim = j*iDim;
+                idxIN  = i           + jXiDim;
+                //data[idxIN] = (double) (100.0*j +i);  // just some testdata ..
+                idxOUT = iDim - i -1 + jXiDim;
+                //printf("[%03d=>%03d] = %f;",idxIN,idxOUT,dataCopy[idxIN]);
+                data[idxOUT] =  dataCopy[idxIN];
+              }
+            }
+        }
+      } // end if (scanModeOUT==00)
+#endif
+
+      if (scanModeOUT==96)
+      { // transpose the data
+        if (cdiDebugExt>=30) printf("convertDataScanningMode():  transpose data rows=>columns nr. (%04d : %04d) => (%04d : %04d);\n", 0, iDim-1, 0, jDim-1);
+        for (j=0; j<jDim; j++)
+        {
+          int jXiDim = j*iDim;
+          for (i=0; i<iDim; i++)
+          {
+            idxIN  = i + jXiDim;
+            idxOUT = j + i*jDim;
+            //printf("[%03d=>%03d] = %f;",idxIN,idxOUT,dataCopy[idxIN]);
+            data[idxOUT] =  dataCopy[idxIN];
+          }
+          //printf(".\n");
+        }
+      } // end if (scanModeOUT==96)
+  } // end if (scanModeIN==64)
+
+  if (scanModeIN==00)           // Scanning Mode (00 dec)  +i, -j; i direction consecutive (row-major    order West->East   & South->North )
+  {                             // Scanning Mode (64 dec)  +i, +j; i direction consecutive (row-major    order West->East   & North->South )
+                               // Scanning Mode (96 dec)  +i, +j; j direction consecutive (column-major order North->South & West->East )
+    if (scanModeOUT==64)
+      { // flip the data vertically ..
+        idxIN= 0; idxOUT= (jDim-1)*iDim;
+        for (j=0; j<jDim; j++)
+        {
+          if (cdiDebugExt>=25) printf("convertDataScanningMode():  copying row nr. %04d; [idxIN=%08d] => [idxOUT=%08d]\n",j, idxIN, idxOUT);
+          memcpy((void*)&data[idxOUT], (void*)&dataCopy[idxIN], iDim*sizeof(double));
+          idxIN  += iDim; idxOUT -= iDim;
+        }
+      } // end if (scanModeOUT==64)
+
+      if (scanModeOUT==96)
+      { // transpose the data
+        int jInv;
+        for (j=0; j<jDim; j++)
+        {
+          if (cdiDebugExt>=30) printf("convertDataScanningMode():  processing row nr. %04d;\n", j);
+          jInv = (jDim-1) -j;
+          for (i=0; i<iDim; i++)
+            data[j + i*jDim] =  dataCopy[i + jInv*iDim];  // source data has -j
+        }
+      } // end if (scanModeOUT==96)
+  } // end if (scanModeIN==00)
+
+  if (scanModeIN==96)           // Scanning Mode (00 dec)  +i, -j; i direction consecutive (row-major    order West->East   & South->North )
+  {                             // Scanning Mode (64 dec)  +i, +j; i direction consecutive (row-major    order West->East   & North->South )
+                                // Scanning Mode (96 dec)  +i, +j; j direction consecutive (column-major order North->South & West->East )
+    if (scanModeOUT==64)
+      { // transpose the data
+        for (j=0; j<jDim; j++)
+        {
+          if (cdiDebugExt>=30) printf("convertDataScanningMode():  processing row nr. %04d;\n", j);
+          int jXiDim = j*iDim;
+          for (i=0; i<iDim; i++)
+            //data[j + i*jDim] =  dataCopy[i + j*iDim];
+            data[i + jXiDim] =  dataCopy[j + i*jDim];
+        }
+      } // end if (scanModeOUT==64)
+
+      if (scanModeOUT==00)
+      { // transpose the data
+        idxIN= 0; idxOUT= 0;
+        int jInv;
+        for (j=0; j<jDim; j++)
+        {
+          if (cdiDebugExt>=30) printf("convertDataScanningMode():  processing row nr. %04d;\n", j);
+          jInv = (jDim-1) -j;
+          int jXiDim = j*iDim;
+          for (i=0; i<iDim; i++)
+            //data[jInv + iXjDim] =  dataCopy[i + jXiDim];  // target data has -j
+            data[i + jXiDim] =  dataCopy[jInv + i*jDim];  // target data has -j
+        }
+      } // end if (scanModeOUT==00)
+  } // end if (scanModeIN==96)
+
+  if (cdiDebugExt>=100)
+  {
+      printf("convertDataScanningMode(): data OUT (new scanning mode):\n");
+      for (j=0; j<jDim; j++)
+      {
+        int jXiDim = j*iDim;
+        for (i=0; i<iDim; i++)
+        {
+          idxIN = i + jXiDim;
+          printf("%03.0f, ",data[idxIN]);
+        }
+        printf("\n");
+      }
+  }
+
+  free(dataCopy); return;
+}
+#endif //HIRLAM_EXTENSIONS
+
+static
+void gribapiSetExtMode(grib_handle *gh, int gridID, long datasize, const double *data)
+{
+  /*
+  Nj = 550;
+  latitudeOfFirstGridPointInDegrees = -30.8;
+  latitudeOfLastGridPointInDegrees = 24.1;
+  iScansNegatively = 0;
+  jScansPositively = 0;
+  jPointsAreConsecutive = 0;
+  jDirectionIncrementInDegrees = 0.1; */
+#ifndef HIRLAM_EXTENSIONS
+  (void)data;
+  (void)datasize;
+#endif
+  int gridtype = gridInqType(gridID);
+  if ( gridtype == GRID_GENERIC || gridtype == GRID_LONLAT || gridtype == GRID_GAUSSIAN ||
+       gridtype == GRID_GAUSSIAN_REDUCED || gridtype == GRID_PROJECTION )
+    {
+#ifdef HIRLAM_EXTENSIONS
+      int scanModeIN = gridInqScanningMode(gridID);
+
+      if (cdiDebugExt>=100)
+        {
+          int gridsize = gridInqSize(gridID);
+          Message("(scanModeIN=%d; gridsize=%d", scanModeIN, gridsize);
+        }
+
+      if ( cdiGribDataScanningMode.active )   // allowed modes: <0, 64, 96>; Default is 64
+        {
+          int iDim = gridInqXsize(gridID);
+          int jDim = gridInqYsize(gridID);
+
+          double yfirst = gridInqYval(gridID,      0);
+          double ylast  = gridInqYval(gridID, jDim-1);
+          double yinc   = gridInqYinc(gridID);
+
+          int scanModeOUT = cdiGribDataScanningMode.value;
+          convertDataScanningMode(scanModeIN, scanModeOUT, (double*)data, datasize, iDim, jDim);
+          // This will overrule the old scanning mode of the given grid
+          if (cdiDebugExt>=10) Message("Set GribDataScanningMode (%d) => (%d)", scanModeIN, cdiGribDataScanningMode.value);
+          gribapiSetScanningMode(gh, cdiGribDataScanningMode.value);
+
+          if (((scanModeIN==00) && (cdiGribDataScanningMode.value==64)) ||
+              ((scanModeIN==64) && (cdiGribDataScanningMode.value==00)) )
+            verticallyFlipGridDefinitionWhenScanningModeChanged(gh, yfirst, ylast, yinc);
+        }
+      else
+        {
+          if (cdiDebugExt>=100) Message("Set GribDataScanningMode => (%d) based on used grid", scanModeIN);
+          gribapiSetScanningMode(gh, scanModeIN);
+        }
+#endif
+
+      if ( cdiGribChangeModeUvRelativeToGrid.active )
+        {
+          // this will overrule/change the UvRelativeToGrid flag;
+          // typically when the wind is rotated with respect to north pole
+          if (cdiDebugExt>=100) Message("Set ModeUvRelativeToGrid =>%d ( note grid has: %d)", cdiGribChangeModeUvRelativeToGrid.mode, gridInqUvRelativeToGrid(gridID));
+          GRIB_CHECK(my_grib_set_long(gh, "uvRelativeToGrid", (long) cdiGribChangeModeUvRelativeToGrid.mode), 0);
+        }
+      else
+        {
+          if (cdiDebugExt>=100) Message("Set ModeUvRelativeToGrid =>%d based on used grid", gridInqUvRelativeToGrid(gridID));
+          gribapiSetUvRelativeToGrid(gh, gridInqUvRelativeToGrid(gridID));
+        }
+    }
+}
+
 /* #define GRIBAPIENCODETEST 1 */
 
 size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisID,
@@ -50624,14 +52056,15 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
     }
   */
 
-  gribapiDefTime((int)editionNumber, productDefinitionTemplate, typeOfGeneratingProcess, gh, vdate, vtime, tsteptype, numavg, vlistInqTaxis(vlistID), gc->init);
+  gribapiDefTime((int)editionNumber, productDefinitionTemplate, typeOfGeneratingProcess,
+                 gh, vdate, vtime, tsteptype, numavg, vlistInqTaxis(vlistID), gc->init);
 
   if ( ! gc->init ) gribapiDefInstitut(gh, vlistID, varID);
   if ( ! gc->init ) gribapiDefModel(gh, vlistID, varID);
 
   if ( ! gc->init ) gribapiDefParam((int)editionNumber, gh, param, name, stdname);
 
-  if ( editionNumber == 2 && (datatype == DATATYPE_FLT32 || datatype == DATATYPE_FLT64) ) lieee = true;
+  if ( editionNumber == 2 && (datatype == CDI_DATATYPE_FLT32 || datatype == CDI_DATATYPE_FLT64) ) lieee = true;
 
   /* bitsPerValue have to be defined before call to DefGrid (complex packing) */
   //  if ( lieee == false )
@@ -50658,7 +52091,7 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
           {
             //DR: Fix for multi-level fields (otherwise only the 1st level is correct)
             if ( zaxisInqSize(zaxisID)==(levelID+1) )
-              vlistptr->vars[varID].opt_grib_kvpair[i].update = FALSE;
+              vlistptr->vars[varID].opt_grib_kvpair[i].update = false;
 
             if (vlistptr->vars[varID].opt_grib_kvpair[i].data_type == t_double)
               {
@@ -50690,6 +52123,8 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
       GRIB_CHECK(my_grib_set_double(gh, "missingValue", vlistInqVarMissval(vlistID, varID)), 0);
     }
 
+  gribapiSetExtMode(gh, gridID, datasize, data);
+
   GRIB_CHECK(grib_set_double_array(gh, "values", data, (size_t)datasize), 0);
 
   /* get the size of coded message  */
@@ -50705,10 +52140,24 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
   gribHandleDelete(gh);
 #endif
 
-  gc->init = TRUE;
+  gc->init = true;
 
   return recsize;
 }
+
+
+void gribapiChangeParameterIdentification(grib_handle *gh, int code, int ltype, int lev)
+{
+  long  indicatorOfParameter,  indicatorOfTypeOfLevel,  level; //  timeRangeIndicator: could be included later
+  indicatorOfParameter = code;
+  indicatorOfTypeOfLevel = ltype;
+  level = lev;
+
+  if (indicatorOfParameter!=-1) GRIB_CHECK(my_grib_set_long(gh, "indicatorOfParameter", indicatorOfParameter), 0);
+  if (indicatorOfTypeOfLevel!=-1) GRIB_CHECK(my_grib_set_long(gh, "indicatorOfTypeOfLevel", indicatorOfTypeOfLevel), 0);
+  if (level!=-1) GRIB_CHECK(my_grib_set_long(gh, "level", level), 0);
+}
+
 #endif
 
 /*
@@ -50724,16 +52173,22 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
 #endif
 
 
+static inline bool
+filetypeIsNetCDF(int filetype)
+{
+  return filetype == CDI_FILETYPE_NC
+    ||   filetype == CDI_FILETYPE_NC2
+    ||   filetype == CDI_FILETYPE_NC4
+    ||   filetype == CDI_FILETYPE_NC4C;
+}
+
 
 void streamDefHistory(int streamID, int length, const char *history)
 {
 #ifdef HAVE_LIBNETCDF
   stream_t *streamptr = stream_to_pointer(streamID);
 
-  if ( streamptr->filetype == FILETYPE_NC  ||
-       streamptr->filetype == FILETYPE_NC2 ||
-       streamptr->filetype == FILETYPE_NC4 ||
-       streamptr->filetype == FILETYPE_NC4C )
+  if ( filetypeIsNetCDF(streamptr->filetype) )
     {
       char *histstring;
       size_t len;
@@ -50762,10 +52217,7 @@ int streamInqHistorySize(int streamID)
 #ifdef HAVE_LIBNETCDF
   stream_t *streamptr = stream_to_pointer(streamID);
 
-  if ( streamptr->filetype == FILETYPE_NC  ||
-       streamptr->filetype == FILETYPE_NC2 ||
-       streamptr->filetype == FILETYPE_NC4 ||
-       streamptr->filetype == FILETYPE_NC4C )
+  if ( filetypeIsNetCDF(streamptr->filetype) )
     {
       size = cdfInqHistorySize(streamptr);
     }
@@ -50781,10 +52233,7 @@ void streamInqHistoryString(int streamID, char *history)
 #ifdef HAVE_LIBNETCDF
   stream_t *streamptr = stream_to_pointer(streamID);
 
-  if ( streamptr->filetype == FILETYPE_NC  ||
-       streamptr->filetype == FILETYPE_NC2 ||
-       streamptr->filetype == FILETYPE_NC4 ||
-       streamptr->filetype == FILETYPE_NC4C )
+  if ( filetypeIsNetCDF(streamptr->filetype) )
     {
       cdfInqHistoryString(streamptr, history);
     }
@@ -50815,13 +52264,8 @@ void streamInqHistoryString(int streamID, char *history)
 
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
-
-
 #if defined (HAVE_LIBIEG)
 
-
 typedef struct {
   int param;
   int level;
@@ -50831,19 +52275,19 @@ typedef struct {
 static
 int iegInqDatatype(int prec)
 {
-  return (prec == EXSE_DOUBLE_PRECISION) ? DATATYPE_FLT64 : DATATYPE_FLT32;
+  return (prec == EXSE_DOUBLE_PRECISION) ? CDI_DATATYPE_FLT64 : CDI_DATATYPE_FLT32;
 }
 
 static
 int iegDefDatatype(int datatype)
 {
-  if ( datatype == DATATYPE_CPX32 || datatype == DATATYPE_CPX64 )
+  if ( datatype == CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64 )
     Error("CDI/IEG library does not support complex numbers!");
 
-  if ( datatype != DATATYPE_FLT32 && datatype != DATATYPE_FLT64 )
-    datatype = DATATYPE_FLT32;
+  if ( datatype != CDI_DATATYPE_FLT32 && datatype != CDI_DATATYPE_FLT64 )
+    datatype = CDI_DATATYPE_FLT32;
 
-  return (datatype == DATATYPE_FLT64) ? EXSE_DOUBLE_PRECISION : EXSE_SINGLE_PRECISION;
+  return (datatype == CDI_DATATYPE_FLT64) ? EXSE_DOUBLE_PRECISION : EXSE_SINGLE_PRECISION;
 }
 
 /* not used
@@ -51191,16 +52635,16 @@ void iegDefLevel(int *pdb, int *gdb, double *vct, int zaxisID, int levelID)
     {
     case ZAXIS_SURFACE:
       {
-        pdbDefLevel(pdb, IEG_LTYPE_SURFACE, 0, (int)zaxisInqLevel(zaxisID, levelID));
+        pdbDefLevel(pdb, IEG_LTYPE_SURFACE, 0, (int)(zaxisInqLevel(zaxisID, levelID)));
 	break;
       }
     case ZAXIS_HYBRID:
       {
 	if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
-          pdbDefLevel(pdb, IEG_LTYPE_HYBRID_LAYER, (int)zaxisInqLbound(zaxisID, levelID),
-                      (int)zaxisInqUbound(zaxisID, levelID));
+          pdbDefLevel(pdb, IEG_LTYPE_HYBRID_LAYER, (int)(zaxisInqLbound(zaxisID, levelID)),
+                      (int)(zaxisInqUbound(zaxisID, levelID)));
 	else
-          pdbDefLevel(pdb, IEG_LTYPE_HYBRID, 0, (int)zaxisInqLevel(zaxisID, levelID));
+          pdbDefLevel(pdb, IEG_LTYPE_HYBRID, 0, (int)(zaxisInqLevel(zaxisID, levelID)));
 
 	int vctsize = zaxisInqVctSize(zaxisID);
 	if ( vctsize > 100 )
@@ -51256,9 +52700,9 @@ void iegDefLevel(int *pdb, int *gdb, double *vct, int zaxisID, int levelID)
     case ZAXIS_DEPTH_BELOW_LAND:
       {
 	if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
-          pdbDefLevel(pdb, IEG_LTYPE_LANDDEPTH_LAYER, (int)zaxisInqLbound(zaxisID, levelID), (int)zaxisInqUbound(zaxisID, levelID));
+          pdbDefLevel(pdb, IEG_LTYPE_LANDDEPTH_LAYER, (int)(zaxisInqLbound(zaxisID, levelID)), (int)(zaxisInqUbound(zaxisID, levelID)));
 	else
-          pdbDefLevel(pdb, IEG_LTYPE_LANDDEPTH, 0, (int)zaxisInqLevel(zaxisID, levelID));
+          pdbDefLevel(pdb, IEG_LTYPE_LANDDEPTH, 0, (int)(zaxisInqLevel(zaxisID, levelID)));
 
 	break;
       }
@@ -51539,7 +52983,7 @@ void iegScanTimestep1(stream_t *streamptr)
   int fileID = streamptr->fileID;
 
   int nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       recpos = fileGetPos(fileID);
       int status = iegRead(fileID, iegp);
@@ -51631,7 +53075,7 @@ void iegScanTimestep1(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -51734,7 +53178,7 @@ int iegScanTimestep2(stream_t *streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	      break;
@@ -51793,7 +53237,7 @@ int iegScanTimestep2(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -51917,11 +53361,11 @@ long iegScanTimestep(stream_t *streamptr)
 
       if ( streamptr->ntsteps != streamptr->rtsteps )
 	{
-	  int tsID = tstepsNewEntry(streamptr);
+	  tsID = tstepsNewEntry(streamptr);
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -52088,7 +53532,7 @@ void recordInitEntry(record_t *record)
   record->size     = 0;
   record->param    = 0;
   record->ilevel   = CDI_UNDEFID;
-  record->used     = FALSE;
+  record->used     = false;
   record->varID    = CDI_UNDEFID;
   record->levelID  = CDI_UNDEFID;
   memset(record->varname, 0, sizeof(record->varname));
@@ -52248,31 +53692,31 @@ void streamDefRecord(int streamID, int varID, int levelID)
   switch (streamptr->filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       grbDefRecord(streamptr);
       break;
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       srvDefRecord(streamptr);
       break;
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       extDefRecord(streamptr);
       break;
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       iegDefRecord(streamptr);
       break;
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       if ( streamptr->accessmode == 0 ) cdfEndDef(streamptr);
       cdfDefRecord(streamptr);
       break;
@@ -52290,24 +53734,24 @@ void streamCopyRecord(int streamID2, int streamID1)
     *streamptr2 = stream_to_pointer(streamID2);
   int filetype1 = streamptr1->filetype,
     filetype2 = streamptr2->filetype,
-    filetype  = FILETYPE_UNDEF;
+    filetype  = CDI_FILETYPE_UNDEF;
 
   if ( filetype1 == filetype2 ) filetype = filetype2;
   else
     {
       switch (filetype1)
         {
-        case FILETYPE_NC:
-        case FILETYPE_NC2:
-        case FILETYPE_NC4:
-        case FILETYPE_NC4C:
+        case CDI_FILETYPE_NC:
+        case CDI_FILETYPE_NC2:
+        case CDI_FILETYPE_NC4:
+        case CDI_FILETYPE_NC4C:
           switch (filetype2)
             {
-            case FILETYPE_NC:
-            case FILETYPE_NC2:
-            case FILETYPE_NC4:
-            case FILETYPE_NC4C:
-              Warning("Streams have different file types (%s -> %s)!", strfiletype(filetype1), strfiletype(filetype2));
+            case CDI_FILETYPE_NC:
+            case CDI_FILETYPE_NC2:
+            case CDI_FILETYPE_NC4:
+            case CDI_FILETYPE_NC4C:
+              // Warning("Streams have different file types (%s -> %s)!", strfiletype(filetype1), strfiletype(filetype2));
               filetype = filetype2;
               break;
             }
@@ -52315,37 +53759,37 @@ void streamCopyRecord(int streamID2, int streamID1)
         }
     }
 
-  if ( filetype == FILETYPE_UNDEF )
+  if ( filetype == CDI_FILETYPE_UNDEF )
     Error("Streams have different file types (%s -> %s)!", strfiletype(filetype1), strfiletype(filetype2));
 
   switch (filetype)
     {
 #if  defined  (HAVE_LIBGRIB)
-    case FILETYPE_GRB:
-    case FILETYPE_GRB2:
+    case CDI_FILETYPE_GRB:
+    case CDI_FILETYPE_GRB2:
       grbCopyRecord(streamptr2, streamptr1);
       break;
 #endif
 #if  defined  (HAVE_LIBSERVICE)
-    case FILETYPE_SRV:
+    case CDI_FILETYPE_SRV:
       srvCopyRecord(streamptr2, streamptr1);
       break;
 #endif
 #if  defined  (HAVE_LIBEXTRA)
-    case FILETYPE_EXT:
+    case CDI_FILETYPE_EXT:
       extCopyRecord(streamptr2, streamptr1);
       break;
 #endif
 #if  defined  (HAVE_LIBIEG)
-    case FILETYPE_IEG:
+    case CDI_FILETYPE_IEG:
       iegCopyRecord(streamptr2, streamptr1);
       break;
 #endif
 #if  defined  (HAVE_LIBNETCDF)
-    case FILETYPE_NC:
-    case FILETYPE_NC2:
-    case FILETYPE_NC4:
-    case FILETYPE_NC4C:
+    case CDI_FILETYPE_NC:
+    case CDI_FILETYPE_NC2:
+    case CDI_FILETYPE_NC4:
+    case CDI_FILETYPE_NC4C:
       cdfCopyRecord(streamptr2, streamptr1);
       break;
 #endif
@@ -52430,7 +53874,7 @@ void cdi_create_records(stream_t *streamptr, int tsID)
                 {
                   destTstep->records[recID].position = CDI_UNDEFID;
                   destTstep->records[recID].size     = 0;
-                  destTstep->records[recID].used     = FALSE;
+                  destTstep->records[recID].used     = false;
                 }
             }
 	}
@@ -52482,13 +53926,8 @@ void streamFCopyRecord(stream_t *streamptr2, stream_t *streamptr1, const char *c
 
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
-
-
 #if defined (HAVE_LIBSERVICE)
 
-
 typedef struct {
   int param;
   int level;
@@ -52498,19 +53937,19 @@ typedef struct {
 static
 int srvInqDatatype(int prec)
 {
-  return (prec == EXSE_DOUBLE_PRECISION) ? DATATYPE_FLT64 : DATATYPE_FLT32;
+  return (prec == EXSE_DOUBLE_PRECISION) ? CDI_DATATYPE_FLT64 : CDI_DATATYPE_FLT32;
 }
 
 static
 int srvDefDatatype(int datatype)
 {
-  if ( datatype == DATATYPE_CPX32 || datatype == DATATYPE_CPX64 )
+  if ( datatype == CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64 )
     Error("CDI/SERVICE library does not support complex numbers!");
 
-  if ( datatype != DATATYPE_FLT32 && datatype != DATATYPE_FLT64 )
-    datatype = DATATYPE_FLT32;
+  if ( datatype != CDI_DATATYPE_FLT32 && datatype != CDI_DATATYPE_FLT64 )
+    datatype = CDI_DATATYPE_FLT32;
 
-  return (datatype == DATATYPE_FLT64) ? EXSE_DOUBLE_PRECISION : EXSE_SINGLE_PRECISION;
+  return (datatype == CDI_DATATYPE_FLT64) ? EXSE_DOUBLE_PRECISION : EXSE_SINGLE_PRECISION;
 }
 
 /* not used
@@ -52707,7 +54146,7 @@ void srvScanTimestep1(stream_t *streamptr)
   int fileID = streamptr->fileID;
 
   int nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       int header[8];
       recpos = fileGetPos(fileID);
@@ -52790,7 +54229,7 @@ void srvScanTimestep1(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -52886,7 +54325,7 @@ int srvScanTimestep2(stream_t *streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	      break;
@@ -52943,7 +54382,7 @@ int srvScanTimestep2(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -53061,7 +54500,7 @@ long srvScanTimestep(stream_t *streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -53165,7 +54604,7 @@ void srvWriteVarSliceDP(stream_t *streamptr, int varID, int levID, const double
 
   int header[8];
   header[0] = pnum;
-  header[1] = (int) zaxisInqLevel(vlistInqVarZaxis(vlistID, varID), levID);
+  header[1] = (int)(zaxisInqLevel(vlistInqVarZaxis(vlistID, varID), levID));
   header[2] = streamptr->tsteps[tsID].taxis.vdate;
   header[3] = streamptr->tsteps[tsID].taxis.vtime;
 
@@ -53387,7 +54826,7 @@ size_t grbEncode(int filetype, int memtype, int varID, int levelID, int vlistID,
   size_t nbytes = 0;
 
 #ifdef HAVE_LIBCGRIBEX
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
       size_t gribbuffersize = datasize*4+3000;
       *gribbuffer = Malloc(gribbuffersize);
@@ -53437,7 +54876,7 @@ size_t grbSzip(int filetype, void *gribbuffer, size_t gribbuffersize)
   /*  memcpy(buffer, gribbuffer, gribbuffersize); */
 
   size_t nbytes = 0;
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
       nbytes = (size_t)gribZip((unsigned char *)gribbuffer, (long) gribbuffersize, (unsigned char *)buffer, (long) buffersize);
     }
@@ -53478,10 +54917,93 @@ void grbCopyRecord(stream_t * streamptr2, stream_t * streamptr1)
 
   size_t nbytes = recsize;
 
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
-      long unzipsize;
-      int izip = gribGetZip((long)recsize, gribbuffer, &unzipsize);
+      if ( cdiGribChangeParameterID.active )
+        {
+          // Even if you are stream-copy records you might need to change a bit of grib-header !
+#if defined HAVE_LIBCGRIBEX
+          void *gh = cgribex_handle_new_from_meassage((void*) gribbuffer, recsize);
+          cgribexChangeParameterIdentification(gh, cdiGribChangeParameterID.code, cdiGribChangeParameterID.ltype, cdiGribChangeParameterID.lev);
+          cgribex_handle_delete(gh);
+#elif defined HAVE_LIBGRIB_API
+          void *gh = (void*)grib_handle_new_from_message(NULL, (void*) gribbuffer, recsize);
+          gribapiChangeParameterIdentification(gh, cdiGribChangeParameterID.code, cdiGribChangeParameterID.ltype, cdiGribChangeParameterID.lev);
+          grib_handle_delete(gh);
+#endif
+          cdiGribChangeParameterID.active = false; // after grib attributes have been changed turn it off again
+        }
+    }
+
+#ifdef HIRLAM_EXTENSIONS
+  // Even if you are stream-copy records you might need to change a bit of grib-header !
+
+  if ( cdiGribDataScanningMode.active )
+    // allowed modes: <0, 64, 96>; Default is 64
+    // This will overrule the old scanning mode of the given grid
+  {
+    grib_handle *gh = NULL;
+    gh = grib_handle_new_from_message(NULL, (void *) gribbuffer, recsize);
+
+    int scanModeIN = gribapiGetScanningMode(gh);
+
+    grib_handle_delete(gh);
+
+    if (cdiDebugExt>=20) Message("Change GribDataScanningMode => %d (scanModeIN = %d)", cdiGribDataScanningMode.value, scanModeIN);
+
+    if (scanModeIN != cdiGribDataScanningMode.value)
+    {
+        int gridID;
+        int varID, levelID;
+        int vlistID;
+        //int zip;
+        int gridsize, nmiss = 0;
+
+        vlistID = streamptr1->vlistID;
+        varID   = streamptr1->tsteps[tsID].records[recID].varID;
+        levelID   = streamptr1->tsteps[tsID].records[recID].levelID;
+        //gribbuffer = (unsigned char *) streamptr->record->buffer;
+        // allocate above ..
+        gridID   = vlistInqVarGrid(vlistID, varID);
+        gridsize = gridInqSize(gridID);
+
+        gridsize = vlistGridsizeMax(vlistID);
+        if ( vlistNumber(vlistID) != CDI_REAL ) gridsize *= 2;
+        double * data = (double *) malloc(gridsize*sizeof(double));
+        //int missval = vlistInqVarMissval(vlistID, varID);
+
+        //streamptr->numvals += gridsize;
+
+        // memtype: MEMTYPE_FLOAT or MEMTYPE_DOUBLE
+        //int statusDC = grbDecode(filetype, MEMTYPE_DOUBLE, gribbuffer, recsize, data, gridsize, streamptr1->unreduced, &nmiss, missval, vlistID, varID);
+        //int grbDecode(int filetype, int memtype, void *gribbuffer, int gribsize, void *data, size_t datasize,
+        //              int unreduced, int *nmiss, double missval, int vlistID, int varID);
+
+        //streamptr1->tsteps[tsID].records[recID].zip = zip;
+        //gribapiSetScanningMode(gh, cdoGribDataScanningMode);  // T.B.D. this will be done by grbDecode..
+
+        //varID   = streamptr1->record->varID;
+        //levelID = streamptr1->record->levelID;
+
+        if (cdiDebugExt>=20) Message(" processing varID %d; levelID %d",varID,levelID);
+
+        grb_write_var_slice(streamptr2, varID, levelID, MEMTYPE_DOUBLE, (const void *) data, nmiss);
+        //grb_write_var_slice(streamptr, varID, levelID, memtype, ((double*)data)+levelID*gridsize, nmiss);
+
+        //grb_write_var(streamptr2, varID, MEMTYPE_DOUBLE, data, nmiss);
+        //grb_write_var(stream_t *streamptr, int varID, int memtype, const void *data, int nmiss)
+        //grb_write_var_slice(streamptr2, varID, levelID, MEMTYPE_DOUBLE, (const void *) data, nmiss);
+
+        free(data);
+        free(gribbuffer);
+    }
+  }
+#endif // HIRLAM_EXTENSIONS
+
+  if ( filetype == CDI_FILETYPE_GRB )
+    {
+      size_t unzipsize;
+      int izip = gribGetZip(recsize, gribbuffer, &unzipsize);
 
       if ( izip == 0 && streamptr2->comptype == CDI_COMPRESS_SZIP )
           nbytes = grbSzip(filetype, gribbuffer, nbytes);
@@ -53515,9 +55037,7 @@ void grb_write_var_slice(stream_t *streamptr, int varID, int levelID, int memtyp
   int tsID      = streamptr->curTsID;
   int date      = streamptr->tsteps[tsID].taxis.vdate;
   int time      = streamptr->tsteps[tsID].taxis.vtime;
-  int numavg    = 0;
-  if ( vlistInqVarTimave(vlistID, varID) )
-    numavg = streamptr->tsteps[tsID].taxis.numavg;
+  int numavg    = (tsteptype == TSTEP_AVG) ? streamptr->tsteps[tsID].taxis.numavg : 0;
 
   if ( CDI_Debug )
     Message("gridID = %d zaxisID = %d", gridID, zaxisID);
@@ -53525,7 +55045,7 @@ void grb_write_var_slice(stream_t *streamptr, int varID, int levelID, int memtyp
   size_t datasize = (size_t)gridInqSize(gridID);
 
 #ifdef HAVE_LIBCGRIBEX
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
     }
   else
@@ -53542,7 +55062,7 @@ void grb_write_var_slice(stream_t *streamptr, int varID, int levelID, int memtyp
 
   if ( comptype != CDI_COMPRESS_JPEG && comptype != CDI_COMPRESS_SZIP ) comptype = CDI_COMPRESS_NONE;
 
-  if ( filetype == FILETYPE_GRB && comptype == CDI_COMPRESS_JPEG )
+  if ( filetype == CDI_FILETYPE_GRB && comptype == CDI_COMPRESS_JPEG )
     {
       static int ljpeg_warn = 1;
       if ( ljpeg_warn ) Warning("JPEG compression of GRIB1 records not available!");
@@ -53552,7 +55072,7 @@ void grb_write_var_slice(stream_t *streamptr, int varID, int levelID, int memtyp
   size_t nbytes = grbEncode(filetype, memtype, varID, levelID, vlistID, gridID, zaxisID, date, time, tsteptype, numavg,
                             datasize, data, nmiss, &gribbuffer, comptype, gc);
 
-  if ( filetype == FILETYPE_GRB && streamptr->comptype == CDI_COMPRESS_SZIP )
+  if ( filetype == CDI_FILETYPE_GRB && streamptr->comptype == CDI_COMPRESS_SZIP )
     nbytes = grbSzip(filetype, gribbuffer, nbytes);
 
   size_t (*myFileWrite)(int fileID, const void *restrict buffer, size_t len, int tsID)
@@ -53631,7 +55151,7 @@ int grbDecode(int filetype, int memtype, void *gribbuffer, int gribsize, void *d
   int status = 0;
 
 #if  defined  (HAVE_LIBCGRIBEX)
-  if ( filetype == FILETYPE_GRB )
+  if ( filetype == CDI_FILETYPE_GRB )
     {
 #if  defined  (HAVE_LIBGRIB_API)
       extern int cdiNAdditionalGRIBKeys;
@@ -53673,12 +55193,12 @@ int grbUnzipRecord(void *gribbuffer, size_t *gribsize)
 {
   int zip = 0;
   int izip;
-  long unzipsize;
+  size_t unzipsize;
 
   size_t igribsize = *gribsize;
   size_t ogribsize = *gribsize;
 
-  if ( (izip = gribGetZip((long)igribsize, (unsigned char *)gribbuffer, &unzipsize)) > 0 )
+  if ( (izip = gribGetZip(igribsize, (unsigned char *)gribbuffer, &unzipsize)) > 0 )
     {
       zip = izip;
       if ( izip == 128 ) /* szip */
@@ -53686,9 +55206,9 @@ int grbUnzipRecord(void *gribbuffer, size_t *gribsize)
 	  unsigned char *itmpbuffer = NULL;
 	  size_t itmpbuffersize = 0;
 
-	  if ( unzipsize < (long) igribsize )
+	  if ( unzipsize < igribsize )
 	    {
-	      fprintf(stderr, "Decompressed size smaller than compressed size (in %ld; out %ld)!\n", (long)igribsize, unzipsize);
+	      fprintf(stderr, "Decompressed size smaller than compressed size (in %zu; out %zu)!\n", igribsize, unzipsize);
 	      return 0;
 	    }
 
@@ -53702,7 +55222,7 @@ int grbUnzipRecord(void *gribbuffer, size_t *gribsize)
 
 	  unzipsize += 100; /* need 0 to 1 bytes for rounding of bds */
 
-	  ogribsize = (size_t)gribUnzip((unsigned char *)gribbuffer, unzipsize, itmpbuffer, (long)igribsize);
+	  ogribsize = (size_t)gribUnzip((unsigned char *)gribbuffer, (long)unzipsize, itmpbuffer, (long)igribsize);
 
 	  Free(itmpbuffer);
 
@@ -53852,10 +55372,6 @@ void grb_read_var_slice(stream_t *streamptr, int varID, int levelID, int memtype
 
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
-
-
 void cdfDefVarDeflate(int ncid, int ncvarid, int deflate_level)
 {
 #if  defined(HAVE_NETCDF4)
@@ -53880,41 +55396,41 @@ void cdfDefVarDeflate(int ncid, int ncvarid, int deflate_level)
 #endif
 }
 
-static
+
 int cdfDefDatatype(int datatype, int filetype)
 {
   int xtype = NC_FLOAT;
 
-  if ( datatype == DATATYPE_CPX32 || datatype == DATATYPE_CPX64 )
+  if ( datatype == CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64 )
     Error("CDI/NetCDF library does not support complex numbers!");
 
-  if ( filetype == FILETYPE_NC4 )
+  if ( filetype == CDI_FILETYPE_NC4 )
     {
-      if      ( datatype == DATATYPE_INT8   ) xtype = NC_BYTE;
-      else if ( datatype == DATATYPE_INT16  ) xtype = NC_SHORT;
-      else if ( datatype == DATATYPE_INT32  ) xtype = NC_INT;
+      if      ( datatype == CDI_DATATYPE_INT8   ) xtype = NC_BYTE;
+      else if ( datatype == CDI_DATATYPE_INT16  ) xtype = NC_SHORT;
+      else if ( datatype == CDI_DATATYPE_INT32  ) xtype = NC_INT;
 #if  defined  (HAVE_NETCDF4)
-      else if ( datatype == DATATYPE_UINT8  ) xtype = NC_UBYTE;
-      else if ( datatype == DATATYPE_UINT16 ) xtype = NC_USHORT;
-      else if ( datatype == DATATYPE_UINT32 ) xtype = NC_UINT;
+      else if ( datatype == CDI_DATATYPE_UINT8  ) xtype = NC_UBYTE;
+      else if ( datatype == CDI_DATATYPE_UINT16 ) xtype = NC_USHORT;
+      else if ( datatype == CDI_DATATYPE_UINT32 ) xtype = NC_UINT;
 #else
-      else if ( datatype == DATATYPE_UINT8  ) xtype = NC_SHORT;
-      else if ( datatype == DATATYPE_UINT16 ) xtype = NC_INT;
-      else if ( datatype == DATATYPE_UINT32 ) xtype = NC_INT;
+      else if ( datatype == CDI_DATATYPE_UINT8  ) xtype = NC_SHORT;
+      else if ( datatype == CDI_DATATYPE_UINT16 ) xtype = NC_INT;
+      else if ( datatype == CDI_DATATYPE_UINT32 ) xtype = NC_INT;
 #endif
-      else if ( datatype == DATATYPE_FLT64  ) xtype = NC_DOUBLE;
-      else                                    xtype = NC_FLOAT;
+      else if ( datatype == CDI_DATATYPE_FLT64  ) xtype = NC_DOUBLE;
+      else                                        xtype = NC_FLOAT;
     }
   else
     {
-      if      ( datatype == DATATYPE_INT8   ) xtype = NC_BYTE;
-      else if ( datatype == DATATYPE_INT16  ) xtype = NC_SHORT;
-      else if ( datatype == DATATYPE_INT32  ) xtype = NC_INT;
-      else if ( datatype == DATATYPE_UINT8  ) xtype = NC_SHORT;
-      else if ( datatype == DATATYPE_UINT16 ) xtype = NC_INT;
-      else if ( datatype == DATATYPE_UINT32 ) xtype = NC_INT;
-      else if ( datatype == DATATYPE_FLT64  ) xtype = NC_DOUBLE;
-      else                                    xtype = NC_FLOAT;
+      if      ( datatype == CDI_DATATYPE_INT8   ) xtype = NC_BYTE;
+      else if ( datatype == CDI_DATATYPE_INT16  ) xtype = NC_SHORT;
+      else if ( datatype == CDI_DATATYPE_INT32  ) xtype = NC_INT;
+      else if ( datatype == CDI_DATATYPE_UINT8  ) xtype = NC_SHORT;
+      else if ( datatype == CDI_DATATYPE_UINT16 ) xtype = NC_INT;
+      else if ( datatype == CDI_DATATYPE_UINT32 ) xtype = NC_INT;
+      else if ( datatype == CDI_DATATYPE_FLT64  ) xtype = NC_DOUBLE;
+      else                                        xtype = NC_FLOAT;
     }
 
   return xtype;
@@ -54020,7 +55536,7 @@ void cdfDefineAttributes(int cdiID, int varID, int fileID, int ncvarID)
 
       if ( attlen == 0 ) continue;
 
-      if ( atttype == DATATYPE_TXT )
+      if ( atttype == CDI_DATATYPE_TXT )
         {
           size_t attSize = (size_t)attlen*sizeof(char);
           char *atttxt = (char *)resizeBuf(&attBuf, &attBufSize, attSize);
@@ -54028,31 +55544,31 @@ void cdfDefineAttributes(int cdiID, int varID, int fileID, int ncvarID)
           len = (size_t)attlen;
           cdf_put_att_text(fileID, ncvarID, attname, len, atttxt);
         }
-      else if ( atttype == DATATYPE_INT8  || atttype == DATATYPE_UINT8  ||
-                atttype == DATATYPE_INT16 || atttype == DATATYPE_UINT16 ||
-                atttype == DATATYPE_INT32 || atttype == DATATYPE_UINT32 )
+      else if ( atttype == CDI_DATATYPE_INT8  || atttype == CDI_DATATYPE_UINT8  ||
+                atttype == CDI_DATATYPE_INT16 || atttype == CDI_DATATYPE_UINT16 ||
+                atttype == CDI_DATATYPE_INT32 || atttype == CDI_DATATYPE_UINT32 )
         {
           size_t attSize = (size_t)attlen*sizeof(int);
           int *attint = (int *)resizeBuf(&attBuf, &attBufSize, attSize);
           cdiInqAttInt(cdiID, varID, attname, attlen, &attint[0]);
           len = (size_t)attlen;
-          nc_type xtype = (atttype == DATATYPE_INT8)  ? NC_BYTE :
-                          (atttype == DATATYPE_INT16) ? NC_SHORT :
+          nc_type xtype = (atttype == CDI_DATATYPE_INT8)  ? NC_BYTE :
+                          (atttype == CDI_DATATYPE_INT16) ? NC_SHORT :
 #if  defined  (HAVE_NETCDF4)
-                          (atttype == DATATYPE_UINT8)  ? NC_UBYTE :
-                          (atttype == DATATYPE_UINT16) ? NC_USHORT :
-                          (atttype == DATATYPE_UINT32) ? NC_UINT :
+                          (atttype == CDI_DATATYPE_UINT8)  ? NC_UBYTE :
+                          (atttype == CDI_DATATYPE_UINT16) ? NC_USHORT :
+                          (atttype == CDI_DATATYPE_UINT32) ? NC_UINT :
 #endif
                           NC_INT;
           cdf_put_att_int(fileID, ncvarID, attname, xtype, len, attint);
         }
-      else if ( atttype == DATATYPE_FLT32 || atttype == DATATYPE_FLT64 )
+      else if ( atttype == CDI_DATATYPE_FLT32 || atttype == CDI_DATATYPE_FLT64 )
         {
           size_t attSize = (size_t)attlen * sizeof(double);
           double *attflt = (double *)resizeBuf(&attBuf, &attBufSize, attSize);
           cdiInqAttFlt(cdiID, varID, attname, attlen, attflt);
           len = (size_t)attlen;
-          if ( atttype == DATATYPE_FLT32 )
+          if ( atttype == CDI_DATATYPE_FLT32 )
             {
               float attflt_sp[len];
               for ( size_t i = 0; i < len; ++i ) attflt_sp[i] = (float)attflt[i];
@@ -54125,7 +55641,7 @@ void cdf_get_gmapvarname(int gridID, char *gmapvarname)
 {
   int pgridID = gridID;
   char mapping[CDI_MAX_NAME]; mapping[0] = 0;
-  cdiGridInqKeyStr(pgridID, CDI_KEY_MAPPING, CDI_MAX_NAME, mapping);
+  cdiGridInqKeyStr(pgridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapping);
 
   if ( !mapping[0] )
     {
@@ -54133,12 +55649,12 @@ void cdf_get_gmapvarname(int gridID, char *gmapvarname)
       if ( projID != CDI_UNDEFID )
         {
           pgridID = projID;
-          cdiGridInqKeyStr(pgridID, CDI_KEY_MAPPING, CDI_MAX_NAME, mapping);
+          cdiGridInqKeyStr(pgridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, mapping);
         }
     }
 
   if ( mapping[0] )
-    cdiGridInqKeyStr(pgridID, CDI_KEY_MAPNAME, CDI_MAX_NAME, gmapvarname);
+    cdiGridInqKeyStr(pgridID, CDI_KEY_MAPPING, CDI_MAX_NAME, gmapvarname);
 }
 
 static
@@ -54170,7 +55686,6 @@ int cdfDefVar(stream_t *streamptr, int varID)
   size_t iax = 0;
   char axis[5];
   int ensID, ensCount, forecast_type;
-  int retval;
 
   int fileID  = streamptr->fileID;
 
@@ -54193,14 +55708,14 @@ int cdfDefVar(stream_t *streamptr, int varID)
 
   vlistInqVarDimorder(vlistID, varID, &dimorder);
 
-  int gridsize  = gridInqSize(gridID);
-  bool lchunk = (gridsize > 1);
+  size_t gridsize  = (size_t)(gridInqSize(gridID));
+  bool lchunk = (gridsize >= 16);
   int gridtype  = gridInqType(gridID);
   int gridindex = nc_grid_index(streamptr, gridID);
   if ( gridtype != GRID_TRAJECTORY )
     {
-      xid = streamptr->ncgrid[gridindex].xdimID;
-      yid = streamptr->ncgrid[gridindex].ydimID;
+      xid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+      yid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
       if ( xid != CDI_UNDEFID ) cdf_inq_dimlen(fileID, xid, &xsize);
       if ( yid != CDI_UNDEFID ) cdf_inq_dimlen(fileID, yid, &ysize);
     }
@@ -54212,7 +55727,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
 
   if ( dimorder[0] != 3 ) lchunk = false; /* ZYX and ZXY */
 
-  if ( ((dimorder[0]>0)+(dimorder[1]>0)+(dimorder[2]>0)) < ((xid!=UNDEFID)+(yid!=UNDEFID)+(zid!=UNDEFID)) )
+  if ( ((dimorder[0]>0)+(dimorder[1]>0)+(dimorder[2]>0)) < ((xid!=CDI_UNDEFID)+(yid!=CDI_UNDEFID)+(zid!=CDI_UNDEFID)) )
     {
       printf("zid=%d  yid=%d  xid=%d\n", zid, yid, xid);
       Error("Internal problem, dimension order missing!");
@@ -54238,6 +55753,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
   if ( xid != CDI_UNDEFID ) chunks[ndims] = xsize;
   if ( xid != CDI_UNDEFID ) dims[ndims++] = xid;
   */
+  size_t chunk_size_max = 65536;
   for ( int id = 0; id < 3; ++id )
     {
       if ( dimorder[id] == 3 && zid != CDI_UNDEFID )
@@ -54249,16 +55765,19 @@ int cdfDefVar(stream_t *streamptr, int varID)
         }
       else if ( dimorder[id] == 2 && yid != CDI_UNDEFID )
         {
-          if ( chunktype == CDI_CHUNK_LINES )
-            chunks[ndims] = 1;
+          if ( chunktype == CDI_CHUNK_AUTO )
+            chunks[ndims] = (chunk_size_max > gridsize) ? ysize : chunk_size_max/xsize;
           else
-            chunks[ndims] = ysize;
+            chunks[ndims] = (chunktype == CDI_CHUNK_LINES) ? 1 : ysize;
           dims[ndims] = yid;
           ndims++;
         }
       else if ( dimorder[id] == 1 && xid != CDI_UNDEFID )
         {
-          chunks[ndims] = xsize;
+          if ( chunktype == CDI_CHUNK_AUTO && yid == CDI_UNDEFID )
+            chunks[ndims] = (chunk_size_max > xsize) ? xsize : chunk_size_max;
+          else
+            chunks[ndims] = xsize;
           dims[ndims] = xid;
           ndims++;
         }
@@ -54346,20 +55865,13 @@ int cdfDefVar(stream_t *streamptr, int varID)
   cdf_def_var(fileID, name, (nc_type) xtype, ndims, dims, &ncvarid);
 
 #if  defined  (HAVE_NETCDF4)
-  if ( lchunk && (streamptr->filetype == FILETYPE_NC4 || streamptr->filetype == FILETYPE_NC4C) )
-    {
-      if ( chunktype == CDI_CHUNK_AUTO )
-        retval = nc_def_var_chunking(fileID, ncvarid, NC_CHUNKED, NULL);
-      else
-        retval = nc_def_var_chunking(fileID, ncvarid, NC_CHUNKED, chunks);
-
-      if ( retval ) Error("nc_def_var_chunking failed, status = %d", retval);
-    }
+  if ( lchunk && (streamptr->filetype == CDI_FILETYPE_NC4 || streamptr->filetype == CDI_FILETYPE_NC4C) )
+    cdf_def_var_chunking(fileID, ncvarid, NC_CHUNKED, chunks);
 #endif
 
   if ( streamptr->comptype == CDI_COMPRESS_ZIP )
     {
-      if ( lchunk && (streamptr->filetype == FILETYPE_NC4 || streamptr->filetype == FILETYPE_NC4C) )
+      if ( lchunk && (streamptr->filetype == CDI_FILETYPE_NC4 || streamptr->filetype == CDI_FILETYPE_NC4C) )
         {
           cdfDefVarDeflate(fileID, ncvarid, streamptr->complevel);
         }
@@ -54377,32 +55889,6 @@ int cdfDefVar(stream_t *streamptr, int varID)
         }
     }
 
-  if ( streamptr->comptype == CDI_COMPRESS_SZIP )
-    {
-      if ( lchunk && (streamptr->filetype == FILETYPE_NC4 || streamptr->filetype == FILETYPE_NC4C) )
-        {
-#if defined (NC_SZIP_NN_OPTION_MASK)
-          cdfDefVarSzip(fileID, ncvarid);
-#else
-          static bool lwarn = true;
-          if ( lwarn )
-            {
-              lwarn = false;
-              Warning("NetCDF4/SZIP compression not available!");
-            }
-#endif
-        }
-      else
-        {
-          static bool lwarn = true;
-          if ( lwarn )
-            {
-              lwarn = false;
-              Warning("SZIP compression is only available for NetCDF4!");
-            }
-        }
-    }
-
   if ( stdname && *stdname )
     cdf_put_att_text(fileID, ncvarid, "standard_name", strlen(stdname), stdname);
 
@@ -54431,7 +55917,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
 
   char coordinates[CDI_MAX_NAME]; coordinates[0] = 0;
 
-  if ( zaxis_is_scalar )
+  if ( zaxis_is_scalar || zaxisInqType(zaxisID) == ZAXIS_CHAR )
     {
       int nczvarID = streamptr->nczvarID[zaxisindex];
       if ( nczvarID != CDI_UNDEFID )
@@ -54443,7 +55929,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
     }
 
   if ( gridtype != GRID_GENERIC && gridtype != GRID_LONLAT && gridtype != GRID_GAUSSIAN &&
-       gridtype != GRID_PROJECTION && gridtype != GRID_CURVILINEAR )
+       gridtype != GRID_PROJECTION && gridtype != GRID_CURVILINEAR && gridtype != GRID_CHARXY )
     {
       size_t len = strlen(gridNamePtr(gridtype));
       if ( len > 0 )
@@ -54462,8 +55948,8 @@ int cdfDefVar(stream_t *streamptr, int varID)
     }
   else if ( gridtype == GRID_LONLAT && xid == CDI_UNDEFID && yid == CDI_UNDEFID && gridsize == 1 )
     {
-      int ncxvarID = streamptr->ncgrid[gridindex].xvarID;
-      int ncyvarID = streamptr->ncgrid[gridindex].yvarID;
+      int ncxvarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_X];
+      int ncyvarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_Y];
       if ( ncyvarID != CDI_UNDEFID )
         {
           size_t len = strlen(coordinates);
@@ -54480,20 +55966,39 @@ int cdfDefVar(stream_t *streamptr, int varID)
   else if ( gridtype == GRID_UNSTRUCTURED || gridtype == GRID_CURVILINEAR )
     {
       char cellarea[CDI_MAX_NAME] = "area: ";
-      int ncxvarID = streamptr->ncgrid[gridindex].xvarID;
-      int ncyvarID = streamptr->ncgrid[gridindex].yvarID;
-      int ncavarID = streamptr->ncgrid[gridindex].avarID;
-      if ( ncyvarID != CDI_UNDEFID )
+      int ncxvarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_X];
+      int ncyvarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_Y];
+      int ncavarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_A];
+      // CMOR order: coordinates = "lat lon"
+      if ( cdiCoordinatesLonLat )
         {
-          size_t len = strlen(coordinates);
-          if ( len ) coordinates[len++] = ' ';
-          cdf_inq_varname(fileID, ncyvarID, coordinates+len);
+          if ( ncxvarID != CDI_UNDEFID )
+            {
+              size_t len = strlen(coordinates);
+              if ( len ) coordinates[len++] = ' ';
+              cdf_inq_varname(fileID, ncxvarID, coordinates+len);
+            }
+          if ( ncyvarID != CDI_UNDEFID )
+            {
+              size_t len = strlen(coordinates);
+              if ( len ) coordinates[len++] = ' ';
+              cdf_inq_varname(fileID, ncyvarID, coordinates+len);
+            }
         }
-      if ( ncxvarID != CDI_UNDEFID )
+      else
         {
-          size_t len = strlen(coordinates);
-          if ( len ) coordinates[len++] = ' ';
-          cdf_inq_varname(fileID, ncxvarID, coordinates+len);
+          if ( ncyvarID != CDI_UNDEFID )
+            {
+              size_t len = strlen(coordinates);
+              if ( len ) coordinates[len++] = ' ';
+              cdf_inq_varname(fileID, ncyvarID, coordinates+len);
+            }
+          if ( ncxvarID != CDI_UNDEFID )
+            {
+              size_t len = strlen(coordinates);
+              if ( len ) coordinates[len++] = ' ';
+              cdf_inq_varname(fileID, ncxvarID, coordinates+len);
+            }
         }
 
       if ( ncavarID != CDI_UNDEFID )
@@ -54519,20 +56024,35 @@ int cdfDefVar(stream_t *streamptr, int varID)
       cdf_put_att_text(fileID, ncvarid, "axis", iax, axis);
       cdf_put_att_int(fileID, ncvarid, "truncation", NC_INT, 1, &gridTruncation);
     }
+  else if ( gridtype == GRID_CHARXY )
+    {
+      if ( gridInqXIsc(gridID) )
+        {
+          int ncxvarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_X];
+          size_t len = strlen(coordinates);
+          if ( len ) coordinates[len++] = ' ';
+          cdf_inq_varname(fileID, ncxvarID, coordinates+len);
+        }
+      else if ( gridInqYIsc(gridID) )
+        {
+          int ncyvarID = streamptr->ncgrid[gridindex].ncIDs[CDF_VARID_Y];
+          size_t len = strlen(coordinates);
+          if ( len ) coordinates[len++] = ' ';
+          cdf_inq_varname(fileID, ncyvarID, coordinates+len);
+        }
+    }
 
   size_t len = strlen(coordinates);
   if ( len ) cdf_put_att_text(fileID, ncvarid, "coordinates", len, coordinates);
 
   /*  if ( xtype == NC_BYTE || xtype == NC_SHORT || xtype == NC_INT ) */
     {
-      int laddoffset, lscalefactor;
-      double addoffset, scalefactor;
       int astype = NC_DOUBLE;
 
-      addoffset    = vlistInqVarAddoffset(vlistID, varID);
-      scalefactor  = vlistInqVarScalefactor(vlistID, varID);
-      laddoffset   = IS_NOT_EQUAL(addoffset, 0);
-      lscalefactor = IS_NOT_EQUAL(scalefactor, 1);
+      double addoffset   = vlistInqVarAddoffset(vlistID, varID);
+      double scalefactor = vlistInqVarScalefactor(vlistID, varID);
+      bool laddoffset   = IS_NOT_EQUAL(addoffset, 0);
+      bool lscalefactor = IS_NOT_EQUAL(scalefactor, 1);
 
       if ( laddoffset || lscalefactor )
         {
@@ -54549,7 +56069,7 @@ int cdfDefVar(stream_t *streamptr, int varID)
         }
     }
 
-  if ( dtype == DATATYPE_UINT8 && xtype == NC_BYTE )
+  if ( dtype == CDI_DATATYPE_UINT8 && xtype == NC_BYTE )
     {
       int validrange[2] = {0, 255};
       cdf_put_att_int(fileID, ncvarid, "valid_range", NC_SHORT, 2, validrange);
@@ -54629,8 +56149,8 @@ static
 void cdfWriteGridTraj(stream_t *streamptr, int gridID)
 {
   int gridindex = nc_grid_index(streamptr, gridID);
-  int lonID = streamptr->ncgrid[gridindex].xdimID;
-  int latID = streamptr->ncgrid[gridindex].ydimID;
+  int lonID = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+  int latID = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
 
   double xlon = gridInqXval(gridID, 0);
   double xlat = gridInqYval(gridID, 0);
@@ -54653,7 +56173,7 @@ void cdf_write_var_data(int fileID, int vlistID, int varID, int ncvarid, int dty
   float *mdata_sp = NULL;
   float *sdata_sp = NULL;
 
-  /*  if ( dtype == DATATYPE_INT8 || dtype == DATATYPE_INT16 || dtype == DATATYPE_INT32 ) */
+  /*  if ( dtype == CDI_DATATYPE_INT8 || dtype == CDI_DATATYPE_INT16 || dtype == CDI_DATATYPE_INT32 ) */
     {
       double missval      = vlistInqVarMissval(vlistID, varID);
       double addoffset    = vlistInqVarAddoffset(vlistID, varID);
@@ -54721,8 +56241,8 @@ void cdf_write_var_data(int fileID, int vlistID, int varID, int ncvarid, int dty
             }
         }
 
-      if ( dtype == DATATYPE_UINT8 || dtype == DATATYPE_INT8 ||
-           dtype == DATATYPE_INT16 || dtype == DATATYPE_INT32 )
+      if ( dtype == CDI_DATATYPE_UINT8 || dtype == CDI_DATATYPE_INT8 ||
+           dtype == CDI_DATATYPE_INT16 || dtype == CDI_DATATYPE_INT32 )
         {
           if ( memtype == MEMTYPE_FLOAT )
             {
@@ -54735,7 +56255,7 @@ void cdf_write_var_data(int fileID, int vlistID, int varID, int ncvarid, int dty
 
               for ( size_t i = 0; i < nvals; i++ ) mdata_sp[i] = roundf(mdata_sp[i]);
 
-              if ( dtype == DATATYPE_UINT8 )
+              if ( dtype == CDI_DATATYPE_UINT8 )
                 {
                   nc_type xtype;
                   cdf_inq_vartype(fileID, ncvarid, &xtype);
@@ -54757,7 +56277,7 @@ void cdf_write_var_data(int fileID, int vlistID, int varID, int ncvarid, int dty
 
               for ( size_t i = 0; i < nvals; i++ ) mdata_dp[i] = round(mdata_dp[i]);
 
-              if ( dtype == DATATYPE_UINT8 )
+              if ( dtype == CDI_DATATYPE_UINT8 )
                 {
                   nc_type xtype;
                   cdf_inq_vartype(fileID, ncvarid, &xtype);
@@ -54829,8 +56349,7 @@ void cdf_write_var(stream_t *streamptr, int varID, int memtype, const void *data
   size_t start[5];
   size_t count[5];
   bool swapxy = false;
-  int ndims = 0;
-  int idim;
+  size_t ndims = 0;
 
   if ( CDI_Debug ) Message("streamID = %d  varID = %d", streamptr->self, varID);
 
@@ -54856,8 +56375,8 @@ void cdf_write_var(stream_t *streamptr, int varID, int memtype, const void *data
   else
     {
       int gridindex = nc_grid_index(streamptr, gridID);
-      xid = streamptr->ncgrid[gridindex].xdimID;
-      yid = streamptr->ncgrid[gridindex].ydimID;
+      xid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+      yid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
     }
 
   int zaxisindex = vlistZaxisIndex(vlistID, zaxisID);
@@ -54896,7 +56415,7 @@ void cdf_write_var(stream_t *streamptr, int varID, int memtype, const void *data
     }
 
   if ( CDI_Debug )
-    for (idim = 0; idim < ndims; idim++)
+    for (size_t idim = 0; idim < ndims; idim++)
       Message("dim = %d  start = %d  count = %d", idim, start[idim], count[idim]);
 
   if ( streamptr->ncmode == 1 )
@@ -54925,8 +56444,7 @@ void cdf_write_var_chunk(stream_t *streamptr, int varID, int memtype,
   size_t start[5];
   size_t count[5];
   bool swapxy = false;
-  int ndims = 0;
-  int idim;
+  size_t ndims = 0;
   int streamID = streamptr->self;
 
   if ( CDI_Debug )
@@ -54954,8 +56472,8 @@ void cdf_write_var_chunk(stream_t *streamptr, int varID, int memtype,
   else
     {
       int gridindex = nc_grid_index(streamptr, gridID);
-      xid = streamptr->ncgrid[gridindex].xdimID;
-      yid = streamptr->ncgrid[gridindex].ydimID;
+      xid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+      yid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
     }
 
   int zaxisindex = vlistZaxisIndex(vlistID, zaxisID);
@@ -54998,7 +56516,7 @@ void cdf_write_var_chunk(stream_t *streamptr, int varID, int memtype,
     }
 
   if ( CDI_Debug )
-    for (idim = 0; idim < ndims; idim++)
+    for (size_t idim = 0; idim < ndims; idim++)
       Message("dim = %d  start = %d  count = %d", idim, start[idim], count[idim]);
 
   if ( streamptr->ncmode == 1 )
@@ -55052,8 +56570,8 @@ void cdf_write_var_slice(stream_t *streamptr, int varID, int levelID, int memtyp
   else
     {
       int gridindex = nc_grid_index(streamptr, gridID);
-      xid = streamptr->ncgrid[gridindex].xdimID;
-      yid = streamptr->ncgrid[gridindex].ydimID;
+      xid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+      yid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
     }
 
   int zaxisindex = vlistZaxisIndex(vlistID, zaxisID);
@@ -55136,10 +56654,6 @@ void cdf_write_record(stream_t *streamptr, int memtype, const void *data, int nm
 
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID  CDI_UNDEFID
-
-
 static
 void cdfReadGridTraj(stream_t *streamptr, int gridID)
 {
@@ -55147,8 +56661,8 @@ void cdfReadGridTraj(stream_t *streamptr, int gridID)
   int fileID  = streamptr->fileID;
 
   int gridindex = vlistGridIndex(vlistID, gridID);
-  int lonID = streamptr->xdimID[gridindex];
-  int latID = streamptr->ydimID[gridindex];
+  int lonID = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+  int latID = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
 
   int tsID = streamptr->curTsID;
   size_t index = (size_t)tsID;
@@ -55180,8 +56694,8 @@ void cdfGetSlapDescription(stream_t *streamptr, int varID, size_t (*start)[4], s
     }
   else
     {
-      xid = streamptr->xdimID[gridindex];
-      yid = streamptr->ydimID[gridindex];
+      xid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+      yid = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
     }
   int zaxisindex = vlistZaxisIndex(vlistID, zaxisID);
   int zid = streamptr->zaxisID[zaxisindex];
@@ -55493,12 +57007,12 @@ void cdfInqDimIds(stream_t *streamptr, int varId, int (*outDimIds)[3])
         break;
 
       case GRID_UNSTRUCTURED:
-        (*outDimIds)[0] = streamptr->xdimID[gridindex];
+        (*outDimIds)[0] = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
         break;
 
       default:
-        (*outDimIds)[0] = streamptr->xdimID[gridindex];
-        (*outDimIds)[1] = streamptr->ydimID[gridindex];
+        (*outDimIds)[0] = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_X];
+        (*outDimIds)[1] = streamptr->ncgrid[gridindex].ncIDs[CDF_DIMID_Y];
         break;
     }
 
@@ -55702,7 +57216,7 @@ void cdfReadVarSliceDP(stream_t *streamptr, int varID, int levelID, double *data
   size_t xsize = (size_t)gridInqXsize(gridId);
   size_t ysize = (size_t)gridInqYsize(gridId);
 
-  if ( vlistInqVarDatatype(vlistID, varID) == DATATYPE_FLT32 )
+  if ( vlistInqVarDatatype(vlistID, varID) == CDI_DATATYPE_FLT32 )
     {
       float *data_fp = (float *) Malloc(gridsize*sizeof(*data_fp));
       cdf_get_vara_float(fileID, ncvarid, start, count, data_fp);
@@ -55714,7 +57228,7 @@ void cdfReadVarSliceDP(stream_t *streamptr, int varID, int levelID, double *data
     {
       cdf_get_vara_double(fileID, ncvarid, start, count, data);
       
-      if ( vlistInqVarDatatype(vlistID, varID) == DATATYPE_UINT8 )
+      if ( vlistInqVarDatatype(vlistID, varID) == CDI_DATATYPE_UINT8 )
         {
           nc_type xtype;
           cdf_inq_vartype(fileID, ncvarid, &xtype);
@@ -55759,7 +57273,7 @@ void cdfReadVarSliceSP(stream_t *streamptr, int varID, int levelID, float *data,
   size_t xsize = (size_t)gridInqXsize(gridId);
   size_t ysize = (size_t)gridInqYsize(gridId);
 
-  if ( vlistInqVarDatatype(vlistID, varID) == DATATYPE_FLT64 )
+  if ( vlistInqVarDatatype(vlistID, varID) == CDI_DATATYPE_FLT64 )
     {
       double *data_dp = (double *) Malloc(gridsize*sizeof(*data_dp));
       cdf_get_vara_double(fileID, ncvarid, start, count, data_dp);
@@ -55771,7 +57285,7 @@ void cdfReadVarSliceSP(stream_t *streamptr, int varID, int levelID, float *data,
     {
       cdf_get_vara_float(fileID, ncvarid, start, count, data);
 
-      if ( vlistInqVarDatatype(vlistID, varID) == DATATYPE_UINT8 )
+      if ( vlistInqVarDatatype(vlistID, varID) == CDI_DATATYPE_UINT8 )
         {
           nc_type xtype;
           cdf_inq_vartype(fileID, ncvarid, &xtype);
@@ -58229,8 +59743,6 @@ void tableDefault(void)
 #include <string.h>
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID -1
 
 /*int TableDefine = 0; */ /* Define new table also if the entry already exist */
                           /* This is needed for createtable */
@@ -58596,71 +60108,50 @@ int tableRead(const char *tablefile)
 
 static int tableFromEnv(int modelID, int tablenum)
 {
-  int tableID = CDI_UNDEFID;
   char tablename[256] = {'\0'};
-  int tablenamefound = 0;
+  size_t tablenameLen = 0;
+  int instID;
 
-  const char *modelName;
-  if ( (modelName = modelInqNamePtr(modelID)) )
-    {
-      strcpy(tablename, modelName);
-      if ( tablenum )
-	{
-	  size_t len = strlen(tablename);
-	  sprintf(tablename+len, "_%03d", tablenum);
-	}
-      tablenamefound = 1;
+  const char *name2Use;
+  {
+    const char *modelName, *instName;
+    if ( (modelName = modelInqNamePtr(modelID)) )
+      name2Use = modelName;
+    else if ( (instID = modelInqInstitut(modelID)) != CDI_UNDEFID
+              && (instName = institutInqNamePtr(instID)) )
+      name2Use = instName;
+    else
+      return CDI_UNDEFID;
+  }
+  tablenameLen = strlen(name2Use);
+  memcpy(tablename, name2Use, tablenameLen);
+  if ( tablenum )
+    tablenameLen
+      += (size_t)(sprintf(tablename+tablenameLen, "_%03d", tablenum));
+  size_t lenp = 0, lenf = tablenameLen;
+  if ( tablePath )
+    lenp = strlen(tablePath);
+  /* if (tablePath) printf("tablePath = %s\n", tablePath); */
+  /* if (tablename) printf("tableName = %s\n", tablename); */
+  char *tablefile = (char *) Malloc(lenp+lenf+3);
+  if ( tablePath )
+    {
+      strcpy(tablefile, tablePath);
+      strcat(tablefile, "/");
     }
   else
-    {
-      int instID = modelInqInstitut(modelID);
-      if ( instID != CDI_UNDEFID )
-	{
-          const char *instName;
-	  if ( (instName = institutInqNamePtr(instID)) )
-	    {
-	      strcpy(tablename, instName);
-	      if ( tablenum )
-		{
-		  size_t len = strlen(tablename);
-		  sprintf(tablename+len, "_%03d", tablenum);
-		}
-	      tablenamefound = 1;
-	    }
-	}
-    }
+    tablefile[0] = '\0';
+  strcat(tablefile, tablename);
+  /* if (tablefile) printf("tableFile = %s\n", tablefile); */
 
-  if ( tablenamefound )
+  int tableID = tableRead(tablefile);
+  if ( tableID != CDI_UNDEFID )
     {
-      size_t lenp = 0, lenf;
-      char *tablefile = NULL;
-      if ( tablePath )
-	lenp = strlen(tablePath);
-      lenf = strlen(tablename);
-      /* if (tablePath) printf("tablePath = %s\n", tablePath); */
-      /* if (tablename) printf("tableName = %s\n", tablename); */
-      tablefile = (char *) Malloc(lenp+lenf+3);
-      if ( tablePath )
-	{
-	  strcpy(tablefile, tablePath);
-	  strcat(tablefile, "/");
-	}
-      else
-	tablefile[0] = '\0';
-      strcat(tablefile, tablename);
-      /* if (tablefile) printf("tableFile = %s\n", tablefile); */
-
-      tableID = tableRead(tablefile);
-      if ( tableID != CDI_UNDEFID )
-	{
-	  tableDefModelID(tableID, modelID);
-	  tableDefNum(tableID, tablenum);
-	}
-      /* printf("tableID = %d %s\n", tableID, tablefile); */
-
-      Free(tablefile);
+      tableDefModelID(tableID, modelID);
+      tableDefNum(tableID, tablenum);
     }
-
+  /* printf("tableID = %d %s\n", tableID, tablefile); */
+  Free(tablefile);
   return (tableID);
 }
 
@@ -59219,7 +60710,7 @@ int tableInqNumber(void)
 #endif
 
 #include <stddef.h>
-#include <string.h>
+
 
 
 static int DefaultTimeType = TAXIS_ABSOLUTE;
@@ -59309,24 +60800,15 @@ static int  TAXIS_Debug = 0;   /* If set to 1, debugging */
 
 const char *tunitNamePtr(int unitID)
 {
-  const char *name;
   int size = sizeof(Timeunits)/sizeof(*Timeunits);
-
-  if ( unitID > 0 && unitID < size )
-    name = Timeunits[unitID];
-  else
-    name = Timeunits[0];
-
-  return name;
+  return (unitID > 0 && unitID < size) ? Timeunits[unitID] : Timeunits[0];
 }
 
 #if 0
 static
 void taxis_defaults(void)
 {
-  char *timeunit;
-
-  timeunit = getenv("TIMEUNIT");
+  char *timeunit = getenv("TIMEUNIT");
   if ( timeunit )
     {
       if ( strcmp(timeunit, "minutes") == 0 )
@@ -59356,6 +60838,7 @@ void taxisDefaultValue(taxis_t* taxisptr)
 {
   taxisptr->self        = CDI_UNDEFID;
   taxisptr->used        = false;
+  taxisptr->datatype    = CDI_DATATYPE_FLT64;
   taxisptr->type        = DefaultTimeType;
   taxisptr->vdate       = 0;
   taxisptr->vtime       = 0;
@@ -59376,6 +60859,7 @@ void taxisDefaultValue(taxis_t* taxisptr)
   taxisptr->fc_period   = 0;
   taxisptr->name        = NULL;
   taxisptr->longname    = NULL;
+  taxisptr->units       = NULL;
 }
 
 static taxis_t *
@@ -59396,7 +60880,7 @@ taxisNewEntry(cdiResH resH)
 }
 
 static
-void taxisInit (void)
+void taxisInit(void)
 {
   static bool taxisInitialized = false;
 
@@ -59408,16 +60892,6 @@ void taxisInit (void)
   if ( env ) TAXIS_Debug = atoi(env);
 }
 
-#if 0
-static
-void taxis_copy(taxis_t *taxisptr2, taxis_t *taxisptr1)
-{
-  int taxisID2 = taxisptr2->self;
-  memcpy(taxisptr2, taxisptr1, sizeof(taxis_t));
-  taxisptr2->self = taxisID2;
-}
-#endif
-
 /*
 @Function  taxisCreate
 @Title     Create a Time axis
@@ -59469,6 +60943,7 @@ void taxisDestroyKernel(taxis_t *taxisptr)
 {
   delete_refcount_string(taxisptr->name);
   delete_refcount_string(taxisptr->longname);
+  delete_refcount_string(taxisptr->units);
 }
 
 /*
@@ -59514,11 +60989,16 @@ int taxisDuplicate(int taxisID1)
 
 void taxisDefType(int taxisID, int type)
 {
-  taxis_t *taxisptr = ( taxis_t * ) reshGetVal ( taxisID, &taxisOps );
+  taxis_t *taxisptr = (taxis_t *) reshGetVal(taxisID, &taxisOps);
 
-  if (taxisptr->type != type)
+  if ( taxisptr->type != type )
     {
       taxisptr->type = type;
+      if ( taxisptr->units )
+        {
+          delete_refcount_string(taxisptr->units);
+          taxisptr->units = NULL;
+        }
       reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
     }
 }
@@ -59594,6 +61074,11 @@ void taxisDefRdate(int taxisID, int rdate)
   if (taxisptr->rdate != rdate)
     {
       taxisptr->rdate = rdate;
+      if ( taxisptr->units )
+        {
+          delete_refcount_string(taxisptr->units);
+          taxisptr->units = NULL;
+        }
       reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
     }
 }
@@ -59619,6 +61104,11 @@ void taxisDefRtime(int taxisID, int rtime)
   if (taxisptr->rtime != rtime)
     {
       taxisptr->rtime = rtime;
+      if ( taxisptr->units )
+        {
+          delete_refcount_string(taxisptr->units);
+          taxisptr->units = NULL;
+        }
       reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
     }
 }
@@ -59708,6 +61198,11 @@ void taxisDefTunit(int taxisID, int unit)
   if (taxisptr->unit != unit)
     {
       taxisptr->unit = unit;
+      if ( taxisptr->units )
+        {
+          delete_refcount_string(taxisptr->units);
+          taxisptr->units = NULL;
+        }
       reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
     }
 }
@@ -59755,7 +61250,6 @@ The valid CDI time types are TAXIS_ABSOLUTE and TAXIS_RELATIVE.
 int taxisInqType(int taxisID)
 {
   taxis_t *taxisptr = (taxis_t *)reshGetVal(taxisID, &taxisOps);
-
   return taxisptr->type;
 }
 
@@ -59763,7 +61257,6 @@ int taxisInqType(int taxisID)
 int taxisHasBounds(int taxisID)
 {
   taxis_t *taxisptr = (taxis_t *)reshGetVal(taxisID, &taxisOps);
-
   return taxisptr->has_bounds;
 }
 
@@ -59783,7 +61276,7 @@ void taxisDeleteBounds(int taxisID)
 void taxisCopyTimestep(int taxisID2, int taxisID1)
 {
   taxis_t *taxisptr1 = (taxis_t *)reshGetVal(taxisID1, &taxisOps),
-    *taxisptr2 = (taxis_t *)reshGetVal(taxisID2, &taxisOps);
+          *taxisptr2 = (taxis_t *)reshGetVal(taxisID2, &taxisOps);
 
   reshLock();
 
@@ -59830,7 +61323,6 @@ The function @func{taxisInqVdate} returns the verification date of a Time axis.
 int taxisInqVdate(int taxisID)
 {
   taxis_t *taxisptr = (taxis_t *)reshGetVal(taxisID, &taxisOps);
-
   return taxisptr->vdate;
 }
 
@@ -59878,7 +61370,6 @@ The function @func{taxisInqVtime} returns the verification time of a Time axis.
 int taxisInqVtime(int taxisID)
 {
   taxis_t *taxisptr = (taxis_t *)reshGetVal(taxisID, &taxisOps);
-
   return taxisptr->vtime;
 }
 
@@ -60046,40 +61537,35 @@ The valid CDI calendar types are @func{CALENDAR_STANDARD}, @func{CALENDAR_PROLEP
 */
 int taxisInqCalendar(int taxisID)
 {
-  taxis_t *taxisptr = ( taxis_t * ) reshGetVal ( taxisID, &taxisOps );
-
+  taxis_t *taxisptr = (taxis_t *) reshGetVal ( taxisID, &taxisOps );
   return taxisptr->calendar;
 }
 
 
 int taxisInqTunit(int taxisID)
 {
-  taxis_t *taxisptr = ( taxis_t * ) reshGetVal ( taxisID, &taxisOps );
-
+  taxis_t *taxisptr = (taxis_t *) reshGetVal ( taxisID, &taxisOps );
   return taxisptr->unit;
 }
 
 
 int taxisInqForecastTunit(int taxisID)
 {
-  taxis_t *taxisptr = ( taxis_t * ) reshGetVal ( taxisID, &taxisOps );
-
-  return (taxisptr->fc_unit);
+  taxis_t *taxisptr = (taxis_t *) reshGetVal ( taxisID, &taxisOps );
+  return taxisptr->fc_unit;
 }
 
 
 double taxisInqForecastPeriod(int taxisID)
 {
   taxis_t *taxisptr = ( taxis_t * ) reshGetVal ( taxisID, &taxisOps );
-
-  return (taxisptr->fc_period);
+  return taxisptr->fc_period;
 }
 
 
 int taxisInqNumavg(int taxisID)
 {
   taxis_t *taxisptr = ( taxis_t * ) reshGetVal ( taxisID, &taxisOps );
-
   return taxisptr->numavg;
 }
 
@@ -60087,14 +61573,19 @@ int taxisInqNumavg(int taxisID)
 taxis_t *taxisPtr(int taxisID)
 {
   taxis_t *taxisptr = (taxis_t *)reshGetVal(taxisID, &taxisOps);
-
   return taxisptr;
 }
 
-void
-ptaxisDefName(taxis_t *taxisptr, const char *name)
+
+void ptaxisDefDatatype(taxis_t *taxisptr, int datatype)
+{
+  taxisptr->datatype = datatype;
+}
+
+
+void ptaxisDefName(taxis_t *taxisptr, const char *name)
 {
-  if (name)
+  if ( name )
     {
       size_t len = strlen(name);
       delete_refcount_string(taxisptr->name);
@@ -60103,10 +61594,10 @@ ptaxisDefName(taxis_t *taxisptr, const char *name)
     }
 }
 
-void
-ptaxisDefLongname(taxis_t *taxisptr, const char *longname)
+
+void ptaxisDefLongname(taxis_t *taxisptr, const char *longname)
 {
-  if (longname)
+  if ( longname )
     {
       size_t len = strlen(longname);
       delete_refcount_string(taxisptr->longname);
@@ -60116,6 +61607,18 @@ ptaxisDefLongname(taxis_t *taxisptr, const char *longname)
 }
 
 
+void ptaxisDefUnits(taxis_t *taxisptr, const char *units)
+{
+  if ( units )
+    {
+      size_t len = strlen(units);
+      delete_refcount_string(taxisptr->units);
+      char *taxisunits = taxisptr->units = new_refcount_string(len);
+      strcpy(taxisunits, units);
+    }
+}
+
+
 static void
 cdiDecodeTimevalue(int timeunit, double timevalue, int *days, int *secs)
 {
@@ -60266,20 +61769,14 @@ void timeval2vtime(double timevalue, taxis_t *taxis, int *vdate, int *vtime)
 
 double vtime2timeval(int vdate, int vtime, taxis_t *taxis)
 {
-  int ryear, rmonth;
-  int year, month, day, hour, minute, second;
-  int rdate, rtime;
   double value = 0;
-  int timeunit;
-  int timeunit0;
-  int calendar;
   int julday1, secofday1, julday2, secofday2, days, secs;
 
-  timeunit = (*taxis).unit;
-  calendar = (*taxis).calendar;
+  int timeunit = (*taxis).unit;
+  int calendar = (*taxis).calendar;
 
-  rdate = (*taxis).rdate;
-  rtime = (*taxis).rtime;
+  int rdate = (*taxis).rdate;
+  int rtime = (*taxis).rtime;
   if ( rdate == -1 )
     {
       rdate  = (*taxis).vdate;
@@ -60288,6 +61785,8 @@ double vtime2timeval(int vdate, int vtime, taxis_t *taxis)
 
   if ( rdate == 0 && rtime == 0 && vdate == 0 && vtime == 0 ) return value;
 
+  int ryear, rmonth;
+  int year, month, day, hour, minute, second;
   cdiDecodeDate(rdate, &ryear, &rmonth, &day);
   cdiDecodeTime(rtime, &hour, &minute, &second);
 
@@ -60296,7 +61795,7 @@ double vtime2timeval(int vdate, int vtime, taxis_t *taxis)
   cdiDecodeDate(vdate, &year, &month, &day);
   cdiDecodeTime(vtime, &hour, &minute, &second);
 
-  timeunit0 = timeunit;
+  int timeunit0 = timeunit;
 
   if ( timeunit == TUNIT_MONTH && calendar == CALENDAR_360DAYS )
     {
@@ -60305,17 +61804,15 @@ double vtime2timeval(int vdate, int vtime, taxis_t *taxis)
 
   if ( timeunit == TUNIT_MONTH || timeunit == TUNIT_YEAR )
     {
-      int nmonth, dpm;
-
       value = (year-ryear)*12 - rmonth + month;
 
-      nmonth = (int) value;
+      int nmonth = (int) value;
       month -= nmonth;
 
       while ( month > 12 ) { month -= 12; year++; }
       while ( month <  1 ) { month += 12; year--; }
 
-      dpm = days_per_month(calendar, year, month);
+      int dpm = days_per_month(calendar, year, month);
 
       encode_caldaysec(calendar, year, month, day, hour, minute, second, &julday2, &secofday2);
 
@@ -60343,34 +61840,31 @@ double vtime2timeval(int vdate, int vtime, taxis_t *taxis)
 }
 
 
-static void conv_timeval(double timevalue, int *rvdate, int *rvtime)
+static
+void conv_timeval(double timevalue, int *rvdate, int *rvtime)
 {
-  int vdate = 0, vtime = 0;
-  int hour, minute, second;
   int daysec;
 
-  vdate = (int) timevalue;
+  int vdate = (int) timevalue;
   if ( vdate < 0 )
     daysec = (int) (-(timevalue - vdate)*86400 + 0.01);
   else
     daysec = (int) ( (timevalue - vdate)*86400 + 0.01);
 
-  hour   =  daysec / 3600;
-  minute = (daysec - hour*3600)/60;
-  second =  daysec - hour*3600 - minute*60;
-  vtime  = cdiEncodeTime(hour, minute, second);
+  int hour   =  daysec / 3600;
+  int minute = (daysec - hour*3600)/60;
+  int second =  daysec - hour*3600 - minute*60;
+  int vtime  = cdiEncodeTime(hour, minute, second);
 
   *rvdate = vdate;
   *rvtime = vtime;
 }
 
 
-static void
-splitTimevalue(double timevalue, int timeunit, int *date, int *time)
+static
+void splitTimevalue(double timevalue, int timeunit, int *date, int *time)
 {
   int vdate = 0, vtime = 0;
-  int hour, minute, second;
-  int year, month, day;
 
   if ( timeunit == TUNIT_SECOND )
     {
@@ -60420,7 +61914,9 @@ splitTimevalue(double timevalue, int timeunit, int *date, int *time)
 
   /* verify date and time */
 
+  int year, month, day;
   cdiDecodeDate(vdate, &year, &month, &day);
+  int hour, minute, second;
   cdiDecodeTime(vtime, &hour, &minute, &second);
 
   if ( month > 17 || day > 31 || hour > 23 || minute > 59 || second > 59 )
@@ -60451,22 +61947,19 @@ splitTimevalue(double timevalue, int timeunit, int *date, int *time)
 
 void cdiSetForecastPeriod(double timevalue, taxis_t *taxis)
 {
-  int year, month, day, hour, minute, second;
-  int vdate, vtime;
-  int timeunit;
-  int calendar;
   int julday, secofday, days, secs;
 
   (*taxis).fc_period = timevalue;
 
-  timeunit = (*taxis).fc_unit;
-  calendar = (*taxis).calendar;
+  int timeunit = (*taxis).fc_unit;
+  int calendar = (*taxis).calendar;
 
-  vdate  = (*taxis).vdate;
-  vtime  = (*taxis).vtime;
+  int vdate = (*taxis).vdate;
+  int vtime = (*taxis).vtime;
 
   if ( vdate == 0 && vtime == 0 && DBL_IS_EQUAL(timevalue, 0.) ) return;
 
+  int year, month, day, hour, minute, second;
   cdiDecodeDate(vdate, &year, &month, &day);
   cdiDecodeTime(vtime, &hour, &minute, &second);
 
@@ -60535,21 +62028,15 @@ double cdiEncodeTimeval(int date, int time, taxis_t *taxis)
 	{
 	  int year, month, day;
 	  cdiDecodeDate(date, &year, &month, &day);
-          timevalue = date/100;
-	  if ( day != 0 )
-            {
-              if ( date < 0 ) timevalue -= 0.5;
-              else            timevalue += 0.5;
-            }
+          timevalue = date/100
+            + copysign((double)(day != 0) * 0.5, (double)date);
         }
       else
 	{
 	  int hour, minute, second;
 	  cdiDecodeTime(time, &hour, &minute, &second);
-	  if ( date < 0 )
-	    timevalue = -(-date + (hour*3600 + minute*60 + second)/86400.);
-	  else
-	    timevalue =    date + (hour*3600 + minute*60 + second)/86400.;
+          timevalue = copysign(1.0, (double)date)
+            * (fabs((double)date) + (hour*3600 + minute*60 + second)/86400.);
 	}
     }
   else
@@ -60571,6 +62058,7 @@ void ptaxisCopy(taxis_t *dest, taxis_t *source)
 
   /* memcpy(dest, source, sizeof(taxis_t)); */
   dest->used        = source->used;
+  dest->datatype    = source->datatype;
   dest->type        = source->type;
   dest->vdate       = source->vdate;
   dest->vtime       = source->vtime;
@@ -60593,8 +62081,10 @@ void ptaxisCopy(taxis_t *dest, taxis_t *source)
   dest->climatology = source->climatology;
   delete_refcount_string(dest->name);
   delete_refcount_string(dest->longname);
+  delete_refcount_string(dest->units);
   dest->name = dup_refcount_string(source->name);
   dest->longname = dup_refcount_string(source->longname);
+  dest->units = dup_refcount_string(source->units);
   if (dest->self != CDI_UNDEFID)
     reshSetStatus(dest->self, &taxisOps, RESH_DESYNC_IN_USE);
   reshUnlock ();
@@ -60681,20 +62171,21 @@ taxisTxCode ( void )
   return TAXIS;
 }
 
-enum { taxisNint = 21 };
+enum { taxisNint = 22 };
 
 static int
 taxisGetPackSize(void *p, void *context)
 {
   taxis_t *taxisptr = (taxis_t*) p;
   int packBufferSize
-    = serializeGetSize(taxisNint, DATATYPE_INT, context)
-    + serializeGetSize(1, DATATYPE_UINT32, context)
+    = serializeGetSize(taxisNint, CDI_DATATYPE_INT, context)
+    + serializeGetSize(1, CDI_DATATYPE_UINT32, context)
     + (taxisptr->name ?
-       serializeGetSize((int)strlen(taxisptr->name), DATATYPE_TXT, context) : 0)
+       serializeGetSize((int)strlen(taxisptr->name), CDI_DATATYPE_TXT, context) : 0)
     + (taxisptr->longname ?
-       serializeGetSize((int)strlen(taxisptr->longname), DATATYPE_TXT,
-                        context) : 0);
+       serializeGetSize((int)strlen(taxisptr->longname), CDI_DATATYPE_TXT, context) : 0)
+    + (taxisptr->units ?
+       serializeGetSize((int)strlen(taxisptr->units), CDI_DATATYPE_TXT, context) : 0);
   return packBufferSize;
 }
 
@@ -60708,11 +62199,11 @@ taxisUnpack(char * unpackBuffer, int unpackBufferSize, int * unpackBufferPos,
   int idx = 0;
 
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  intBuffer, taxisNint, DATATYPE_INT, context);
+                  intBuffer, taxisNint, CDI_DATATYPE_INT, context);
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &d, 1, DATATYPE_UINT32, context);
+                  &d, 1, CDI_DATATYPE_UINT32, context);
 
-  xassert(cdiCheckSum(DATATYPE_INT, taxisNint, intBuffer) == d);
+  xassert(cdiCheckSum(CDI_DATATYPE_INT, taxisNint, intBuffer) == d);
 
   taxisInit();
 
@@ -60745,7 +62236,7 @@ taxisUnpack(char * unpackBuffer, int unpackBufferSize, int * unpackBufferPos,
       int len = intBuffer[idx];
       char *name = new_refcount_string((size_t)len);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      name, len, DATATYPE_TXT, context);
+                      name, len, CDI_DATATYPE_TXT, context);
       name[len] = '\0';
       taxisP->name = name;
     }
@@ -60755,10 +62246,19 @@ taxisUnpack(char * unpackBuffer, int unpackBufferSize, int * unpackBufferPos,
       int len = intBuffer[idx];
       char *longname = new_refcount_string((size_t)len);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      longname, len, DATATYPE_TXT, context);
+                      longname, len, CDI_DATATYPE_TXT, context);
       longname[len] = '\0';
       taxisP->longname = longname;
     }
+  if (intBuffer[idx])
+    {
+      int len = intBuffer[idx];
+      char *units = new_refcount_string((size_t)len);
+      serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
+                      units, len, CDI_DATATYPE_TXT, context);
+      units[len] = '\0';
+      taxisP->units = units;
+    }
 
   reshSetStatus(taxisP->self, &taxisOps,
                 reshGetStatus(taxisP->self, &taxisOps) & ~RESH_SYNC_BIT);
@@ -60797,17 +62297,21 @@ taxisPack(void * voidP, void * packBuffer, int packBufferSize, int * packBufferP
   intBuffer[idx++] = taxisP->vtime_ub;
   intBuffer[idx++] = taxisP->name ? (int)strlen(taxisP->name) : 0;
   intBuffer[idx++] = taxisP->longname ? (int)strlen(taxisP->longname) : 0;
+  intBuffer[idx++] = taxisP->units ? (int)strlen(taxisP->units) : 0;
 
-  serializePack(intBuffer, taxisNint, DATATYPE_INT,
+  serializePack(intBuffer, taxisNint, CDI_DATATYPE_INT,
                 packBuffer, packBufferSize, packBufferPos, context);
-  d = cdiCheckSum(DATATYPE_INT, taxisNint, intBuffer);
-  serializePack(&d, 1, DATATYPE_UINT32,
+  d = cdiCheckSum(CDI_DATATYPE_INT, taxisNint, intBuffer);
+  serializePack(&d, 1, CDI_DATATYPE_UINT32,
                 packBuffer, packBufferSize, packBufferPos, context);
   if (taxisP->name)
-    serializePack(taxisP->name, intBuffer[15], DATATYPE_TXT,
+    serializePack(taxisP->name, intBuffer[15], CDI_DATATYPE_TXT,
                   packBuffer, packBufferSize, packBufferPos, context);
   if (taxisP->longname)
-    serializePack(taxisP->longname, intBuffer[16], DATATYPE_TXT,
+    serializePack(taxisP->longname, intBuffer[16], CDI_DATATYPE_TXT,
+                  packBuffer, packBufferSize, packBufferPos, context);
+  if (taxisP->units)
+    serializePack(taxisP->units, intBuffer[16], CDI_DATATYPE_TXT,
                   packBuffer, packBufferSize, packBufferPos, context);
 
 }
@@ -61206,7 +62710,7 @@ int tstepsNewEntry(stream_t *streamptr)
 
   tstepsInitEntry(streamptr, tsID);
 
-  streamptr->tsteps[tsID].taxis.used = TRUE;
+  streamptr->tsteps[tsID].taxis.used = true;
 
   return (int)tsID;
 }
@@ -61214,24 +62718,20 @@ int tstepsNewEntry(stream_t *streamptr)
 
 void cdiCreateTimesteps(stream_t *streamptr)
 {
-  long ntsteps;
-  long tsID;
-
   if ( streamptr->ntsteps < 0 || streamptr->tstepsTableSize > 0 )
     return;
 
-  if ( streamptr->ntsteps == 0 ) ntsteps = 1;    /* <<<<<-------- */
-  else ntsteps = streamptr->ntsteps;
+  long ntsteps = (streamptr->ntsteps == 0) ? 1 : streamptr->ntsteps;
 
   streamptr->tsteps = (tsteps_t *) Malloc((size_t)ntsteps*sizeof(tsteps_t));
 
   streamptr->tstepsTableSize = (int)ntsteps;
   streamptr->tstepsNextID    = (int)ntsteps;
 
-  for ( tsID = 0; tsID < ntsteps; tsID++ )
+  for ( long tsID = 0; tsID < ntsteps; tsID++ )
     {
       tstepsInitEntry(streamptr, (size_t)tsID);
-      streamptr->tsteps[tsID].taxis.used = TRUE;
+      streamptr->tsteps[tsID].taxis.used = true;
     }
 }
 /*
@@ -61258,48 +62758,6 @@ void cdiCreateTimesteps(stream_t *streamptr)
 
 
 
-void cdiPrintDatatypes(void)
-{
-#define XSTRING(x)	#x
-#define STRING(x)	XSTRING(x)
-  fprintf (stderr, "+-------------+-------+\n"
-           "| types       | bytes |\n"
-           "+-------------+-------+\n"
-           "| void *      |   %3d |\n"
-           "+-------------+-------+\n"
-           "| char        |   %3d |\n"
-           "+-------------+-------+\n"
-           "| bool        |   %3d |\n"
-           "| short       |   %3d |\n"
-           "| int         |   %3d |\n"
-           "| long        |   %3d |\n"
-           "| long long   |   %3d |\n"
-           "| size_t      |   %3d |\n"
-           "| off_t       |   %3d |\n"
-           "+-------------+-------+\n"
-           "| float       |   %3d |\n"
-           "| double      |   %3d |\n"
-           "| long double |   %3d |\n"
-           "+-------------+-------+\n\n"
-           "+-------------+-----------+\n"
-           "| INT32       | %-9s |\n"
-           "| INT64       | %-9s |\n"
-           "| FLT32       | %-9s |\n"
-           "| FLT64       | %-9s |\n"
-           "+-------------+-----------+\n"
-           "\n  byte ordering is %s\n\n",
-           (int) sizeof(void *), (int) sizeof(char), (int) sizeof(bool),
-           (int) sizeof(short), (int) sizeof(int), (int) sizeof(long), (int) sizeof(long long),
-           (int) sizeof(size_t), (int) sizeof(off_t),
-           (int) sizeof(float), (int) sizeof(double), (int) sizeof(long double),
-           STRING(INT32), STRING(INT64), STRING(FLT32), STRING(FLT64),
-           ((HOST_ENDIANNESS == CDI_BIGENDIAN) ? "BIGENDIAN"
-            : ((HOST_ENDIANNESS == CDI_LITTLEENDIAN) ? "LITTLEENDIAN"
-               : "Unhandled endianness!")));
-#undef STRING
-#undef XSTRING
-}
-
 static const char uuidFmt[] = "%02hhx%02hhx%02hhx%02hhx-"
   "%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-"
   "%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx";
@@ -61390,7 +62848,7 @@ char* cdiUnescapeSpaces(const char* string, const char** outStringEnd)
   return result;
 }
 
-#ifdef HAVE_DECL_UUID_GENERATE
+#if defined (HAVE_DECL_UUID_GENERATE) && defined (HAVE_UUID_UUID_H)
 #include <sys/time.h>
 #include <uuid/uuid.h>
 void cdiCreateUUID(unsigned char *uuid)
@@ -61417,7 +62875,7 @@ void cdiCreateUUID(unsigned char *uuid)
   uuid_generate(uuid);
   setstate(caller_rand_state);
 }
-#elif defined (HAVE_DECL_UUID_CREATE)
+#elif defined (HAVE_DECL_UUID_CREATE) && defined (HAVE_UUID_H)
 typedef uint8_t u_int8_t;
 typedef uint16_t u_int16_t;
 typedef uint32_t u_int32_t;
@@ -61437,8 +62895,8 @@ void cdiCreateUUID(unsigned char *uuid)
 void cdiCreateUUID(unsigned char *uuid)
 {
   static int uuid_seeded = 0;
-  static char uuid_rand_state[31 * sizeof (long)];
 #ifndef _SX
+  static char uuid_rand_state[31 * sizeof (long)];
   char *caller_rand_state;
   if (uuid_seeded)
     caller_rand_state = setstate(uuid_rand_state);
@@ -61459,6 +62917,27 @@ void cdiCreateUUID(unsigned char *uuid)
   for (size_t i = 0; i < CDI_UUID_SIZE; ++i)
     uuid[i] = (unsigned char)random();
 #else
+  unsigned short caller_rand_state[3];
+  {
+    static unsigned short our_rand_state[3];
+    if (!uuid_seeded)
+      {
+        struct timeval tv;
+        int status = gettimeofday(&tv, NULL);
+        if (status != 0)
+          {
+            perror("failed seed generation!");
+            exit(1);
+          }
+        unsigned seed = tv.tv_sec ^ tv.tv_usec;
+        our_rand_state[0] = 0x330E;
+        our_rand_state[1] = (unsigned short)(seed & 0xFFFFU);
+        our_rand_state[2] = (unsigned short)((seed >> 16) & 0xFFFFU);
+      }
+    unsigned short *p = seed48(our_rand_state);
+    uuid_seeded = 1;
+    memcpy(caller_rand_state, p, sizeof (caller_rand_state));
+  }
   for (size_t i = 0; i < CDI_UUID_SIZE; ++i)
     uuid[i] = (unsigned char)lrand48();
 #endif
@@ -61468,6 +62947,8 @@ void cdiCreateUUID(unsigned char *uuid)
   uuid[7] = (unsigned char)((uuid[7] & 0x0f) | (4 << 4));
 #ifndef _SX
   setstate(caller_rand_state);
+#else
+  seed48(caller_rand_state);
 #endif
 }
 #endif
@@ -61484,14 +62965,8 @@ void cdiCreateUUID(unsigned char *uuid)
 #if defined (HAVE_CONFIG_H)
 #endif
 
-#include <stdbool.h>
-#include <string.h>
-#include <math.h>
-
 
 
-#undef  CDI_UNDEFID
-#define CDI_UNDEFID -1
 
 static size_t Vctsize = 0;
 static double *Vct = NULL;
@@ -61523,6 +62998,7 @@ typedef struct
 
 typedef struct
 {
+  int            varID;
   int            param;
   int            prec;
   int            tsteptype;
@@ -61546,7 +63022,7 @@ typedef struct
   int            comptype;       // compression type
   int            complevel;      // compression level
   short          timave;
-  short          lmissval;
+  bool           lmissval;
   double         missval;
   char          *name;
   char          *stdname;
@@ -61568,12 +63044,12 @@ vartable_t;
 
 static vartable_t *vartable;
 static unsigned varTablesize = 0;
-static unsigned nvars = 0;
+static unsigned varTableUsed = 0;
 
-
-static void
-paramInitEntry(unsigned varID, int param)
+static
+void paramInitEntry(unsigned varID, int param)
 {
+  vartable[varID].varID          = (int)varID;
   vartable[varID].param          = param;
   vartable[varID].prec           = 0;
   vartable[varID].tsteptype      = TSTEP_INSTANT;
@@ -61596,7 +63072,7 @@ paramInitEntry(unsigned varID, int param)
   vartable[varID].productDefinitionTemplate = CDI_UNDEFID;
   vartable[varID].comptype       = CDI_COMPRESS_NONE;
   vartable[varID].complevel      = 1;
-  vartable[varID].lmissval       = 0;
+  vartable[varID].lmissval       = false;
   vartable[varID].missval        = 0;
   vartable[varID].name           = NULL;
   vartable[varID].stdname        = NULL;
@@ -61615,7 +63091,7 @@ varGetEntry(int param, int zaxistype, int ltype1, int tsteptype, const char *nam
     {
       /* testing for "param" implicitly checks if we are beyond the
        * current vartable size: */
-      if (vartable[varID].param == param)
+      if ( vartable[varID].param == param )
         {
           int no_of_tiles = -1;
           if ( tiles ) no_of_tiles = tiles->numberOfTiles;
@@ -61648,7 +63124,7 @@ void varFree(void)
 {
   if ( CDI_Debug ) Message("call to varFree");
 
-  for ( unsigned varID = 0; varID < nvars; varID++ )
+  for ( size_t varID = 0; varID < varTableUsed; varID++ )
     {
       if ( vartable[varID].recordTable )
         {
@@ -61682,7 +63158,7 @@ void varFree(void)
 
   vartable = NULL;
   varTablesize = 0;
-  nvars = 0;
+  varTableUsed = 0;
 
   if ( Vct )
     Free(Vct);
@@ -61781,7 +63257,7 @@ static int levelNewEntry(unsigned varID, int level1, int level2, int tileID)
   /*
     If the table overflows, double its size.
   */
-  if( levelID == levelTableSize )
+  if ( levelID == levelTableSize )
     {
       levelTable = (leveltable_t *) Realloc(levelTable,
                                             (size_t)(levelTableSize *= 2)
@@ -61846,7 +63322,7 @@ paramNewEntry(int param)
     {
       vartable = (vartable_t *) Realloc(vartable, (size_t)(varTablesize *= 2)
                                         * sizeof (vartable_t));
-      for( unsigned i = varID; i < varTablesize; i++ )
+      for ( size_t i = varID; i < varTablesize; i++ )
         {
           vartable[i].param = UNDEF_PARAM;
           vartable[i].opt_grib_kvpair      = NULL;
@@ -61894,6 +63370,7 @@ int varInsertTileSubtype(vartable_t *vptr, const var_tile_t *tiles)
     subtypeDestroyPtr(subtype_ptr);
     return vptr->tiles->nentries - 1;
   }
+
   return CDI_UNDEFID;
 }
 
@@ -61905,11 +63382,11 @@ void varAddRecord(int recID, int param, int gridID, int zaxistype, int lbounds,
                   const var_tile_t *tiles, int *tile_index)
 {
   unsigned varID = (cdiSplitLtype105 != 1 || zaxistype != ZAXIS_HEIGHT) ?
-    varGetEntry(param, zaxistype, ltype1, tsteptype, name, tiles) : (unsigned)UNDEFID;
+    varGetEntry(param, zaxistype, ltype1, tsteptype, name, tiles) : (unsigned) CDI_UNDEFID;
 
-  if ( varID == (unsigned)UNDEFID )
+  if ( varID == (unsigned) CDI_UNDEFID )
     {
-      nvars++;
+      varTableUsed++;
       varID = paramNewEntry(param);
       vartable[varID].gridID     = gridID;
       vartable[varID].zaxistype  = zaxistype;
@@ -61950,11 +63427,12 @@ void varAddRecord(int recID, int param, int gridID, int zaxistype, int lbounds,
   int this_tile = varInsertTileSubtype(&vartable[varID], tiles);
   int tileID = tileGetEntry(varID, this_tile);
   if ( tile_index ) (*tile_index) = this_tile;
-  if (tileID == CDI_UNDEFID) {
-    tileID = tileNewEntry((int)varID);
-    vartable[varID].recordTable[tileID].subtypeIndex = this_tile;
-    vartable[varID].nsubtypes++;
-  }
+  if ( tileID == CDI_UNDEFID )
+    {
+      tileID = tileNewEntry((int)varID);
+      vartable[varID].recordTable[tileID].subtypeIndex = this_tile;
+      vartable[varID].nsubtypes++;
+    }
 
   /* append current level to level table info */
   int levelID = levelNewEntry(varID, level1, level2, tileID);
@@ -62011,20 +63489,16 @@ int cmpLevelTableInv(const void* s1, const void* s2)
 }
 
 
-typedef struct
+struct paraminfo
 {
-  int      varid;
-  int      param;
-  int      ltype;
-}
-param_t;
-
+  int varid, param, ltype;
+};
 
 static
-int cmpparam(const void* s1, const void* s2)
+int cmp_param(const void* s1, const void* s2)
 {
-  const param_t *x = (const param_t*) s1;
-  const param_t *y = (const param_t*) s2;
+  const struct paraminfo *x = (const struct paraminfo*) s1;
+  const struct paraminfo *y = (const struct paraminfo*) s2;
 
   int cmp = (( x->param > y->param ) - ( x->param < y->param )) * 2
            + ( x->ltype > y->ltype ) - ( x->ltype < y->ltype );
@@ -62032,34 +63506,61 @@ int cmpparam(const void* s1, const void* s2)
   return cmp;
 }
 
+struct varinfo
+{
+  int        varid;
+  const char *name;
+};
+/*
+static
+int cmp_varname(const void *s1, const void *s2)
+{
+  const struct varinfo *x = (const struct varinfo *)s1,
+                       *y = (const struct varinfo *)s2;
+  return strcmp(x->name, y->name);
+}
+*/
+static
+int cmp_varname(const void *s1, const void *s2)
+{
+  const vartable_t *x = (const vartable_t *)s1,
+                   *y = (const vartable_t *)s2;
+  return strcmp(x->name, y->name);
+}
+
 
 void cdi_generate_vars(stream_t *streamptr)
 {
   char name[CDI_MAX_NAME], longname[CDI_MAX_NAME], units[CDI_MAX_NAME];
   int vlistID = streamptr->vlistID;
 
-  int *varids = (int *) Malloc(nvars*sizeof(int));
-  for ( unsigned varID = 0; varID < nvars; varID++ ) varids[varID] = (int)varID;
-
-  if ( streamptr->sortname )
+  int *varids = (int *) Malloc(varTableUsed*sizeof(int));
+  for ( size_t varID = 0; varID < varTableUsed; varID++ ) varids[varID] = (int)varID;
+  /*
+  if ( streamptr->sortparam )
     {
-      param_t *varInfo = (param_t *) Malloc((size_t)nvars * sizeof (param_t));
+      struct paraminfo *varInfo = (struct paraminfo *) Malloc((size_t)varTableUsed * sizeof(struct paraminfo));
 
-      for ( unsigned varID = 0; varID < nvars; varID++ )
+      for ( unsigned varID = 0; varID < varTableUsed; varID++ )
 	{
 	  varInfo[varID].varid = varids[varID];
 	  varInfo[varID].param = vartable[varID].param;
 	  varInfo[varID].ltype = vartable[varID].ltype1;
 	}
-      qsort(varInfo, (size_t)nvars, sizeof(param_t), cmpparam);
-      for ( unsigned varID = 0; varID < nvars; varID++ )
+      qsort(varInfo, (size_t)varTableUsed, sizeof(struct paraminfo), cmp_param);
+      for ( unsigned varID = 0; varID < varTableUsed; varID++ )
 	{
 	  varids[varID] = varInfo[varID].varid;
 	}
       Free(varInfo);
     }
 
-  for ( unsigned index = 0; index < nvars; index++ )
+  if ( streamptr->sortname )
+    {
+      qsort(vartable, (size_t)varTableUsed, sizeof(vartable_t), cmp_varname);
+    }
+  */
+  for ( size_t index = 0; index < varTableUsed; index++ )
     {
       int varid      = varids[index];
 
@@ -62142,7 +63643,7 @@ void cdi_generate_vars(stream_t *streamptr)
            * levelTable[levelID1].level1 < levelTable[levelID2].level1 <=> levelID1 > levelID2
            * unless already sorted in decreasing order
            */
-          if ( !ldec && zaxistype == ZAXIS_PRESSURE )
+          if ( (!linc && !ldec) && zaxistype == ZAXIS_PRESSURE )
             {
               qsort(levelTable, nlevels, sizeof(leveltable_t), cmpLevelTableInv);
               lsort = true;
@@ -62184,8 +63685,9 @@ void cdi_generate_vars(stream_t *streamptr)
 	    dlevels2[levelID] = level_sf*levelTable[levelID].level2;
         }
 
+      const char **cvals = NULL;
       const char *unitptr = cdiUnitNamePtr(vartable[varid].level_unit);
-      int zaxisID = varDefZaxis(vlistID, zaxistype, (int)nlevels, dlevels, lbounds, dlevels1, dlevels2,
+      int zaxisID = varDefZaxis(vlistID, zaxistype, (int)nlevels, dlevels, cvals, 0, lbounds, dlevels1, dlevels2,
                                 (int)Vctsize, Vct, NULL, NULL, unitptr, 0, 0, ltype1);
 
       if ( CDI_cmor_mode && nlevels == 1 && zaxistype != ZAXIS_HYBRID ) zaxisDefScalar(zaxisID);
@@ -62245,7 +63747,7 @@ void cdi_generate_vars(stream_t *streamptr)
 	  if ( vartable[varid].opt_grib_kvpair[i].keyword )
 	    vlistptr->vars[varID].opt_grib_kvpair[idx].keyword =
 	      strdupx(vartable[varid].opt_grib_kvpair[i].keyword);
-          vlistptr->vars[varID].opt_grib_kvpair[i].update = TRUE;
+          vlistptr->vars[varID].opt_grib_kvpair[i].update = true;
         }
       /* note: if the key is not defined, we do not throw an error! */
 
@@ -62282,7 +63784,7 @@ void cdi_generate_vars(stream_t *streamptr)
       if ( tableID != CDI_UNDEFID ) vlistDefVarTable(vlistID, varID, tableID);
     }
 
-  for ( unsigned index = 0; index < nvars; index++ )
+  for ( size_t index = 0; index < varTableUsed; index++ )
     {
       int varid = varids[index];
       unsigned nlevels = vartable[varid].recordTable[0].nlevels;
@@ -62336,21 +63838,16 @@ void varDefZAxisReference(int nhlev, int nvgrid, unsigned char uuid[CDI_UUID_SIZ
 bool zaxisCompare(int zaxisID, int zaxistype, int nlevels, bool lbounds, const double *levels, const char *longname, const char *units, int ltype1)
 {
   bool differ = true;
-  bool zlbounds = false;
-  bool ltype_is_equal = false;
 
-  if ( ltype1 == zaxisInqLtype(zaxisID) ) ltype_is_equal = true;
+  bool ltype_is_equal = (ltype1 == zaxisInqLtype(zaxisID));
 
   if ( ltype_is_equal && (zaxistype == zaxisInqType(zaxisID) || zaxistype == ZAXIS_GENERIC) )
     {
-      if ( zaxisInqLbounds(zaxisID, NULL) > 0 ) zlbounds = true;
+      bool zlbounds = (zaxisInqLbounds(zaxisID, NULL) > 0);
       if ( nlevels == zaxisInqSize(zaxisID) && zlbounds == lbounds )
 	{
-	  char zlongname[CDI_MAX_NAME];
-	  char zunits[CDI_MAX_NAME];
-
 	  const double *dlevels = zaxisInqLevelsPtr(zaxisID);
-          if ( dlevels )
+          if ( dlevels && levels )
             {
               int levelID;
               for ( levelID = 0; levelID < nlevels; levelID++ )
@@ -62358,23 +63855,24 @@ bool zaxisCompare(int zaxisID, int zaxistype, int nlevels, bool lbounds, const d
                   if ( fabs(dlevels[levelID] - levels[levelID]) > 1.e-9 )
                     break;
                 }
-
               if ( levelID == nlevels ) differ = false;
             }
 
 	  if ( ! differ )
 	    {
-	      zaxisInqLongname(zaxisID, zlongname);
-	      zaxisInqUnits(zaxisID, zunits);
-	      if ( longname && zlongname[0] )
-		{
-		  if ( strcmp(longname, zlongname) != 0 ) differ = true;
-		}
-	      if ( units && zunits[0] )
-		{
-		  if ( strcmp(units, zunits) != 0 ) differ = true;
-		}
-	    }
+              if ( longname )
+                {
+                  char zlongname[CDI_MAX_NAME];
+                  zaxisInqLongname(zaxisID, zlongname);
+                  if ( zlongname[0] && strcmp(longname, zlongname) != 0 ) differ = true;
+                }
+              if ( units )
+                {
+                  char zunits[CDI_MAX_NAME];
+                  zaxisInqUnits(zaxisID, zunits);
+                  if ( zunits[0] && strcmp(units, zunits) != 0 ) differ = true;
+                }
+            }
 	}
     }
 
@@ -62410,8 +63908,7 @@ varDefZAxisSearch(int id, void *res, void *data)
 }
 
 
-int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, bool lbounds,
-		const double *levels1, const double *levels2, int vctsize, const double *vct, char *name,
+int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, const char **cvals, size_t clength, bool lbounds,        const double *levels1, const double *levels2, int vctsize, const double *vct, char *name,
 		const char *longname, const char *units, int prec, int mode, int ltype1)
 {
   /*
@@ -62429,7 +63926,7 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, b
       {
 	zaxisID = vlistptr->zaxisIDs[index];
 
-	if ( zaxisCompare(zaxisID, zaxistype, nlevels, lbounds, levels, longname, units, ltype1) == false )
+	if ( !zaxisCompare(zaxisID, zaxistype, nlevels, lbounds, levels, longname, units, ltype1) )
 	  {
 	    zaxisdefined = true;
 	    break;
@@ -62466,19 +63963,21 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, b
       if ( ! zaxisglobdefined )
 	{
 	  zaxisID = zaxisCreate(zaxistype, nlevels);
-	  zaxisDefLevels(zaxisID, levels);
+	  if ( levels ) zaxisDefLevels(zaxisID, levels);
 	  if ( lbounds )
 	    {
 	      zaxisDefLbounds(zaxisID, levels1);
 	      zaxisDefUbounds(zaxisID, levels2);
 	    }
 
+          if ( cvals != NULL && nlevels != 0 && clength != 0 ) zaxisDefCvals(zaxisID, cvals, clength);
+
 	  if ( (zaxistype == ZAXIS_HYBRID || zaxistype == ZAXIS_HYBRID_HALF) && vctsize > 0 )
             zaxisDefVct(zaxisID, vctsize, vct);
 
-	  zaxisDefName(zaxisID, name);
-	  zaxisDefLongname(zaxisID, longname);
-	  zaxisDefUnits(zaxisID, units);
+	  if ( name && name[0] ) zaxisDefName(zaxisID, name);
+	  if ( longname && longname[0] ) zaxisDefLongname(zaxisID, longname);
+	  if ( units && units[0] ) zaxisDefUnits(zaxisID, units);
 	  zaxisDefPrec(zaxisID, prec);
 	  zaxisDefLtype(zaxisID, ltype1);
 	}
@@ -62493,7 +63992,7 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, b
 
 void varDefMissval(int varID, double missval)
 {
-  vartable[varID].lmissval = 1;
+  vartable[varID].lmissval = true;
   vartable[varID].missval = missval;
 }
 
@@ -62594,7 +64093,7 @@ void resize_vartable_opt_grib_entries(vartable_t *var, int nentries)
       for (i=var->opt_grib_kvpair_size; i<new_size; i++) {
         tmp[i].int_val =     0;
         tmp[i].dbl_val =     0;
-        tmp[i].update  = FALSE;
+        tmp[i].update  = false;
         tmp[i].keyword =  NULL;
       } // for
       var->opt_grib_kvpair_size = new_size;
@@ -62738,7 +64237,7 @@ static pthread_once_t  _vlist_init_thread = PTHREAD_ONCE_INIT;
 
 #else
 
-static int vlistIsInitialized = 0;
+static bool vlistIsInitialized = false;
 
 #  define VLIST_INIT()               \
   if ( !vlistIsInitialized ) vlist_initialize()
@@ -62847,7 +64346,7 @@ void vlist_initialize(void)
   char *env = getenv("VLIST_DEBUG");
   if ( env ) VLIST_Debug = atoi(env);
 #ifndef HAVE_LIBPTHREAD
-  vlistIsInitialized = TRUE;
+  vlistIsInitialized = true;
 #endif
 }
 
@@ -63011,7 +64510,7 @@ void var_copy_entries(var_t *var2, var_t *var1)
     if ( var1->opt_grib_kvpair[i].keyword != NULL ) {
       var2->opt_grib_kvpair[i]         = var1->opt_grib_kvpair[i];
       var2->opt_grib_kvpair[i].keyword = strdupx(var1->opt_grib_kvpair[i].keyword);
-      var2->opt_grib_kvpair[i].update  = TRUE;
+      var2->opt_grib_kvpair[i].update  = true;
       if ( CDI_Debug )  Message("done.");
     }
     else {
@@ -63044,7 +64543,7 @@ void vlistCopy(int vlistID2, int vlistID1)
   var_t *vars2 = vlistptr2->vars;
   vlist_copy(vlistptr2, vlistptr1);
 
-  cdiCopyVarAtts(vlistID1, CDI_GLOBAL, vlistID2, CDI_GLOBAL);
+  cdiCopyAtts(vlistID1, CDI_GLOBAL, vlistID2, CDI_GLOBAL);
 
   if ( vars1 )
     {
@@ -63061,7 +64560,7 @@ void vlistCopy(int vlistID2, int vlistID1)
           var_copy_entries(&vars2[varID], &vars1[varID]);
 
           vlistptr2->vars[varID].atts.nelems = 0;
-	  cdiCopyVarAtts(vlistID1, varID, vlistID2, varID);
+	  cdiCopyAtts(vlistID1, varID, vlistID2, varID);
 
           if ( vars1[varID].levinfo )
             {
@@ -63105,12 +64604,12 @@ void vlistClearFlag(int vlistID)
 
   for ( int varID = 0; varID < vlistptr->nvars; varID++ )
     {
-      vlistptr->vars[varID].flag = FALSE;
+      vlistptr->vars[varID].flag = false;
       if ( vlistptr->vars[varID].levinfo )
         {
           int nlevs = zaxisInqSize(vlistptr->vars[varID].zaxisID);
           for ( int levID = 0; levID < nlevs; levID++ )
-            vlistptr->vars[varID].levinfo[levID].flag = FALSE;
+            vlistptr->vars[varID].levinfo[levID].flag = false;
         }
     }
 }
@@ -63143,7 +64642,8 @@ vgzZAxisSearch(int id, void *res, void *data)
 
 static
 int vlist_generate_zaxis(int vlistID, int zaxistype, int nlevels, const double *levels,
-                         const double *lbounds, const double *ubounds, int vctsize, const double *vct)
+                         const double *lbounds, const double *ubounds, int vctsize, const double *vct,
+                         const char **cvals, size_t clen)
 {
   int zaxisID = CDI_UNDEFID;
   bool zaxisdefined = false;
@@ -63185,6 +64685,10 @@ int vlist_generate_zaxis(int vlistID, int zaxistype, int nlevels, const double *
 	{
 	  zaxisID = zaxisCreate(zaxistype, nlevels);
 	  zaxisDefLevels(zaxisID, levels);
+
+          if ( zaxistype == ZAXIS_CHAR )
+            zaxisDefCvals(zaxisID, cvals, clen);
+
 	  if ( has_bounds )
 	    {
 	      zaxisDefLbounds(zaxisID, lbounds);
@@ -63226,7 +64730,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
 
   vlist_copy(vlistptr2, vlistptr1);
 
-  cdiCopyVarAtts(vlistID1, CDI_GLOBAL, vlistID2, CDI_GLOBAL);
+  cdiCopyAtts(vlistID1, CDI_GLOBAL, vlistID2, CDI_GLOBAL);
 
   if ( vlistptr1->vars )
     {
@@ -63237,7 +64741,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
       vlistptr2->nzaxis = 0;
 
       for ( int varID = 0; varID < nvars; varID++ )
-        nvars2 += (vars1[varID].flag != 0);
+        nvars2 += vars1[varID].flag;
 
       vlistptr2->nvars = nvars2;
       vlistptr2->varsAllocated = nvars2;
@@ -63252,7 +64756,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
       for ( int varID = 0; varID < nvars; varID++ )
 	if ( vars1[varID].flag )
 	  {
-	    vlistptr2->vars[varID2].flag = FALSE;
+	    vlistptr2->vars[varID2].flag = false;
 	    int zaxisID   = vlistptr1->vars[varID].zaxisID;
 	    int gridID    = vlistptr1->vars[varID].gridID;
 	    int subtypeID = vlistptr1->vars[varID].subtypeID;
@@ -63267,46 +64771,80 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
             var_copy_entries(&vars2[varID2], &vars1[varID]);
 
 	    vlistptr2->vars[varID2].atts.nelems = 0;
-	    cdiCopyVarAtts(vlistID1, varID, vlistID2, varID2);
+	    cdiCopyAtts(vlistID1, varID, vlistID2, varID2);
 
 	    int nlevs  = zaxisInqSize(vars1[varID].zaxisID);
 	    int nlevs2 = 0;
             if ( vars1[varID].levinfo )
               for ( int levID = 0; levID < nlevs; levID++ )
-                nlevs2 += (vars1[varID].levinfo[levID].flag != 0);
+                nlevs2 += vars1[varID].levinfo[levID].flag;
 
 	    vars2[varID2].levinfo = (levinfo_t *) Malloc((size_t)nlevs2 * sizeof(levinfo_t));
 
 	    if ( nlevs != nlevs2 )
 	      {
 		int nvct = 0;
+                double *levels = NULL;
+                char **cvals1 = NULL, **cvals2 = NULL;
+                size_t clen2 = 0;
 		double *lbounds = NULL, *ubounds = NULL;
 		const double *vct = NULL;
                 char ctemp[CDI_MAX_NAME];
 
+                if ( !vars1[varID].levinfo ) cdiVlistCreateVarLevInfo(vlistptr1, varID);
+
 		zaxisID = vars1[varID].zaxisID;
-		double *levels = (double *) Malloc((size_t)nlevs2 * sizeof (double));
-                if ( !vars1[varID].levinfo )
-                  cdiVlistCreateVarLevInfo(vlistptr1, varID);
+                int zaxisType = zaxisInqType(zaxisID);
 
-                {
-                  int levID2 = 0;
-                  for ( int levID = 0; levID < nlevs; ++levID )
-                    if ( vars1[varID].levinfo[levID].flag )
-                      {
-                        vars1[varID].levinfo[levID].flevelID = levID2;
-                        vars1[varID].levinfo[levID].mlevelID = levID2;
+                int levID2 = 0;
+                for ( int levID = 0; levID < nlevs; ++levID )
+                  if ( vars1[varID].levinfo[levID].flag )
+                    {
+                      vars1[varID].levinfo[levID].flevelID = levID2;
+                      vars1[varID].levinfo[levID].mlevelID = levID2;
+                    }
+
+
+                if ( zaxisInqLevels(zaxisID, NULL) )
+                  {
+                    levels = (double *) Malloc((size_t)nlevs2 * sizeof (double));
+
+                    levID2 = 0;
+                    for ( int levID = 0; levID < nlevs; ++levID )
+                      if ( vars1[varID].levinfo[levID].flag )
                         levels[levID2++] = zaxisInqLevel(zaxisID, levID);
-                      }
-                }
+                  }
 
-		int zaxisType = zaxisInqType(zaxisID);
+                if ( zaxisType == ZAXIS_HYBRID )
+                  {
+                    nvct = zaxisInqVctSize(zaxisID);
+                    vct  = zaxisInqVctPtr(zaxisID);
+                  }
 
-		if ( zaxisType == ZAXIS_HYBRID )
-		  {
-		    nvct = zaxisInqVctSize(zaxisID);
-		    vct  = zaxisInqVctPtr(zaxisID);
-		  }
+                if ( zaxisType == ZAXIS_CHAR )
+                  {
+                    cvals1 = zaxisInqCValsPtr(zaxisID);
+                    size_t clen1 = (size_t)zaxisInqCLen(zaxisID);
+                    for ( int levID = 0; levID < nlevs; ++levID )
+                      if ( vars1[varID].levinfo[levID].flag )
+                          {
+                            size_t testlen = clen1;
+                            while ( cvals1[levID][testlen] == ' ' )
+                              testlen--;
+                            if ( clen2 < testlen )
+                              clen2 = testlen;
+                          }
+                    cvals2 = (char **) Malloc((size_t)nlevs2 * sizeof (char *));
+                    levID2 = 0;
+
+                    for ( int levID = 0; levID < nlevs; ++levID )
+                      if ( vars1[varID].levinfo[levID].flag )
+                        {
+                          cvals2[levID2] = Malloc((size_t)(clen2) * sizeof (char));
+                          memcpy(cvals2[levID2], cvals1[levID], clen2*sizeof(char));
+                          levID2++;
+                        }
+                  }
 
                 if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
                   {
@@ -63319,7 +64857,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                     zaxisInqLbounds(zaxisID, lbounds1);
                     zaxisInqUbounds(zaxisID, ubounds1);
 
-                    int levID2 = 0;
+                    levID2 = 0;
                     for ( int levID = 0; levID < nlevs; ++levID )
                       if ( vars1[varID].levinfo[levID].flag )
                         {
@@ -63331,9 +64869,15 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                     Free(lbounds1);
                   }
 
-		int zaxisID2 = vlist_generate_zaxis(vlistID2, zaxisType, nlevs2, levels, lbounds, ubounds, nvct, vct);
-		Free(levels);
-                Free(lbounds);
+		int zaxisID2 = vlist_generate_zaxis(vlistID2, zaxisType, nlevs2, levels, lbounds, ubounds, nvct, vct, (const char **)cvals2, clen2);
+		if ( levels )  Free(levels);
+                if ( lbounds ) Free(lbounds);
+                if ( cvals2 )
+                  {
+                    for ( int levID = 0; levID < nlevs2; ++levID )
+                      Free(cvals2[levID]);
+                    Free(cvals2);
+                  }
 
                 zaxisInqName(zaxisID, ctemp);
                 zaxisDefName(zaxisID2, ctemp);
@@ -63342,13 +64886,23 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                 zaxisInqUnits(zaxisID, ctemp);
                 zaxisDefUnits(zaxisID2, ctemp);
 
+                if ( zaxisType == ZAXIS_CHAR )
+                  {
+                    char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
+                    cdiZaxisInqKeyStr(zaxisID, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
+                    if ( dimname[0] == 0 ) { memcpy(dimname, "area_type", 10); dimname[10] = 0; }
+                    cdiZaxisDefKeyStr(zaxisID2, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
+                  }
+
+                if ( zaxisType == ZAXIS_GENERIC ) zaxisDefLtype(zaxisID2, zaxisInqLtype(zaxisID));
+
 		zaxisID = zaxisID2;
 		vars2[varID2].zaxisID = zaxisID2;
 	      }
 
 	    for ( int levID = 0; levID < nlevs2; levID++ )
 	      {
-		vars2[varID2].levinfo[levID].flag  = FALSE;
+		vars2[varID2].levinfo[levID].flag  = false;
 		vars2[varID2].levinfo[levID].index = -1;
 	      }
 
@@ -63431,7 +64985,7 @@ void vlistCat(int vlistID2, int vlistID1)
         }
 
       vars2[varID2].atts.nelems = 0;
-      cdiCopyVarAtts(vlistID1, varID, vlistID2, varID2);
+      cdiCopyAtts(vlistID1, varID, vlistID2, varID2);
 
       vlistAdd2GridIDs(vlistptr2, vars1[varID].gridID);
       vlistAdd2ZaxisIDs(vlistptr2, vars1[varID].zaxisID);
@@ -63515,11 +65069,11 @@ void vlistMerge(int vlistID2, int vlistID1)
             vars1[varID].levinfo[levID].mlevelID = nlevs2 + levID;
 	}
 
-      int *lvar = (int *) Calloc((size_t)nvars2, sizeof(int));
+      bool *lvar = (bool *) Calloc((size_t)nvars2, sizeof(bool));
 
       for ( varID = 0; varID < nvars2; varID++ )
         {
-          if ( lvar[varID] == TRUE ) continue;
+          if ( lvar[varID] == true ) continue;
 
           int zaxisID1 = vars1[varID].zaxisID;
           int zaxisID2 = vars2[varID].zaxisID;
@@ -63535,30 +65089,32 @@ void vlistMerge(int vlistID2, int vlistID1)
           int nlevs = nlevs1 + nlevs2;
 
           int zaxisID = zaxisDuplicate(zaxisID2);
-
           zaxisResize(zaxisID, nlevs);
 
-          double *levels = (double *) Malloc((size_t)nlevs1 * sizeof(double));
+          if ( zaxisInqLevels(zaxisID1, NULL) )
+            {
+              double *levels = (double *) Malloc((size_t)nlevs1 * sizeof(double));
 
-          zaxisInqLevels(zaxisID1, levels);
-          /*
-          for ( levID = 0; levID < nlevs1; levID++ )
-            fprintf(stderr, "%d %d %d %d %d %g\n", varID, levID, nlevs1, nlevs2, vars2[varID].nlevs, levels[levID]);
-          */
-          for ( int levID = 0; levID < nlevs1; levID++ )
-            zaxisDefLevel(zaxisID, nlevs2+levID, levels[levID]);
+              zaxisInqLevels(zaxisID1, levels);
+              /*
+                for ( levID = 0; levID < nlevs1; levID++ )
+                fprintf(stderr, "%d %d %d %d %d %g\n", varID, levID, nlevs1, nlevs2, vars2[varID].nlevs, levels[levID]);
+              */
+              for ( int levID = 0; levID < nlevs1; levID++ )
+                zaxisDefLevel(zaxisID, nlevs2+levID, levels[levID]);
 
-          Free(levels);
+              Free(levels);
+            }
 
           for ( int index = 0; index < vlistptr2->nzaxis; index++ )
             if ( vlistptr2->zaxisIDs[index] == zaxisID2 )
               vlistptr2->zaxisIDs[index] = zaxisID;
 
           for ( int varID2 = 0; varID2 < nvars2; varID2++ )
-            if ( lvar[varID2] == FALSE && vars2[varID2].zaxisID == zaxisID2 )
+            if ( lvar[varID2] == false && vars2[varID2].zaxisID == zaxisID2 )
               {
                 vars2[varID2].zaxisID = zaxisID;
-                lvar[varID2] = TRUE;
+                lvar[varID2] = true;
               }
         }
 
@@ -63611,7 +65167,7 @@ int vlistNumber(int vlistID)
   vlist_t *vlistptr = vlist_to_pointer(vlistID);
 
   int datatype = vlistptr->vars[0].datatype;
-  if (  datatype== DATATYPE_CPX32 || datatype == DATATYPE_CPX64 )
+  if (  datatype== CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64 )
     number = CDI_COMP;
   else
     number = CDI_REAL;
@@ -63619,7 +65175,7 @@ int vlistNumber(int vlistID)
   for ( int varID = 1; varID < vlistptr->nvars; varID++ )
     {
       datatype = vlistptr->vars[varID].datatype;
-      if ( datatype == DATATYPE_CPX32 || datatype == DATATYPE_CPX64 )
+      if ( datatype == CDI_DATATYPE_CPX32 || datatype == CDI_DATATYPE_CPX64 )
         number2 = CDI_COMP;
       else
         number2 = CDI_REAL;
@@ -63771,7 +65327,8 @@ void vlistPrintKernel(vlist_t *vlistptr, FILE *fp)
               int mlevID = li.mlevelID;
               int index  = li.index;
               int flag   = li.flag;
-              double level  = zaxisInqLevel(zaxisID, levID);
+
+              double level = zaxisInqLevels(zaxisID, NULL) ? zaxisInqLevel(zaxisID, levID) : levID+1;
 
               fprintf(fp, "%6d %6d %6d %6d %6d %6d %6d %6d %5d  %.9g\n",
                       varID, levID, fvarID, flevID, mvarID, mlevID, index,
@@ -64138,17 +65695,17 @@ int vlistSubtypeIndex(int vlistID, int subtypeID)
 
 int vlistHasTime(int vlistID)
 {
-  int hastime = FALSE;
+  bool hastime = false;
   vlist_t *vlistptr = vlist_to_pointer(vlistID);
 
   for ( int varID = 0; varID <  vlistptr->nvars; varID++ )
     if ( vlistptr->vars[varID].tsteptype != TSTEP_CONSTANT )
       {
-        hastime = TRUE;
+        hastime = true;
         break;
       }
 
-  return hastime;
+  return (int)hastime;
 }
 
 enum {
@@ -64166,8 +65723,8 @@ int  vlistGetSizeP ( void * vlistptr, void *context)
 {
   int txsize, varID;
   vlist_t *p = (vlist_t*) vlistptr;
-  txsize = serializeGetSize(vlist_nints, DATATYPE_INT, context);
-  txsize += serializeGetSize(1, DATATYPE_LONG, context);
+  txsize = serializeGetSize(vlist_nints, CDI_DATATYPE_INT, context);
+  txsize += serializeGetSize(1, CDI_DATATYPE_LONG, context);
   txsize += cdiAttsGetSize(p, CDI_GLOBAL, context);
   for ( varID = 0; varID <  p->nvars; varID++ )
     txsize += vlistVarGetPackSize(p, varID, context);
@@ -64187,8 +65744,8 @@ void vlistPackP ( void * vlistptr, void * buf, int size, int *position,
   tempbuf[3] = p->tableID;
   tempbuf[4] = p->instID;
   tempbuf[5] = p->modelID;
-  serializePack(tempbuf, vlist_nints, DATATYPE_INT, buf, size, position, context);
-  serializePack(&p->ntsteps, 1, DATATYPE_LONG, buf, size, position, context);
+  serializePack(tempbuf, vlist_nints, CDI_DATATYPE_INT, buf, size, position, context);
+  serializePack(&p->ntsteps, 1, CDI_DATATYPE_LONG, buf, size, position, context);
 
   cdiAttsPack(p, CDI_GLOBAL, buf, size, position, context);
   for ( varID = 0; varID < p->nvars; varID++ )
@@ -64201,7 +65758,7 @@ void vlistUnpack(char * buf, int size, int *position, int originNamespace,
                  void *context, int force_id)
 {
   int tempbuf[vlist_nints];
-  serializeUnpack(buf, size, position, tempbuf, vlist_nints, DATATYPE_INT, context);
+  serializeUnpack(buf, size, position, tempbuf, vlist_nints, CDI_DATATYPE_INT, context);
   int nvars = tempbuf[1];
   int targetID = namespaceAdaptKey(tempbuf[0], originNamespace);
   vlist_t *p = vlist_new_entry(force_id?targetID:CDI_UNDEFID);
@@ -64213,7 +65770,7 @@ void vlistUnpack(char * buf, int size, int *position, int originNamespace,
   p->tableID = tempbuf[3];
   p->instID = namespaceAdaptKey(tempbuf[4], originNamespace);
   p->modelID = namespaceAdaptKey(tempbuf[5], originNamespace);
-  serializeUnpack(buf, size, position, &p->ntsteps, 1, DATATYPE_LONG, context);
+  serializeUnpack(buf, size, position, &p->ntsteps, 1, CDI_DATATYPE_LONG, context);
   cdiAttsUnpack(targetID, CDI_GLOBAL, buf, size, position, context);
   for (int varID = 0; varID < nvars; varID++ )
     vlistVarUnpack(targetID, buf, size, position, originNamespace, context);
@@ -64259,7 +65816,7 @@ void resize_opt_grib_entries(var_t *var, int nentries)
       for (i=var->opt_grib_kvpair_size; i<new_size; i++) {
         tmp[i].int_val =     0;
         tmp[i].dbl_val =     0;
-        tmp[i].update  = FALSE;
+        tmp[i].update  = false;
         tmp[i].keyword =  NULL;
       } // for
       var->opt_grib_kvpair_size = new_size;
@@ -64557,17 +66114,17 @@ int cdi_inq_att(int indtype, int cdiID, int varID, const char *name, size_t mxsz
 }
 
 
-int cdiCopyVarAtts(int cdiID1, int varID_1, int cdiID2, int varID_2)
+int cdiCopyAtts(int cdiID1, int varID1, int cdiID2, int varID2)
 {
   int status = CDI_NOERR;
 
-  cdi_atts_t *attsp1 = cdi_get_attsp(cdiID1, varID_1);
+  cdi_atts_t *attsp1 = cdi_get_attsp(cdiID1, varID1);
   xassert(attsp1 != NULL);
 
   for ( int attid = 0; attid < (int)attsp1->nelems; attid++ )
     {
       cdi_att_t *attp = &(attsp1->value[attid]);
-      cdi_def_att(attp->indtype, attp->exdtype, cdiID2, varID_2, attp->name, attp->nelems, attp->xsz, attp->xvalue);
+      cdi_def_att(attp->indtype, attp->exdtype, cdiID2, varID2, attp->name, attp->nelems, attp->xsz, attp->xvalue);
     }
 
   return status;
@@ -64583,7 +66140,7 @@ int cdiCopyVarAtts(int cdiID1, int varID_1, int cdiID2, int varID_2)
     @Item  cdiID    CDI ID, from a previous call to @fref{vlistCreate} or @fref{gridCreate}.
     @Item  varID    Variable identifier, or @func{CDI_GLOBAL} for a global attribute.
     @Item  name     Attribute name.
-    @Item  type     External data type (@func{DATATYPE_INT16} or @func{DATATYPE_INT32}).
+    @Item  type     External data type (@func{CDI_DATATYPE_INT16} or @func{CDI_DATATYPE_INT32}).
     @Item  len      Number of values provided for the attribute.
     @Item  ip       Pointer to one or more integer values.
 
@@ -64594,7 +66151,7 @@ The function @func{cdiDefAttInt} defines an integer attribute.
 */
 int cdiDefAttInt(int cdiID, int varID, const char *name, int type, int len, const int *ip)
 {
-  return cdi_def_att(DATATYPE_INT, type, cdiID, varID, name, (size_t)len, (size_t)len * sizeof(int), ip);
+  return cdi_def_att(CDI_DATATYPE_INT, type, cdiID, varID, name, (size_t)len, (size_t)len * sizeof(int), ip);
 }
 
 /*
@@ -64607,7 +66164,7 @@ int cdiDefAttInt(int cdiID, int varID, const char *name, int type, int len, cons
     @Item  cdiID    CDI ID, from a previous call to @fref{vlistCreate} or @fref{gridCreate}.
     @Item  varID    Variable identifier, or @func{CDI_GLOBAL} for a global attribute.
     @Item  name     Attribute name.
-    @Item  type     External data type (@func{DATATYPE_FLT32} or @func{DATATYPE_FLT64}).
+    @Item  type     External data type (@func{CDI_DATATYPE_FLT32} or @func{CDI_DATATYPE_FLT64}).
     @Item  len      Number of values provided for the attribute.
     @Item  dp       Pointer to one or more floating point values.
 
@@ -64618,7 +66175,7 @@ The function @func{cdiDefAttFlt} defines a floating point attribute.
 */
 int cdiDefAttFlt(int cdiID, int varID, const char *name, int type, int len, const double *dp)
 {
-  return cdi_def_att(DATATYPE_FLT, type, cdiID, varID, name, (size_t)len, (size_t)len * sizeof(double), dp);
+  return cdi_def_att(CDI_DATATYPE_FLT, type, cdiID, varID, name, (size_t)len, (size_t)len * sizeof(double), dp);
 }
 
 /*
@@ -64641,7 +66198,7 @@ The function @func{cdiDefAttTxt} defines a text attribute.
 */
 int cdiDefAttTxt(int cdiID, int varID, const char *name, int len, const char *tp)
 {
-  return cdi_def_att(DATATYPE_TXT, DATATYPE_TXT, cdiID, varID, name, (size_t)len, (size_t)len, tp);
+  return cdi_def_att(CDI_DATATYPE_TXT, CDI_DATATYPE_TXT, cdiID, varID, name, (size_t)len, (size_t)len, tp);
 }
 
 /*
@@ -64663,7 +66220,7 @@ The function @func{cdiInqAttInt} gets the values(s) of an integer attribute.
 */
 int cdiInqAttInt(int cdiID, int varID, const char *name, int mlen, int *ip)
 {
-  return cdi_inq_att(DATATYPE_INT, cdiID, varID, name, (size_t)mlen * sizeof(int), ip);
+  return cdi_inq_att(CDI_DATATYPE_INT, cdiID, varID, name, (size_t)mlen * sizeof(int), ip);
 }
 
 /*
@@ -64685,7 +66242,7 @@ The function @func{cdiInqAttFlt} gets the values(s) of a floating point attribut
 */
 int cdiInqAttFlt(int cdiID, int varID, const char *name, int mlen, double *dp)
 {
-  return cdi_inq_att(DATATYPE_FLT, cdiID, varID, name, (size_t)mlen * sizeof(double), dp);
+  return cdi_inq_att(CDI_DATATYPE_FLT, cdiID, varID, name, (size_t)mlen * sizeof(double), dp);
 }
 
 /*
@@ -64707,7 +66264,7 @@ The function @func{cdiInqAttTxt} gets the values(s) of a text attribute.
 */
 int cdiInqAttTxt(int cdiID, int varID, const char *name, int mlen, char *tp)
 {
-  return cdi_inq_att(DATATYPE_TXT, cdiID, varID, name, (size_t)mlen * sizeof(char), tp);
+  return cdi_inq_att(CDI_DATATYPE_TXT, cdiID, varID, name, (size_t)mlen * sizeof(char), tp);
 }
 
 enum {
@@ -64720,11 +66277,11 @@ int cdiAttTypeLookup(cdi_att_t *attp)
   int type;
   switch (attp->indtype)
   {
-  case DATATYPE_FLT:
-    type = DATATYPE_FLT64;
+  case CDI_DATATYPE_FLT:
+    type = CDI_DATATYPE_FLT64;
     break;
-  case DATATYPE_INT:
-  case DATATYPE_TXT:
+  case CDI_DATATYPE_INT:
+  case CDI_DATATYPE_TXT:
     type = attp->indtype;
     break;
   default:
@@ -64768,8 +66325,8 @@ int cdiAttGetSize(vlist_t *vlistptr, int varID, int attnum, void *context)
   xassert(attsp = get_attsp(vlistptr, varID));
   xassert(attnum >= 0 && attnum < (int)attsp->nelems);
   attp = &(attsp->value[attnum]);
-  int txsize = serializeGetSize(cdi_att_nints, DATATYPE_INT, context)
-    + serializeGetSize((int)attp->namesz, DATATYPE_TXT, context);
+  int txsize = serializeGetSize(cdi_att_nints, CDI_DATATYPE_INT, context)
+    + serializeGetSize((int)attp->namesz, CDI_DATATYPE_TXT, context);
   txsize += serializeGetSize((int)attp->nelems, cdiAttTypeLookup(attp), context);
   return txsize;
 }
@@ -64779,7 +66336,7 @@ int cdiAttsGetSize(void *vp, int varID, void *context)
 {
   vlist_t *p = (vlist_t*) vp;
   cdi_atts_t *attsp = get_attsp(p, varID);
-  int txsize = serializeGetSize(1, DATATYPE_INT, context);
+  int txsize = serializeGetSize(1, CDI_DATATYPE_INT, context);
   size_t numAtts = attsp->nelems;
   for (size_t i = 0; i < numAtts; ++i)
     txsize += cdiAttGetSize(p, varID, (int)i, context);
@@ -64801,8 +66358,8 @@ void cdiAttPack(vlist_t *vlistptr, int varID, int attnum,
   tempbuf[1] = attp->exdtype;
   tempbuf[2] = attp->indtype;
   tempbuf[3] = (int)attp->nelems;
-  serializePack(tempbuf, cdi_att_nints, DATATYPE_INT, buf, size, position, context);
-  serializePack(attp->name, (int)attp->namesz, DATATYPE_TXT, buf, size, position, context);
+  serializePack(tempbuf, cdi_att_nints, CDI_DATATYPE_INT, buf, size, position, context);
+  serializePack(attp->name, (int)attp->namesz, CDI_DATATYPE_TXT, buf, size, position, context);
   serializePack(attp->xvalue, (int)attp->nelems, cdiAttTypeLookup(attp),
                 buf, size, position, context);
 }
@@ -64815,7 +66372,7 @@ void cdiAttsPack(void *vp, int varID, void *buf, int size, int *position, void *
   size_t numAtts = attsp->nelems;
   int numAttsI = (int)numAtts;
   xassert(numAtts <= INT_MAX);
-  serializePack(&numAttsI, 1, DATATYPE_INT, buf, size, position, context);
+  serializePack(&numAttsI, 1, CDI_DATATYPE_INT, buf, size, position, context);
   for (size_t i = 0; i < numAtts; ++i)
     cdiAttPack(p, varID, (int)i, buf, size, position, context);
 }
@@ -64826,24 +66383,24 @@ void cdiAttUnpack(int cdiID, int varID, void *buf, int size, int *position, void
   int tempbuf[cdi_att_nints];
 
   serializeUnpack(buf, size, position,
-                  tempbuf, cdi_att_nints, DATATYPE_INT, context);
+                  tempbuf, cdi_att_nints, CDI_DATATYPE_INT, context);
   char *attName = (char *) Malloc((size_t)tempbuf[0] + 1);
-  serializeUnpack(buf, size, position, attName, tempbuf[0], DATATYPE_TXT, context);
+  serializeUnpack(buf, size, position, attName, tempbuf[0], CDI_DATATYPE_TXT, context);
   attName[tempbuf[0]] = '\0';
   int attVDt;
   size_t elemSize;
   switch (tempbuf[2])
   {
-  case DATATYPE_FLT:
-    attVDt = DATATYPE_FLT64;
+  case CDI_DATATYPE_FLT:
+    attVDt = CDI_DATATYPE_FLT64;
     elemSize = sizeof(double);
     break;
-  case DATATYPE_INT:
-    attVDt = DATATYPE_INT;
+  case CDI_DATATYPE_INT:
+    attVDt = CDI_DATATYPE_INT;
     elemSize = sizeof(int);
     break;
-  case DATATYPE_TXT:
-    attVDt = DATATYPE_TXT;
+  case CDI_DATATYPE_TXT:
+    attVDt = CDI_DATATYPE_TXT;
     elemSize = 1;
     break;
   default:
@@ -64862,7 +66419,7 @@ void cdiAttUnpack(int cdiID, int varID, void *buf, int size, int *position, void
 void cdiAttsUnpack(int cdiID, int varID, void *buf, int size, int *position, void *context)
 {
   int numAtts;
-  serializeUnpack(buf, size, position, &numAtts, 1, DATATYPE_INT, context);
+  serializeUnpack(buf, size, position, &numAtts, 1, CDI_DATATYPE_INT, context);
   for ( int i = 0; i < numAtts; ++i )
     cdiAttUnpack(cdiID, varID, buf, size, position, context);
 }
@@ -64910,7 +66467,7 @@ void vlistvarInitEntry(int vlistID, int varID)
   vlistptr->vars[varID].instID        = CDI_UNDEFID;
   vlistptr->vars[varID].modelID       = CDI_UNDEFID;
   vlistptr->vars[varID].tableID       = CDI_UNDEFID;
-  vlistptr->vars[varID].missvalused   = FALSE;
+  vlistptr->vars[varID].missvalused   = false;
   vlistptr->vars[varID].missval       = cdiDefaultMissval;
   vlistptr->vars[varID].addoffset     = 0.0;
   vlistptr->vars[varID].scalefactor   = 1.0;
@@ -64924,7 +66481,7 @@ void vlistvarInitEntry(int vlistID, int varID)
   vlistptr->vars[varID].complevel     = 1;
   vlistptr->vars[varID].atts.nalloc   = MAX_ATTRIBUTES;
   vlistptr->vars[varID].atts.nelems   = 0;
-  vlistptr->vars[varID].lvalidrange   = 0;
+  vlistptr->vars[varID].lvalidrange   = false;
   vlistptr->vars[varID].validrange[0] = VALIDMISS;
   vlistptr->vars[varID].validrange[1] = VALIDMISS;
   vlistptr->vars[varID].ensdata       = NULL;
@@ -65614,9 +67171,9 @@ The function @func{vlistInqVarDatatype} returns the data type of a variable.
 
 @Result
 @func{vlistInqVarDatatype} returns an identifier to the data type of the variable.
-The valid CDI data types are @func{DATATYPE_PACK8}, @func{DATATYPE_PACK16}, @func{DATATYPE_PACK24},
- at func{DATATYPE_FLT32}, @func{DATATYPE_FLT64}, @func{DATATYPE_INT8}, @func{DATATYPE_INT16} and 
- at func{DATATYPE_INT32}.
+The valid CDI data types are @func{CDI_DATATYPE_PACK8}, @func{CDI_DATATYPE_PACK16}, @func{CDI_DATATYPE_PACK24},
+ at func{CDI_DATATYPE_FLT32}, @func{CDI_DATATYPE_FLT64}, @func{CDI_DATATYPE_INT8}, @func{CDI_DATATYPE_INT16} and 
+ at func{CDI_DATATYPE_INT32}.
 
 @EndFunction
 */
@@ -65637,8 +67194,8 @@ int vlistInqVarNumber(int vlistID, int varID)
   vlistCheckVarID(__func__, vlistID, varID);
 
   int number = CDI_REAL;
-  if ( vlistptr->vars[varID].datatype == DATATYPE_CPX32 ||
-       vlistptr->vars[varID].datatype == DATATYPE_CPX64 )
+  if ( vlistptr->vars[varID].datatype == CDI_DATATYPE_CPX32 ||
+       vlistptr->vars[varID].datatype == CDI_DATATYPE_CPX64 )
     number = CDI_COMP;
 
   return number;
@@ -65653,9 +67210,9 @@ int vlistInqVarNumber(int vlistID, int varID)
     @Item  vlistID  Variable list ID, from a previous call to @fref{vlistCreate}.
     @Item  varID    Variable identifier.
     @Item  datatype The data type identifier.
-                    The valid CDI data types are @func{DATATYPE_PACK8}, @func{DATATYPE_PACK16},
-                    @func{DATATYPE_PACK24}, @func{DATATYPE_FLT32}, @func{DATATYPE_FLT64},
-                    @func{DATATYPE_INT8}, @func{DATATYPE_INT16} and @func{DATATYPE_INT32}.
+                    The valid CDI data types are @func{CDI_DATATYPE_PACK8}, @func{CDI_DATATYPE_PACK16},
+                    @func{CDI_DATATYPE_PACK24}, @func{CDI_DATATYPE_FLT32}, @func{CDI_DATATYPE_FLT64},
+                    @func{CDI_DATATYPE_INT8}, @func{CDI_DATATYPE_INT16} and @func{CDI_DATATYPE_INT32}.
 
 @Description
 The function @func{vlistDefVarDatatype} defines the data type of a variable.
@@ -65672,15 +67229,15 @@ void vlistDefVarDatatype(int vlistID, int varID, int datatype)
     {
       vlistptr->vars[varID].datatype = datatype;
 
-      if ( vlistptr->vars[varID].missvalused == FALSE )
+      if ( !vlistptr->vars[varID].missvalused )
         switch (datatype)
           {
-          case DATATYPE_INT8:   vlistptr->vars[varID].missval = -SCHAR_MAX; break;
-          case DATATYPE_UINT8:  vlistptr->vars[varID].missval =  UCHAR_MAX; break;
-          case DATATYPE_INT16:  vlistptr->vars[varID].missval = -SHRT_MAX;  break;
-          case DATATYPE_UINT16: vlistptr->vars[varID].missval =  USHRT_MAX; break;
-          case DATATYPE_INT32:  vlistptr->vars[varID].missval = -INT_MAX;   break;
-          case DATATYPE_UINT32: vlistptr->vars[varID].missval =  UINT_MAX;  break;
+          case CDI_DATATYPE_INT8:   vlistptr->vars[varID].missval = -SCHAR_MAX; break;
+          case CDI_DATATYPE_UINT8:  vlistptr->vars[varID].missval =  UCHAR_MAX; break;
+          case CDI_DATATYPE_INT16:  vlistptr->vars[varID].missval = -SHRT_MAX;  break;
+          case CDI_DATATYPE_UINT16: vlistptr->vars[varID].missval =  USHRT_MAX; break;
+          case CDI_DATATYPE_INT32:  vlistptr->vars[varID].missval = -INT_MAX;   break;
+          case CDI_DATATYPE_UINT32: vlistptr->vars[varID].missval =  UINT_MAX;  break;
           }
       reshSetStatus(vlistID, &vlistOps, RESH_DESYNC_IN_USE);
     }
@@ -65932,7 +67489,7 @@ void vlistDefVarMissval(int vlistID, int varID, double missval)
   vlistCheckVarID(__func__, vlistID, varID);
 
   vlistptr->vars[varID].missval = missval;
-  vlistptr->vars[varID].missvalused = TRUE;
+  vlistptr->vars[varID].missvalused = true;
 }
 
 /*
@@ -66017,7 +67574,7 @@ int vlistInqVarValidrange(int vlistID, int varID, double *validrange)
       validrange[1] = vlistptr->vars[varID].validrange[1];
     }
 
-  return vlistptr->vars[varID].lvalidrange;
+  return (int)vlistptr->vars[varID].lvalidrange;
 }
 
 
@@ -66029,7 +67586,7 @@ void vlistDefVarValidrange(int vlistID, int varID, const double *validrange)
 
   vlistptr->vars[varID].validrange[0] = validrange[0];
   vlistptr->vars[varID].validrange[1] = validrange[1];
-  vlistptr->vars[varID].lvalidrange = TRUE;
+  vlistptr->vars[varID].lvalidrange = true;
   reshSetStatus(vlistID, &vlistOps, RESH_DESYNC_IN_USE);
 }
 
@@ -66246,7 +67803,7 @@ void vlistDestroyVarUnits(int vlistID, int varID)
 int vlistInqVarMissvalUsed(int vlistID, int varID)
 {
   vlist_t *vlistptr = vlist_to_pointer(vlistID);
-  return vlistptr->vars[varID].missvalused;
+  return (int)vlistptr->vars[varID].missvalused;
 }
 
 
@@ -66657,7 +68214,7 @@ void vlistDefVarIntKey(int vlistID, int varID, const char *name, int value)
   if ( idx < vlistptr->vars[varID].opt_grib_nentries )
     {
       vlistptr->vars[varID].opt_grib_kvpair[idx].int_val = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = true;
     }
   else
     {
@@ -66666,7 +68223,7 @@ void vlistDefVarIntKey(int vlistID, int varID, const char *name, int value)
       idx = vlistptr->vars[varID].opt_grib_nentries -1;
       vlistptr->vars[varID].opt_grib_kvpair[idx].data_type   = t_int;
       vlistptr->vars[varID].opt_grib_kvpair[idx].int_val     = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update      = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update      = true;
       if ( name )
         vlistptr->vars[varID].opt_grib_kvpair[idx].keyword = strdupx(name);
       else
@@ -66720,7 +68277,7 @@ void vlistDefVarDblKey(int vlistID, int varID, const char *name, double value)
   if ( idx < vlistptr->vars[varID].opt_grib_nentries )
     {
       vlistptr->vars[varID].opt_grib_kvpair[idx].dbl_val = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = true;
     }
   else
     {
@@ -66729,7 +68286,7 @@ void vlistDefVarDblKey(int vlistID, int varID, const char *name, double value)
       idx = vlistptr->vars[varID].opt_grib_nentries - 1;
       vlistptr->vars[varID].opt_grib_kvpair[idx].data_type = t_double;
       vlistptr->vars[varID].opt_grib_kvpair[idx].dbl_val   = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update    = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update    = true;
       if ( name )
         vlistptr->vars[varID].opt_grib_kvpair[idx].keyword = strdupx(name);
       else
@@ -66862,7 +68419,7 @@ int vlistInqVarIntKey(int vlistID, int varID, const char* name)
 
 void vlistDefVarIOrank(int vlistID, int varID, int iorank)
 {
-  vlist_t *vlistptr = vlist_to_pointer(vlistID );
+  vlist_t *vlistptr = vlist_to_pointer(vlistID);
 
   vlistCheckVarID ( __func__, vlistID, varID );
 
@@ -66940,20 +68497,20 @@ enum {
 int vlistVarGetPackSize(vlist_t *p, int varID, void *context)
 {
   var_t *var = p->vars + varID;
-  int varsize = serializeGetSize(vlistvar_nints, DATATYPE_INT, context)
-    + serializeGetSize(vlistvar_ndbls, DATATYPE_FLT64, context);
+  int varsize = serializeGetSize(vlistvar_nints, CDI_DATATYPE_INT, context)
+    + serializeGetSize(vlistvar_ndbls, CDI_DATATYPE_FLT64, context);
   if (var->name)
-    varsize += serializeGetSize((int)strlen(var->name), DATATYPE_TXT, context);
+    varsize += serializeGetSize((int)strlen(var->name), CDI_DATATYPE_TXT, context);
   if (var->longname)
-    varsize += serializeGetSize((int)strlen(var->longname), DATATYPE_TXT, context);
+    varsize += serializeGetSize((int)strlen(var->longname), CDI_DATATYPE_TXT, context);
   if (var->stdname)
-    varsize += serializeGetSize((int)strlen(var->stdname), DATATYPE_TXT, context);
+    varsize += serializeGetSize((int)strlen(var->stdname), CDI_DATATYPE_TXT, context);
   if (var->units)
-    varsize += serializeGetSize((int)strlen(var->units), DATATYPE_TXT, context);
+    varsize += serializeGetSize((int)strlen(var->units), CDI_DATATYPE_TXT, context);
   if (var->extra)
-    varsize += serializeGetSize((int)strlen(var->extra), DATATYPE_TXT, context);
+    varsize += serializeGetSize((int)strlen(var->extra), CDI_DATATYPE_TXT, context);
   varsize += serializeGetSize(4 * zaxisInqSize(var->zaxisID),
-                              DATATYPE_INT, context);
+                              CDI_DATATYPE_INT, context);
   varsize += cdiAttsGetSize(p, varID, context);
   return varsize;
 }
@@ -66981,7 +68538,7 @@ void vlistVarPack(vlist_t *p, int varID, char * buf, int size, int *position,
   tempbuf[12] = var->tableID;
   tempbuf[13] = var->timave;
   tempbuf[14] = var->timaccu;
-  tempbuf[15] = var->missvalused;
+  tempbuf[15] = (int)var->missvalused;
   tempbuf[16] = var->comptype;
   tempbuf[17] = var->complevel;
   int nlevs = var->levinfo ? zaxisInqSize(var->zaxisID) : 0;
@@ -66991,23 +68548,23 @@ void vlistVarPack(vlist_t *p, int varID, char * buf, int size, int *position,
   dtempbuf[0] = var->missval;
   dtempbuf[1] = var->scalefactor;
   dtempbuf[2] = var->addoffset;
-  serializePack(tempbuf, vlistvar_nints, DATATYPE_INT,
+  serializePack(tempbuf, vlistvar_nints, CDI_DATATYPE_INT,
                 buf, size, position, context);
-  serializePack(dtempbuf, vlistvar_ndbls, DATATYPE_FLT64,
+  serializePack(dtempbuf, vlistvar_ndbls, CDI_DATATYPE_FLT64,
                 buf, size, position, context);
   if (namesz)
-    serializePack(var->name, namesz, DATATYPE_TXT, buf, size, position, context);
+    serializePack(var->name, namesz, CDI_DATATYPE_TXT, buf, size, position, context);
   if (longnamesz)
-    serializePack(var->longname, longnamesz, DATATYPE_TXT,
+    serializePack(var->longname, longnamesz, CDI_DATATYPE_TXT,
                   buf, size, position, context);
   if (stdnamesz)
-    serializePack(var->stdname, stdnamesz, DATATYPE_TXT,
+    serializePack(var->stdname, stdnamesz, CDI_DATATYPE_TXT,
                   buf, size, position, context);
   if (unitssz)
-    serializePack(var->units, unitssz, DATATYPE_TXT,
+    serializePack(var->units, unitssz, CDI_DATATYPE_TXT,
                   buf, size, position, context);
   if (extralen)
-    serializePack(var->extra, extralen, DATATYPE_TXT,
+    serializePack(var->extra, extralen, CDI_DATATYPE_TXT,
                   buf, size, position, context);
   if (nlevs)
     {
@@ -67019,7 +68576,7 @@ void vlistVarPack(vlist_t *p, int varID, char * buf, int size, int *position,
           levbuf[levID][2] = var->levinfo[levID].mlevelID;
           levbuf[levID][3] = var->levinfo[levID].flevelID;
         }
-      serializePack(levbuf, nlevs * 4, DATATYPE_INT,
+      serializePack(levbuf, nlevs * 4, CDI_DATATYPE_INT,
                     buf, size, position, context);
     }
   cdiAttsPack(p, varID, buf, size, position, context);
@@ -67040,9 +68597,9 @@ void vlistVarUnpack(int vlistID, char * buf, int size, int *position,
   char *varname = NULL;
   vlist_t *vlistptr = vlist_to_pointer(vlistID);
   serializeUnpack(buf, size, position,
-                  tempbuf, vlistvar_nints, DATATYPE_INT, context);
+                  tempbuf, vlistvar_nints, CDI_DATATYPE_INT, context);
   serializeUnpack(buf, size, position,
-                  dtempbuf, vlistvar_ndbls, DATATYPE_FLT64, context);
+                  dtempbuf, vlistvar_ndbls, CDI_DATATYPE_FLT64, context);
 
   /* ------------------------------------------- */
   /* NOTE: Tile sets  currently not supported!!! */
@@ -67060,35 +68617,35 @@ void vlistVarUnpack(int vlistID, char * buf, int size, int *position,
   if (tempbuf[4])
   {
     serializeUnpack(buf, size, position,
-                    varname, tempbuf[4], DATATYPE_TXT, context);
+                    varname, tempbuf[4], CDI_DATATYPE_TXT, context);
     varname[tempbuf[4]] = '\0';
     vlistDefVarName(vlistID, newvar, varname);
   }
   if (tempbuf[5])
   {
     serializeUnpack(buf, size, position,
-                    varname, tempbuf[5], DATATYPE_TXT, context);
+                    varname, tempbuf[5], CDI_DATATYPE_TXT, context);
     varname[tempbuf[5]] = '\0';
     vlistDefVarLongname(vlistID, newvar, varname);
   }
   if (tempbuf[6])
   {
     serializeUnpack(buf, size, position,
-                    varname, tempbuf[6], DATATYPE_TXT, context);
+                    varname, tempbuf[6], CDI_DATATYPE_TXT, context);
     varname[tempbuf[6]] = '\0';
     vlistDefVarStdname(vlistID, newvar, varname);
   }
   if (tempbuf[7])
   {
     serializeUnpack(buf, size, position,
-                    varname, tempbuf[7], DATATYPE_TXT, context);
+                    varname, tempbuf[7], CDI_DATATYPE_TXT, context);
     varname[tempbuf[7]] = '\0';
     vlistDefVarUnits(vlistID, newvar, varname);
   }
   if (tempbuf[20])
     {
       serializeUnpack(buf, size, position,
-                      varname, tempbuf[20], DATATYPE_TXT, context);
+                      varname, tempbuf[20], CDI_DATATYPE_TXT, context);
       varname[tempbuf[20]] = '\0';
       vlistDefVarExtra(vlistID, newvar, varname);
     }
@@ -67117,7 +68674,7 @@ void vlistVarUnpack(int vlistID, char * buf, int size, int *position,
       int i, flagSetLev = 0;
       cdiVlistCreateVarLevInfo(vlistptr, newvar);
       serializeUnpack(buf, size, position,
-                      levbuf, nlevs * 4, DATATYPE_INT, context);
+                      levbuf, nlevs * 4, CDI_DATATYPE_INT, context);
       for (i = 0; i < nlevs; ++i)
         {
           vlistDefFlag(vlistID, newvar, i, levbuf[i][0]);
@@ -67166,10 +68723,10 @@ static const struct {
 }
 ZaxistypeEntry[] = {
   { /*  0 */ 0, "sfc",               "surface",                "",               ""},
-  { /*  1 */ 0, "lev",               "generic",                "",               "level"},
+  { /*  1 */ 0, "lev",               "generic",                "",               ""},
   { /*  2 */ 2, "lev",               "hybrid",                 "",               "level"},
   { /*  3 */ 2, "lev",               "hybrid_half",            "",               "level"},
-  { /*  4 */ 2, "lev",               "pressure",               "air_pressure",   "Pa"},
+  { /*  4 */ 2, "plev",              "pressure",               "air_pressure",   "Pa"},
   { /*  5 */ 1, "height",            "height",                 "height",         "m"},
   { /*  6 */ 2, "depth",             "depth_below_sea",        "depth",          "m"},
   { /*  7 */ 2, "depth",             "depth_below_land",       "",               "cm"},
@@ -67191,6 +68748,7 @@ ZaxistypeEntry[] = {
   { /* 23 */ 0, "sedimentbottomtw",  "sediment_bottom_tw",     "",               ""},
   { /* 24 */ 0, "mixlayer",          "mix_layer",              "",               ""},
   { /* 25 */ 0, "height",            "generalized_height",     "height",         ""},
+  { /* 26 */ 0, "character",         "area_type",              "",               ""},
 };
 
 enum {
@@ -67221,28 +68779,34 @@ const resOps *getZaxisOps(void)
 
 static int  ZAXIS_Debug = 0;   /* If set to 1, debugging */
 
-void zaxisGetTypeDescription(int zaxisType, int* outPositive, const char** outName, const char** outLongName, const char** outStdName, const char** outUnit)
+void zaxisGetTypeDescription(int zaxisType, int *outPositive, const char **outName, const char **outLongName, const char **outStdName, const char **outUnit)
 {
-  if(zaxisType < 0 || zaxisType >= CDI_NumZaxistype)
+  if ( zaxisType < 0 || zaxisType >= CDI_NumZaxistype )
     {
-      if(outPositive) *outPositive = 0;
-      if(outName) *outName = NULL;
-      if(outLongName) *outLongName = NULL;
-      if(outStdName) *outStdName = NULL;
-      if(outUnit) *outUnit = NULL;
+      if (outPositive) *outPositive = 0;
+      if (outName) *outName = NULL;
+      if (outLongName) *outLongName = NULL;
+      if (outStdName) *outStdName = NULL;
+      if (outUnit) *outUnit = NULL;
     }
   else
     {
-      if(outPositive) *outPositive = ZaxistypeEntry[zaxisType].positive;
-      if(outName) *outName = ZaxistypeEntry[zaxisType].name;
-      if(outLongName) *outLongName = ZaxistypeEntry[zaxisType].longname;
-      if(outStdName) *outStdName = ZaxistypeEntry[zaxisType].stdname;
-      if(outUnit) *outUnit = ZaxistypeEntry[zaxisType].units;
+      if (outPositive) *outPositive = ZaxistypeEntry[zaxisType].positive;
+      if (outName) *outName = ZaxistypeEntry[zaxisType].name;
+      if (outLongName) *outLongName = ZaxistypeEntry[zaxisType].longname;
+      if (outStdName) *outStdName = ZaxistypeEntry[zaxisType].stdname;
+      if (outUnit) *outUnit = ZaxistypeEntry[zaxisType].units;
     }
 }
 
+
+zaxis_t *zaxis_to_pointer(int id)
+{
+  return (zaxis_t *)reshGetVal(id, &zaxisOps);
+}
+
 static
-void zaxisDefaultValue(zaxis_t *zaxisptr)
+void zaxis_init(zaxis_t *zaxisptr)
 {
   zaxisptr->self          = CDI_UNDEFID;
   zaxisptr->name[0]       = 0;
@@ -67252,7 +68816,11 @@ void zaxisDefaultValue(zaxis_t *zaxisptr)
   zaxisptr->vdimname[0]   = 0;
   zaxisptr->units[0]      = 0;
   zaxisptr->psname[0]     = 0;
+  zaxisptr->p0name[0]     = 0;
+  zaxisptr->p0value.defined = false;
   zaxisptr->vals          = NULL;
+  zaxisptr->cvals         = NULL;
+  zaxisptr->clength       = 0;
   zaxisptr->ubounds       = NULL;
   zaxisptr->lbounds       = NULL;
   zaxisptr->weights       = NULL;
@@ -67273,13 +68841,11 @@ void zaxisDefaultValue(zaxis_t *zaxisptr)
   zaxisptr->atts.nelems   = 0;
 }
 
-
 static
 zaxis_t *zaxisNewEntry(int id)
 {
   zaxis_t *zaxisptr = (zaxis_t *) Malloc(sizeof(zaxis_t));
-
-  zaxisDefaultValue ( zaxisptr );
+  zaxis_init(zaxisptr);
 
   if ( id == CDI_UNDEFID )
     zaxisptr->self = reshPut(zaxisptr, &zaxisOps);
@@ -67292,13 +68858,6 @@ zaxis_t *zaxisNewEntry(int id)
   return zaxisptr;
 }
 
-
-zaxis_t *zaxis_to_pointer(int id)
-{
-  return (zaxis_t *)reshGetVal(id, &zaxisOps);
-}
-
-
 static
 void zaxisInit(void)
 {
@@ -67318,14 +68877,14 @@ void zaxis_copy(zaxis_t *zaxisptr2, zaxis_t *zaxisptr1)
   zaxisptr2->self = zaxisID2;
 }
 
+
 unsigned cdiZaxisCount(void)
 {
   return reshCountType(&zaxisOps);
 }
 
-
-static int
-zaxisCreate_(int zaxistype, int size, int id)
+static
+int zaxisCreate_(int zaxistype, int size, int id)
 {
   zaxis_t *zaxisptr = zaxisNewEntry(id);
 
@@ -67346,12 +68905,6 @@ zaxisCreate_(int zaxistype, int size, int id)
 
   zaxisptr->positive = ZaxistypeEntry[zaxistype].positive;
 
-  double *vals = zaxisptr->vals
-    = (double *) Malloc((size_t)size * sizeof(double));
-
-  for ( int ilev = 0; ilev < size; ilev++ )
-    vals[ilev] = 0.0;
-
   return zaxisID;
 }
 
@@ -67398,18 +68951,25 @@ int zaxisCreate(int zaxistype, int size)
 {
   if ( CDI_Debug ) Message("zaxistype: %d size: %d ", zaxistype, size);
 
-  zaxisInit ();
+  zaxisInit();
+
   return zaxisCreate_(zaxistype, size, CDI_UNDEFID);
 }
 
-
-static void zaxisDestroyKernel( zaxis_t * zaxisptr )
+static
+void zaxisDestroyKernel( zaxis_t * zaxisptr )
 {
   xassert ( zaxisptr );
 
   int id = zaxisptr->self;
 
   if ( zaxisptr->vals )    Free( zaxisptr->vals );
+  if ( zaxisptr->cvals )
+    {
+      for ( int i=0; i<zaxisptr->size; i++)
+        Free(zaxisptr->cvals[i]);
+      Free( zaxisptr->cvals );
+    }
   if ( zaxisptr->lbounds ) Free( zaxisptr->lbounds );
   if ( zaxisptr->ubounds ) Free( zaxisptr->ubounds );
   if ( zaxisptr->weights ) Free( zaxisptr->weights );
@@ -67489,6 +69049,8 @@ void *zaxis_key_to_ptr(zaxis_t *zaxisptr, int key)
     case CDI_KEY_DIMNAME:   keyptr = (void*)zaxisptr->dimname; break;
     case CDI_KEY_VDIMNAME:  keyptr = (void*)zaxisptr->vdimname; break;
     case CDI_KEY_PSNAME:    keyptr = (void*)zaxisptr->psname; break;
+    case CDI_KEY_P0NAME:    keyptr = (void*)zaxisptr->p0name; break;
+    case CDI_KEY_P0VALUE:   keyptr = (void*)&zaxisptr->p0value; break;
     }
 
   return keyptr;
@@ -67571,6 +69133,79 @@ int cdiZaxisInqKeyStr(int zaxisID, int key, int size, char *mesg)
   return 0;
 }
 
+
+/*
+ at Function  cdiZaxisDefKeyFlt
+ at Title     Define a CDI Z-axis floating point value from a key
+
+ at Prototype int cdiZaxisDefKeyFlt(int zaxisID, int key, double value)
+ at Parameter
+    @Item  zaxisID  Z-axis ID, from a previous call to @fref{zaxisCreate}.
+    @Item  key      The key to be searched
+    @Item  value    A double where the data will be read
+
+ at Description
+The function @func{cdiZaxisDefKeyFlt} defines a CDI Z-axis double value from a key.
+
+ at Result
+ at func{cdiZaxisDefKeyFlt} returns 0 if OK and integer value on error.
+
+ at EndFunction
+*/
+int cdiZaxisDefKeyFlt(int zaxisID, int key, double value)
+{
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+
+  zkey_double_t *keyptr = (zkey_double_t*)zaxis_key_to_ptr(zaxisptr, key);
+  if ( keyptr == NULL)
+    {
+      Warning("CDI zaxis double key %d not supported!", key);
+      return -1;
+    }
+
+  keyptr->value = value;
+  keyptr->defined = true;
+
+  reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
+
+  return 0;
+}
+
+/*
+ at Function  cdiZaxisInqKeyFlt
+ at Title     Get a CDI Z-axis floating point value from a key
+
+ at Prototype int cdiZaxisInqKeyFlt(int zaxisID, int key, double *value)
+ at Parameter
+    @Item  zaxisID  Z-axis ID, from a previous call to @fref{zaxisCreate}.
+    @Item  key      The key to be searched.
+    @Item value     The address of a double where the data will be retrieved.
+
+ at Description
+The function @func{cdiZaxisInqKeyFlt} return a CDI Z-axis double value from a key.
+
+ at Result
+ at func{cdiZaxisInqKeyFlt} returns 0 if OK and integer value on error.
+
+ at EndFunction
+*/
+int cdiZaxisInqKeyFlt(int zaxisID, int key, double *value)
+{
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+  zkey_double_t *keyptr = (zkey_double_t*)zaxis_key_to_ptr(zaxisptr, key);
+  if ( keyptr == NULL)
+    {
+      Warning("CDI zaxis double key %d not supported!", key);
+      return -1;
+    }
+
+  if ( !keyptr->defined ) return 1;
+
+  *value = keyptr->value;
+
+  return 0;
+}
+
 /*
 @Function  zaxisDefName
 @Title     Define the name of a Z-axis
@@ -67718,7 +69353,7 @@ void zaxisDefPrec(int zaxisID, int prec)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  if (zaxisptr->prec != prec)
+  if ( zaxisptr->prec != prec )
     {
       zaxisptr->prec = prec;
       reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
@@ -67790,7 +69425,7 @@ void zaxisDefLtype2(int zaxisID, int ltype2)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  if (zaxisptr->ltype2 != ltype2)
+  if ( zaxisptr->ltype2 != ltype2 )
     {
       zaxisptr->ltype2 = ltype2;
       reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
@@ -67821,14 +69456,40 @@ The function @func{zaxisDefLevels} defines the levels of a Z-axis.
 void zaxisDefLevels(int zaxisID, const double *levels)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+  size_t size = (size_t)zaxisptr->size;
 
-  int size = zaxisptr->size;
-  double *vals = zaxisptr->vals;
+  if ( levels )
+    {
+      if ( zaxisptr->vals == NULL )
+        zaxisptr->vals = (double*) Malloc(size*sizeof(double));
 
-  for (int ilev = 0; ilev < size; ilev++ )
-    vals[ilev] = levels[ilev];
+      double *vals = zaxisptr->vals;
 
-  reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
+      for ( size_t ilev = 0; ilev < size; ++ilev )
+        vals[ilev] = levels[ilev];
+
+      reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
+    }
+}
+
+
+void zaxisDefCvals(int zaxisID, const char **cvals, size_t clen)
+{
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+  size_t size = (size_t)zaxisptr->size;
+
+  if ( cvals && clen )
+    {
+      zaxisptr->clength = clen;
+      zaxisptr->cvals = (char**) Malloc(size*sizeof(char *));
+
+      for ( size_t ilev = 0; ilev < size; ++ilev )
+        {
+          zaxisptr->cvals[ilev] = Malloc(clen*sizeof(char));
+          memcpy(zaxisptr->cvals[ilev],cvals[ilev], clen*sizeof(char));
+        }
+      reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
+    }
 }
 
 /*
@@ -67849,8 +69510,14 @@ The function @func{zaxisDefLevel} defines one level of a Z-axis.
 void zaxisDefLevel(int zaxisID, int levelID, double level)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
-  if ( levelID >= 0 && levelID < zaxisptr->size )
+  int size = zaxisptr->size;
+
+  if ( zaxisptr->vals == NULL )
+    zaxisptr->vals = (double*) Malloc((size_t)size*sizeof(double));
+
+  if ( levelID >= 0 && levelID < size )
     zaxisptr->vals[levelID] = level;
+
   reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
 }
 
@@ -67981,31 +69648,33 @@ double zaxisInqLevel(int zaxisID, int levelID)
   double level = 0;
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  if ( levelID >= 0 && levelID < zaxisptr->size )
+  if ( zaxisptr->vals && levelID >= 0 && levelID < zaxisptr->size )
     level = zaxisptr->vals[levelID];
 
   return level;
 }
 
-double zaxisInqLbound(int zaxisID, int index)
+
+double zaxisInqLbound(int zaxisID, int levelID)
 {
   double level = 0;
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  if ( zaxisptr->lbounds && ( index >= 0 && index < zaxisptr->size ) )
-      level = zaxisptr->lbounds[index];
+  if ( zaxisptr->lbounds && levelID >= 0 && levelID < zaxisptr->size )
+    level = zaxisptr->lbounds[levelID];
 
   return level;
 }
 
 
-double zaxisInqUbound(int zaxisID, int index)
+double zaxisInqUbound(int zaxisID, int levelID)
 {
   double level = 0;
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  if ( zaxisptr->ubounds && ( index >= 0 && index < zaxisptr->size ) )
-    level = zaxisptr->ubounds[index];
+  if ( zaxisptr->ubounds && levelID >= 0 && levelID < zaxisptr->size )
+    level = zaxisptr->ubounds[levelID];
+
   return level;
 }
 
@@ -68016,6 +69685,15 @@ const double *zaxisInqLevelsPtr(int zaxisID)
   return zaxisptr->vals;
 }
 
+
+char **zaxisInqCValsPtr(int zaxisID)
+{
+  char **cvals = NULL;
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+  cvals = zaxisptr->cvals;
+  return cvals;
+}
+
 /*
 @Function  zaxisInqLevels
 @Title     Get all levels of a Z-axis
@@ -68033,12 +69711,55 @@ The function @func{zaxisInqLevels} returns all levels of a Z-axis.
 @func{zaxisInqLevels} saves all levels to the parameter @func{levels}.
 @EndFunction
 */
-void zaxisInqLevels(int zaxisID, double *levels)
+int zaxisInqLevels(int zaxisID, double *levels)
 {
+  int size = 0;
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
-  int size = zaxisptr->size;
-  for (int i = 0; i < size; i++ )
-    levels[i] =  zaxisptr->vals[i];
+
+  if ( zaxisptr->vals )
+    {
+      size = zaxisptr->size;
+
+      if ( levels )
+        for ( int i = 0; i < size; i++ )
+          levels[i] = zaxisptr->vals[i];
+    }
+
+  return size;
+}
+
+int zaxisInqCLen(int zaxisID)
+{
+  int size = 0;
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+
+  if ( zaxisptr->cvals && zaxisptr->clength)
+    size = zaxisptr->clength;
+  return size;
+}
+
+int zaxisInqCVals(int zaxisID, char ***clevels)
+{
+  int size = 0;
+  size_t clen = 0;
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+
+  if ( zaxisptr->cvals )
+    {
+      size = zaxisptr->size;
+      clen = zaxisptr->clength;
+      if ( size && clen )
+        {
+          (*clevels) = Malloc(size*sizeof(char*));
+          for ( int i = 0; i < size; i++ )
+            {
+              (*clevels)[i] = Malloc(clen*sizeof(char));
+              memcpy((*clevels)[i], zaxisptr->cvals[i], clen*sizeof(char));
+            }
+          }
+    }
+
+  return size;
 }
 
 
@@ -68052,8 +69773,8 @@ int zaxisInqLbounds(int zaxisID, double *lbounds)
       size = zaxisptr->size;
 
       if ( lbounds )
-        for (int i = 0; i < size; i++ )
-          lbounds[i] =  zaxisptr->lbounds[i];
+        for ( int i = 0; i < size; i++ )
+          lbounds[i] = zaxisptr->lbounds[i];
     }
 
   return size;
@@ -68070,8 +69791,8 @@ int zaxisInqUbounds(int zaxisID, double *ubounds)
       size = zaxisptr->size;
 
       if ( ubounds )
-        for (int i = 0; i < size; i++ )
-          ubounds[i] =  zaxisptr->ubounds[i];
+        for ( int i = 0; i < size; i++ )
+          ubounds[i] = zaxisptr->ubounds[i];
     }
 
   return size;
@@ -68089,7 +69810,7 @@ int zaxisInqWeights(int zaxisID, double *weights)
 
       if ( weights )
         for ( int i = 0; i < size; i++ )
-          weights[i] =  zaxisptr->weights[i];
+          weights[i] = zaxisptr->weights[i];
     }
 
   return size;
@@ -68101,13 +69822,17 @@ int zaxisInqLevelID(int zaxisID, double level)
   int levelID = CDI_UNDEFID;
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  int size = zaxisptr->size;
-  for ( int i = 0; i < size; i++ )
-    if ( fabs(level-zaxisptr->vals[i]) < DBL_EPSILON )
-      {
-        levelID = i;
-        break;
-      }
+  if ( zaxisptr->vals )
+    {
+      int size = zaxisptr->size;
+
+      for ( int i = 0; i < size; i++ )
+        if ( fabs(level-zaxisptr->vals[i]) < DBL_EPSILON )
+          {
+            levelID = i;
+            break;
+          }
+    }
 
   return levelID;
 }
@@ -68170,7 +69895,7 @@ void cdiCheckZaxis(int zaxisID)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
-  if ( zaxisInqType(zaxisID) == ZAXIS_GENERIC )
+  if ( zaxisInqType(zaxisID) == ZAXIS_GENERIC && zaxisptr->vals )
     {
       int size = zaxisptr->size;
       if ( size > 1 )
@@ -68308,19 +70033,18 @@ void zaxisResize(int zaxisID, int size)
   zaxisptr->size = size;
 
   if ( zaxisptr->vals )
-    zaxisptr->vals = (double *) Realloc(zaxisptr->vals, (size_t)size * sizeof(double));
+    zaxisptr->vals = (double *) Realloc(zaxisptr->vals, (size_t)size*sizeof(double));
 }
 
 
 int zaxisDuplicate(int zaxisID)
 {
-  int zaxisIDnew;
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
 
   int zaxistype = zaxisInqType(zaxisID);
   int zaxissize = zaxisInqSize(zaxisID);
 
-  zaxisIDnew = zaxisCreate(zaxistype, zaxissize);
+  int zaxisIDnew = zaxisCreate(zaxistype, zaxissize);
   zaxis_t *zaxisptrnew = zaxis_to_pointer(zaxisIDnew);
 
   zaxis_copy(zaxisptrnew, zaxisptr);
@@ -68329,10 +70053,9 @@ int zaxisDuplicate(int zaxisID)
   strcpy(zaxisptrnew->longname, zaxisptr->longname);
   strcpy(zaxisptrnew->units, zaxisptr->units);
 
-  if ( zaxisptr->vals != NULL )
+  if ( zaxisptr->vals )
     {
       size_t size = (size_t)zaxissize;
-
       zaxisptrnew->vals = (double *) Malloc(size * sizeof (double));
       memcpy(zaxisptrnew->vals, zaxisptr->vals, size * sizeof (double));
     }
@@ -68340,7 +70063,6 @@ int zaxisDuplicate(int zaxisID)
   if ( zaxisptr->lbounds )
     {
       size_t size = (size_t)zaxissize;
-
       zaxisptrnew->lbounds = (double *) Malloc(size * sizeof (double));
       memcpy(zaxisptrnew->lbounds, zaxisptr->lbounds, size * sizeof(double));
     }
@@ -68348,15 +70070,13 @@ int zaxisDuplicate(int zaxisID)
   if ( zaxisptr->ubounds )
     {
       size_t size = (size_t)zaxissize;
-
       zaxisptrnew->ubounds = (double *) Malloc(size * sizeof (double));
       memcpy(zaxisptrnew->ubounds, zaxisptr->ubounds, size * sizeof (double));
     }
 
-  if ( zaxisptr->vct != NULL )
+  if ( zaxisptr->vct )
     {
       size_t size = (size_t)zaxisptr->vctsize;
-
       if ( size )
         {
           zaxisptrnew->vctsize = (int)size;
@@ -68368,26 +70088,20 @@ int zaxisDuplicate(int zaxisID)
   return zaxisIDnew;
 }
 
-
 static
-void zaxisPrintKernel(zaxis_t *zaxisptr, int index, FILE *fp)
+void zaxisPrintKernel(zaxis_t *zaxisptr, FILE *fp)
 {
-  unsigned char uuid[CDI_UUID_SIZE];
-
   xassert(zaxisptr);
 
   int zaxisID = zaxisptr->self;
-
   int type    = zaxisptr->type;
   int nlevels = zaxisptr->size;
   int prec    = zaxisptr->prec;
 
-  int dig = (prec == DATATYPE_FLT64) ? 15 : 7;
+  int dig = (prec == CDI_DATATYPE_FLT64) ? 15 : 7;
 
+  int nbyte;
   int nbyte0 = 0;
-  fprintf(fp, "#\n");
-  fprintf(fp, "# zaxisID %d\n", index);
-  fprintf(fp, "#\n");
   fprintf(fp, "zaxistype = %s\n", zaxisNamePtr(type));
   fprintf(fp, "size      = %d\n", nlevels);
   if ( nlevels == 1 )
@@ -68399,19 +70113,37 @@ void zaxisPrintKernel(zaxis_t *zaxisptr, int index, FILE *fp)
   if ( zaxisptr->longname[0] ) fprintf(fp, "longname  = %s\n", zaxisptr->longname);
   if ( zaxisptr->units[0]    ) fprintf(fp, "units     = %s\n", zaxisptr->units);
 
-  nbyte0 = fprintf(fp, "levels    = ");
-  int nbyte = nbyte0;
-  for ( int levelID = 0; levelID < nlevels; levelID++ )
+  if ( zaxisptr->vals )
     {
-      if ( nbyte > 80 )
-	{
-	  fprintf(fp, "\n");
-	  fprintf(fp, "%*s", nbyte0, "");
-	  nbyte = nbyte0;
-	}
-      nbyte += fprintf(fp, "%.*g ", dig, zaxisptr->vals[levelID]);
+      nbyte0 = fprintf(fp, "levels    = ");
+      nbyte = nbyte0;
+      for ( int levelID = 0; levelID < nlevels; levelID++ )
+        {
+          if ( nbyte > 80 )
+            {
+              fprintf(fp, "\n");
+              fprintf(fp, "%*s", nbyte0, "");
+              nbyte = nbyte0;
+            }
+          nbyte += fprintf(fp, "%.*g ", dig, zaxisptr->vals[levelID]);
+        }
+      fprintf(fp, "\n");
+    }
+
+  if ( zaxisptr->cvals )
+    {
+      dig = prec;
+      nbyte0 = fprintf(fp, "types     = ");
+      nbyte = nbyte0;
+      for ( int levelID = 0; levelID < nlevels; levelID++ )
+        {
+          fprintf(fp, "\n");
+          fprintf(fp, "%*s", nbyte0, "");
+          nbyte = nbyte0;
+          nbyte += fprintf(fp, "%.*s [%d]", dig, zaxisptr->cvals[levelID], levelID+1);
+        }
+      fprintf(fp, "\n");
     }
-  fprintf(fp, "\n");
 
   if ( zaxisptr->lbounds && zaxisptr->ubounds )
     {
@@ -68482,6 +70214,7 @@ void zaxisPrintKernel(zaxis_t *zaxisptr, int index, FILE *fp)
 
   if ( type == ZAXIS_REFERENCE )
     {
+      unsigned char uuid[CDI_UUID_SIZE];
       zaxisInqUUID(zaxisID, uuid);
       if ( *uuid )
         {
@@ -68494,22 +70227,21 @@ void zaxisPrintKernel(zaxis_t *zaxisptr, int index, FILE *fp)
 }
 
 
-void zaxisPrint ( int zaxisID, int index )
+void zaxisPrint(int zaxisID)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
-
-  zaxisPrintKernel ( zaxisptr, index, stdout );
+  zaxisPrintKernel(zaxisptr, stdout);
 }
 
 
 static
-void zaxisPrintP ( void * voidptr, FILE * fp )
+void zaxisPrintP(void * voidptr, FILE * fp)
 {
   zaxis_t *zaxisptr = ( zaxis_t * ) voidptr;
 
   xassert ( zaxisptr );
 
-  zaxisPrintKernel(zaxisptr, zaxisptr->self, fp);
+  zaxisPrintKernel(zaxisptr, fp);
 }
 
 
@@ -68538,7 +70270,7 @@ int zaxisCompareP(zaxis_t *z1, zaxis_t *z2)
   if (!diff && present)
     {
       const double *p = z1->vals, *q = z2->vals;
-      for (int i = 0; i < size; i++)
+      for ( int i = 0; i < size; i++ )
         diff |= IS_NOT_EQUAL(p[i], q[i]);
     }
 
@@ -68548,7 +70280,7 @@ int zaxisCompareP(zaxis_t *z1, zaxis_t *z2)
   if (!diff && present)
     {
       const double *p = z1->lbounds, *q = z2->lbounds;
-      for (int i = 0; i < size; i++)
+      for ( int i = 0; i < size; i++ )
         diff |= IS_NOT_EQUAL(p[i], q[i]);
     }
 
@@ -68558,7 +70290,7 @@ int zaxisCompareP(zaxis_t *z1, zaxis_t *z2)
   if (!diff && present)
     {
       const double *p = z1->ubounds, *q = z2->ubounds;
-      for (int i = 0; i < size; ++i)
+      for ( int i = 0; i < size; ++i )
         diff |= IS_NOT_EQUAL(p[i], q[i]);
     }
 
@@ -68568,7 +70300,7 @@ int zaxisCompareP(zaxis_t *z1, zaxis_t *z2)
   if (!diff && present)
     {
       const double *p = z1->weights, *q = z2->weights;
-      for (int i = 0; i < size; ++i)
+      for ( int i = 0; i < size; ++i )
         diff |= IS_NOT_EQUAL(p[i], q[i]);
     }
 
@@ -68579,7 +70311,7 @@ int zaxisCompareP(zaxis_t *z1, zaxis_t *z2)
       int vctsize = z1->vctsize;
       xassert(vctsize);
       const double *p = z1->vct, *q = z2->vct;
-      for (int i = 0; i < vctsize; ++i)
+      for ( int i = 0; i < vctsize; ++i )
         diff |= IS_NOT_EQUAL(p[i], q[i]);
     }
 
@@ -68595,8 +70327,8 @@ int zaxisCompareP(zaxis_t *z1, zaxis_t *z2)
 }
 
 
-static int
-zaxisTxCode ( void )
+static
+int zaxisTxCode(void)
 {
   return ZAXIS;
 }
@@ -68611,10 +70343,10 @@ enum { zaxisNint     = 8,
 };
 
 #define ZAXIS_STR_SERIALIZE { zaxisP->name, zaxisP->longname, \
-      zaxisP->stdname, zaxisP->units }
+                              zaxisP->stdname, zaxisP->units }
 
 static
-int zaxisGetMemberMask ( zaxis_t * zaxisP )
+int zaxisGetMemberMask( zaxis_t * zaxisP )
 {
   int memberMask = 0;
 
@@ -68631,33 +70363,33 @@ static int
 zaxisGetPackSize(void * voidP, void *context)
 {
   zaxis_t * zaxisP = ( zaxis_t * ) voidP;
-  int packBufferSize = serializeGetSize(zaxisNint, DATATYPE_INT, context)
-    + serializeGetSize(1, DATATYPE_UINT32, context);
+  int packBufferSize = serializeGetSize(zaxisNint, CDI_DATATYPE_INT, context)
+    + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
 
   if (zaxisP->vals || zaxisP->lbounds || zaxisP->ubounds || zaxisP->weights)
     xassert(zaxisP->size);
 
   if ( zaxisP->vals )
-    packBufferSize += serializeGetSize(zaxisP->size, DATATYPE_FLT64, context)
-      + serializeGetSize(1, DATATYPE_UINT32, context);
+    packBufferSize += serializeGetSize(zaxisP->size, CDI_DATATYPE_FLT64, context)
+      + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
 
   if ( zaxisP->lbounds )
-    packBufferSize += serializeGetSize(zaxisP->size, DATATYPE_FLT64, context)
-      + serializeGetSize(1, DATATYPE_UINT32, context);
+    packBufferSize += serializeGetSize(zaxisP->size, CDI_DATATYPE_FLT64, context)
+      + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
 
   if ( zaxisP->ubounds )
-    packBufferSize += serializeGetSize(zaxisP->size, DATATYPE_FLT64, context)
-      + serializeGetSize(1, DATATYPE_UINT32, context);
+    packBufferSize += serializeGetSize(zaxisP->size, CDI_DATATYPE_FLT64, context)
+      + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
 
   if ( zaxisP->weights )
-    packBufferSize += serializeGetSize(zaxisP->size, DATATYPE_FLT64, context)
-      + serializeGetSize(1, DATATYPE_UINT32, context);
+    packBufferSize += serializeGetSize(zaxisP->size, CDI_DATATYPE_FLT64, context)
+      + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
 
   if ( zaxisP->vct )
     {
       xassert ( zaxisP->vctsize );
-      packBufferSize += serializeGetSize(zaxisP->vctsize, DATATYPE_FLT64, context)
-        + serializeGetSize(1, DATATYPE_UINT32, context);
+      packBufferSize += serializeGetSize(zaxisP->vctsize, CDI_DATATYPE_FLT64, context)
+        + serializeGetSize(1, CDI_DATATYPE_UINT32, context);
     }
 
   {
@@ -68667,10 +70399,10 @@ zaxisGetPackSize(void * voidP, void *context)
       += serializeStrTabGetPackSize(strTab, (int)numStr, context);
   }
 
-  packBufferSize += serializeGetSize(1, DATATYPE_UCHAR, context);
+  packBufferSize += serializeGetSize(1, CDI_DATATYPE_UCHAR, context);
 
   if (!cdiUUIDIsNull(zaxisP->uuid))
-    packBufferSize += serializeGetSize(CDI_UUID_SIZE, DATATYPE_UCHAR, context);
+    packBufferSize += serializeGetSize(CDI_UUID_SIZE, CDI_DATATYPE_UCHAR, context);
 
   return packBufferSize;
 }
@@ -68685,11 +70417,11 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
   uint32_t d;
 
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  intBuffer, zaxisNint, DATATYPE_INT, context);
+                  intBuffer, zaxisNint, CDI_DATATYPE_INT, context);
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &d, 1, DATATYPE_UINT32, context);
+                  &d, 1, CDI_DATATYPE_UINT32, context);
 
-  xassert(cdiCheckSum(DATATYPE_INT, zaxisNint, intBuffer) == d);
+  xassert(cdiCheckSum(CDI_DATATYPE_INT, zaxisNint, intBuffer) == d);
 
   zaxisInit();
 
@@ -68712,10 +70444,10 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
 
       zaxisP->vals = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      zaxisP->vals, size, DATATYPE_FLT64, context);
+                      zaxisP->vals, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, zaxisP->vals) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, zaxisP->vals) == d);
     }
 
   if (memberMask & lbounds)
@@ -68725,10 +70457,10 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
 
       zaxisP->lbounds = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      zaxisP->lbounds, size, DATATYPE_FLT64, context);
+                      zaxisP->lbounds, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, zaxisP->lbounds) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, zaxisP->lbounds) == d);
     }
 
   if (memberMask & ubounds)
@@ -68738,10 +70470,10 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
 
       zaxisP->ubounds = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      zaxisP->ubounds, size, DATATYPE_FLT64, context);
+                      zaxisP->ubounds, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, zaxisP->ubounds) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, zaxisP->ubounds) == d);
     }
 
   if (memberMask & weights)
@@ -68751,10 +70483,10 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
 
       zaxisP->weights = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      zaxisP->weights, size, DATATYPE_FLT64, context);
+                      zaxisP->weights, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT, size, zaxisP->weights) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT, size, zaxisP->weights) == d);
     }
 
   if ( memberMask & vct )
@@ -68764,10 +70496,10 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
 
       zaxisP->vct = (double *) Malloc((size_t)size * sizeof (double));
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      zaxisP->vct, size, DATATYPE_FLT64, context);
+                      zaxisP->vct, size, CDI_DATATYPE_FLT64, context);
       serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                      &d, 1, DATATYPE_UINT32, context);
-      xassert(cdiCheckSum(DATATYPE_FLT64, size, zaxisP->vct) == d);
+                      &d, 1, CDI_DATATYPE_UINT32, context);
+      xassert(cdiCheckSum(CDI_DATATYPE_FLT64, size, zaxisP->vct) == d);
     }
 
   {
@@ -68778,11 +70510,11 @@ zaxisUnpack(char * unpackBuffer, int unpackBufferSize,
   }
 
   serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                  &zaxisP->positive, 1, DATATYPE_UCHAR, context);
+                  &zaxisP->positive, 1, CDI_DATATYPE_UCHAR, context);
 
   if (memberMask & zaxisHasUUIDFlag)
     serializeUnpack(unpackBuffer, unpackBufferSize, unpackBufferPos,
-                    zaxisP->uuid, CDI_UUID_SIZE, DATATYPE_UCHAR, context);
+                    zaxisP->uuid, CDI_UUID_SIZE, CDI_DATATYPE_UCHAR, context);
 
   reshSetStatus(zaxisP->self, &zaxisOps,
                 reshGetStatus(zaxisP->self, &zaxisOps) & ~RESH_SYNC_BIT);
@@ -68806,30 +70538,30 @@ zaxisPack(void * voidP, void * packBuffer, int packBufferSize,
   intBuffer[6]  = zaxisP->vctsize;
   intBuffer[7]  = memberMask = zaxisGetMemberMask ( zaxisP );
 
-  serializePack(intBuffer, zaxisNint, DATATYPE_INT,
+  serializePack(intBuffer, zaxisNint, CDI_DATATYPE_INT,
                 packBuffer, packBufferSize, packBufferPos, context);
-  d = cdiCheckSum(DATATYPE_INT, zaxisNint, intBuffer);
-  serializePack(&d, 1, DATATYPE_UINT32,
+  d = cdiCheckSum(CDI_DATATYPE_INT, zaxisNint, intBuffer);
+  serializePack(&d, 1, CDI_DATATYPE_UINT32,
                 packBuffer, packBufferSize, packBufferPos, context);
 
 
   if ( memberMask & vals )
     {
       xassert(zaxisP->size);
-      serializePack(zaxisP->vals, zaxisP->size, DATATYPE_FLT64,
+      serializePack(zaxisP->vals, zaxisP->size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, zaxisP->size, zaxisP->vals );
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, zaxisP->size, zaxisP->vals );
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
   if (memberMask & lbounds)
     {
       xassert(zaxisP->size);
-      serializePack(zaxisP->lbounds, zaxisP->size, DATATYPE_FLT64,
+      serializePack(zaxisP->lbounds, zaxisP->size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, zaxisP->size, zaxisP->lbounds);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, zaxisP->size, zaxisP->lbounds);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -68837,10 +70569,10 @@ zaxisPack(void * voidP, void * packBuffer, int packBufferSize,
     {
       xassert(zaxisP->size);
 
-      serializePack(zaxisP->ubounds, zaxisP->size, DATATYPE_FLT64,
+      serializePack(zaxisP->ubounds, zaxisP->size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, zaxisP->size, zaxisP->ubounds);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, zaxisP->size, zaxisP->ubounds);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -68848,10 +70580,10 @@ zaxisPack(void * voidP, void * packBuffer, int packBufferSize,
     {
       xassert(zaxisP->size);
 
-      serializePack(zaxisP->weights, zaxisP->size, DATATYPE_FLT64,
+      serializePack(zaxisP->weights, zaxisP->size, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT, zaxisP->size, zaxisP->weights);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT, zaxisP->size, zaxisP->weights);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -68859,10 +70591,10 @@ zaxisPack(void * voidP, void * packBuffer, int packBufferSize,
     {
       xassert(zaxisP->vctsize);
 
-      serializePack(zaxisP->vct, zaxisP->vctsize, DATATYPE_FLT64,
+      serializePack(zaxisP->vct, zaxisP->vctsize, CDI_DATATYPE_FLT64,
                     packBuffer, packBufferSize, packBufferPos, context);
-      d = cdiCheckSum(DATATYPE_FLT64, zaxisP->vctsize, zaxisP->vct);
-      serializePack(&d, 1, DATATYPE_UINT32,
+      d = cdiCheckSum(CDI_DATATYPE_FLT64, zaxisP->vctsize, zaxisP->vct);
+      serializePack(&d, 1, CDI_DATATYPE_UINT32,
                     packBuffer, packBufferSize, packBufferPos, context);
     }
 
@@ -68873,11 +70605,11 @@ zaxisPack(void * voidP, void * packBuffer, int packBufferSize,
                         packBuffer, packBufferSize, packBufferPos, context);
   }
 
-  serializePack(&zaxisP->positive, 1, DATATYPE_UCHAR,
+  serializePack(&zaxisP->positive, 1, CDI_DATATYPE_UCHAR,
                 packBuffer, packBufferSize, packBufferPos, context);
 
   if (memberMask & zaxisHasUUIDFlag)
-    serializePack(zaxisP->uuid, CDI_UUID_SIZE, DATATYPE_UCHAR,
+    serializePack(zaxisP->uuid, CDI_UUID_SIZE, CDI_DATATYPE_UCHAR,
                   packBuffer, packBufferSize, packBufferPos, context);
 
 }
@@ -68899,7 +70631,7 @@ void cdiZaxisGetIndexList(unsigned nzaxis, int *zaxisResHs)
  * require-trailing-newline: t
  * End:
  */
-   static const char cdi_libvers[] = "1.8.0rc3" " of " "Sep 16 2016"" " "09:21:04";
+   static const char cdi_libvers[] = "1.9.0" " of " "Jun 19 2017"" " "10:32:27";
 const char *cdiLibraryVersion(void)
 {
   return (cdi_libvers);
@@ -69503,7 +71235,7 @@ if (e>s) {                           /* Need this to handle NULL string.*/
 } return s; }
 
 #ifndef __CF__KnR
-static int num_elem(char *strv, unsigned elem_len, int term_char, int num_term);
+static int num_elem(const char *strv, unsigned elem_len, int term_char, int num_term);
 #endif
 /* kill_trailingn(s,t,e) will kill the trailing t's in string s. e normally 
 points to the terminating '\0' of s, but may actually point to anywhere in s.
@@ -69520,8 +71252,7 @@ else if (e>s) {                      /* Watch out for neg. length string.*/
   while (e>s && *--e==t){;}          /* Don't follow t's past beginning. */
   e[*e==t?0:1] = '\0';               /* Handle s[0]=t correctly.       */
 }
-if (0)  /* to prevent not used warnings in gcc (added by TJ) */
-  num_elem("", 0, '\0', 1);
+(void)num_elem;  /* to prevent not used warnings in gcc (added by TJ) */
 
  return s; }
 
@@ -69571,7 +71302,7 @@ typedef DSC$DESCRIPTOR_A(1) fstringvector;
 #define NUM_ELEM_ARG(B) *_2(A,B),_NUM_ELEM_ARG
 #define TERM_CHARS(A,B) A,B
 #ifndef __CF__KnR
-static int num_elem(char *strv, unsigned elem_len, int term_char, int num_term)
+static int num_elem(const char *strv, unsigned elem_len, int term_char, int num_term)
 #else
 static int num_elem(      strv,          elem_len,     term_char,     num_term)
                     char *strv; unsigned elem_len; int term_char; int num_term;
@@ -69590,10 +71321,10 @@ for (num=0; ; num++) {
   if (i==(unsigned)num_term) break;
   else strv += elem_len-i;
 }
-if (0) {  /* to prevent not used warnings in gcc (added by ROOT) */
-   c2fstrv(0, 0, 0, 0); f2cstrv(0, 0, 0, 0); kill_trailing(0, 0);
-   vkill_trailing(0, 0, 0, 0); num_elem(0, 0, 0, 0);
-}
+/* to prevent not used warnings in gcc (added by ROOT, changed by TJ
+ * because of unreachable warnings from clang) */
+(void)c2fstrv; (void)f2cstrv; (void)kill_trailing;
+(void)vkill_trailing; (void)num_elem;
 return (int)num;
 }
 /* #endif removed 2/10/98 (CFITSIO) */
@@ -71484,7 +73215,19 @@ string. */
 #if defined (HAVE_CF_INTERFACE)
 
 #if ! defined (__CFORTRAN_LOADED)
+#  if defined __clang__
+#    pragma GCC diagnostic push
+#    pragma GCC diagnostic ignored "-Wreserved-id-macro"
+#  endif
 #  include "cfortran.h"
+#  if defined __clang__
+#    pragma GCC diagnostic pop
+#  endif
+#endif
+/* These functions are meant to be called from Fortran and don't
+ * need an interface declaration in a C header. */
+#if defined __clang__
+#  pragma GCC diagnostic ignored "-Wmissing-prototypes"
 #endif
 
 
@@ -71607,7 +73350,7 @@ FCALLSCFUN1 (STRING, streamFilename, STREAMFILENAME, streamfilename, INT)
 FCALLSCFUN1 (STRING, streamFilesuffix, STREAMFILESUFFIX, streamfilesuffix, INT)
 FCALLSCFUN1 (INT, streamInqNvars, STREAMINQNVARS, streaminqnvars, INT)
 
-/*  STREAM var I/O routines  */
+/*  STREAM var I/O routines (random access)  */
 
 FCALLSCSUB4 (streamWriteVar, STREAMWRITEVAR, streamwritevar, INT, INT, DOUBLEV, INT)
 FCALLSCSUB4 (streamWriteVarF, STREAMWRITEVARF, streamwritevarf, INT, INT, FLOATV, INT)
@@ -71619,7 +73362,7 @@ FCALLSCSUB5 (streamReadVarSlice, STREAMREADVARSLICE, streamreadvarslice, INT, IN
 FCALLSCSUB5 (streamReadVarSliceF, STREAMREADVARSLICEF, streamreadvarslicef, INT, INT, INT, FLOATV, PINT)
 FCALLSCSUB5 (streamWriteVarChunk, STREAMWRITEVARCHUNK, streamwritevarchunk, INT, INT, INTVV, DOUBLEV, INT)
 
-/*  STREAM record I/O routines  */
+/*  STREAM record I/O routines (sequential access)  */
 
 FCALLSCSUB3 (streamDefRecord, STREAMDEFRECORD, streamdefrecord, INT, INT, INT)
 FCALLSCSUB3 (streamInqRecord, STREAMINQRECORD, streaminqrecord, INT, PINT, PINT)
@@ -71765,6 +73508,7 @@ FCALLSCFUN2 (STRING, vlistInqVarUnitsPtr, VLISTINQVARUNITSPTR, vlistinqvarunitsp
 FCALLSCFUN3 (INT, cdiInqNatts, CDIINQNATTS, cdiinqnatts, INT, INT, PINT)
 FCALLSCFUN6 (INT, cdiInqAtt, CDIINQATT, cdiinqatt, INT, INT, INT, PSTRING, PINT, PINT)
 FCALLSCFUN3 (INT, cdiDelAtt, CDIDELATT, cdidelatt, INT, INT, STRING)
+FCALLSCFUN4 (INT, cdiCopyAtts, CDICOPYATTS, cdicopyatts, INT, INT, INT, INT)
 FCALLSCFUN6 (INT, cdiDefAttInt, CDIDEFATTINT, cdidefattint, INT, INT, STRING, INT, INT, INTV)
 FCALLSCFUN6 (INT, cdiDefAttFlt, CDIDEFATTFLT, cdidefattflt, INT, INT, STRING, INT, INT, DOUBLEV)
 FCALLSCFUN5 (INT, cdiDefAttTxt, CDIDEFATTTXT, cdidefatttxt, INT, INT, STRING, INT, PPSTRING)
@@ -71781,13 +73525,12 @@ FCALLSCSUB2 (gridDefMaskGME, GRIDDEFMASKGME, griddefmaskgme, INT, INTV)
 FCALLSCFUN2 (INT, gridInqMaskGME, GRIDINQMASKGME, gridinqmaskgme, INT, INTV)
 FCALLSCSUB2 (gridDefMask, GRIDDEFMASK, griddefmask, INT, INTV)
 FCALLSCFUN2 (INT, gridInqMask, GRIDINQMASK, gridinqmask, INT, INTV)
-FCALLSCSUB3 (gridPrint, GRIDPRINT, gridprint, INT, INT, INT)
+FCALLSCSUB2 (gridPrint, GRIDPRINT, gridprint, INT, INT)
 FCALLSCFUN2 (INT, gridCreate, GRIDCREATE, gridcreate, INT, INT)
 FCALLSCSUB1 (gridDestroy, GRIDDESTROY, griddestroy, INT)
 FCALLSCFUN1 (INT, gridDuplicate, GRIDDUPLICATE, gridduplicate, INT)
 FCALLSCSUB2 (gridDefProj, GRIDDEFPROJ, griddefproj, INT, INT)
 FCALLSCFUN1 (INT, gridInqProj, GRIDINQPROJ, gridinqproj, INT)
-FCALLSCSUB2 (gridDefProjType, GRIDDEFPROJTYPE, griddefprojtype, INT, INT)
 FCALLSCFUN1 (INT, gridInqProjType, GRIDINQPROJTYPE, gridinqprojtype, INT)
 FCALLSCFUN1 (INT, gridInqType, GRIDINQTYPE, gridinqtype, INT)
 FCALLSCFUN1 (INT, gridInqSize, GRIDINQSIZE, gridinqsize, INT)
@@ -71799,13 +73542,20 @@ FCALLSCSUB2 (gridDefNP, GRIDDEFNP, griddefnp, INT, INT)
 FCALLSCFUN1 (INT, gridInqNP, GRIDINQNP, gridinqnp, INT)
 FCALLSCSUB2 (gridDefXvals, GRIDDEFXVALS, griddefxvals, INT, DOUBLEV)
 FCALLSCFUN2 (INT, gridInqXvals, GRIDINQXVALS, gridinqxvals, INT, DOUBLEV)
+FCALLSCFUN1 (INT, gridInqXIsc, GRIDINQXISC, gridinqxisc, INT)
 FCALLSCSUB2 (gridDefYvals, GRIDDEFYVALS, griddefyvals, INT, DOUBLEV)
 FCALLSCFUN2 (INT, gridInqYvals, GRIDINQYVALS, gridinqyvals, INT, DOUBLEV)
+FCALLSCFUN1 (INT, gridInqYIsc, GRIDINQYISC, gridinqyisc, INT)
 
 /*  CDI grid string key values  */
 
+
+/*  CDI zaxis string key values  */
+
 FCALLSCFUN4 (INT, cdiGridDefKeyStr, CDIGRIDDEFKEYSTR, cdigriddefkeystr, INT, INT, INT, STRING)
 FCALLSCFUN4 (INT, cdiGridInqKeyStr, CDIGRIDINQKEYSTR, cdigridinqkeystr, INT, INT, INT, PSTRING)
+FCALLSCFUN3 (INT, cdiZaxisDefKeyFlt, CDIZAXISDEFKEYFLT, cdizaxisdefkeyflt, INT, INT, DOUBLE)
+FCALLSCFUN3 (INT, cdiZaxisInqKeyFlt, CDIZAXISINQKEYFLT, cdizaxisinqkeyflt, INT, INT, PDOUBLE)
 FCALLSCSUB2 (gridDefXname, GRIDDEFXNAME, griddefxname, INT, STRING)
 FCALLSCSUB2 (gridInqXname, GRIDINQXNAME, gridinqxname, INT, PSTRING)
 FCALLSCSUB2 (gridDefXlongname, GRIDDEFXLONGNAME, griddefxlongname, INT, STRING)
@@ -71853,8 +73603,8 @@ FCALLSCSUB5 (gridInqParamGME, GRIDINQPARAMGME, gridinqparamgme, INT, PINT, PINT,
 
 /*  Lambert Conformal Conic grid (GRIB version)  */
 
-FCALLSCSUB10 (gridDefParamLCC, GRIDDEFPARAMLCC, griddefparamlcc, INT, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, INT, INT)
-FCALLSCSUB10 (gridInqParamLCC, GRIDINQPARAMLCC, gridinqparamlcc, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PINT, PINT)
+FCALLSCSUB12 (gridDefParamLCC, GRIDDEFPARAMLCC, griddefparamlcc, INT, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE)
+FCALLSCFUN12 (INT, gridInqParamLCC, GRIDINQPARAMLCC, gridinqparamlcc, INT, DOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE)
 FCALLSCSUB2 (gridDefArea, GRIDDEFAREA, griddefarea, INT, DOUBLEV)
 FCALLSCSUB2 (gridInqArea, GRIDINQAREA, gridinqarea, INT, DOUBLEV)
 FCALLSCFUN1 (INT, gridHasArea, GRIDHASAREA, gridhasarea, INT)
@@ -71869,19 +73619,23 @@ FCALLSCSUB2 (gridInqRowlon, GRIDINQROWLON, gridinqrowlon, INT, INTV)
 FCALLSCSUB2 (gridChangeType, GRIDCHANGETYPE, gridchangetype, INT, INT)
 FCALLSCSUB2 (gridDefComplexPacking, GRIDDEFCOMPLEXPACKING, griddefcomplexpacking, INT, INT)
 FCALLSCFUN1 (INT, gridInqComplexPacking, GRIDINQCOMPLEXPACKING, gridinqcomplexpacking, INT)
+FCALLSCSUB2 (gridDefUvRelativeToGrid, GRIDDEFUVRELATIVETOGRID, griddefuvrelativetogrid, INT, INT)
+FCALLSCFUN1 (INT, gridInqUvRelativeToGrid, GRIDINQUVRELATIVETOGRID, gridinquvrelativetogrid, INT)
+FCALLSCSUB2 (gridDefScanningMode, GRIDDEFSCANNINGMODE, griddefscanningmode, INT, INT)
+FCALLSCFUN1 (INT, gridInqScanningMode, GRIDINQSCANNINGMODE, gridinqscanningmode, INT)
 
 /*  ZAXIS routines  */
 
 FCALLSCSUB2 (zaxisName, ZAXISNAME, zaxisname, INT, PSTRING)
+FCALLSCFUN1 (STRING, zaxisNamePtr, ZAXISNAMEPTR, zaxisnameptr, INT)
 FCALLSCFUN2 (INT, zaxisCreate, ZAXISCREATE, zaxiscreate, INT, INT)
 FCALLSCSUB1 (zaxisDestroy, ZAXISDESTROY, zaxisdestroy, INT)
 FCALLSCFUN1 (INT, zaxisInqType, ZAXISINQTYPE, zaxisinqtype, INT)
 FCALLSCFUN1 (INT, zaxisInqSize, ZAXISINQSIZE, zaxisinqsize, INT)
 FCALLSCFUN1 (INT, zaxisDuplicate, ZAXISDUPLICATE, zaxisduplicate, INT)
-FCALLSCSUB2 (zaxisResize, ZAXISRESIZE, zaxisresize, INT, INT)
-FCALLSCSUB2 (zaxisPrint, ZAXISPRINT, zaxisprint, INT, INT)
+FCALLSCSUB1 (zaxisPrint, ZAXISPRINT, zaxisprint, INT)
 FCALLSCSUB2 (zaxisDefLevels, ZAXISDEFLEVELS, zaxisdeflevels, INT, DOUBLEV)
-FCALLSCSUB2 (zaxisInqLevels, ZAXISINQLEVELS, zaxisinqlevels, INT, DOUBLEV)
+FCALLSCFUN2 (INT, zaxisInqLevels, ZAXISINQLEVELS, zaxisinqlevels, INT, DOUBLEV)
 FCALLSCSUB3 (zaxisDefLevel, ZAXISDEFLEVEL, zaxisdeflevel, INT, INT, DOUBLE)
 FCALLSCFUN2 (DOUBLE, zaxisInqLevel, ZAXISINQLEVEL, zaxisinqlevel, INT, INT)
 FCALLSCSUB2 (zaxisDefNlevRef, ZAXISDEFNLEVREF, zaxisdefnlevref, INT, INT)
@@ -71890,11 +73644,8 @@ FCALLSCSUB2 (zaxisDefNumber, ZAXISDEFNUMBER, zaxisdefnumber, INT, INT)
 FCALLSCFUN1 (INT, zaxisInqNumber, ZAXISINQNUMBER, zaxisinqnumber, INT)
 FCALLSCSUB2 (zaxisDefUUID, ZAXISDEFUUID, zaxisdefuuid, INT, PVOID)
 FCALLSCSUB2 (zaxisInqUUID, ZAXISINQUUID, zaxisinquuid, INT, PVOID)
-
-/*  CDI zaxis string key values  */
-
-FCALLSCFUN4 (INT, cdiZaxisDefKeyStr, CDIZAXISDEFSTRING, cdizaxisdefstring, INT, INT, INT, STRING)
-FCALLSCFUN4 (INT, cdiZaxisInqKeyStr, CDIZAXISINQSTRING, cdizaxisinqstring, INT, INT, INT, PSTRING)
+FCALLSCFUN4 (INT, cdiZaxisDefKeyStr, CDIZAXISDEFKEYSTR, cdizaxisdefkeystr, INT, INT, INT, STRING)
+FCALLSCFUN4 (INT, cdiZaxisInqKeyStr, CDIZAXISINQKEYSTR, cdizaxisinqkeystr, INT, INT, INT, PSTRING)
 FCALLSCSUB2 (zaxisDefName, ZAXISDEFNAME, zaxisdefname, INT, STRING)
 FCALLSCSUB2 (zaxisInqName, ZAXISINQNAME, zaxisinqname, INT, PSTRING)
 FCALLSCSUB2 (zaxisDefLongname, ZAXISDEFLONGNAME, zaxisdeflongname, INT, STRING)
@@ -71902,8 +73653,6 @@ FCALLSCSUB2 (zaxisInqLongname, ZAXISINQLONGNAME, zaxisinqlongname, INT, PSTRING)
 FCALLSCSUB2 (zaxisDefUnits, ZAXISDEFUNITS, zaxisdefunits, INT, STRING)
 FCALLSCSUB2 (zaxisInqUnits, ZAXISINQUNITS, zaxisinqunits, INT, PSTRING)
 FCALLSCSUB2 (zaxisInqStdname, ZAXISINQSTDNAME, zaxisinqstdname, INT, PSTRING)
-FCALLSCSUB2 (zaxisDefPsName, ZAXISDEFPSNAME, zaxisdefpsname, INT, STRING)
-FCALLSCSUB2 (zaxisInqPsName, ZAXISINQPSNAME, zaxisinqpsname, INT, PSTRING)
 FCALLSCSUB2 (zaxisDefPrec, ZAXISDEFPREC, zaxisdefprec, INT, INT)
 FCALLSCFUN1 (INT, zaxisInqPrec, ZAXISINQPREC, zaxisinqprec, INT)
 FCALLSCSUB2 (zaxisDefPositive, ZAXISDEFPOSITIVE, zaxisdefpositive, INT, INT)
@@ -72037,4 +73786,7 @@ FCALLSCFUN4 (INT, subtypeInqAttribute, SUBTYPEINQATTRIBUTE, subtypeinqattribute,
 FCALLSCFUN2 (INT, vlistInqVarSubtype, VLISTINQVARSUBTYPE, vlistinqvarsubtype, INT, INT)
 FCALLSCSUB3 (gribapiLibraryVersion, GRIBAPILIBRARYVERSION, gribapilibraryversion, PINT, PINT, PINT)
 
+#if defined __clang__
+#  pragma GCC diagnostic pop
+#endif
 #endif
diff --git a/libcdi/src/cgribex.h b/libcdi/src/cgribex.h
index 7b4d589..013e91f 100644
--- a/libcdi/src/cgribex.h
+++ b/libcdi/src/cgribex.h
@@ -1,7 +1,8 @@
-#ifndef _CGRIBEX_H
-#define _CGRIBEX_H
+#ifndef CGRIBEX_H
+#define CGRIBEX_H
 
 #include <stdio.h>
+#include <stdbool.h>
 #include <sys/types.h>
 
 #define  GRIB_MISSVAL  -9.E33
@@ -206,7 +207,7 @@ void  gribSetCalendar(int calendar);
 void  gribDateTime(int *isec1, int *date, int *time);
 int   gribRefDate(int *isec1);
 int   gribRefTime(int *isec1);
-int   gribTimeIsFC(int *isec1);
+bool  gribTimeIsFC(int *isec1);
 
 void  gribPrintSec0(int *isec0);
 void  gribPrintSec1(int *isec0, int *isec1);
@@ -254,5 +255,5 @@ double calculate_pfactor_double(const double* spectralField, long fieldTruncatio
 }
 #endif
 
-#endif  /* _CGRIBEX_H */ 
+#endif  /* CGRIBEX_H */ 
 
diff --git a/libcdi/src/cgribexlib.c b/libcdi/src/cgribexlib.c
index bd84f03..f3d88b2 100644
--- a/libcdi/src/cgribexlib.c
+++ b/libcdi/src/cgribexlib.c
@@ -1,7 +1,7 @@
 
-/* Automatically generated by m214003 at 2016-12-20, do not edit */
+/* Automatically generated by m214003 at 2017-06-06, do not edit */
 
-/* CGRIBEXLIB_VERSION="1.7.6" */
+/* CGRIBEXLIB_VERSION="1.8.1" */
 
 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5) || defined (__clang__)
 #pragma GCC diagnostic push
@@ -21,6 +21,7 @@
 #include <string.h>
 #include <ctype.h>
 #include <stdarg.h>
+#include <stdbool.h>
 #include <sys/types.h>
 #include <inttypes.h>
 
@@ -31,8 +32,8 @@
 #include "calendar.h"
 #include "timebase.h"
 
-#ifndef _TEMPLATES_H
-#define _TEMPLATES_H
+#ifndef CGRIBEX_TEMPLATES_H
+#define CGRIBEX_TEMPLATES_H
 
 #define CAT(X,Y)      X##_##Y
 #define TEMPLATE(X,Y) CAT(X,Y)
@@ -42,32 +43,26 @@
 #define GRIB_INT_H
 
 #if defined (HAVE_CONFIG_H)
-#  include "config.h"
+#include "config.h"
 #endif
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdbool.h>
 #include <math.h>
 #include <float.h>
 
 
-#if ! defined   (_CGRIBEX_H)
+#if ! defined   (CGRIBEX_H)
 #  include "cgribex.h"
 #endif
 #if ! defined   (ERROR_H)
 #  include "error.h"
 #endif
-#if ! defined   (_DTYPES_H)
+#if ! defined   (DTYPES_H)
 #  include "dtypes.h"
 #endif
 
-#if ! defined   (FALSE)
-#  define  FALSE  0
-#endif
-
-#if ! defined   (TRUE)
-#  define  TRUE  1
-#endif
 
 #if ! defined   (UCHAR)
 #  define  UCHAR  unsigned char
@@ -223,8 +218,8 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
 #endif
 
 #endif  /* GRIB_INT_H */
-#ifndef _GRIBDECODE_H
-#define _GRIBDECODE_H
+#ifndef GRIBDECODE_H
+#define GRIBDECODE_H
 
 #define  UNDEFINED          9.999e20
 
@@ -363,9 +358,9 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
 #define  GRIB2_SECLEN(section)   (GET_UINT4(section[0], section[1], section[2], section[3]))
 #define  GRIB2_SECNUM(section)   (GET_UINT1(section[4]))
 
-#endif  /* _GRIBDECODE_H */
-#ifndef _GRIB_ENCODE_H
-#define _GRIB_ENCODE_H
+#endif  /* GRIBDECODE_H */
+#ifndef CGRIBEX_GRIB_ENCODE_H
+#define CGRIBEX_GRIB_ENCODE_H
 
 #include <limits.h>
 
@@ -402,7 +397,7 @@ enum {
   Put3Byte(mantissa);            \
 }
 
-#endif  /* _GRIB_ENCODE_H */
+#endif  /* CGRIBEX_GRIB_ENCODE_H */
 #ifndef CODEC_COMMON_H
 #define CODEC_COMMON_H
 #define gribSwapByteOrder_uint16(ui16)  ((uint16_t)((ui16<<8) | (ui16>>8)))
@@ -1173,6 +1168,7 @@ xlc_r -g -O3 -qhot -q64 -qarch=auto -qtune=auto -qreport -DTEST_ENCODE encode_ar
 #endif
 
 #include <stdint.h>
+#include <math.h>
 
 #ifndef DISABLE_SIMD
 #if   defined(__GNUC__) && (__GNUC__ >= 4)
@@ -1942,7 +1938,6 @@ LABEL900:
 
   return (pval);
 } /* decfp2 */
-#include <stdio.h>
 #include <stdint.h>
 #include <string.h>
 #include <stdarg.h>
@@ -1951,14 +1946,11 @@ LABEL900:
 
 int gribRefDate(int *isec1)
 {
-  int date, ryear, rmonth, rday;
-  int century;
-
-  century = ISEC1_Century;
+  int century = ISEC1_Century;
   if ( century < 0 ) century = -century;
   century -= 1;
 
-  ryear   = ISEC1_Year;
+  int ryear   = ISEC1_Year;
 
   /* if ( century != 0 ) */
     {
@@ -1977,50 +1969,44 @@ int gribRefDate(int *isec1)
 	ryear = 1;
     }
 
-  rmonth  = ISEC1_Month;
-  rday    = ISEC1_Day;
+  int rmonth  = ISEC1_Month;
+  int rday    = ISEC1_Day;
 
-  date = cdiEncodeDate(ryear, rmonth, rday);
+  int date = cdiEncodeDate(ryear, rmonth, rday);
 
-  return (date) ;
+  return date ;
 }
 
 
 int gribRefTime(int *isec1)
 {
-  int time, rhour, rminute;
-
-  rhour   = ISEC1_Hour;
-  rminute = ISEC1_Minute;
+  int rhour   = ISEC1_Hour;
+  int rminute = ISEC1_Minute;
 
-  time = cdiEncodeTime(rhour, rminute, 0);
+  int time = cdiEncodeTime(rhour, rminute, 0);
 
-  return (time) ;
+  return time;
 }
 
 
-int gribTimeIsFC(int *isec1)
+bool gribTimeIsFC(int *isec1)
 {
-  int isFC = FALSE;
-  int time_period;
+  bool isFC = false;
 
-  if ( ISEC1_TimeRange == 10 )
-    time_period = (ISEC1_TimePeriod1<<8) + ISEC1_TimePeriod2;
-  else
-    time_period = ISEC1_TimePeriod1;
+  int time_period =  (ISEC1_TimeRange == 10) ? (ISEC1_TimePeriod1<<8) + ISEC1_TimePeriod2 : ISEC1_TimePeriod1;
 
   if ( time_period > 0 && ISEC1_Day > 0 )
     {
-      if ( ISEC1_TimeRange == 0 || ISEC1_TimeRange == 10 ) isFC = TRUE;
+      if ( ISEC1_TimeRange == 0 || ISEC1_TimeRange == 10 ) isFC = true;
     }
 
-  return (isFC);
+  return isFC;
 }
 
 
 void gribDateTime(int *isec1, int *date, int *time)
 {
-  static int lprint = TRUE;
+  static bool lprint = true;
   int julday, secofday;
   int64_t addsec = 0;
   int64_t time_period = 0;
@@ -2092,7 +2078,7 @@ void gribDateTime(int *isec1, int *date, int *time)
 	  if ( lprint )
 	    {
 	      gprintf(__func__, "Time unit %d unsupported", ISEC1_TimeUnit);
-	      lprint = FALSE;
+	      lprint = false;
 	    }
 	  break;
 	}
@@ -4169,7 +4155,6 @@ int gribrec_len(unsigned b1, unsigned b2, unsigned b3)
   return gribsize;
 }
 
-#include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 
@@ -4268,7 +4253,7 @@ C     ----------------------------------------------------------------
   */
   char *envString;
   char *env_stream;
-  static int lfirst = TRUE;
+  static bool lfirst = true;
   extern int CGRIBEX_Const;
 
   if ( ! lfirst ) return;
@@ -4410,7 +4395,7 @@ C     ----------------------------------------------------------------
   /*
     Mark common area values set by user.
   */
-  lfirst = FALSE;
+  lfirst = false;
   /*
     Exhaustive use of all possible second-order packing methods
     for HOPER='K'. Set to off.
@@ -5042,7 +5027,7 @@ int correct_bdslen(int bdslen, long recsize, long gribpos)
     the (default) rounding for GRIB products is 120 bytes.
   */
   if ( recsize > JP23SET ) bdslen = (int)(recsize - gribpos - bdslen);
-  return (bdslen);
+  return bdslen;
 }
 
 
@@ -5067,7 +5052,7 @@ int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **p
     {
       fprintf(stderr, "Wrong GRIB indicator section: found >%c%c%c%c<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-1);
+      return -1;
     }
 
   recsize = gribrec_len(section[4], section[5], section[6]);
@@ -5123,7 +5108,7 @@ int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **p
   if ( gribbufsize < gribsize )
     {
       fprintf(stderr, "Length of GRIB message is inconsistent (grib_buffer_size=%ld < grib_record_size=%ld)!\n", gribbufsize, gribsize);
-      return (1);
+      return 1;
     }
 
   /* end section - "7777" in ascii */
@@ -5131,10 +5116,10 @@ int grib1Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **p
     {
       fprintf(stderr, "Missing GRIB end section: found >%c%c%c%c<\n",
 	      bufpointer[0], bufpointer[1], bufpointer[2], bufpointer[3]);
-      return (-2);
+      return -2;
     }
 
-  return (0);
+  return 0;
 }
 
 
@@ -5167,14 +5152,14 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
     {
       fprintf(stderr, "wrong indicator section >%c%c%c%c<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-1);
+      return -1;
     }
 
   gribversion = GRIB_EDITION(section);
   if ( gribversion != 2 )
     {
       fprintf(stderr, "wrong GRIB version %d\n", gribversion);
-      return (-1);      
+      return -1;      
     }
 
   gribsize = 0;
@@ -5191,7 +5176,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 1 )
     {
       fprintf(stderr, "Unexpected section1 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *idsp = section;
@@ -5225,7 +5210,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   else
     {
       fprintf(stderr, "Unexpected section3 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   grib_len += sec_len;
@@ -5239,7 +5224,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 4 )
     {
       fprintf(stderr, "Unexpected section4 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *pdsp = section;
@@ -5255,7 +5240,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 5 )
     {
       fprintf(stderr, "Unexpected section5 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *drsp = section;
@@ -5271,7 +5256,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 6 )
     {
       fprintf(stderr, "Unexpected section6 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *bmsp = section;
@@ -5287,7 +5272,7 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
   if ( sec_num != 7 )
     {
       fprintf(stderr, "Unexpected section7 number %d\n", sec_num);
-      return (-1);
+      return -1;
     }
 
   *bdsp = section;
@@ -5318,10 +5303,10 @@ int grib2Sections(unsigned char *gribbuffer, long gribbufsize, unsigned char **i
     {
       fprintf(stderr, "Missing end section >%2x %2x %2x %2x<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-2);
+      return -2;
     }
 
-  return (0);
+  return 0;
 }
 
 
@@ -5342,7 +5327,7 @@ int grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer,
     {
       fprintf(stderr, "wrong indicator section >%c%c%c%c<\n",
 	      section[0], section[1], section[2], section[3]);
-      return (-1);
+      return -1;
     }
 
   gribversion = GRIB_EDITION(section);
@@ -5395,7 +5380,7 @@ int grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer,
   if ( gribsize > recsize )
     {
       fprintf(stderr, "GRIB buffer size %ld too small! Min size = %ld\n", recsize, gribsize);
-      return (1);
+      return 1;
     }
 
   /* end section - "7777" in ascii */
@@ -5423,7 +5408,7 @@ int grib_info_for_grads(off_t recpos, long recsize, unsigned char *gribbuffer,
   printf("intnum %d %d %d\n", intnum[0], intnum[1], intnum[2]);
   printf("fltnum %g %g %g\n", fltnum[0], fltnum[1], fltnum[2]);
   */
-  return (0);
+  return 0;
 }
 
 
@@ -5939,7 +5924,7 @@ void repair1(unsigned char *gbuf, long gbufsize)
   int bds_head = 11;
   int bds_ext = 0, bds_ubits;
   int datstart = 0;
-  /* int llarge = FALSE; */
+  // bool llarge = false;
 
   long gribrecsize;
   nerr = grib1Sections(gbuf, gbufsize, &pds, &gds, &bms, &bds, &gribrecsize);
@@ -5956,7 +5941,7 @@ void repair1(unsigned char *gbuf, long gbufsize)
     }
 
   /* recLen = gribrec_len(gbuf[4], gbuf[5], gbuf[6]); */
-  /* if ( recLen > JP23SET ) llarge = TRUE; */
+  /* if ( recLen > JP23SET ) llarge = true; */
 
   bds_len   = BDS_Len;
   bds_nbits = BDS_NumBits;
@@ -6048,7 +6033,6 @@ void gribRepair1(int nrec, long recsize, unsigned char *gribbuffer)
 #include <string.h>
 
 #if defined (HAVE_CONFIG_H)
-#  include "config.h"
 #endif
 
 #if  defined (HAVE_LIBSZ)
@@ -6388,7 +6372,7 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
   size_t destLen, sourceLen;
   enum { bds_head = 11 };
   int bds_ext = 0;
-  int llarge = FALSE;
+  bool llarge = false;
 
   UNUSED(dbufsize);
 
@@ -6409,7 +6393,7 @@ int  gribUnzip(unsigned char *dbuf, long dbufsize, unsigned char *sbuf, long sbu
   int bds_zstart = 14;
 
   int recLen = gribrec_len(bds[bds_zstart], bds[bds_zstart+1], bds[bds_zstart+2]);
-  if ( recLen > JP23SET ) llarge = TRUE;
+  if ( recLen > JP23SET ) llarge = true;
 
   int bds_zoffset = 12;
   if ( llarge ) bds_zoffset += 2;
@@ -8466,18 +8450,16 @@ int gribVersion(unsigned char *is, size_t buffersize)
   if ( buffersize < 8 )
     Error("Buffer too small (current size %d)!", (int) buffersize);
 
-  return (GRIB_EDITION(is));
+  return GRIB_EDITION(is);
 }
 
 static 
 double GET_Real(unsigned char *grib)
 {
-  int iexp, imant;
-
-  iexp  = GET_UINT1(grib[0]);
-  imant = GET_UINT3(grib[1], grib[2], grib[3]);
+  int iexp  = GET_UINT1(grib[0]);
+  int imant = GET_UINT3(grib[1], grib[2], grib[3]);
 
-  return (decfp2(iexp, imant));
+  return decfp2(iexp, imant);
 }
 
 static 
@@ -8485,7 +8467,7 @@ int decodeIS(unsigned char *is, int *isec0, int *iret)
 {
   int isLen = 0;
   int grib1offset;
-  int lgrib = FALSE, lbudg = FALSE, ltide = FALSE;
+  bool lgrib = false, lbudg = false, ltide = false;
 
   /*
     Octets 1 - 4 : The letters G R I B.
@@ -8497,22 +8479,22 @@ int decodeIS(unsigned char *is, int *isec0, int *iret)
   /*
     Check that 'GRIB' is found where expected.
   */
-  if ( GRIB_START(is) ) lgrib = TRUE;
+  if ( GRIB_START(is) ) lgrib = true;
   /*
     ECMWF pseudo-grib data uses 'BUDG' and 'TIDE'.
   */
-  if ( BUDG_START(is) ) lbudg = TRUE;
-  if ( TIDE_START(is) ) ltide = TRUE;
+  if ( BUDG_START(is) ) lbudg = true;
+  if ( TIDE_START(is) ) ltide = true;
   /*
     Data is not GRIB or pseudo-grib.
   */
-  if ( lgrib == FALSE && lbudg == FALSE && ltide == FALSE )
+  if ( lgrib == false && lbudg == false && ltide == false )
     {
       *iret = 305;
       gprintf(__func__, "Input data is not GRIB or pseudo-grib.");
       gprintf(__func__, "Return code = %d", *iret);
     }
-  if ( lbudg == TRUE || ltide == TRUE )
+  if ( lbudg || ltide )
     {
       *iret = 305;
       gprintf(__func__, "Pseudo-grib data unsupported.");
@@ -8537,7 +8519,7 @@ int decodeIS(unsigned char *is, int *isec0, int *iret)
 
   isLen = 4 + grib1offset;
 
-  return (isLen);
+  return isLen;
 }
 
 static 
@@ -8739,7 +8721,7 @@ int decodePDS(unsigned char *pds, int *isec0, int *isec1)
 	}
     }
 
-  return (pdsLen);
+  return pdsLen;
 }
 
 
@@ -9232,7 +9214,7 @@ static
 int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2, int *numGridVals)
 {
   /* int imisng = 0; */
-  int  ReducedGrid = FALSE, VertCoorTab = FALSE;
+  bool  ReducedGrid = false, VertCoorTab = false;
 #if defined (VECTORCODE)
   unsigned char *igrib;
   GRIBPACK *lgrib = NULL;
@@ -9252,17 +9234,17 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
     { /* Either vct or reduced grid */
       if ( GDS_NV != 0 )
 	{ /* we have vct */
-	  VertCoorTab = TRUE;
+	  VertCoorTab = true;
 	  int ipl =  4*GDS_NV + ipvpl - 1;
 	  if ( ipl < gdsLen )
 	    {
-	      ReducedGrid = TRUE;
+	      ReducedGrid = true;
 	    }
 	}
       else
 	{
-	  VertCoorTab = FALSE;
-	  ReducedGrid = TRUE;
+	  VertCoorTab = false;
+	  ReducedGrid = true;
 	}
       /*	  ReducedGrid = (gdsLen - 32 - 4*GDS_NV); */
     }
@@ -9279,7 +9261,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       if ( jlenl == GDS_NumLat )
 	{
 	  *numGridVals = 0;
-	  ISEC2_Reduced = TRUE;
+	  ISEC2_Reduced = true;
 	  for ( int i = 0; i < jlenl; i++ )
 	    {
 	      ISEC2_RowLon(i) = GET_UINT2(gds[locnl+2*i], gds[locnl+2*i+1]);
@@ -9288,7 +9270,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	}
       else
 	{
-	  ReducedGrid = FALSE;
+	  ReducedGrid = false;
 	}
     }
 
@@ -9332,18 +9314,14 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_ROTSTR )
     {
-      /*
-      iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LATLON     ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROT ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROTSTR )
     {
-      /*
-      iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LCC )
     {
@@ -9376,9 +9354,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       isec2[ 8] = 0;
       isec2[ 9] = 0;
       isec2[10] = 0;
-      /*
-      iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_GME )
     {
@@ -9392,16 +9368,19 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       ISEC2_GME_LonMPL = GDS_GME_LonMPL;
       ISEC2_GME_BFlag  = GDS_GME_BFlag;
       *numGridVals  = (ISEC2_GME_NI+1)*(ISEC2_GME_NI+1)*10;
-      /*
-      iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
     }
   else
     {
+      static bool lwarn = true;
       ISEC2_NumLon = GDS_NumLon;
       ISEC2_NumLat = GDS_NumLat;
       *numGridVals  = ISEC2_NumLon*ISEC2_NumLat;
-      Message("Gridtype %d unsupported", ISEC2_GridType);
+      if ( lwarn )
+        {
+          lwarn = false;
+          Message("GRIB gridtype %d unsupported", ISEC2_GridType);
+        }
     }
 
   /*    vertical coordinate parameters for hybrid levels.     */
@@ -9412,7 +9391,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
   isec2[17] = 0;
   isec2[18] = 0;
 
-  if ( VertCoorTab == TRUE )
+  if ( VertCoorTab )
     {
       int locnv;
       if ( ISEC0_GRIB_Version  == 0 )
@@ -9464,7 +9443,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
 			  T *fsec4, int fsec4len, int dfunc, int bdsLenIn, int numGridVals, int llarge, int *iret)
 {
   unsigned char *igrib;
-  int lspherc = FALSE, lcomplex = FALSE;
+  bool lspherc = false, lcomplex = false;
   int lcompress;
   int jup, kup, mup;
   int locnd;
@@ -9505,7 +9484,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
   /* 0------- grid point           */
   /* 1------- spherical harmonics  */
 
-  lspherc = bds_flag >> 7;
+  lspherc = (bds_flag >> 7)&1;
 
   if ( lspherc ) isec4[2] = 128;
   else           isec4[2] = 0;
@@ -9750,15 +9729,15 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 {
   UCHAR *is = NULL, *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
   int isLen = 0, pdsLen = 0, gdsLen = 0, bmsLen = 0, bdsLen = 0, esLen = 0;
-  int gdsIncluded = FALSE;
-  int bmsIncluded = FALSE;
+  bool gdsIncluded = false;
+  bool bmsIncluded = false;
   int bitmapSize = 0;
   int imaskSize = 0;
-  int ldebug = FALSE;
-  int llarge = FALSE, l_iorj = FALSE;
-  int lsect2 = FALSE, lsect3 = FALSE;
+  bool ldebug = false;
+  bool llarge = false, l_iorj = false;
+  bool lsect2 = false, lsect3 = false;
   int numGridVals = 0;
-  static int lmissvalinfo = 1;
+  static bool lmissvalinfo = 1;
 
   UNUSED(kleng);
 
@@ -9766,7 +9745,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 
   grsdef();
 
-  ISEC2_Reduced = FALSE;
+  ISEC2_Reduced = false;
 
   /*
     ----------------------------------------------------------------
@@ -9774,7 +9753,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   is = (unsigned char *) &kgrib[0];
-
   isLen = decodeIS(is, isec0, iret);
 
   /*
@@ -9787,7 +9765,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     {
       if ( ldebug )
 	gprintf(__func__, "Special case, negative length multiplied by -120");
-      llarge = TRUE;
+      llarge = true;
       ISEC0_GRIB_Len *= (-120);
     }
   /*
@@ -9881,7 +9859,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */ 
   pds = is + isLen;
-
   pdsLen = decodePDS(pds, isec0, isec1);
 
   /*
@@ -9894,7 +9871,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( gdsIncluded )
     {
       gds = is + isLen + pdsLen;
-
       gdsLen = TEMPLATE(decodeGDS,T)(gds, isec0, isec2, fsec2, &numGridVals);
     }
 
@@ -9909,8 +9885,8 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( bmsIncluded )
     {
       bms = is + isLen + pdsLen + gdsLen;
-
       bmsLen = BMS_Len;
+
       imaskSize = (bmsLen - 6)<<3;
       bitmapSize = imaskSize - BMS_UnusedBits;
       /*
@@ -9924,9 +9900,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   bds = is + isLen + pdsLen + gdsLen + bmsLen;
-
   bdsLen = ISEC0_GRIB_Len - (isLen + pdsLen + gdsLen + bmsLen);
-
   bdsLen = TEMPLATE(decodeBDS,T)(ISEC1_DecScaleFactor, bds, isec2, isec4, 
 				 fsec4, fsec4len, dfunc, bdsLen, numGridVals, llarge, iret);
 
@@ -9939,7 +9913,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       if ( dfunc != 'L' && dfunc != 'J' )
 	if ( DBL_IS_NAN(FSEC3_MissVal) && lmissvalinfo )
 	  {
-	    lmissvalinfo = 0;
+	    lmissvalinfo = false;
 	    FSEC3_MissVal = (T)GRIB_MISSVAL;
 	    Message("Missing value = NaN is unsupported, set to %g!", GRIB_MISSVAL);
 	  }
@@ -10148,7 +10122,7 @@ static
 int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2, int *numGridVals)
 {
   /* int imisng = 0; */
-  int  ReducedGrid = FALSE, VertCoorTab = FALSE;
+  bool  ReducedGrid = false, VertCoorTab = false;
 #if defined (VECTORCODE)
   unsigned char *igrib;
   GRIBPACK *lgrib = NULL;
@@ -10168,17 +10142,17 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
     { /* Either vct or reduced grid */
       if ( GDS_NV != 0 )
 	{ /* we have vct */
-	  VertCoorTab = TRUE;
+	  VertCoorTab = true;
 	  int ipl =  4*GDS_NV + ipvpl - 1;
 	  if ( ipl < gdsLen )
 	    {
-	      ReducedGrid = TRUE;
+	      ReducedGrid = true;
 	    }
 	}
       else
 	{
-	  VertCoorTab = FALSE;
-	  ReducedGrid = TRUE;
+	  VertCoorTab = false;
+	  ReducedGrid = true;
 	}
       /*	  ReducedGrid = (gdsLen - 32 - 4*GDS_NV); */
     }
@@ -10195,7 +10169,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       if ( jlenl == GDS_NumLat )
 	{
 	  *numGridVals = 0;
-	  ISEC2_Reduced = TRUE;
+	  ISEC2_Reduced = true;
 	  for ( int i = 0; i < jlenl; i++ )
 	    {
 	      ISEC2_RowLon(i) = GET_UINT2(gds[locnl+2*i], gds[locnl+2*i+1]);
@@ -10204,7 +10178,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	}
       else
 	{
-	  ReducedGrid = FALSE;
+	  ReducedGrid = false;
 	}
     }
 
@@ -10248,18 +10222,14 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_GAUSSIAN_ROTSTR )
     {
-      /*
-      iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_GG(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LATLON     ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROT ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_STR ||
 	    ISEC2_GridType == GRIB1_GTYPE_LATLON_ROTSTR )
     {
-      /*
-      iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_LL(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_LCC )
     {
@@ -10292,9 +10262,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       isec2[ 8] = 0;
       isec2[ 9] = 0;
       isec2[10] = 0;
-      /*
-      iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_SH(gds, gdspos, isec0, isec2, imisng);
     }
   else if ( ISEC2_GridType == GRIB1_GTYPE_GME )
     {
@@ -10308,16 +10276,19 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
       ISEC2_GME_LonMPL = GDS_GME_LonMPL;
       ISEC2_GME_BFlag  = GDS_GME_BFlag;
       *numGridVals  = (ISEC2_GME_NI+1)*(ISEC2_GME_NI+1)*10;
-      /*
-      iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
-      */
+      // iret = decodeGDS_TR(gds, gdspos, isec0, isec2, imisng);
     }
   else
     {
+      static bool lwarn = true;
       ISEC2_NumLon = GDS_NumLon;
       ISEC2_NumLat = GDS_NumLat;
       *numGridVals  = ISEC2_NumLon*ISEC2_NumLat;
-      Message("Gridtype %d unsupported", ISEC2_GridType);
+      if ( lwarn )
+        {
+          lwarn = false;
+          Message("GRIB gridtype %d unsupported", ISEC2_GridType);
+        }
     }
 
   /*    vertical coordinate parameters for hybrid levels.     */
@@ -10328,7 +10299,7 @@ int TEMPLATE(decodeGDS,T)(unsigned char  *gds, int *isec0, int *isec2, T *fsec2,
   isec2[17] = 0;
   isec2[18] = 0;
 
-  if ( VertCoorTab == TRUE )
+  if ( VertCoorTab )
     {
       int locnv;
       if ( ISEC0_GRIB_Version  == 0 )
@@ -10380,7 +10351,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
 			  T *fsec4, int fsec4len, int dfunc, int bdsLenIn, int numGridVals, int llarge, int *iret)
 {
   unsigned char *igrib;
-  int lspherc = FALSE, lcomplex = FALSE;
+  bool lspherc = false, lcomplex = false;
   int lcompress;
   int jup, kup, mup;
   int locnd;
@@ -10421,7 +10392,7 @@ int TEMPLATE(decodeBDS,T)(int decscale, unsigned char *bds, int *isec2, int *ise
   /* 0------- grid point           */
   /* 1------- spherical harmonics  */
 
-  lspherc = bds_flag >> 7;
+  lspherc = (bds_flag >> 7)&1;
 
   if ( lspherc ) isec4[2] = 128;
   else           isec4[2] = 0;
@@ -10666,15 +10637,15 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 {
   UCHAR *is = NULL, *pds = NULL, *gds = NULL, *bms = NULL, *bds = NULL;
   int isLen = 0, pdsLen = 0, gdsLen = 0, bmsLen = 0, bdsLen = 0, esLen = 0;
-  int gdsIncluded = FALSE;
-  int bmsIncluded = FALSE;
+  bool gdsIncluded = false;
+  bool bmsIncluded = false;
   int bitmapSize = 0;
   int imaskSize = 0;
-  int ldebug = FALSE;
-  int llarge = FALSE, l_iorj = FALSE;
-  int lsect2 = FALSE, lsect3 = FALSE;
+  bool ldebug = false;
+  bool llarge = false, l_iorj = false;
+  bool lsect2 = false, lsect3 = false;
   int numGridVals = 0;
-  static int lmissvalinfo = 1;
+  static bool lmissvalinfo = 1;
 
   UNUSED(kleng);
 
@@ -10682,7 +10653,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
 
   grsdef();
 
-  ISEC2_Reduced = FALSE;
+  ISEC2_Reduced = false;
 
   /*
     ----------------------------------------------------------------
@@ -10690,7 +10661,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   is = (unsigned char *) &kgrib[0];
-
   isLen = decodeIS(is, isec0, iret);
 
   /*
@@ -10703,7 +10673,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     {
       if ( ldebug )
 	gprintf(__func__, "Special case, negative length multiplied by -120");
-      llarge = TRUE;
+      llarge = true;
       ISEC0_GRIB_Len *= (-120);
     }
   /*
@@ -10797,7 +10767,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */ 
   pds = is + isLen;
-
   pdsLen = decodePDS(pds, isec0, isec1);
 
   /*
@@ -10810,7 +10779,6 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( gdsIncluded )
     {
       gds = is + isLen + pdsLen;
-
       gdsLen = TEMPLATE(decodeGDS,T)(gds, isec0, isec2, fsec2, &numGridVals);
     }
 
@@ -10825,8 +10793,8 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   if ( bmsIncluded )
     {
       bms = is + isLen + pdsLen + gdsLen;
-
       bmsLen = BMS_Len;
+
       imaskSize = (bmsLen - 6)<<3;
       bitmapSize = imaskSize - BMS_UnusedBits;
       /*
@@ -10840,9 +10808,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
     ----------------------------------------------------------------
   */
   bds = is + isLen + pdsLen + gdsLen + bmsLen;
-
   bdsLen = ISEC0_GRIB_Len - (isLen + pdsLen + gdsLen + bmsLen);
-
   bdsLen = TEMPLATE(decodeBDS,T)(ISEC1_DecScaleFactor, bds, isec2, isec4, 
 				 fsec4, fsec4len, dfunc, bdsLen, numGridVals, llarge, iret);
 
@@ -10855,7 +10821,7 @@ void TEMPLATE(grib_decode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       if ( dfunc != 'L' && dfunc != 'J' )
 	if ( DBL_IS_NAN(FSEC3_MissVal) && lmissvalinfo )
 	  {
-	    lmissvalinfo = 0;
+	    lmissvalinfo = false;
 	    FSEC3_MissVal = (T)GRIB_MISSVAL;
 	    Message("Missing value = NaN is unsupported, set to %g!", GRIB_MISSVAL);
 	  }
@@ -11402,6 +11368,9 @@ void encodePDS(GRIBPACK *lpds, long pdsLen, int *isec1)
 #ifdef T
 
 
+#define round_float roundf
+#define round_double round
+
 static
 void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datasize, GRIBPACK *lGrib,
 				     const T *data, T zref, T factor, size_t *gz)
@@ -11419,6 +11388,7 @@ void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datas
   for ( i = packStart; i < datasize; i++ )
     {
       /* note float -> unsigned int .. truncate */
+      // ival = (unsigned int)(TEMPLATE(round,T)((data[i] - zref) * factor));
       ival = (unsigned int) ((data[i] - zref) * factor + (T)0.5);
       /*
 	if ( ival > max_nbpv_pow2 ) ival = max_nbpv_pow2;
@@ -11464,6 +11434,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
     {
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // sgrib[i] = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           sgrib[i] = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
         }
     }
@@ -11472,6 +11443,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
       uint16_t ui16;
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // ui16 = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           ui16 = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
           sgrib[i] = gribSwapByteOrder_uint16(ui16);
         }
@@ -11499,6 +11471,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
 #endif
   for ( i = 0; i < datasize; i++ )
     {
+      // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
       tmp = ((data[i] - zref) * factor + (T)0.5);
       ui16 = (uint16_t) tmp;
       lGrib[z  ] = ui16 >>  8;
@@ -11542,6 +11515,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
 	  lGrib[z  ] = (GRIBPACK)tmp;
           z++;
@@ -11605,6 +11579,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 16);
@@ -11634,6 +11609,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 24);
@@ -11671,17 +11647,17 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
   U_BYTEORDER;
   size_t i, j, z = *gz;
 #ifdef _ARCH_PWR6
-#define __UNROLL_DEPTH_2 8
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 8 };
 #else
-#define __UNROLL_DEPTH_2 128
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 128 };
 #endif
   size_t residual;
   size_t ofs;
-  T dval[__UNROLL_DEPTH_2];
+  T dval[CGRIBEX__UNROLL_DEPTH_2];
 
   data += packStart;
   datasize -= packStart;
-  residual =  datasize % __UNROLL_DEPTH_2;
+  residual =  datasize % CGRIBEX__UNROLL_DEPTH_2;
   ofs = datasize - residual;
 
   // reducing FP operations to single FMA is slowing down on pwr6 ...
@@ -11692,13 +11668,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       hpmStart(2, "pack 8 bit unrolled");
 #endif
       unsigned char *cgrib = (unsigned char *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      *cgrib++ =  (unsigned long) dval[j];
@@ -11706,10 +11683,11 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	      *cgrib++ =  (unsigned char) dval[j];
 #endif
 	    }
-	  z += __UNROLL_DEPTH_2;
+	  z += CGRIBEX__UNROLL_DEPTH_2;
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -11738,15 +11716,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #endif
       uint16_t *sgrib = (uint16_t *) (lGrib+z);
 
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *sgrib++ = (unsigned long) dval[j];
@@ -11754,20 +11733,21 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 		  *sgrib++ = (uint16_t) dval[j];
 #endif
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 		  ival = (uint16_t) dval[j];
                   *sgrib++ = gribSwapByteOrder_uint16(ival);
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -11806,13 +11786,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #else
       uint32_t ival;
 #endif
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      ival = (unsigned long) dval[j];
@@ -11827,6 +11808,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -11852,15 +11834,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       uint32_t ival;
 #endif
       unsigned int *igrib = (unsigned int *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
  {
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *igrib = (unsigned long) dval[j];
@@ -11873,7 +11856,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
                   ival = (uint32_t) dval[j];
 		  lGrib[z  ] =  (GRIBPACK)(ival >> 24);
@@ -11886,6 +11869,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+          // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -11930,7 +11914,6 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
     }
 
   *gz = z;
-#undef __UNROLL_DEPTH_2
 }
 
 #endif /* T */
@@ -11948,6 +11931,9 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #ifdef T
 
 
+#define round_float roundf
+#define round_double round
+
 static
 void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datasize, GRIBPACK *lGrib,
 				     const T *data, T zref, T factor, size_t *gz)
@@ -11965,6 +11951,7 @@ void TEMPLATE(encode_array_common,T)(int numBits, size_t packStart, size_t datas
   for ( i = packStart; i < datasize; i++ )
     {
       /* note float -> unsigned int .. truncate */
+      // ival = (unsigned int)(TEMPLATE(round,T)((data[i] - zref) * factor));
       ival = (unsigned int) ((data[i] - zref) * factor + (T)0.5);
       /*
 	if ( ival > max_nbpv_pow2 ) ival = max_nbpv_pow2;
@@ -12010,6 +11997,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
     {
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // sgrib[i] = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           sgrib[i] = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
         }
     }
@@ -12018,6 +12006,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
       uint16_t ui16;
       for ( size_t i = 0; i < datasize; i++ )
         {
+          // ui16 = (uint16_t)(TEMPLATE(round,T)((data[i] - zref) * factor));
           ui16 = (uint16_t) ((data[i] - zref) * factor + (T)0.5);
           sgrib[i] = gribSwapByteOrder_uint16(ui16);
         }
@@ -12045,6 +12034,7 @@ void TEMPLATE(encode_array_2byte,T)(size_t datasize, GRIBPACK *restrict lGrib,
 #endif
   for ( i = 0; i < datasize; i++ )
     {
+      // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
       tmp = ((data[i] - zref) * factor + (T)0.5);
       ui16 = (uint16_t) tmp;
       lGrib[z  ] = ui16 >>  8;
@@ -12088,6 +12078,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
 	  lGrib[z  ] = (GRIBPACK)tmp;
           z++;
@@ -12151,6 +12142,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 16);
@@ -12180,6 +12172,7 @@ void TEMPLATE(encode_array,T)(int numBits, size_t packStart, size_t datasize,
 #endif
       for ( i = 0; i < datasize; i++ )
 	{
+	  // tmp = TEMPLATE(round,T)((data[i] - zref) * factor);
 	  tmp = ((data[i] - zref) * factor + (T)0.5);
           ui32 = (uint32_t) tmp;
           lGrib[z  ] =  (GRIBPACK)(ui32 >> 24);
@@ -12217,17 +12210,17 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
   U_BYTEORDER;
   size_t i, j, z = *gz;
 #ifdef _ARCH_PWR6
-#define __UNROLL_DEPTH_2 8
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 8 };
 #else
-#define __UNROLL_DEPTH_2 128
+  enum { CGRIBEX__UNROLL_DEPTH_2 = 128 };
 #endif
   size_t residual;
   size_t ofs;
-  T dval[__UNROLL_DEPTH_2];
+  T dval[CGRIBEX__UNROLL_DEPTH_2];
 
   data += packStart;
   datasize -= packStart;
-  residual =  datasize % __UNROLL_DEPTH_2;
+  residual =  datasize % CGRIBEX__UNROLL_DEPTH_2;
   ofs = datasize - residual;
 
   // reducing FP operations to single FMA is slowing down on pwr6 ...
@@ -12238,13 +12231,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       hpmStart(2, "pack 8 bit unrolled");
 #endif
       unsigned char *cgrib = (unsigned char *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      *cgrib++ =  (unsigned long) dval[j];
@@ -12252,10 +12246,11 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	      *cgrib++ =  (unsigned char) dval[j];
 #endif
 	    }
-	  z += __UNROLL_DEPTH_2;
+	  z += CGRIBEX__UNROLL_DEPTH_2;
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -12284,15 +12279,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #endif
       uint16_t *sgrib = (uint16_t *) (lGrib+z);
 
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *sgrib++ = (unsigned long) dval[j];
@@ -12300,20 +12296,21 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 		  *sgrib++ = (uint16_t) dval[j];
 #endif
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 		  ival = (uint16_t) dval[j];
                   *sgrib++ = gribSwapByteOrder_uint16(ival);
 		}
-	      z += 2*__UNROLL_DEPTH_2;
+	      z += 2*CGRIBEX__UNROLL_DEPTH_2;
 	    }
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -12352,13 +12349,14 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 #else
       uint32_t ival;
 #endif
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
 	{
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
 #ifdef _ARCH_PWR6
 	      ival = (unsigned long) dval[j];
@@ -12373,6 +12371,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+	  // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       for (j = 0; j < residual; j++) 
@@ -12398,15 +12397,16 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
       uint32_t ival;
 #endif
       unsigned int *igrib = (unsigned int *) (lGrib + z);
-      for ( i = 0; i < datasize - residual; i += __UNROLL_DEPTH_2 ) 
+      for ( i = 0; i < datasize - residual; i += CGRIBEX__UNROLL_DEPTH_2 )
  {
-	  for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	  for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 	    {
+	      // dval[j] = TEMPLATE(round,T)((data[i+j] - zref) * factor);
 	      dval[j] = ((data[i+j] - zref) * factor + (T)0.5);
 	    }
 	  if ( IS_BIGENDIAN() )
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
 #ifdef _ARCH_PWR6
 		  *igrib = (unsigned long) dval[j];
@@ -12419,7 +12419,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	    }
 	  else
 	    {
-	      for (j = 0; j < __UNROLL_DEPTH_2; j++) 
+	      for (j = 0; j < CGRIBEX__UNROLL_DEPTH_2; j++)
 		{
                   ival = (uint32_t) dval[j];
 		  lGrib[z  ] =  (GRIBPACK)(ival >> 24);
@@ -12432,6 +12432,7 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
 	}
       for (j = 0; j < residual; j++) 
 	{
+          // dval[j] = TEMPLATE(round,T)((data[ofs+j] - zref) * factor);
 	  dval[j] = ((data[ofs+j] - zref) * factor + (T)0.5);
 	}
       if ( IS_BIGENDIAN() )
@@ -12476,7 +12477,6 @@ void TEMPLATE(encode_array_unrolled,T)(int numBits, size_t packStart, size_t dat
     }
 
   *gz = z;
-#undef __UNROLL_DEPTH_2
 }
 
 #endif /* T */
@@ -12736,7 +12736,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
   int bds_ext = 0;
   /* ibits = BitsPerInt; */
   int exponent, mantissa;
-  int lspherc = FALSE;
+  bool lspherc = false;
   int isubset = 0, itemp = 0, itrunc = 0;
   T factor = 1, fmin, fmax;
   const double jpepsln = 1.0e-12; /* -----> tolerance used to check equality     */
@@ -12751,10 +12751,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
       lspherc =  ( isec2[0] == 50 || isec2[0] == 60 ||
                    isec2[0] == 70 || isec2[0] == 80 );
 
-      if ( lspherc )
-	isec4[2] = 128;
-      else
-	isec4[2] = 0;
+      isec4[2] = lspherc ? 128 : 0;
     }
   else
     {
@@ -12765,8 +12762,8 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
 
   /* Complex packing supported for spherical harmonics. */
 
-  int lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
-                 ( lspherc && isec2 && ( isec2[5] == 2 ) );
+  bool lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
+                  ( lspherc && isec2 && ( isec2[5] == 2 ) );
 
   /* Check input specification is consistent */
 
@@ -13032,7 +13029,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   /*
   if ( ( isec4[3] == 64 ) && ( isec2[5] == 2 ) )
     {
-      static int lwarn_cplx = TRUE;
+      static bool lwarn_cplx = true;
 
       if ( lwarn_cplx )
 	Message("Complex packing of spectral data unsupported, using simple packing!");
@@ -13040,7 +13037,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       isec2[5] = 1;
       isec4[3] = 0;
 
-      lwarn_cplx = FALSE;
+      lwarn_cplx = false;
     }
   */
   TEMPLATE(encodeGDS,T)(lGrib, &gribLen, isec2, fsec2);
@@ -13345,7 +13342,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
   int bds_ext = 0;
   /* ibits = BitsPerInt; */
   int exponent, mantissa;
-  int lspherc = FALSE;
+  bool lspherc = false;
   int isubset = 0, itemp = 0, itrunc = 0;
   T factor = 1, fmin, fmax;
   const double jpepsln = 1.0e-12; /* -----> tolerance used to check equality     */
@@ -13360,10 +13357,7 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
       lspherc =  ( isec2[0] == 50 || isec2[0] == 60 ||
                    isec2[0] == 70 || isec2[0] == 80 );
 
-      if ( lspherc )
-	isec4[2] = 128;
-      else
-	isec4[2] = 0;
+      isec4[2] = lspherc ? 128 : 0;
     }
   else
     {
@@ -13374,8 +13368,8 @@ int TEMPLATE(encodeBDS,T)(GRIBPACK *lGrib, long *gribLen, int decscale, int *ise
 
   /* Complex packing supported for spherical harmonics. */
 
-  int lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
-                 ( lspherc && isec2 && ( isec2[5] == 2 ) );
+  bool lcomplex = ( lspherc && ( isec4[3] == 64 ) ) ||
+                  ( lspherc && isec2 && ( isec2[5] == 2 ) );
 
   /* Check input specification is consistent */
 
@@ -13641,7 +13635,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
   /*
   if ( ( isec4[3] == 64 ) && ( isec2[5] == 2 ) )
     {
-      static int lwarn_cplx = TRUE;
+      static bool lwarn_cplx = true;
 
       if ( lwarn_cplx )
 	Message("Complex packing of spectral data unsupported, using simple packing!");
@@ -13649,7 +13643,7 @@ void TEMPLATE(grib_encode,T)(int *isec0, int *isec1, int *isec2, T *fsec2, int *
       isec2[5] = 1;
       isec4[3] = 0;
 
-      lwarn_cplx = FALSE;
+      lwarn_cplx = false;
     }
   */
   TEMPLATE(encodeGDS,T)(lGrib, &gribLen, isec2, fsec2);
@@ -13711,7 +13705,7 @@ void encode_dummy(void)
   (void) encode_array_unrolled_double(0, 0, 0, NULL, NULL, 0, 0, NULL);
   (void) encode_array_unrolled_float(0, 0, 0, NULL, NULL, 0, 0, NULL);
 }
-static const char grb_libvers[] = "1.7.6" " of ""Dec 20 2016"" ""19:55:24";
+static const char grb_libvers[] = "1.8.1" " of ""Jun  6 2017"" ""11:54:18";
 const char *
 cgribexLibraryVersion(void)
 {
diff --git a/libcdi/src/gribapi.c b/libcdi/src/gribapi.c
index 0a9aeb4..b2e3129 100644
--- a/libcdi/src/gribapi.c
+++ b/libcdi/src/gribapi.c
@@ -15,7 +15,7 @@
 
 static char gribapi_libvers[64] = "";
 #if  defined  (HAVE_LIBGRIB_API)
-static int gribapi_libvers_init;
+static bool gribapi_libvers_init;
 #endif
 
 
@@ -43,7 +43,7 @@ const char *gribapiLibraryVersionString(void)
       gribapiLibraryVersion(&major_version, &minor_version, &revision_version);
 
       sprintf(gribapi_libvers, "%d.%d.%d", major_version, minor_version, revision_version);
-      gribapi_libvers_init = 1;
+      gribapi_libvers_init = true;
     }
 #endif
 
@@ -76,7 +76,7 @@ void gribContainersNew(stream_t * streamptr)
           for ( int levelID = 0; levelID < nlevs; ++levelID )
             {
               gribContainers[varID][levelID].gribHandle = gribHandleNew(editionNumber);
-              gribContainers[varID][levelID].init = FALSE;
+              gribContainers[varID][levelID].init = false;
             }
 	}
 
@@ -88,7 +88,7 @@ void gribContainersNew(stream_t * streamptr)
       for ( int varID = 0; varID < nvars; ++varID )
         {
           gribContainers[varID].gribHandle = gribHandleNew(editionNumber);
-          gribContainers[varID].init = FALSE;
+          gribContainers[varID].init = false;
 	}
 
       streamptr->gribContainers = (void *) gribContainers;
diff --git a/libcdi/src/gribapi.h b/libcdi/src/gribapi.h
index 57d0780..1666b2b 100644
--- a/libcdi/src/gribapi.h
+++ b/libcdi/src/gribapi.h
@@ -110,7 +110,7 @@ static inline void gribHandleDelete(void *gh)
 #endif
 
 typedef struct {
-  int init;
+  bool init;
   void *gribHandle;
 }
 gribContainer_t;
diff --git a/libcdi/src/gribapi_utilities.c b/libcdi/src/gribapi_utilities.c
index b333723..5e88cd9 100644
--- a/libcdi/src/gribapi_utilities.c
+++ b/libcdi/src/gribapi_utilities.c
@@ -427,7 +427,7 @@ int gribapiGetTsteptype(grib_handle *gh)
                 {
                   if (CDI_Debug)
                       Warning("timeRangeIND = %d;  stepType= %s; tsteptype=%d unsupported timeRangeIND at the moment, set to instant!", timeRangeIND, stepType, tsteptype);
-                  lprint = FALSE;
+                  lprint = false;
                 }
                 break;
           }
diff --git a/libcdi/src/grid.c b/libcdi/src/grid.c
index 82b77d1..f4acd57 100644
--- a/libcdi/src/grid.c
+++ b/libcdi/src/grid.c
@@ -2056,14 +2056,21 @@ void grid_check_cyclic(grid_t *gridptr)
     {
       if ( xvals && xsize > 1 )
         {
-          double xinc = xvals[1] - xvals[0];
-          if ( IS_EQUAL(xinc, 0) )
-            xinc = (xvals[xsize-1] - xvals[0])/(double)(xsize-1);
+          double xval1 = xvals[0];
+          double xval2 = xvals[1];
+          double xvaln = xvals[xsize-1];
+          if ( xval2 < xval1 ) xval2 += 360;
+          if ( xvaln < xval1 ) xvaln += 360;
 
-          double x0 = 2*xvals[xsize-1]-xvals[xsize-2]-360;
+          if ( IS_NOT_EQUAL(xval1, xvaln) )
+            {
+              double xinc = xval2 - xval1;
+              if ( IS_EQUAL(xinc, 0) ) xinc = (xvaln - xval1)/(xsize-1);
+
+              double x0 = xvaln + xinc - 360;
 
-          if ( IS_NOT_EQUAL(xvals[0], xvals[xsize-1]) )
-            if ( fabs(x0 - xvals[0]) < 0.01*xinc ) gridptr->isCyclic = 1;
+              if ( fabs(x0 - xval1) < 0.01*xinc ) gridptr->isCyclic = 1;
+            }
         }
     }
   else if ( gridptr->type == GRID_CURVILINEAR )
diff --git a/libcdi/src/mo_cdi.f90 b/libcdi/src/mo_cdi.f90
index c44c418..a39334c 100644
--- a/libcdi/src/mo_cdi.f90
+++ b/libcdi/src/mo_cdi.f90
@@ -35,11 +35,13 @@ module mo_cdi
   integer(c_int), public, parameter :: CDI_EEOF = -1
   integer(c_int), public, parameter :: CDI_ESYSTEM = -10
   integer(c_int), public, parameter :: CDI_EINVAL = -20
-  integer(c_int), public, parameter :: CDI_EUFTYPE = -21
-  integer(c_int), public, parameter :: CDI_ELIBNAVAIL = -22
-  integer(c_int), public, parameter :: CDI_EUFSTRUCT = -23
-  integer(c_int), public, parameter :: CDI_EUNC4 = -24
-  integer(c_int), public, parameter :: CDI_EDIMSIZE = -25
+  integer(c_int), public, parameter :: CDI_EISDIR = -21
+  integer(c_int), public, parameter :: CDI_EISEMPTY = -22
+  integer(c_int), public, parameter :: CDI_EUFTYPE = -23
+  integer(c_int), public, parameter :: CDI_ELIBNAVAIL = -24
+  integer(c_int), public, parameter :: CDI_EUFSTRUCT = -25
+  integer(c_int), public, parameter :: CDI_EUNC4 = -26
+  integer(c_int), public, parameter :: CDI_EDIMSIZE = -27
   integer(c_int), public, parameter :: CDI_ELIMIT = -99
   integer(c_int), public, parameter :: CDI_FILETYPE_GRB = 1
   integer(c_int), public, parameter :: CDI_FILETYPE_GRB2 = 2
@@ -434,9 +436,6 @@ module mo_cdi
   public :: vlistHasVarKey
   public :: vlistInqVarDblKey
   public :: vlistInqVarIntKey
-  public :: vlistInqVarNamePtr
-  public :: vlistInqVarLongnamePtr
-  public :: vlistInqVarUnitsPtr
   public :: cdiInqNatts
   public :: cdiInqAtt
   public :: cdiDelAtt
@@ -562,6 +561,7 @@ module mo_cdi
   public :: zaxisPrint
   public :: zaxisDefLevels
   public :: zaxisInqLevels
+  public :: zaxisInqCLen
   public :: zaxisDefLevel
   public :: zaxisInqLevel
   public :: zaxisDefNlevRef
@@ -647,24 +647,15 @@ module mo_cdi
   public :: modelInqInstitut
   public :: modelInqGribID
   public :: modelInqNamePtr
-  public :: tableWriteC
   public :: tableWrite
   public :: tableRead
   public :: tableDef
   public :: tableInqNamePtr
-  public :: tableDefEntry
   public :: tableInq
   public :: tableInqNumber
   public :: tableInqNum
   public :: tableInqModel
-  public :: tableInqPar
-  public :: tableInqParCode
-  public :: tableInqParName
-  public :: tableInqParLongname
-  public :: tableInqParUnits
-  public :: tableInqParNamePtr
-  public :: tableInqParLongnamePtr
-  public :: tableInqParUnitsPtr
+  public :: tableInqEntry
   public :: streamDefHistory
   public :: streamInqHistorySize
   public :: streamInqHistoryString
@@ -2342,6 +2333,13 @@ module mo_cdi
       integer(c_int) :: f_result
     end function zaxisInqLevels
 
+    function zaxisInqCLen(zaxisID_dummy) bind(c, name = 'zaxisInqCLen')&
+    & result(f_result)
+      import c_int
+      integer(c_int), value :: zaxisID_dummy
+      integer(c_int) :: f_result
+    end function zaxisInqCLen
+
     subroutine zaxisDefLevel(zaxisID_dummy, levelID_dummy, levels_dummy)&
     & bind(c, name = 'zaxisDefLevel')
       import c_double, c_int
@@ -4515,75 +4513,6 @@ contains
     f_result = lib_vlistInqVarIntKey(vlistID_dummy, varID_dummy, name_temp)
   end function vlistInqVarIntKey
 
-  function vlistInqVarNamePtr(vlistID_dummy, varID_dummy) result(f_result)
-    character(kind = c_char), dimension(:), pointer :: f_result
-    integer(c_int), value :: vlistID_dummy
-    integer(c_int), value :: varID_dummy
-    type(c_ptr) :: ptr
-    integer :: rv_shape(1)
-    interface
-      function lib_vlistInqVarNamePtr(vlistID_dummy, varID_dummy) bind(c, name&
-      & = 'vlistInqVarNamePtr') result(c_result)
-        import c_int, c_ptr
-        type(c_ptr) :: c_result
-        integer(c_int), value :: vlistID_dummy
-        integer(c_int), value :: varID_dummy
-      end function lib_vlistInqVarNamePtr
-    end interface
-    f_result => null()
-    ptr = lib_vlistInqVarNamePtr(vlistID_dummy, varID_dummy)
-    if(c_associated(ptr)) then
-      rv_shape(1) = int(lib_strlen(ptr))
-      call c_f_pointer(ptr, f_result, rv_shape)
-    end if
-  end function vlistInqVarNamePtr
-
-  function vlistInqVarLongnamePtr(vlistID_dummy, varID_dummy) result(f_result)
-    character(kind = c_char), dimension(:), pointer :: f_result
-    integer(c_int), value :: vlistID_dummy
-    integer(c_int), value :: varID_dummy
-    type(c_ptr) :: ptr
-    integer :: rv_shape(1)
-    interface
-      function lib_vlistInqVarLongnamePtr(vlistID_dummy, varID_dummy) bind(c,&
-      & name = 'vlistInqVarLongnamePtr') result(c_result)
-        import c_int, c_ptr
-        type(c_ptr) :: c_result
-        integer(c_int), value :: vlistID_dummy
-        integer(c_int), value :: varID_dummy
-      end function lib_vlistInqVarLongnamePtr
-    end interface
-    f_result => null()
-    ptr = lib_vlistInqVarLongnamePtr(vlistID_dummy, varID_dummy)
-    if(c_associated(ptr)) then
-      rv_shape(1) = int(lib_strlen(ptr))
-      call c_f_pointer(ptr, f_result, rv_shape)
-    end if
-  end function vlistInqVarLongnamePtr
-
-  function vlistInqVarUnitsPtr(vlistID_dummy, varID_dummy) result(f_result)
-    character(kind = c_char), dimension(:), pointer :: f_result
-    integer(c_int), value :: vlistID_dummy
-    integer(c_int), value :: varID_dummy
-    type(c_ptr) :: ptr
-    integer :: rv_shape(1)
-    interface
-      function lib_vlistInqVarUnitsPtr(vlistID_dummy, varID_dummy) bind(c, name&
-      & = 'vlistInqVarUnitsPtr') result(c_result)
-        import c_int, c_ptr
-        type(c_ptr) :: c_result
-        integer(c_int), value :: vlistID_dummy
-        integer(c_int), value :: varID_dummy
-      end function lib_vlistInqVarUnitsPtr
-    end interface
-    f_result => null()
-    ptr = lib_vlistInqVarUnitsPtr(vlistID_dummy, varID_dummy)
-    if(c_associated(ptr)) then
-      rv_shape(1) = int(lib_strlen(ptr))
-      call c_f_pointer(ptr, f_result, rv_shape)
-    end if
-  end function vlistInqVarUnitsPtr
-
   function cdiInqAtt(cdiID_dummy, varID_dummy, attrnum_dummy, name_dummy,&
   & typep_dummy, lenp_dummy) result(f_result)
     integer(c_int) :: f_result
@@ -5998,26 +5927,6 @@ contains
     end if
   end function modelInqNamePtr
 
-  subroutine tableWriteC(filename_dummy, tableID_dummy)
-    character(kind = c_char, len = *), intent(in) :: filename_dummy
-    integer(c_int), value :: tableID_dummy
-    character(kind = c_char) :: filename_temp(len(filename_dummy) + 1)
-    integer :: filename_i
-    interface
-      subroutine lib_tableWriteC(filename_dummy, tableID_dummy) bind(c, name =&
-      & 'tableWriteC')
-        import c_char, c_int
-        character(kind = c_char) :: filename_dummy(*)
-        integer(c_int), value :: tableID_dummy
-      end subroutine lib_tableWriteC
-    end interface
-    do filename_i = 1, len(filename_dummy)
-      filename_temp(filename_i) = filename_dummy(filename_i:filename_i)
-    end do
-    filename_temp(len(filename_dummy) + 1) = c_null_char
-    call lib_tableWriteC(filename_temp, tableID_dummy)
-  end subroutine tableWriteC
-
   subroutine tableWrite(filename_dummy, tableID_dummy)
     character(kind = c_char, len = *), intent(in) :: filename_dummy
     integer(c_int), value :: tableID_dummy
@@ -6104,46 +6013,6 @@ contains
     end if
   end function tableInqNamePtr
 
-  subroutine tableDefEntry(tableID_dummy, code_dummy, name_dummy,&
-  & longname_dummy, units_dummy)
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: code_dummy
-    character(kind = c_char, len = *), intent(in) :: name_dummy
-    character(kind = c_char, len = *), intent(in) :: longname_dummy
-    character(kind = c_char, len = *), intent(in) :: units_dummy
-    character(kind = c_char) :: name_temp(len(name_dummy) + 1)
-    integer :: name_i
-    character(kind = c_char) :: longname_temp(len(longname_dummy) + 1)
-    integer :: longname_i
-    character(kind = c_char) :: units_temp(len(units_dummy) + 1)
-    integer :: units_i
-    interface
-      subroutine lib_tableDefEntry(tableID_dummy, code_dummy, name_dummy,&
-      & longname_dummy, units_dummy) bind(c, name = 'tableDefEntry')
-        import c_char, c_int
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: code_dummy
-        character(kind = c_char) :: name_dummy(*)
-        character(kind = c_char) :: longname_dummy(*)
-        character(kind = c_char) :: units_dummy(*)
-      end subroutine lib_tableDefEntry
-    end interface
-    do name_i = 1, len(name_dummy)
-      name_temp(name_i) = name_dummy(name_i:name_i)
-    end do
-    name_temp(len(name_dummy) + 1) = c_null_char
-    do longname_i = 1, len(longname_dummy)
-      longname_temp(longname_i) = longname_dummy(longname_i:longname_i)
-    end do
-    longname_temp(len(longname_dummy) + 1) = c_null_char
-    do units_i = 1, len(units_dummy)
-      units_temp(units_i) = units_dummy(units_i:units_i)
-    end do
-    units_temp(len(units_dummy) + 1) = c_null_char
-    call lib_tableDefEntry(tableID_dummy, code_dummy, name_temp, longname_temp,&
-    & units_temp)
-  end subroutine tableDefEntry
-
   function tableInq(modelID_dummy, tablenum_dummy, tablename_dummy)&
   & result(f_result)
     integer(c_int) :: f_result
@@ -6169,10 +6038,11 @@ contains
     f_result = lib_tableInq(modelID_dummy, tablenum_dummy, tablename_temp)
   end function tableInq
 
-  subroutine tableInqPar(tableID_dummy, code_dummy, name_dummy, longname_dummy,&
-  & units_dummy)
+  subroutine tableInqEntry(tableID_dummy, id_dummy, ltype_dummy, name_dummy,&
+  & longname_dummy, units_dummy)
     integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: code_dummy
+    integer(c_int), value :: id_dummy
+    integer(c_int), value :: ltype_dummy
     character(kind = c_char, len = *), intent(inout) :: name_dummy
     character(kind = c_char, len = *), intent(inout) :: longname_dummy
     character(kind = c_char, len = *), intent(inout) :: units_dummy
@@ -6183,15 +6053,17 @@ contains
     character(kind = c_char) :: units_temp(len(units_dummy) + 1)
     integer :: units_i
     interface
-      subroutine lib_tableInqPar(tableID_dummy, code_dummy, name_dummy,&
-      & longname_dummy, units_dummy) bind(c, name = 'tableInqPar')
+      subroutine lib_tableInqEntry(tableID_dummy, id_dummy, ltype_dummy,&
+      & name_dummy, longname_dummy, units_dummy) bind(c, name =&
+      & 'tableInqEntry')
         import c_char, c_int
         integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: code_dummy
+        integer(c_int), value :: id_dummy
+        integer(c_int), value :: ltype_dummy
         character(kind = c_char) :: name_dummy(*)
         character(kind = c_char) :: longname_dummy(*)
         character(kind = c_char) :: units_dummy(*)
-      end subroutine lib_tableInqPar
+      end subroutine lib_tableInqEntry
     end interface
     name_temp(len(name_dummy) + 1) = c_null_char
     do name_i = len(name_dummy), 1, -1
@@ -6217,58 +6089,8 @@ contains
     do units_i = units_i, 1, -1
         units_temp(units_i) = units_dummy(units_i:units_i)
     end do
-    call lib_tableInqPar(tableID_dummy, code_dummy, name_temp, longname_temp,&
-    & units_temp)
-    do name_i = 1, len(name_dummy)
-      if(name_temp(name_i) == c_null_char) exit
-      name_dummy(name_i:name_i) = name_temp(name_i)
-    end do
-    do name_i = name_i, len(name_dummy)
-      name_dummy(name_i:name_i) = ' '
-    end do
-    do longname_i = 1, len(longname_dummy)
-      if(longname_temp(longname_i) == c_null_char) exit
-      longname_dummy(longname_i:longname_i) = longname_temp(longname_i)
-    end do
-    do longname_i = longname_i, len(longname_dummy)
-      longname_dummy(longname_i:longname_i) = ' '
-    end do
-    do units_i = 1, len(units_dummy)
-      if(units_temp(units_i) == c_null_char) exit
-      units_dummy(units_i:units_i) = units_temp(units_i)
-    end do
-    do units_i = units_i, len(units_dummy)
-      units_dummy(units_i:units_i) = ' '
-    end do
-  end subroutine tableInqPar
-
-  function tableInqParCode(tableID_dummy, name_dummy, code_dummy)&
-  & result(f_result)
-    integer(c_int) :: f_result
-    integer(c_int), value :: tableID_dummy
-    character(kind = c_char, len = *), intent(inout) :: name_dummy
-    integer(c_int), intent(inout) :: code_dummy
-    character(kind = c_char) :: name_temp(len(name_dummy) + 1)
-    integer :: name_i
-    interface
-      function lib_tableInqParCode(tableID_dummy, name_dummy, code_dummy)&
-      & bind(c, name = 'tableInqParCode') result(c_result)
-        import c_char, c_int
-        integer(c_int) :: c_result
-        integer(c_int), value :: tableID_dummy
-        character(kind = c_char) :: name_dummy(*)
-        integer(c_int), intent(inout) :: code_dummy
-      end function lib_tableInqParCode
-    end interface
-    name_temp(len(name_dummy) + 1) = c_null_char
-    do name_i = len(name_dummy), 1, -1
-      if(name_dummy(name_i:name_i) /= ' ') exit
-      name_temp(name_i) = c_null_char
-    end do
-    do name_i = name_i, 1, -1
-        name_temp(name_i) = name_dummy(name_i:name_i)
-    end do
-    f_result = lib_tableInqParCode(tableID_dummy, name_temp, code_dummy)
+    call lib_tableInqEntry(tableID_dummy, id_dummy, ltype_dummy, name_temp,&
+    & longname_temp, units_temp)
     do name_i = 1, len(name_dummy)
       if(name_temp(name_i) == c_null_char) exit
       name_dummy(name_i:name_i) = name_temp(name_i)
@@ -6276,72 +6098,6 @@ contains
     do name_i = name_i, len(name_dummy)
       name_dummy(name_i:name_i) = ' '
     end do
-  end function tableInqParCode
-
-  function tableInqParName(tableID_dummy, code_dummy, name_dummy)&
-  & result(f_result)
-    integer(c_int) :: f_result
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: code_dummy
-    character(kind = c_char, len = *), intent(inout) :: name_dummy
-    character(kind = c_char) :: name_temp(len(name_dummy) + 1)
-    integer :: name_i
-    interface
-      function lib_tableInqParName(tableID_dummy, code_dummy, name_dummy)&
-      & bind(c, name = 'tableInqParName') result(c_result)
-        import c_char, c_int
-        integer(c_int) :: c_result
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: code_dummy
-        character(kind = c_char) :: name_dummy(*)
-      end function lib_tableInqParName
-    end interface
-    name_temp(len(name_dummy) + 1) = c_null_char
-    do name_i = len(name_dummy), 1, -1
-      if(name_dummy(name_i:name_i) /= ' ') exit
-      name_temp(name_i) = c_null_char
-    end do
-    do name_i = name_i, 1, -1
-        name_temp(name_i) = name_dummy(name_i:name_i)
-    end do
-    f_result = lib_tableInqParName(tableID_dummy, code_dummy, name_temp)
-    do name_i = 1, len(name_dummy)
-      if(name_temp(name_i) == c_null_char) exit
-      name_dummy(name_i:name_i) = name_temp(name_i)
-    end do
-    do name_i = name_i, len(name_dummy)
-      name_dummy(name_i:name_i) = ' '
-    end do
-  end function tableInqParName
-
-  function tableInqParLongname(tableID_dummy, code_dummy, longname_dummy)&
-  & result(f_result)
-    integer(c_int) :: f_result
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: code_dummy
-    character(kind = c_char, len = *), intent(inout) :: longname_dummy
-    character(kind = c_char) :: longname_temp(len(longname_dummy) + 1)
-    integer :: longname_i
-    interface
-      function lib_tableInqParLongname(tableID_dummy, code_dummy,&
-      & longname_dummy) bind(c, name = 'tableInqParLongname') result(c_result)
-        import c_char, c_int
-        integer(c_int) :: c_result
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: code_dummy
-        character(kind = c_char) :: longname_dummy(*)
-      end function lib_tableInqParLongname
-    end interface
-    longname_temp(len(longname_dummy) + 1) = c_null_char
-    do longname_i = len(longname_dummy), 1, -1
-      if(longname_dummy(longname_i:longname_i) /= ' ') exit
-      longname_temp(longname_i) = c_null_char
-    end do
-    do longname_i = longname_i, 1, -1
-        longname_temp(longname_i) = longname_dummy(longname_i:longname_i)
-    end do
-    f_result = lib_tableInqParLongname(tableID_dummy, code_dummy,&
-    & longname_temp)
     do longname_i = 1, len(longname_dummy)
       if(longname_temp(longname_i) == c_null_char) exit
       longname_dummy(longname_i:longname_i) = longname_temp(longname_i)
@@ -6349,35 +6105,6 @@ contains
     do longname_i = longname_i, len(longname_dummy)
       longname_dummy(longname_i:longname_i) = ' '
     end do
-  end function tableInqParLongname
-
-  function tableInqParUnits(tableID_dummy, code_dummy, units_dummy)&
-  & result(f_result)
-    integer(c_int) :: f_result
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: code_dummy
-    character(kind = c_char, len = *), intent(inout) :: units_dummy
-    character(kind = c_char) :: units_temp(len(units_dummy) + 1)
-    integer :: units_i
-    interface
-      function lib_tableInqParUnits(tableID_dummy, code_dummy, units_dummy)&
-      & bind(c, name = 'tableInqParUnits') result(c_result)
-        import c_char, c_int
-        integer(c_int) :: c_result
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: code_dummy
-        character(kind = c_char) :: units_dummy(*)
-      end function lib_tableInqParUnits
-    end interface
-    units_temp(len(units_dummy) + 1) = c_null_char
-    do units_i = len(units_dummy), 1, -1
-      if(units_dummy(units_i:units_i) /= ' ') exit
-      units_temp(units_i) = c_null_char
-    end do
-    do units_i = units_i, 1, -1
-        units_temp(units_i) = units_dummy(units_i:units_i)
-    end do
-    f_result = lib_tableInqParUnits(tableID_dummy, code_dummy, units_temp)
     do units_i = 1, len(units_dummy)
       if(units_temp(units_i) == c_null_char) exit
       units_dummy(units_i:units_i) = units_temp(units_i)
@@ -6385,76 +6112,7 @@ contains
     do units_i = units_i, len(units_dummy)
       units_dummy(units_i:units_i) = ' '
     end do
-  end function tableInqParUnits
-
-  function tableInqParNamePtr(tableID_dummy, parID_dummy) result(f_result)
-    character(kind = c_char), dimension(:), pointer :: f_result
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: parID_dummy
-    type(c_ptr) :: ptr
-    integer :: rv_shape(1)
-    interface
-      function lib_tableInqParNamePtr(tableID_dummy, parID_dummy) bind(c, name&
-      & = 'tableInqParNamePtr') result(c_result)
-        import c_int, c_ptr
-        type(c_ptr) :: c_result
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: parID_dummy
-      end function lib_tableInqParNamePtr
-    end interface
-    f_result => null()
-    ptr = lib_tableInqParNamePtr(tableID_dummy, parID_dummy)
-    if(c_associated(ptr)) then
-      rv_shape(1) = int(lib_strlen(ptr))
-      call c_f_pointer(ptr, f_result, rv_shape)
-    end if
-  end function tableInqParNamePtr
-
-  function tableInqParLongnamePtr(tableID_dummy, parID_dummy) result(f_result)
-    character(kind = c_char), dimension(:), pointer :: f_result
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: parID_dummy
-    type(c_ptr) :: ptr
-    integer :: rv_shape(1)
-    interface
-      function lib_tableInqParLongnamePtr(tableID_dummy, parID_dummy) bind(c,&
-      & name = 'tableInqParLongnamePtr') result(c_result)
-        import c_int, c_ptr
-        type(c_ptr) :: c_result
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: parID_dummy
-      end function lib_tableInqParLongnamePtr
-    end interface
-    f_result => null()
-    ptr = lib_tableInqParLongnamePtr(tableID_dummy, parID_dummy)
-    if(c_associated(ptr)) then
-      rv_shape(1) = int(lib_strlen(ptr))
-      call c_f_pointer(ptr, f_result, rv_shape)
-    end if
-  end function tableInqParLongnamePtr
-
-  function tableInqParUnitsPtr(tableID_dummy, parID_dummy) result(f_result)
-    character(kind = c_char), dimension(:), pointer :: f_result
-    integer(c_int), value :: tableID_dummy
-    integer(c_int), value :: parID_dummy
-    type(c_ptr) :: ptr
-    integer :: rv_shape(1)
-    interface
-      function lib_tableInqParUnitsPtr(tableID_dummy, parID_dummy) bind(c, name&
-      & = 'tableInqParUnitsPtr') result(c_result)
-        import c_int, c_ptr
-        type(c_ptr) :: c_result
-        integer(c_int), value :: tableID_dummy
-        integer(c_int), value :: parID_dummy
-      end function lib_tableInqParUnitsPtr
-    end interface
-    f_result => null()
-    ptr = lib_tableInqParUnitsPtr(tableID_dummy, parID_dummy)
-    if(c_associated(ptr)) then
-      rv_shape(1) = int(lib_strlen(ptr))
-      call c_f_pointer(ptr, f_result, rv_shape)
-    end if
-  end function tableInqParUnitsPtr
+  end subroutine tableInqEntry
 
   subroutine streamDefHistory(streamID_dummy, size_dummy, history_dummy)
     integer(c_int), value :: streamID_dummy
diff --git a/libcdi/src/stream.c b/libcdi/src/stream.c
index 49e8411..50c9d96 100644
--- a/libcdi/src/stream.c
+++ b/libcdi/src/stream.c
@@ -6,6 +6,7 @@
 #define _XOPEN_SOURCE 600
 #endif
 
+#include <sys/stat.h> // struct stat
 #include <ctype.h>
 
 #include "binary.h"
@@ -78,7 +79,6 @@ int cdiGetFiletype(const char *filename, int *byteorder)
   int swap = 0;
   int version;
   long recpos;
-  char buffer[8];
 
   int fileID = fileOpen(filename, "r");
 
@@ -90,7 +90,18 @@ int cdiGetFiletype(const char *filename, int *byteorder)
 	return CDI_ESYSTEM;
     }
 
-  if ( fileRead(fileID, buffer, 8) != 8 ) return CDI_EUFTYPE;
+  char buffer[8];
+  if ( fileRead(fileID, buffer, 8) != 8 )
+    {
+      struct stat buf;
+      if ( stat(filename, &buf) == 0 )
+        {
+          if ( buf.st_size == 0 ) return CDI_EISEMPTY;
+          if ( buf.st_mode&S_IFDIR ) return CDI_EISDIR;
+        }
+
+      return CDI_EUFTYPE;
+    }
 
   fileRewind(fileID);
 
@@ -123,28 +134,21 @@ int cdiGetFiletype(const char *filename, int *byteorder)
       filetype = CDI_FILETYPE_NC4;
       if ( CDI_Debug ) Message("found HDF file = %s", filename);
     }
-#if  defined  (HAVE_LIBSERVICE)
   else if ( srvCheckFiletype(fileID, &swap) )
     {
       filetype = CDI_FILETYPE_SRV;
       if ( CDI_Debug ) Message("found SRV file = %s", filename);
     }
-#endif
-#if  defined  (HAVE_LIBEXTRA)
   else if ( extCheckFiletype(fileID, &swap) )
     {
       filetype = CDI_FILETYPE_EXT;
       if ( CDI_Debug ) Message("found EXT file = %s", filename);
     }
-#endif
-#if  defined  (HAVE_LIBIEG)
   else if ( iegCheckFiletype(fileID, &swap) )
     {
       filetype = CDI_FILETYPE_IEG;
       if ( CDI_Debug ) Message("found IEG file = %s", filename);
     }
-#endif
-#if  defined  (HAVE_LIBCGRIBEX)
   else if ( gribCheckSeek(fileID, &recpos, &version) == 0 )
     {
       if ( version <= 1 )
@@ -158,7 +162,6 @@ int cdiGetFiletype(const char *filename, int *byteorder)
 	  if ( CDI_Debug ) Message("found seeked GRIB2 file = %s", filename);
 	}
     }
-#endif
 
   fileClose(fileID);
 
diff --git a/libcdi/src/stream_cdf_i.c b/libcdi/src/stream_cdf_i.c
index 8e28e92..9afe6fb 100644
--- a/libcdi/src/stream_cdf_i.c
+++ b/libcdi/src/stream_cdf_i.c
@@ -1329,7 +1329,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                   if ( status == NC_NOERR )
                     {
                       cdf_set_var(ncvars, dimvarid, FALSE);
-                      if ( cdiIgnoreAttCoordinates == false )
+                      if ( !cdiIgnoreAttCoordinates )
                         {
                           ncvars[ncvarid].coordvarids[i] = dimvarid;
                           ncvars[ncvarid].ncoordvars++;
@@ -1372,7 +1372,7 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
                   if ( status == NC_NOERR )
                     {
                       cdf_set_var(ncvars, dimvarid, FALSE);
-                      //  if ( cdiIgnoreAttCoordinates == FALSE )
+                      //  if ( !cdiIgnoreAttCoordinates )
                         {
                           ncvars[ncvarid].auxvarids[i] = dimvarid;
                           ncvars[ncvarid].nauxvars++;
@@ -1430,9 +1430,8 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
             {
               if ( ncvars[ncvarid].lvalidrange == false )
                 {
-                  extern int cdiIgnoreValidRange;
                   bool lignore = xtypeIsFloat(atttype) != xtypeIsFloat(xtype);
-                  if ( cdiIgnoreValidRange == FALSE && lignore == false )
+                  if ( !cdiIgnoreValidRange && lignore == false )
                     {
                       cdfGetAttDouble(ncid, ncvarid, attname, 2, ncvars[ncvarid].validrange);
                       ncvars[ncvarid].lvalidrange = true;
@@ -1450,9 +1449,8 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
             {
               if ( ncvars[ncvarid].lvalidrange == false )
                 {
-                  extern int cdiIgnoreValidRange;
                   bool lignore = xtypeIsFloat(atttype) != xtypeIsFloat(xtype);
-                  if ( cdiIgnoreValidRange == FALSE && lignore == false )
+                  if ( !cdiIgnoreValidRange && lignore == false )
                     {
                       cdfGetAttDouble(ncid, ncvarid, attname, 1, &(ncvars[ncvarid].validrange)[0]);
                       ncvars[ncvarid].lvalidrange = true;
@@ -1467,9 +1465,8 @@ void cdf_scan_var_attr(int nvars, ncvar_t *ncvars, ncdim_t *ncdims, int timedimi
             {
               if ( ncvars[ncvarid].lvalidrange == false )
                 {
-                  extern int cdiIgnoreValidRange;
                   bool lignore = xtypeIsFloat(atttype) != xtypeIsFloat(xtype);
-                  if ( cdiIgnoreValidRange == FALSE && lignore == false )
+                  if ( !cdiIgnoreValidRange && lignore == false )
                     {
                       cdfGetAttDouble(ncid, ncvarid, attname, 1, &(ncvars[ncvarid].validrange)[1]);
                       ncvars[ncvarid].lvalidrange = true;
@@ -2821,7 +2818,7 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 	  bool with_bounds = false;
 	  int zdimid = CDI_UNDEFID;
 	  int zvarid = CDI_UNDEFID;
-	  int zsize = 1;
+	  size_t zsize = 1;
           int psvarid = -1;
           int p0varid = -1;
 
@@ -2845,14 +2842,15 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
                 {
                   // zvarid = ncdims[zdimid].ncvarid;
                   zvarid = (ncvar->zvarid != CDI_UNDEFID) ? ncvar->zvarid : ncdims[zdimid].ncvarid;
-                  zsize  = (int)ncdims[zdimid].len;
+                  zsize  = ncdims[zdimid].len;
                 }
             }
 
-	  if ( CDI_Debug ) Message("nlevs = %d", zsize);
+	  if ( CDI_Debug ) Message("nlevs = %zu", zsize);
 
 	  double *zvar = NULL;
           char **zcvals = NULL;
+          size_t zclength = 0;
 
 	  int zaxisType = CDI_UNDEFID;
 	  if ( zvarid != CDI_UNDEFID ) zaxisType = ncvars[zvarid].zaxistype;
@@ -2880,8 +2878,8 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
                   if ( ncvars[zvarid].ndims == 2 )
                     {
                       zprec = CDI_DATATYPE_UINT8;
-                      size_t strlength = ncdims[ncvars[zvarid].dimids[1]].len;
-                      cdf_load_cvals(zsize*strlength, zvarid, ncvar, &zcvals, zsize);
+                      zclength = ncdims[ncvars[zvarid].dimids[1]].len;
+                      cdf_load_cvals(zsize*zclength, zvarid, ncvar, &zcvals, zsize);
                     }
                 }
 
@@ -2896,7 +2894,7 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 
               if ( zaxisType != ZAXIS_CHAR )
                 {
-                  zvar = (double*) Malloc((size_t)zsize*sizeof(double));
+                  zvar = (double*) Malloc(zsize*sizeof(double));
                   cdf_get_var_double(ncvars[zvarid].ncid, zvarid, zvar);
                 }
 
@@ -2905,16 +2903,16 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
 		  int nbdims = ncvars[ncvars[zvarid].bounds].ndims;
 		  if ( nbdims == 2 || is_scalar )
 		    {
-		      int nlevel  = is_scalar ? 1 : (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[0]].len;
+		      size_t nlevel  = is_scalar ? 1 : (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[0]].len;
 		      int nvertex = (int)ncdims[ncvars[ncvars[zvarid].bounds].dimids[1-is_scalar]].len;
 		      if ( nlevel == zsize && nvertex == 2 )
 			{
 			  with_bounds = true;
-			  lbounds = (double *) Malloc(4 * (size_t)nlevel*sizeof(double));
+			  lbounds = (double *) Malloc(4 * nlevel*sizeof(double));
 			  ubounds = lbounds + nlevel;
 			  double *restrict zbounds = lbounds + 2 * nlevel;
 			  cdf_get_var_double(ncvars[zvarid].ncid, ncvars[zvarid].bounds, zbounds);
-			  for ( int i = 0; i < nlevel; ++i )
+			  for ( size_t i = 0; i < nlevel; ++i )
 			    {
 			      lbounds[i] = zbounds[i*2];
 			      ubounds[i] = zbounds[i*2+1];
@@ -2946,7 +2944,7 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
               return CDI_EDIMSIZE;
             }
 
-      	  ncvar->zaxisID = varDefZaxis(vlistID, zaxisType, (int) zsize, zvar, (const char **)zcvals, with_bounds, lbounds, ubounds,
+      	  ncvar->zaxisID = varDefZaxis(vlistID, zaxisType, (int) zsize, zvar, (const char **)zcvals, zclength, with_bounds, lbounds, ubounds,
                                        (int)vctsize, vct, pname, plongname, punits, zprec, 1, 0);
 
           int zaxisID = ncvar->zaxisID;
@@ -2979,6 +2977,12 @@ int cdf_define_all_zaxes(stream_t *streamptr, int vlistID, ncdim_t *ncdims, int
             cdiZaxisDefKeyStr(zaxisID, CDI_KEY_VDIMNAME, strlen(ncdims[vdimid].name)+1, ncdims[vdimid].name);
           */
 	  if ( zvar    ) Free(zvar);
+	  if ( zcvals  )
+            {
+              for ( size_t i = 0; i < zsize; i++ )
+                Free(zcvals[i]);
+              Free(zcvals);
+            }
 	  if ( lbounds ) Free(lbounds);
 
           if ( zvarid != CDI_UNDEFID )
@@ -3223,30 +3227,31 @@ void cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int model
     {
       if ( vlistInqVarCode(vlistID, varID) == -varID-1 )
 	{
-	  const char *pname = vlistInqVarNamePtr(vlistID, varID);
-	  size_t len = strlen(pname);
-	  if ( len > 3 && isdigit((int) pname[3]) )
+          char name[CDI_MAX_NAME]; name[0] = 0;
+	  vlistInqVarName(vlistID, varID, name);
+	  size_t len = strlen(name);
+	  if ( len > 3 && isdigit((int) name[3]) )
 	    {
-	      if ( str_is_equal(pname, "var") )
+	      if ( str_is_equal(name, "var") )
 		{
-		  vlistDefVarCode(vlistID, varID, atoi(pname+3));
+		  vlistDefVarCode(vlistID, varID, atoi(name+3));
                   // vlistDestroyVarName(vlistID, varID);
 		}
 	    }
-	  else if ( len > 4 && isdigit((int) pname[4]) )
+	  else if ( len > 4 && isdigit((int) name[4]) )
 	    {
-	      if ( str_is_equal(pname, "code") )
+	      if ( str_is_equal(name, "code") )
 		{
-		  vlistDefVarCode(vlistID, varID, atoi(pname+4));
+		  vlistDefVarCode(vlistID, varID, atoi(name+4));
 		  // vlistDestroyVarName(vlistID, varID);
 		}
 	    }
-	  else if ( len > 5 && isdigit((int) pname[5]) )
+	  else if ( len > 5 && isdigit((int) name[5]) )
 	    {
-	      if ( str_is_equal(pname, "param") )
+	      if ( str_is_equal(name, "param") )
 		{
 		  int pnum = -1, pcat = 255, pdis = 255;
-		  sscanf(pname+5, "%d.%d.%d", &pnum, &pcat, &pdis);
+		  sscanf(name+5, "%d.%d.%d", &pnum, &pcat, &pdis);
 		  vlistDefVarParam(vlistID, varID, cdiEncodeParam(pnum, pcat, pdis));
                   // vlistDestroyVarName(vlistID, varID);
 		}
@@ -3262,7 +3267,11 @@ void cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int model
       int code = vlistInqVarCode(vlistID, varID);
       if ( cdiDefaultTableID != CDI_UNDEFID )
 	{
-	  if ( tableInqParNamePtr(cdiDefaultTableID, code) )
+          char name[CDI_MAX_NAME]; name[0] = 0;
+          char longname[CDI_MAX_NAME]; longname[0] = 0;
+          char units[CDI_MAX_NAME]; units[0] = 0;
+          tableInqEntry(cdiDefaultTableID, code, -1, name, longname, units);
+	  if ( name[0] )
 	    {
 	      vlistDestroyVarName(vlistID, varID);
 	      vlistDestroyVarLongname(vlistID, varID);
@@ -3270,11 +3279,9 @@ void cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int model
 
 	      if ( varTableID != CDI_UNDEFID )
 		{
-		  vlistDefVarName(vlistID, varID, tableInqParNamePtr(cdiDefaultTableID, code));
-		  if ( tableInqParLongnamePtr(cdiDefaultTableID, code) )
-		    vlistDefVarLongname(vlistID, varID, tableInqParLongnamePtr(cdiDefaultTableID, code));
-		  if ( tableInqParUnitsPtr(cdiDefaultTableID, code) )
-		    vlistDefVarUnits(vlistID, varID, tableInqParUnitsPtr(cdiDefaultTableID, code));
+		  vlistDefVarName(vlistID, varID, name);
+		  if ( longname[0] ) vlistDefVarLongname(vlistID, varID, longname);
+		  if ( units[0] ) vlistDefVarUnits(vlistID, varID, units);
 		}
 	      else
 		{
@@ -3407,11 +3414,12 @@ int find_leadtime(int nvars, ncvar_t *ncvars)
 
   for ( int ncvarid = 0; ncvarid < nvars; ncvarid++ )
     {
-      if ( ncvars[ncvarid].stdname[0] && strcmp(ncvars[ncvarid].stdname, "forecast_period") == 0 )
-        {
-          leadtime_id = ncvarid;
-          break;
-        }
+      if ( ncvars[ncvarid].ndims == 1 )
+        if ( ncvars[ncvarid].stdname[0] && strcmp(ncvars[ncvarid].stdname, "forecast_period") == 0 )
+          {
+            leadtime_id = ncvarid;
+            break;
+          }
     }
 
   return leadtime_id;
diff --git a/libcdi/src/stream_cdf_o.c b/libcdi/src/stream_cdf_o.c
index 04c11ad..9e5527e 100644
--- a/libcdi/src/stream_cdf_o.c
+++ b/libcdi/src/stream_cdf_o.c
@@ -547,7 +547,7 @@ cdfDefAxisCommon(stream_t *streamptr, int gridID, int gridindex, int ndims,
             }
           if ( pbounds )
             {
-              size_t nvertex = 2;
+              size_t nvertex = gridInqNvertex(gridID);
               if ( nc_inq_dimid(fileID, bndsName, &nvdimID) != NC_NOERR )
                 cdf_def_dim(fileID, bndsName, nvertex, &nvdimID);
             }
@@ -1415,6 +1415,67 @@ void cdfDefZaxisUUID(stream_t *streamptr, int zaxisID)
 }
 
 static
+void cdfDefZaxisChar(stream_t *streamptr, int zaxisID, char *axisname, int *dimID, size_t dimlen, int zaxisindex)
+{
+  int fileID  = streamptr->fileID;
+  int ncvarID = CDI_UNDEFID;
+  if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
+
+  /* Check StrlenID */
+  char strlen[7] = "strlen\0";
+  size_t clen = (size_t) zaxisInqCLen(zaxisID);
+  if ( clen == 0 )
+    Error("Maximal string length value is 0.\nA given character axis requires a dimension to save the maximal string length.");
+  int strlenID = CDI_UNDEFID;
+  strlenID = checkDimName(fileID, clen, strlen);
+
+  if ( strlenID == CDI_UNDEFID ) cdf_def_dim(fileID, strlen, clen, &strlenID);
+
+  /* Check 'areatype'dimID */
+  char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
+  cdiZaxisInqKeyStr(zaxisID, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
+  *dimID = checkDimName(fileID, dimlen, dimname);
+  if ( !(dimlen > 0) )
+    Error("No strings delivered for a character axis.");
+  if ( dimname[0] == 0 ) { memcpy(dimname, "area_type", 10); dimname[10] = 0; }
+
+  if ( *dimID == CDI_UNDEFID ) cdf_def_dim(fileID, dimname, dimlen, dimID);
+
+  int dimIDs[2];
+  dimIDs[0] = *dimID;
+  dimIDs[1] = strlenID;
+
+  /* Get Stringvalues */
+  char **cvals = zaxisInqCValsPtr(zaxisID);
+
+  if ( cvals )
+    {
+      /* Define variable and its attributes */
+      cdf_def_var(fileID, axisname, NC_CHAR, 2, dimIDs, &ncvarID);
+
+      cdfPutGridStdAtts(fileID, ncvarID, zaxisID, 'Z', &gridInqsZ);
+      cdf_put_att_text(fileID, ncvarID, "axis", 1, "Z");
+      cdfDefineAttributes(zaxisID, CDI_GLOBAL, fileID, ncvarID);
+
+      streamptr->nczvarID[zaxisindex] = ncvarID;
+      cdf_enddef(fileID);
+
+      /* Write Stringvalues */
+      size_t start[2], count[2];
+      start[1] = 0;
+      count[0] = 1;
+      count[1] = clen;
+      for ( size_t i = 0; i < dimlen; i++ )
+        {
+          start[0] = i;
+          nc_put_vara_text(fileID, ncvarID, start, count, cvals[i]);
+        }
+    }
+
+  streamptr->ncmode = 2;
+}
+
+static
 void cdfDefZaxis(stream_t *streamptr, int zaxisID)
 {
   /*  char zaxisname0[CDI_MAX_NAME]; */
@@ -1487,6 +1548,8 @@ void cdfDefZaxis(stream_t *streamptr, int zaxisID)
           cdfDefineAttributes(zaxisID, CDI_GLOBAL, fileID, ncvarid);
           if ( natts > 0 && streamptr->ncmode == 2 ) cdf_enddef(fileID);
         }
+      else if ( type == ZAXIS_CHAR )
+        cdfDefZaxisChar(streamptr, zaxisID, axisname, &dimID, dimlen, zaxisindex);
       else
         {
           dimID = checkDimName(fileID, dimlen, dimname);
@@ -1581,7 +1644,7 @@ void cdf_def_mapping(stream_t *streamptr, int gridID)
       cdiGridInqKeyStr(gridID, CDI_KEY_MAPPING, CDI_MAX_NAME, gmapvarname);
 
       int fileID = streamptr->fileID;
-      cdf_redef(fileID);
+      if ( streamptr->ncmode == 2 ) cdf_redef(fileID);
 
       int ncvarid;
       int ncerrcode = nc_def_var(fileID, gmapvarname, (nc_type) NC_INT, 0, NULL, &ncvarid);
@@ -1843,8 +1906,7 @@ void cdfDefGrid(stream_t *streamptr, int gridID, int gridindex)
         }
       else
         {
-          int ndims = !( gridtype == GRID_LONLAT && size == 1
-                         && gridInqHasDims(gridID) == FALSE );
+          int ndims = !(gridtype == GRID_LONLAT && size == 1 && !gridInqHasDims(gridID));
 
           if ( gridInqXsize(gridID) > 0 ) cdfDefXaxis(streamptr, gridID, gridindex, ndims);
           if ( gridInqYsize(gridID) > 0 ) cdfDefYaxis(streamptr, gridID, gridindex, ndims);
diff --git a/libcdi/src/stream_cgribex.c b/libcdi/src/stream_cgribex.c
index c1166cc..c241682 100644
--- a/libcdi/src/stream_cgribex.c
+++ b/libcdi/src/stream_cgribex.c
@@ -577,7 +577,7 @@ cgribexScanTsFixNtsteps(stream_t *streamptr, off_t recpos)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 }
@@ -652,7 +652,7 @@ int cgribexScanTimestep1(stream_t *streamptr)
     }
 
   unsigned nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       recsize = gribGetSize(fileID);
       recpos  = fileGetPos(fileID);
@@ -871,7 +871,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
 
   int nrecs_scanned = nrecords;
   int rindex = 0;
-  while ( TRUE )
+  while ( true )
     {
       if ( rindex > nrecords ) break;
 
@@ -976,7 +976,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
 	    }
 	  else
 	    {
-	      streamptr->tsteps[tsID].records[recID].used = TRUE;
+	      streamptr->tsteps[tsID].records[recID].used = true;
 	      streamptr->tsteps[tsID].recIDs[rindex] = recID;
 	    }
 	}
@@ -991,7 +991,7 @@ int cgribexScanTimestep2(stream_t * streamptr)
 	    }
 	  else
 	    {
-	      streamptr->tsteps[tsID].records[recID].used = TRUE;
+	      streamptr->tsteps[tsID].records[recID].used = true;
 	      streamptr->tsteps[tsID].recIDs[rindex] = recID;
 	    }
 	}
@@ -1114,7 +1114,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 
       nrecs_scanned = streamptr->tsteps[0].nallrecs + streamptr->tsteps[1].nrecs*(tsID-1);
       rindex = 0;
-      while ( TRUE )
+      while ( true )
 	{
 	  if ( rindex > nrecs ) break;
 
@@ -1227,7 +1227,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 
 	  if ( cdiInventoryMode == 1 )
 	    {
-	      streamptr->tsteps[tsID].records[recID].used = TRUE;
+	      streamptr->tsteps[tsID].records[recID].used = true;
 	      streamptr->tsteps[tsID].recIDs[rindex] = recID;
 	    }
 	  else
@@ -1246,7 +1246,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	    }
@@ -1291,7 +1291,7 @@ int cgribexScanTimestep(stream_t * streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -1672,7 +1672,7 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
         }
     }
 
-  ISEC2_Reduced  = FALSE;
+  ISEC2_Reduced  = false;
   ISEC2_ScanFlag = 0;
 
   switch (gridtype)
@@ -1697,7 +1697,7 @@ void cgribexDefGrid(int *isec1, int *isec2, double *fsec2, int *isec4, int gridI
 
 	if ( gridtype == GRID_GAUSSIAN_REDUCED )
 	  {
-	    ISEC2_Reduced = TRUE;
+	    ISEC2_Reduced = true;
 	    nlon = 0;
 	    gridInqRowlon(gridID, ISEC2_RowLonPtr);
 	  }
diff --git a/libcdi/src/stream_ext.c b/libcdi/src/stream_ext.c
index ca94ac6..4d5a83e 100644
--- a/libcdi/src/stream_ext.c
+++ b/libcdi/src/stream_ext.c
@@ -236,7 +236,7 @@ void extScanTimestep1(stream_t *streamptr)
   int fileID = streamptr->fileID;
 
   int nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       recpos = fileGetPos(fileID);
       int status = extRead(fileID, extp);
@@ -320,7 +320,7 @@ void extScanTimestep1(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -421,7 +421,7 @@ int extScanTimestep2(stream_t *streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	      break;
@@ -478,7 +478,7 @@ int extScanTimestep2(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -599,7 +599,7 @@ long extScanTimestep(stream_t *streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
diff --git a/libcdi/src/stream_gribapi.c b/libcdi/src/stream_gribapi.c
index dc09b5a..156bb91 100644
--- a/libcdi/src/stream_gribapi.c
+++ b/libcdi/src/stream_gribapi.c
@@ -207,7 +207,7 @@ int gribapiGetValidityDateTime(grib_handle *gh, int *vdate, int *vtime)
 	}
 
       {
-	static int lprint = TRUE;
+	static bool lprint = true;
 	extern int grib_calendar;
 	int ryear, rmonth, rday, rhour, rminute, rsecond;
 	int julday, secofday;
@@ -235,7 +235,7 @@ int gribapiGetValidityDateTime(grib_handle *gh, int *vdate, int *vtime)
                 if ( lprint )
                   {
                     Warning("Time unit %d unsupported", timeUnits);
-                    lprint = FALSE;
+                    lprint = false;
                   }
                 break;
               }
@@ -819,8 +819,8 @@ int gribapiScanTimestep1(stream_t * streamptr)
   size_t buffersize = 0;
   DateTime datetime0 = { .date = 10101, .time = 0 };
   int nrecs_scanned = 0;        //Only used for debug output.
-  int warn_time = TRUE;
-  // int warn_numavg = TRUE;
+  bool warn_time = true;
+  // bool warn_numavg = true;
   int rdate = 0, rtime = 0, tunit = 0, fcast = 0;
   grib_handle *gh = NULL;
 
@@ -835,7 +835,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
   int fileID = streamptr->fileID;
 
   unsigned nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       int level1 = 0, level2 = 0;
       size_t recsize = gribGetSize(fileID);
@@ -905,7 +905,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
           else if ( result == CHECKTIME_INCONSISTENT && warn_time )
             {
               gribWarning("Inconsistent verification time!", nrecs_scanned, tsID+1, varname, param, level1, level2);
-              warn_time = FALSE;
+              warn_time = false;
             }
           assert(result == CHECKTIME_OK || result == CHECKTIME_INCONSISTENT);
         }
@@ -916,7 +916,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
             {
               Message("Change numavg from %d to %d not allowed!",
                       taxis->numavg, ISEC1_AvgNum);
-              warn_numavg = FALSE;
+              warn_numavg = false;
             }
           else
             {
@@ -994,7 +994,7 @@ int gribapiScanTimestep1(stream_t * streamptr)
       if ( tsID != streamptr->rtsteps )
         Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -1021,7 +1021,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
   DateTime datetime0 = { LONG_MIN, LONG_MIN };
   // int gridID;
   int recID;
-  //  int warn_numavg = TRUE;
+  //  bool warn_numavg = true;
   grib_handle *gh = NULL;
 
   streamptr->curTsID = 1;
@@ -1057,7 +1057,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 
   int nrecs_scanned = nrecords; //Only used for debug output
   int rindex = 0;
-  while ( TRUE )
+  while ( true )
     {
       if ( rindex > nrecords ) break;
 
@@ -1122,7 +1122,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 	  if (  taxis->numavg && warn_numavg &&
 		(taxis->numavg != ISEC1_AvgNum) )
 	    {
-	      warn_numavg = FALSE;
+	      warn_numavg = false;
 	    }
 	  else
 	    {
@@ -1158,7 +1158,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 	    }
 	}
 
-      streamptr->tsteps[tsID].records[recID].used = TRUE;
+      streamptr->tsteps[tsID].records[recID].used = true;
       streamptr->tsteps[tsID].recIDs[rindex] = recID;
 
       if ( CDI_Debug )
@@ -1225,7 +1225,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -1239,7 +1239,7 @@ int gribapiScanTimestep2(stream_t * streamptr)
 int gribapiScanTimestep(stream_t * streamptr)
 {
   int vrecID, recID;
-  //int warn_numavg = TRUE;
+  //bool warn_numavg = true;
   int nrecs = 0;
   int vlistID = streamptr->vlistID;
 
@@ -1278,7 +1278,7 @@ int gribapiScanTimestep(stream_t * streamptr)
       DateTime datetime0 = { LONG_MIN, LONG_MIN };
       grib_handle *gh = NULL;
       char varname[256];
-      while ( TRUE )
+      while ( true )
 	{
 	  if ( rindex > nrecs ) break;
 
@@ -1350,7 +1350,7 @@ int gribapiScanTimestep(stream_t * streamptr)
 	      if (  taxis->numavg && warn_numavg &&
 		   (taxis->numavg != ISEC1_AvgNum) )
 		{
-		  warn_numavg = FALSE;
+		  warn_numavg = false;
 		}
 	      else
 		{
@@ -1396,7 +1396,7 @@ int gribapiScanTimestep(stream_t * streamptr)
 		}
 	    }
 
-          streamptr->tsteps[tsID].records[recID].used = TRUE;
+          streamptr->tsteps[tsID].records[recID].used = true;
           streamptr->tsteps[tsID].recIDs[rindex] = recID;
 
 	  if ( CDI_Debug )
@@ -1446,7 +1446,7 @@ int gribapiScanTimestep(stream_t * streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
@@ -3112,7 +3112,7 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
           {
             //DR: Fix for multi-level fields (otherwise only the 1st level is correct)
             if ( zaxisInqSize(zaxisID)==(levelID+1) )
-              vlistptr->vars[varID].opt_grib_kvpair[i].update = FALSE;
+              vlistptr->vars[varID].opt_grib_kvpair[i].update = false;
 
             if (vlistptr->vars[varID].opt_grib_kvpair[i].data_type == t_double)
               {
@@ -3161,7 +3161,7 @@ size_t gribapiEncode(int varID, int levelID, int vlistID, int gridID, int zaxisI
   gribHandleDelete(gh);
 #endif
 
-  gc->init = TRUE;
+  gc->init = true;
 
   return recsize;
 }
diff --git a/libcdi/src/stream_ieg.c b/libcdi/src/stream_ieg.c
index 13a53af..8527ac8 100644
--- a/libcdi/src/stream_ieg.c
+++ b/libcdi/src/stream_ieg.c
@@ -743,7 +743,7 @@ void iegScanTimestep1(stream_t *streamptr)
   int fileID = streamptr->fileID;
 
   int nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       recpos = fileGetPos(fileID);
       int status = iegRead(fileID, iegp);
@@ -835,7 +835,7 @@ void iegScanTimestep1(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -938,7 +938,7 @@ int iegScanTimestep2(stream_t *streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	      break;
@@ -997,7 +997,7 @@ int iegScanTimestep2(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -1125,7 +1125,7 @@ long iegScanTimestep(stream_t *streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
diff --git a/libcdi/src/stream_record.c b/libcdi/src/stream_record.c
index c41d54a..f6d44a2 100644
--- a/libcdi/src/stream_record.c
+++ b/libcdi/src/stream_record.c
@@ -24,7 +24,7 @@ void recordInitEntry(record_t *record)
   record->size     = 0;
   record->param    = 0;
   record->ilevel   = CDI_UNDEFID;
-  record->used     = FALSE;
+  record->used     = false;
   record->varID    = CDI_UNDEFID;
   record->levelID  = CDI_UNDEFID;
   memset(record->varname, 0, sizeof(record->varname));
@@ -366,7 +366,7 @@ void cdi_create_records(stream_t *streamptr, int tsID)
                 {
                   destTstep->records[recID].position = CDI_UNDEFID;
                   destTstep->records[recID].size     = 0;
-                  destTstep->records[recID].used     = FALSE;
+                  destTstep->records[recID].used     = false;
                 }
             }
 	}
diff --git a/libcdi/src/stream_srv.c b/libcdi/src/stream_srv.c
index 3bce61f..f4d28fa 100644
--- a/libcdi/src/stream_srv.c
+++ b/libcdi/src/stream_srv.c
@@ -241,7 +241,7 @@ void srvScanTimestep1(stream_t *streamptr)
   int fileID = streamptr->fileID;
 
   int nrecs = 0;
-  while ( TRUE )
+  while ( true )
     {
       int header[8];
       recpos = fileGetPos(fileID);
@@ -324,7 +324,7 @@ void srvScanTimestep1(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -420,7 +420,7 @@ int srvScanTimestep2(stream_t *streamptr)
 		}
 	      else
 		{
-		  streamptr->tsteps[tsID].records[recID].used = TRUE;
+		  streamptr->tsteps[tsID].records[recID].used = true;
 		  streamptr->tsteps[tsID].recIDs[rindex] = recID;
 		}
 	      break;
@@ -477,7 +477,7 @@ int srvScanTimestep2(stream_t *streamptr)
       if ( tsID != streamptr->rtsteps )
 	Error("Internal error. tsID = %d", tsID);
 
-      streamptr->tsteps[tsID-1].next   = TRUE;
+      streamptr->tsteps[tsID-1].next   = true;
       streamptr->tsteps[tsID].position = recpos;
     }
 
@@ -595,7 +595,7 @@ long srvScanTimestep(stream_t *streamptr)
 	  if ( tsID != streamptr->rtsteps )
 	    Error("Internal error. tsID = %d", tsID);
 
-	  streamptr->tsteps[tsID-1].next   = 1;
+	  streamptr->tsteps[tsID-1].next   = true;
 	  streamptr->tsteps[tsID].position = recpos;
 	}
 
diff --git a/libcdi/src/table.c b/libcdi/src/table.c
index 05c62e3..a6ac127 100644
--- a/libcdi/src/table.c
+++ b/libcdi/src/table.c
@@ -22,16 +22,16 @@
 
 typedef struct
 {
-  int    used;
+  bool   used;
   int    npars;
-  PAR   *pars;
   int    modelID;
   int    number;
   char  *name;
+  param_type *pars;
 }
-PARTAB;
+paramtab_type;
 
-static PARTAB parTable[MAX_TABLE];
+static paramtab_type parTable[MAX_TABLE];
 static int  parTableSize = MAX_TABLE;
 static int  parTableNum  = 0;
 static int  ParTableInit = 0;
@@ -41,16 +41,16 @@ static char *tablePath = NULL;
 static void tableDefModelID(int tableID, int modelID);
 static void tableDefNum(int tableID, int tablenum);
 
-
-void tableDefEntry(int tableID, int id, const char *name,
+static
+void tableDefEntry(int tableID, int id, int ltype, const char *name,
 		   const char *longname, const char *units)
 {
-  int item;
-
   if ( tableID >= 0 && tableID < MAX_TABLE && parTable[tableID].used) { } else
     Error("Invalid table ID %d", tableID);
-  item = parTable[tableID].npars++;
+
+  int item = parTable[tableID].npars++;
   parTable[tableID].pars[item].id       = id;
+  parTable[tableID].pars[item].ltype    = ltype;
   parTable[tableID].pars[item].dupflags = 0;
   parTable[tableID].pars[item].name     = NULL;
   parTable[tableID].pars[item].longname = NULL;
@@ -73,11 +73,9 @@ void tableDefEntry(int tableID, int id, const char *name,
     }
 }
 
-static void tableLink(int tableID, const PAR *pars, int npars)
+static void tableLink(int tableID, const param_type *pars, int npars)
 {
-  int item;
-
-  for ( item = 0; item < npars; item++ )
+  for ( int item = 0; item < npars; item++ )
     {
       parTable[tableID].pars[item].id       = pars[item].id;
       parTable[tableID].pars[item].dupflags = 0;
@@ -91,7 +89,7 @@ static void tableLink(int tableID, const PAR *pars, int npars)
 
 static void parTableInitEntry(int tableID)
 {
-  parTable[tableID].used    = 0;
+  parTable[tableID].used    = false;
   parTable[tableID].pars    = NULL;
   parTable[tableID].npars   = 0;
   parTable[tableID].modelID = CDI_UNDEFID;
@@ -101,9 +99,7 @@ static void parTableInitEntry(int tableID)
 
 static void tableGetPath(void)
 {
-  char *path;
-
-  path = getenv("TABLEPATH");
+  char *path = getenv("TABLEPATH");
 
   if ( path ) tablePath = strdupx(path);
   /*
@@ -165,10 +161,10 @@ static int tableNewEntry()
   if ( tableID == parTableSize )
     Error("no more entries!");
 
-  parTable[tableID].used = 1;
+  parTable[tableID].used = true;
   parTableNum++;
 
-  return (tableID);
+  return tableID;
 }
 
 static int
@@ -189,9 +185,9 @@ decodeForm1(char *pline, char *name, char *longname, char *units)
       name[len] = 0;
     }
   else
-    return (0);
+    return 0;
 
-  if ( pline[0] == 0 ) return (0);
+  if ( pline[0] == 0 ) return 0;
 
   /* Format 1 : code name add mult longname [units] */
   /* FIXME: successful parse isn't verified */
@@ -228,7 +224,7 @@ decodeForm1(char *pline, char *name, char *longname, char *units)
 	  pstart++;
 	  while ( isspace((int) *pstart) ) pstart++;
 	  pend = strchr(pstart, ']');
-	  if ( ! pend ) return (0);
+	  if ( ! pend ) return 0;
 	  pend--;
 	  while ( isspace((int) *pend) ) pend--;
 	  len = (size_t)(pend - pstart + 1);
@@ -240,7 +236,7 @@ decodeForm1(char *pline, char *name, char *longname, char *units)
 	}
     }
 
-  return (0);
+  return 0;
 }
 
 static int
@@ -266,7 +262,7 @@ decodeForm2(char *pline, char *name, char *longname, char *units)
               memcpy(name, pline, len);
               name[len] = 0;
             }
-          return (0);
+          return 0;
         }
       else
         {
@@ -314,24 +310,22 @@ decodeForm2(char *pline, char *name, char *longname, char *units)
       units[len] = 0;
     }
 
-  return (0);
+  return 0;
 }
 
+
 int tableRead(const char *tablefile)
 {
   char line[1024], *pline;
   int lnr = 0;
-  int id;
   char name[256], longname[256], units[256];
-  int tableID = CDI_UNDEFID;
   int err;
-  char *tablename;
-  FILE *tablefp;
+  int tableID = CDI_UNDEFID;
 
-  tablefp = fopen(tablefile, "r");
-  if ( tablefp == NULL ) return (tableID);
+  FILE *tablefp = fopen(tablefile, "r");
+  if ( tablefp == NULL ) return tableID;
 
-  tablename = (char* )strrchr(tablefile, '/');
+  char *tablename = (char* )strrchr(tablefile, '/');
   if ( tablename == 0 ) tablename = (char *) tablefile;
   else                  tablename++;
 
@@ -342,7 +336,8 @@ int tableRead(const char *tablefile)
       size_t len = strlen(line);
       if ( line[len-1] == '\n' ) line[len-1] = '\0';
       lnr++;
-      id       = CDI_UNDEFID;
+      int id      = CDI_UNDEFID;
+      int ltype   = CDI_UNDEFID;
       name[0]     = 0;
       longname[0] = 0;
       units[0]    = 0;
@@ -360,6 +355,21 @@ int tableRead(const char *tablefile)
 
       while ( isdigit((int) *pline) ) pline++;
 
+      if ( *pline == ';' || *pline == ':' )
+        {
+          pline++;
+          ltype = atoi(pline);
+          while ( isdigit((int) *pline) ) pline++;
+
+          if ( *pline == ';' || *pline == ':' )
+            {
+              pline++;
+              while ( isdigit((int) *pline) ) pline++;
+            }
+        }
+
+      while ( isdigit((int) *pline) ) pline++;
+
       if ( strchr(pline, '|') )
 	err = decodeForm2(pline, name, longname, units);
       else
@@ -369,12 +379,13 @@ int tableRead(const char *tablefile)
 
       if ( name[0] == 0 ) sprintf(name, "var%d", id);
 
-      tableDefEntry(tableID, id, name, longname, units);
+      tableDefEntry(tableID, id, ltype, name, longname, units);
     }
 
-  return (tableID);
+  return tableID;
 }
 
+
 static int tableFromEnv(int modelID, int tablenum)
 {
   char tablename[256] = {'\0'};
@@ -421,7 +432,8 @@ static int tableFromEnv(int modelID, int tablenum)
     }
   /* printf("tableID = %d %s\n", tableID, tablefile); */
   Free(tablefile);
-  return (tableID);
+
+  return tableID;
 }
 
 int tableInq(int modelID, int tablenum, const char *tablename)
@@ -501,7 +513,7 @@ int tableInq(int modelID, int tablenum, const char *tablename)
 	  Message("tableID = %d tablename = %s", tableID, tablename);
     }
 
-  return (tableID);
+  return tableID;
 }
 
 int tableDef(int modelID, int tablenum, const char *tablename)
@@ -522,22 +534,25 @@ int tableDef(int modelID, int tablenum, const char *tablename)
       if ( tablename )
 	parTable[tableID].name = strdupx(tablename);
 
-      parTable[tableID].pars = (PAR *) Malloc(MAX_PARS * sizeof(PAR));
+      parTable[tableID].pars = (param_type *) Malloc(MAX_PARS * sizeof(param_type));
     }
 
-  return (tableID);
+  return tableID;
 }
 
-static void tableDefModelID(int tableID, int modelID)
+static
+void tableDefModelID(int tableID, int modelID)
 {
   parTable[tableID].modelID = modelID;
 }
 
-static void tableDefNum(int tableID, int tablenum)
+static
+void tableDefNum(int tableID, int tablenum)
 {
   parTable[tableID].number  = tablenum;
 }
 
+
 int tableInqNum(int tableID)
 {
   int number = 0;
@@ -545,9 +560,10 @@ int tableInqNum(int tableID)
   if ( tableID >= 0 && tableID < MAX_TABLE )
     number = parTable[tableID].number;
 
-  return (number);
+  return number;
 }
 
+
 int tableInqModel(int tableID)
 {
   int modelID = -1;
@@ -555,9 +571,10 @@ int tableInqModel(int tableID)
   if ( tableID >= 0 && tableID < MAX_TABLE )
     modelID = parTable[tableID].modelID;
 
-  return (modelID);
+  return modelID;
 }
 
+
 static void partabCheckID(int item)
 {
   if ( item < 0 || item >= parTableSize )
@@ -567,6 +584,7 @@ static void partabCheckID(int item)
     Error("item %d name undefined!", item);
 }
 
+
 const char *tableInqNamePtr(int tableID)
 {
   const char *tablename = NULL;
@@ -580,15 +598,14 @@ const char *tableInqNamePtr(int tableID)
     if ( parTable[tableID].name )
       tablename = parTable[tableID].name;
 
-  return (tablename);
+  return tablename;
 }
 
+
 void tableWrite(const char *ptfile, int tableID)
 {
-  int item, npars;
   size_t maxname = 4, maxlname = 10, maxunits = 2;
-  FILE *ptfp;
-  int tablenum, modelID, instID = CDI_UNDEFID;
+  int instID = CDI_UNDEFID;
   int center = 0, subcenter = 0;
   const char *instnameptr = NULL, *modelnameptr = NULL;
 
@@ -603,11 +620,11 @@ void tableWrite(const char *ptfile, int tableID)
 
   partabCheckID(tableID);
 
-  ptfp = fopen(ptfile, "w");
+  FILE *ptfp = fopen(ptfile, "w");
 
-  npars = parTable[tableID].npars;
+  int npars = parTable[tableID].npars;
 
-  for ( item = 0; item < npars; item++)
+  for ( int item = 0; item < npars; item++)
     {
       if ( parTable[tableID].pars[item].name )
 	{
@@ -628,8 +645,8 @@ void tableWrite(const char *ptfile, int tableID)
 	}
     }
 
-  tablenum = tableInqNum(tableID);
-  modelID = parTable[tableID].modelID;
+  int tablenum = tableInqNum(tableID);
+  int modelID = parTable[tableID].modelID;
   if ( modelID != CDI_UNDEFID )
     {
       modelnameptr = modelInqNamePtr(modelID);
@@ -668,8 +685,8 @@ void tableWrite(const char *ptfile, int tableID)
 	  (int)maxname,  "name",
 	  (int)maxlname, "title",
 	  (int)maxunits, "units");
-	  
-  for ( item = 0; item < npars; item++)
+
+  for ( int item = 0; item < npars; item++)
     {
       const char *name = parTable[tableID].pars[item].name,
         *longname = parTable[tableID].pars[item].longname,
@@ -688,21 +705,9 @@ void tableWrite(const char *ptfile, int tableID)
 }
 
 
-void tableWriteC(const char *filename, int tableID)
-{
-  FILE *ptfp = fopen(filename, "w");
-  if (!ptfp)
-    Error("failed to open file \"%s\"!", filename);
-  if ( CDI_Debug )
-    Message("write parameter table %d to %s", tableID, filename);
-  tableFWriteC(ptfp, tableID);
-  fclose(ptfp);
-}
-
 void tableFWriteC(FILE *ptfp, int tableID)
 {
   const char chelp[] = "";
-  int item, npars;
   size_t maxname = 0, maxlname = 0, maxunits = 0;
   char tablename[256];
 
@@ -715,9 +720,9 @@ void tableFWriteC(FILE *ptfp, int tableID)
 
   partabCheckID(tableID);
 
-  npars = parTable[tableID].npars;
+  int npars = parTable[tableID].npars;
 
-  for ( item = 0; item < npars; item++)
+  for ( int item = 0; item < npars; item++)
     {
       if ( parTable[tableID].pars[item].name )
 	{
@@ -745,16 +750,16 @@ void tableFWriteC(FILE *ptfp, int tableID)
     for (size_t i = 0; i < len; i++ )
       if ( tablename[i] == '.' ) tablename[i] = '_';
   }
-  fprintf(ptfp, "static const PAR %s[] = {\n", tablename);
+  fprintf(ptfp, "static const param_type %s[] = {\n", tablename);
 
-  for ( item = 0; item < npars; item++ )
+  for ( int item = 0; item < npars; item++ )
     {
       size_t len = strlen(parTable[tableID].pars[item].name),
         llen = parTable[tableID].pars[item].longname
         ? strlen(parTable[tableID].pars[item].longname) : 0,
         ulen = parTable[tableID].pars[item].units
         ? strlen(parTable[tableID].pars[item].units) : 0;
-      fprintf(ptfp, "  {%4d, 0, \"%s\", %-*s%c%s%s, %-*s%c%s%s %-*s},\n",
+      fprintf(ptfp, "  {%4d, -1, 0, \"%s\", %-*s%c%s%s, %-*s%c%s%s %-*s},\n",
 	      parTable[tableID].pars[item].id,
 	      parTable[tableID].pars[item].name, (int)(maxname-len), chelp,
               llen?'"':' ',
@@ -771,200 +776,62 @@ void tableFWriteC(FILE *ptfp, int tableID)
 }
 
 
-int tableInqParCode(int tableID, char *varname, int *code)
-{
-  int err = 1;
-
-  if ( tableID != CDI_UNDEFID && varname != NULL )
-    {
-      int npars = parTable[tableID].npars;
-      for ( int item = 0; item < npars; item++ )
-	{
-	  if ( parTable[tableID].pars[item].name
-               && strcmp(parTable[tableID].pars[item].name, varname) == 0 )
-            {
-              *code = parTable[tableID].pars[item].id;
-              err = 0;
-              break;
-            }
-	}
-    }
-
-  return (err);
-}
-
-
-int tableInqParName(int tableID, int code, char *varname)
-{
-  int err = 1;
-
-  if ( tableID >= 0 && tableID < MAX_TABLE )
-    {
-      int npars = parTable[tableID].npars;
-      for ( int item = 0; item < npars; item++ )
-	{
-	  if ( parTable[tableID].pars[item].id == code )
-	    {
-	      if ( parTable[tableID].pars[item].name )
-		strcpy(varname, parTable[tableID].pars[item].name);     //FIXME: This may overrun the supplied buffer!
-              err = 0;
-	      break;
-	    }
-	}
-    }
-  else if ( tableID == CDI_UNDEFID )
-    { }
-  else
-    Error("Invalid table ID %d", tableID);
-
-  return (err);
-}
-
-
-const char *tableInqParNamePtr(int tableID, int code)
-{
-  const char *name = NULL;
-
-  if ( tableID != CDI_UNDEFID )
-    {
-      int npars = parTable[tableID].npars;
-      for ( int item = 0; item < npars; item++ )
-	{
-	  if ( parTable[tableID].pars[item].id == code )
-	    {
-	      name = parTable[tableID].pars[item].name;
-	      break;
-	    }
-	}
-    }
-
-  return (name);
-}
-
-
-const char *tableInqParLongnamePtr(int tableID, int code)
-{
-  const char *longname = NULL;
-
-  if ( tableID != CDI_UNDEFID )
-    {
-      int npars = parTable[tableID].npars;
-      for ( int item = 0; item < npars; item++ )
-	{
-	  if ( parTable[tableID].pars[item].id == code )
-	    {
-	      longname = parTable[tableID].pars[item].longname;
-	      break;
-	    }
-	}
-    }
-
-  return (longname);
-}
-
-
-const char *tableInqParUnitsPtr(int tableID, int code)
-{
-  const char *units = NULL;
-
-  if ( tableID != CDI_UNDEFID )
-    {
-      int npars = parTable[tableID].npars;
-      for ( int item = 0; item < npars; item++ )
-	{
-	  if ( parTable[tableID].pars[item].id == code )
-	    {
-	      units = parTable[tableID].pars[item].units;
-	      break;
-	    }
-	}
-    }
-
-  return (units);
-}
-
-
-int tableInqParLongname(int tableID, int code, char *longname)
+void tableInqEntry(int tableID, int id, int ltype, char *name, char *longname, char *units)
 {
   if ( ((tableID >= 0) & (tableID < MAX_TABLE)) | (tableID == CDI_UNDEFID) ) { } else
     Error("Invalid table ID %d", tableID);
 
-  int err = 1;
-
   if ( tableID != CDI_UNDEFID )
     {
       int npars = parTable[tableID].npars;
       for ( int item = 0; item < npars; item++ )
 	{
-	  if ( parTable[tableID].pars[item].id == code )
+	  if ( parTable[tableID].pars[item].id == id &&
+               (parTable[tableID].pars[item].ltype == -1 || ltype == -1 ||
+                parTable[tableID].pars[item].ltype == ltype) )
 	    {
-	      if ( parTable[tableID].pars[item].longname )
+	      if ( name && parTable[tableID].pars[item].name )
+		strcpy(name, parTable[tableID].pars[item].name);
+	      if ( longname && parTable[tableID].pars[item].longname )
 		strcpy(longname, parTable[tableID].pars[item].longname);
-              err = 0;
+	      if ( units && parTable[tableID].pars[item].units )
+		strcpy(units, parTable[tableID].pars[item].units);
+
 	      break;
 	    }
 	}
     }
-
-  return (err);
 }
 
 
-int tableInqParUnits(int tableID, int code, char *units)
+int tableInqParCode(int tableID, char *varname, int *code)
 {
-
-  if ( ((tableID >= 0) & (tableID < MAX_TABLE)) | (tableID == CDI_UNDEFID) ) { } else
-    Error("Invalid table ID %d", tableID);
-
   int err = 1;
 
-  if ( tableID != CDI_UNDEFID )
+  if ( tableID != CDI_UNDEFID && varname != NULL )
     {
       int npars = parTable[tableID].npars;
       for ( int item = 0; item < npars; item++ )
 	{
-	  if ( parTable[tableID].pars[item].id == code )
-	    {
-	      if ( parTable[tableID].pars[item].units )
-		strcpy(units, parTable[tableID].pars[item].units);
+	  if ( parTable[tableID].pars[item].name
+               && strcmp(parTable[tableID].pars[item].name, varname) == 0 )
+            {
+              *code = parTable[tableID].pars[item].id;
               err = 0;
-	      break;
-	    }
+              break;
+            }
 	}
     }
 
-  return (err);
+  return err;
 }
 
 
-void tableInqPar(int tableID, int code, char *name, char *longname, char *units)
-{
-
-  if ( ((tableID >= 0) & (tableID < MAX_TABLE)) | (tableID == CDI_UNDEFID) ) { } else
-    Error("Invalid table ID %d", tableID);
-
-  int npars = parTable[tableID].npars;
-
-  for ( int item = 0; item < npars; item++ )
-    {
-      if ( parTable[tableID].pars[item].id == code )
-	{
-	  if ( parTable[tableID].pars[item].name )
-	    strcpy(name, parTable[tableID].pars[item].name);
-	  if ( parTable[tableID].pars[item].longname )
-	    strcpy(longname, parTable[tableID].pars[item].longname);
-	  if ( parTable[tableID].pars[item].units )
-	    strcpy(units, parTable[tableID].pars[item].units);
-	  break;
-	}
-    }
-}
-
 int tableInqNumber(void)
 {
   if ( ! ParTableInit ) parTableInit();
 
-  return (parTableNum);
+  return parTableNum;
 }
 /*
  * Local Variables:
diff --git a/libcdi/src/table.h b/libcdi/src/table.h
index 0c624f8..bc4c2e4 100644
--- a/libcdi/src/table.h
+++ b/libcdi/src/table.h
@@ -1,1427 +1,1413 @@
 /* Automatically generated, do not edit! */
-#ifndef _TABLE_H
-#define _TABLE_H
-
-static const PAR echam4[] = {
-  {   4, 0, "precip",      "total precipitation",                      "m/s"      },
-  {  34, 0, "low_cld",     "low cloud",                                 NULL      },
-  {  35, 0, "mid_cld",     "mid cloud",                                 NULL      },
-  {  36, 0, "hih_cld",     "high cloud",                                NULL      },
-  { 129, 0, "geosp",       "surface geopotential (orography)",         "m^2/s^2"  },
-  { 130, 0, "t",           "temperature",                              "K"        },
-  { 131, 0, "u",           "u-velocity",                               "m/s"      },
-  { 132, 0, "v",           "v-velocity",                               "m/s"      },
-  { 133, 0, "sq",          "specific humidity",                        "kg/kg"    },
-  { 134, 0, "aps",         "Surface pressure",                         "Pa"       },
-  { 135, 0, "omega",       "vertical velocity",                        "Pa/s"     },
-  { 138, 0, "svo",         "vorticity",                                "1/s"      },
-  { 139, 0, "ts",          "surface temperature",                      "K"        },
-  { 140, 0, "ws",          "soil wetness",                             "m"        },
-  { 141, 0, "sn",          "snow depth",                               "m"        },
-  { 142, 0, "aprl",        "large scale precipitation",                "m/s"      },
-  { 143, 0, "aprc",        "convective  precipitation",                "m/s"      },
-  { 144, 0, "aprs",        "snow fall",                                "m/s"      },
-  { 145, 0, "vdis",        "boundary layer dissipation",               "W/m^2"    },
-  { 146, 0, "ahfs",        "surface sensible heat flux",               "W/m^2"    },
-  { 147, 0, "ahfl",        "surface latent heat flux",                 "W/m^2"    },
-  { 148, 0, "stream",      "streamfunction",                           "m^2/s"    },
-  { 149, 0, "velopot",     "velocity potential",                       "m^2/s"    },
-  { 151, 0, "slp",         "mean sea level pressure",                  "Pa"       },
-  { 152, 0, "lsp",         "log surface pressure",                      NULL      },
-  { 153, 0, "sx",          "liquid water content",                     "kg/kg"    },
-  { 155, 0, "sd",          "divergence",                               "1/s"      },
-  { 156, 0, "geopoth",     "geopotential height",                      "m"        },
-  { 157, 0, "rhumidity",   "relative humidity",                        "fraction" },
-  { 158, 0, "var158",      "tendency of surface pressure",             "Pa/s"     },
-  { 159, 0, "ustar3",      "ustar3",                                   "m^3/s^3"  },
-  { 160, 0, "runoff",      "surface runoff",                           "m/s"      },
-  { 161, 0, "alwc",        "liquid water content",                     "kg/kg"    },
-  { 162, 0, "aclc",        "cloud cover",                              "fraction" },
-  { 163, 0, "aclcv",       "total cloud cover",                        "fraction" },
-  { 164, 0, "aclcov",      "total cloud cover",                        "fraction" },
-  { 165, 0, "u10",         "10m u-velocity",                           "m/s"      },
-  { 166, 0, "v10",         "10m v-velocity",                           "m/s"      },
-  { 167, 0, "temp2",       "2m temperature",                           "K"        },
-  { 168, 0, "dew2",        "2m dew point temperature",                 "K"        },
-  { 169, 0, "tsurf",       "surface temperature",                      "K"        },
-  { 170, 0, "td",          "deep soil temperature",                    "K"        },
-  { 171, 0, "wind10",      "10m windspeed",                            "m/s"      },
-  { 172, 0, "slm",         "land sea mask",                            "fraction" },
-  { 173, 0, "az0",         "surface roughness length",                 "m"        },
-  { 174, 0, "alb",         "surface background albedo",                "fraction" },
-  { 175, 0, "albedo",      "surface albedo",                           "fraction" },
-  { 176, 0, "srads",       "net surface solar radiation",              "W/m^2"    },
-  { 177, 0, "trads",       "net surface thermal radiation",            "W/m^2"    },
-  { 178, 0, "srad0",       "net top solar radiation",                  "W/m^2"    },
-  { 179, 0, "trad0",       "top thermal radiation (OLR)",              "W/m^2"    },
-  { 180, 0, "ustr",        "surface u-stress",                         "Pa"       },
-  { 181, 0, "vstr",        "surface v-stress",                         "Pa"       },
-  { 182, 0, "evap",        "surface evaporation",                      "m/s"      },
-  { 183, 0, "tdcl",        "soil temperature",                         "K"        },
-  { 185, 0, "srafs",       "net surf. solar radiation   (clear sky)",  "W/m^2"    },
-  { 186, 0, "trafs",       "net surf. thermal radiation (clear sky)",  "W/m^2"    },
-  { 187, 0, "sraf0",       "net top solar radiation     (clear sky)",  "W/m^2"    },
-  { 188, 0, "traf0",       "net top thermal radiation   (clear sky)",  "W/m^2"    },
-  { 189, 0, "sclfs",       "surface solar cloud forcing",              "W/m^2"    },
-  { 190, 0, "tclfs",       "surface thermal cloud forcing",            "W/m^2"    },
-  { 191, 0, "sclf0",       "top solar cloud forcing",                  "W/m^2"    },
-  { 192, 0, "tclf0",       "top thermal cloud forcing",                "W/m^2"    },
-  { 193, 0, "wl",          "skin reservoir content",                   "m"        },
-  { 194, 0, "wlm1",        "skin reservoir content of plants",         "m"        },
-  { 195, 0, "ustrgw",      "u-gravity wave stress",                    "Pa"       },
-  { 196, 0, "vstrgw",      "v-gravity wave stress",                    "Pa"       },
-  { 197, 0, "vdisgw",      "gravity wave dissipation",                 "W/m^2"    },
-  { 198, 0, "vgrat",       "vegetation ratio",                         "fraction" },
-  { 199, 0, "varor",       "orographic variance",                      "m^2"      },
-  { 200, 0, "vlt",         "leaf area index",                           NULL      },
-  { 201, 0, "t2max",       "maximum 2m-temperature",                   "K"        },
-  { 202, 0, "t2min",       "minimum 2m-temperature",                   "K"        },
-  { 203, 0, "srad0u",      "top solar radiation upward",               "W/m^2"    },
-  { 204, 0, "sradsu",      "surface solar radiation upward",           "W/m^2"    },
-  { 205, 0, "tradsu",      "surface thermal radiation upward",         "W/m^2"    },
-  { 206, 0, "tsn",         "snow temperature",                         "K"        },
-  { 207, 0, "td3",         "soil temperature 3",                       "K"        },
-  { 208, 0, "td4",         "soil temperature 4",                       "K"        },
-  { 209, 0, "td5",         "soil temperature 5",                       "K"        },
-  { 210, 0, "seaice",      "sea ice cover",                            "fraction" },
-  { 211, 0, "siced",       "sea ice depth",                            "m"        },
-  { 212, 0, "forest",      "vegetation type",                          "fraction" },
-  { 213, 0, "teff",        "(effective) sea-ice skin temperature",     "K"        },
-  { 214, 0, "tsmax",       "maximum surface temperature",              "K"        },
-  { 215, 0, "tsmin",       "minimum surface temperature",              "K"        },
-  { 216, 0, "wimax",       "maximum 10m-wind speed",                   "m/s"      },
-  { 217, 0, "topmax",      "maximum height of convective cloud tops",  "Pa"       },
-  { 218, 0, "snmel",       "snow melt",                                "m/s"      },
-  { 219, 0, "runtoc",      "surface runoff into ocean",                 NULL      },
-  { 220, 0, "tslin",       "land: residual surface heat budget",       "W/m^2"    },
-  { 221, 0, "dsnac",       "snow depth change",                        "m/s"      },
-  { 222, 0, "alwcac",      "liquid water content",                     "kg/kg"    },
-  { 223, 0, "aclcac",      "cloud cover",                              "fraction" },
-  { 224, 0, "tke",         "turbulent kinetic energy",                  NULL      },
-  { 225, 0, "tkem1",       "turbulent kinetic energy (t-1)",            NULL      },
-  { 226, 0, "fao",         "FAO data set (soil data flags)",            NULL      },
-  { 227, 0, "rgcgn",       "heat capacity of soil",                     NULL      },
-  { 228, 0, "sodif",       "soil diffusivity",                          NULL      },
-  { 229, 0, "wsmx",        "field capacity of soil",                   "m"        },
-  { 230, 0, "qvi",         "vertically integrated specific humidity",  "kg/m^2"   },
-  { 231, 0, "alwcvi",      "vertically integrated liquid water cont.", "kg/m^2"   },
-  { 232, 0, "glac",        "glacier mask",                             "fraction" },
-  { 233, 0, "runlnd",      "surface runoff not running into ocean",     NULL      },
-  { 259, 0, "windspeed",   "windspeed (sqrt(u^2+v^2))",                 NULL      },
-  { 260, 0, "precip",      "total precipitation",                      "m/s"      },
-  { 261, 0, "net_top",     "total top radiation",                       NULL      },
-  { 262, 0, "net_bot",     "total surface radiation",                   NULL      },
-  { 263, 0, "net_heat",    "net surface heat flux",                     NULL      },
-  { 264, 0, "net_water",   "total surface water",                       NULL      },
-  { 268, 0, "sw_atm",       NULL,                                       NULL      },
-  { 269, 0, "lw_atm",       NULL,                                       NULL      },
-  { 270, 0, "net_atm",      NULL,                                       NULL      },
-  { 271, 0, "surf_runoff", "surface runoff",                            NULL      },
-  { 275, 0, "fresh_water",  NULL,                                       NULL      },
+#ifndef TABLE_H
+#define TABLE_H
+
+static const param_type echam4[] = {
+  {   4, -1, 0, "precip",      "total precipitation",                      "m/s"      },
+  {  34, -1, 0, "low_cld",     "low cloud",                                 NULL      },
+  {  35, -1, 0, "mid_cld",     "mid cloud",                                 NULL      },
+  {  36, -1, 0, "hih_cld",     "high cloud",                                NULL      },
+  { 129, -1, 0, "geosp",       "surface geopotential (orography)",         "m^2/s^2"  },
+  { 130, -1, 0, "t",           "temperature",                              "K"        },
+  { 131, -1, 0, "u",           "u-velocity",                               "m/s"      },
+  { 132, -1, 0, "v",           "v-velocity",                               "m/s"      },
+  { 133, -1, 0, "sq",          "specific humidity",                        "kg/kg"    },
+  { 134, -1, 0, "aps",         "Surface pressure",                         "Pa"       },
+  { 135, -1, 0, "omega",       "vertical velocity",                        "Pa/s"     },
+  { 138, -1, 0, "svo",         "vorticity",                                "1/s"      },
+  { 139, -1, 0, "ts",          "surface temperature",                      "K"        },
+  { 140, -1, 0, "ws",          "soil wetness",                             "m"        },
+  { 141, -1, 0, "sn",          "snow depth",                               "m"        },
+  { 142, -1, 0, "aprl",        "large scale precipitation",                "m/s"      },
+  { 143, -1, 0, "aprc",        "convective  precipitation",                "m/s"      },
+  { 144, -1, 0, "aprs",        "snow fall",                                "m/s"      },
+  { 145, -1, 0, "vdis",        "boundary layer dissipation",               "W/m^2"    },
+  { 146, -1, 0, "ahfs",        "surface sensible heat flux",               "W/m^2"    },
+  { 147, -1, 0, "ahfl",        "surface latent heat flux",                 "W/m^2"    },
+  { 148, -1, 0, "stream",      "streamfunction",                           "m^2/s"    },
+  { 149, -1, 0, "velopot",     "velocity potential",                       "m^2/s"    },
+  { 151, -1, 0, "slp",         "mean sea level pressure",                  "Pa"       },
+  { 152, -1, 0, "lsp",         "log surface pressure",                      NULL      },
+  { 153, -1, 0, "sx",          "liquid water content",                     "kg/kg"    },
+  { 155, -1, 0, "sd",          "divergence",                               "1/s"      },
+  { 156, -1, 0, "geopoth",     "geopotential height",                      "m"        },
+  { 157, -1, 0, "rhumidity",   "relative humidity",                        "fraction" },
+  { 158, -1, 0, "var158",      "tendency of surface pressure",             "Pa/s"     },
+  { 159, -1, 0, "ustar3",      "ustar3",                                   "m^3/s^3"  },
+  { 160, -1, 0, "runoff",      "surface runoff",                           "m/s"      },
+  { 161, -1, 0, "alwc",        "liquid water content",                     "kg/kg"    },
+  { 162, -1, 0, "aclc",        "cloud cover",                              "fraction" },
+  { 163, -1, 0, "aclcv",       "total cloud cover",                        "fraction" },
+  { 164, -1, 0, "aclcov",      "total cloud cover",                        "fraction" },
+  { 165, -1, 0, "u10",         "10m u-velocity",                           "m/s"      },
+  { 166, -1, 0, "v10",         "10m v-velocity",                           "m/s"      },
+  { 167, -1, 0, "temp2",       "2m temperature",                           "K"        },
+  { 168, -1, 0, "dew2",        "2m dew point temperature",                 "K"        },
+  { 169, -1, 0, "tsurf",       "surface temperature",                      "K"        },
+  { 170, -1, 0, "td",          "deep soil temperature",                    "K"        },
+  { 171, -1, 0, "wind10",      "10m windspeed",                            "m/s"      },
+  { 172, -1, 0, "slm",         "land sea mask",                            "fraction" },
+  { 173, -1, 0, "az0",         "surface roughness length",                 "m"        },
+  { 174, -1, 0, "alb",         "surface background albedo",                "fraction" },
+  { 175, -1, 0, "albedo",      "surface albedo",                           "fraction" },
+  { 176, -1, 0, "srads",       "net surface solar radiation",              "W/m^2"    },
+  { 177, -1, 0, "trads",       "net surface thermal radiation",            "W/m^2"    },
+  { 178, -1, 0, "srad0",       "net top solar radiation",                  "W/m^2"    },
+  { 179, -1, 0, "trad0",       "top thermal radiation (OLR)",              "W/m^2"    },
+  { 180, -1, 0, "ustr",        "surface u-stress",                         "Pa"       },
+  { 181, -1, 0, "vstr",        "surface v-stress",                         "Pa"       },
+  { 182, -1, 0, "evap",        "surface evaporation",                      "m/s"      },
+  { 183, -1, 0, "tdcl",        "soil temperature",                         "K"        },
+  { 185, -1, 0, "srafs",       "net surf. solar radiation   (clear sky)",  "W/m^2"    },
+  { 186, -1, 0, "trafs",       "net surf. thermal radiation (clear sky)",  "W/m^2"    },
+  { 187, -1, 0, "sraf0",       "net top solar radiation     (clear sky)",  "W/m^2"    },
+  { 188, -1, 0, "traf0",       "net top thermal radiation   (clear sky)",  "W/m^2"    },
+  { 189, -1, 0, "sclfs",       "surface solar cloud forcing",              "W/m^2"    },
+  { 190, -1, 0, "tclfs",       "surface thermal cloud forcing",            "W/m^2"    },
+  { 191, -1, 0, "sclf0",       "top solar cloud forcing",                  "W/m^2"    },
+  { 192, -1, 0, "tclf0",       "top thermal cloud forcing",                "W/m^2"    },
+  { 193, -1, 0, "wl",          "skin reservoir content",                   "m"        },
+  { 194, -1, 0, "wlm1",        "skin reservoir content of plants",         "m"        },
+  { 195, -1, 0, "ustrgw",      "u-gravity wave stress",                    "Pa"       },
+  { 196, -1, 0, "vstrgw",      "v-gravity wave stress",                    "Pa"       },
+  { 197, -1, 0, "vdisgw",      "gravity wave dissipation",                 "W/m^2"    },
+  { 198, -1, 0, "vgrat",       "vegetation ratio",                         "fraction" },
+  { 199, -1, 0, "varor",       "orographic variance",                      "m^2"      },
+  { 200, -1, 0, "vlt",         "leaf area index",                           NULL      },
+  { 201, -1, 0, "t2max",       "maximum 2m-temperature",                   "K"        },
+  { 202, -1, 0, "t2min",       "minimum 2m-temperature",                   "K"        },
+  { 203, -1, 0, "srad0u",      "top solar radiation upward",               "W/m^2"    },
+  { 204, -1, 0, "sradsu",      "surface solar radiation upward",           "W/m^2"    },
+  { 205, -1, 0, "tradsu",      "surface thermal radiation upward",         "W/m^2"    },
+  { 206, -1, 0, "tsn",         "snow temperature",                         "K"        },
+  { 207, -1, 0, "td3",         "soil temperature 3",                       "K"        },
+  { 208, -1, 0, "td4",         "soil temperature 4",                       "K"        },
+  { 209, -1, 0, "td5",         "soil temperature 5",                       "K"        },
+  { 210, -1, 0, "seaice",      "sea ice cover",                            "fraction" },
+  { 211, -1, 0, "siced",       "sea ice depth",                            "m"        },
+  { 212, -1, 0, "forest",      "vegetation type",                          "fraction" },
+  { 213, -1, 0, "teff",        "(effective) sea-ice skin temperature",     "K"        },
+  { 214, -1, 0, "tsmax",       "maximum surface temperature",              "K"        },
+  { 215, -1, 0, "tsmin",       "minimum surface temperature",              "K"        },
+  { 216, -1, 0, "wimax",       "maximum 10m-wind speed",                   "m/s"      },
+  { 217, -1, 0, "topmax",      "maximum height of convective cloud tops",  "Pa"       },
+  { 218, -1, 0, "snmel",       "snow melt",                                "m/s"      },
+  { 219, -1, 0, "runtoc",      "surface runoff into ocean",                 NULL      },
+  { 220, -1, 0, "tslin",       "land: residual surface heat budget",       "W/m^2"    },
+  { 221, -1, 0, "dsnac",       "snow depth change",                        "m/s"      },
+  { 222, -1, 0, "alwcac",      "liquid water content",                     "kg/kg"    },
+  { 223, -1, 0, "aclcac",      "cloud cover",                              "fraction" },
+  { 224, -1, 0, "tke",         "turbulent kinetic energy",                  NULL      },
+  { 225, -1, 0, "tkem1",       "turbulent kinetic energy (t-1)",            NULL      },
+  { 226, -1, 0, "fao",         "FAO data set (soil data flags)",            NULL      },
+  { 227, -1, 0, "rgcgn",       "heat capacity of soil",                     NULL      },
+  { 228, -1, 0, "sodif",       "soil diffusivity",                          NULL      },
+  { 229, -1, 0, "wsmx",        "field capacity of soil",                   "m"        },
+  { 230, -1, 0, "qvi",         "vertically integrated specific humidity",  "kg/m^2"   },
+  { 231, -1, 0, "alwcvi",      "vertically integrated liquid water cont.", "kg/m^2"   },
+  { 232, -1, 0, "glac",        "glacier mask",                             "fraction" },
+  { 233, -1, 0, "runlnd",      "surface runoff not running into ocean",     NULL      },
+  { 259, -1, 0, "windspeed",   "windspeed (sqrt(u^2+v^2))",                 NULL      },
+  { 260, -1, 0, "precip",      "total precipitation",                      "m/s"      },
+  { 261, -1, 0, "net_top",     "total top radiation",                       NULL      },
+  { 262, -1, 0, "net_bot",     "total surface radiation",                   NULL      },
+  { 263, -1, 0, "net_heat",    "net surface heat flux",                     NULL      },
+  { 264, -1, 0, "net_water",   "total surface water",                       NULL      },
+  { 268, -1, 0, "sw_atm",       NULL,                                       NULL      },
+  { 269, -1, 0, "lw_atm",       NULL,                                       NULL      },
+  { 270, -1, 0, "net_atm",      NULL,                                       NULL      },
+  { 271, -1, 0, "surf_runoff", "surface runoff",                            NULL      },
+  { 275, -1, 0, "fresh_water",  NULL,                                       NULL      },
 };
 
-static const PAR echam5[] = {
-  {   4, 0, "precip",     "total precipitation",                       "kg/m^2s" },
-  {  79, 0, "swnirac",    "net surface NIR flux acc.",                 "W/m^2"   },
-  {  80, 0, "swdifnirac", "fraction of diffuse NIR acc.",              "W/m^2"   },
-  {  81, 0, "swvisac",    "net surface visible flux acc.",             "W/m^2"   },
-  {  82, 0, "swdifvisac", "fraction of diffuse visible acc.",          "W/m^2"   },
-  {  83, 0, "ocu",        "ocean eastw. velocity (coupled mode)",      "m/s"     },
-  {  84, 0, "ocv",        "ocean northw. velocity (coupled mode)",     "m/s"     },
-  {  85, 0, "tradl",      "net LW radiation 200mb",                    "W/m^2"   },
-  {  86, 0, "sradl",      "net SW radiation 200mb",                    "W/m^2"   },
-  {  87, 0, "trafl",      "net LW radiation 200mb (clear sky)",        "W/m^2"   },
-  {  88, 0, "srafl",      "net SW radiation 200mb (clear sky)",        "W/m^2"   },
-  {  89, 0, "amlcorac",   "mixed layer flux correction",               "W/m^2"   },
-  {  90, 0, "amlheatac",  "mixed layer heat content",                  "J/m^2"   },
-  {  91, 0, "trfliac",    "net LW radiation over ice",                 "W/m^2"   },
-  {  92, 0, "trflwac",    "net LW radiation over water",               "W/m^2"   },
-  {  93, 0, "trfllac",    "net LW radiation over land",                "W/m^2"   },
-  {  94, 0, "sofliac",    "net SW radiation over ice",                 "W/m^2"   },
-  {  95, 0, "soflwac",    "net SW radiation over water",               "W/m^2"   },
-  {  96, 0, "sofllac",    "net SW radiation over land",                "W/m^2"   },
-  {  97, 0, "friac",      "ice cover (fraction of grid box)",           NULL     },
-  { 102, 0, "tsi",        "surface temperature of ice",                "K"       },
-  { 103, 0, "tsw",        "surface temperature of water",              "K"       },
-  { 104, 0, "ustri",      "zonal      wind stress over ice",           "Pa"      },
-  { 105, 0, "vstri",      "meridional wind stress over ice",           "Pa"      },
-  { 106, 0, "ustrw",      "zonal      wind stress over water",         "Pa"      },
-  { 107, 0, "vstrw",      "meridional wind stress over water",         "Pa"      },
-  { 108, 0, "ustrl",      "zonal      wind stress over land",          "Pa"      },
-  { 109, 0, "vstrl",      "meridional wind stress over land",          "Pa"      },
-  { 110, 0, "ahfliac",    "latent heat flux over ice",                 "W/m^2"   },
-  { 111, 0, "ahflwac",    "latent heat flux over water",               "W/m^2"   },
-  { 112, 0, "ahfllac",    "latent heat flux over land",                "W/m^2"   },
-  { 113, 0, "evapiac",    "evaporation over ice",                      "kg/m^2s" },
-  { 114, 0, "evapwac",    "evaporation over water",                    "kg/m^2s" },
-  { 115, 0, "evaplac",    "evaporation over land",                     "kg/m^2s" },
-  { 116, 0, "az0i",       "roughness length over ice",                 "m"       },
-  { 117, 0, "az0w",       "roughness length over water",               "m"       },
-  { 118, 0, "az0l",       "roughness length over land",                "m"       },
-  { 119, 0, "ahfsiac",    "sensible heat flux over ice",               "W/m^2"   },
-  { 120, 0, "ahfswac",    "sensible heat flux over water",             "W/m^2"   },
-  { 121, 0, "ahfslac",    "sensible heat flux over land",              "W/m^2"   },
-  { 122, 0, "alsoi",      "albedo of ice",                              NULL     },
-  { 123, 0, "alsow",      "albedo of water",                            NULL     },
-  { 124, 0, "alsol",      "albedo of land",                             NULL     },
-  { 125, 0, "ahfice",     "conductive heat flux through ice",          "W/m^2"   },
-  { 126, 0, "qres",       "residual heat flux for melting sea ice",    "W/m^2"   },
-  { 127, 0, "alake",      "lake fraction",                              NULL     },
-  { 128, 0, "rintop",     "low level inversion",                        NULL     },
-  { 129, 0, "geosp",      "surface geopotential (orography)",          "m^2/s^2" },
-  { 130, 0, "t",          "temperature",                               "K"       },
-  { 131, 0, "u",          "u-velocity",                                "m/s"     },
-  { 132, 0, "v",          "v-velocity",                                "m/s"     },
-  { 133, 0, "q",          "specific humidity",                         "kg/kg"   },
-  { 134, 0, "aps",        "surface pressure",                          "Pa"      },
-  { 135, 0, "omega",      "vertical velocity",                         "Pa/s"    },
-  { 136, 0, "acdnc",      "cloud droplet number concentration",        "1/m^3"   },
-  { 137, 0, "apmeb",      "(P-E) error",                               "kg/m^2s" },
-  { 138, 0, "svo",        "vorticity",                                 "1/s"     },
-  { 139, 0, "tslm1",      "surface temperature of land",               "K"       },
-  { 140, 0, "ws",         "soil wetness",                              "m"       },
-  { 141, 0, "sn",         "water equivalent snow depth",               "m"       },
-  { 142, 0, "aprl",       "large scale precipitation",                 "kg/m^2s" },
-  { 143, 0, "aprc",       "convective  precipitation",                 "kg/m^2s" },
-  { 144, 0, "aprs",       "snow fall",                                 "kg/m^2s" },
-  { 145, 0, "vdis",       "boundary layer dissipation",                "W/m^2"   },
-  { 146, 0, "ahfs",       "sensible heat flux",                        "W/m^2"   },
-  { 147, 0, "ahfl",       "latent heat flux",                          "W/m^2"   },
-  { 148, 0, "stream",     "streamfunction",                            "m^2/s"   },
-  { 149, 0, "velopot",    "velocity potential",                        "m^2/s"   },
-  { 150, 0, "xivi",       "vertically integrated cloud ice",           "kg/m^2"  },
-  { 151, 0, "slp",        "mean sea level pressure",                   "Pa"      },
-  { 152, 0, "lsp",        "log surface pressure",                       NULL     },
-  { 153, 0, "xl",         "cloud water",                               "kg/kg"   },
-  { 154, 0, "xi",         "cloud ice",                                 "kg/kg"   },
-  { 155, 0, "sd",         "divergence",                                "1/s"     },
-  { 156, 0, "geopoth",    "geopotential height",                       "m"       },
-  { 157, 0, "rhumidity",  "relative humidity",                          NULL     },
-  { 159, 0, "wind10w",    "10m windspeed over water",                  "m/s"     },
-  { 160, 0, "runoff",     "surface runoff and drainage",               "kg/m^2s" },
-  { 161, 0, "drain",      "drainage",                                  "kg/m^2s" },
-  { 162, 0, "aclc",       "cloud cover",                                NULL     },
-  { 164, 0, "aclcov",     "total cloud cover",                          NULL     },
-  { 165, 0, "u10",        "10m u-velocity",                            "m/s"     },
-  { 166, 0, "v10",        "10m v-velocity",                            "m/s"     },
-  { 167, 0, "temp2",      "2m temperature",                            "K"       },
-  { 168, 0, "dew2",       "2m dew point temperature",                  "K"       },
-  { 169, 0, "tsurf",      "surface temperature",                       "K"       },
-  { 170, 0, "xvar",       "variance of total water amount",            "kg/kg"   },
-  { 171, 0, "wind10",     "10m windspeed",                             "m/s"     },
-  { 172, 0, "slm",        "land sea mask (1. = land, 0. = sea/lakes)",  NULL     },
-  { 173, 0, "az0",        "roughness length",                          "m"       },
-  { 174, 0, "alb",        "surface background albedo",                  NULL     },
-  { 175, 0, "albedo",     "surface albedo",                             NULL     },
-  { 176, 0, "srads",      "net surface SW radiation",                  "W/m^2"   },
-  { 177, 0, "trads",      "net surface LW radiation",                  "W/m^2"   },
-  { 178, 0, "srad0",      "net top SW radiation",                      "W/m^2"   },
-  { 179, 0, "trad0",      "net top LW radiation (-OLR)",               "W/m^2"   },
-  { 180, 0, "ustr",       "u-stress",                                  "Pa"      },
-  { 181, 0, "vstr",       "v-stress",                                  "Pa"      },
-  { 182, 0, "evap",       "evaporation",                               "kg/m^2s" },
-  { 183, 0, "xskew",      "skewness of total water amount qv+qi+ql",    NULL     },
-  { 184, 0, "srad0d",     "top incoming SW radiation",                 "W/m^2"   },
-  { 185, 0, "srafs",      "net surface SW radiation (clear sky)",      "W/m^2"   },
-  { 186, 0, "trafs",      "net surface LW radiation (clear sky)",      "W/m^2"   },
-  { 187, 0, "sraf0",      "net top SW radiation   (clear sky)",        "W/m^2"   },
-  { 188, 0, "traf0",      "net top LW radiation   (clear sky)",        "W/m^2"   },
-  { 189, 0, "sclfs",      "net surface SW cloud forcing (176-185)",    "W/m^2"   },
-  { 190, 0, "tclfs",      "net surface LW cloud forcing (177-186)",    "W/m^2"   },
-  { 191, 0, "sclf0",      "net SW top cloud forcing (178-187)",        "W/m^2"   },
-  { 192, 0, "tclf0",      "net LW top cloud forcing (179-188)",        "W/m^2"   },
-  { 193, 0, "wl",         "skin reservoir content",                    "m"       },
-  { 194, 0, "slf",        "fractional land cover",                      NULL     },
-  { 195, 0, "ustrgw",     "u-gravity wave stress",                     "Pa"      },
-  { 196, 0, "vstrgw",     "v-gravity wave stress",                     "Pa"      },
-  { 197, 0, "vdisgw",     "gravity wave dissipation",                  "W/m^2"   },
-  { 198, 0, "vgrat",      "vegetation ratio",                           NULL     },
-  { 199, 0, "orostd",     "orographic standard deviation",             "m"       },
-  { 200, 0, "vlt",        "leaf area index",                            NULL     },
-  { 201, 0, "t2max",      "maximum 2m-temperature",                    "K"       },
-  { 202, 0, "t2min",      "minimum 2m-temperature",                    "K"       },
-  { 203, 0, "srad0u",     "top SW radiation upward",                   "W/m^2"   },
-  { 204, 0, "sradsu",     "surface SW radiation upward",               "W/m^2"   },
-  { 205, 0, "tradsu",     "surface LW radiation upward",               "W/m^2"   },
-  { 206, 0, "grndflux",   "surface ground heat flux",                   NULL     },
-  { 207, 0, "tsoil",      "deep soil temperatures (5 layers)",         "K"       },
-  { 208, 0, "ahfcon",     "conductive heat flux through ice",          "W/m^2"   },
-  { 209, 0, "ahfres",     "res. heat flux for melting ice",            "W/m^2"   },
-  { 210, 0, "seaice",     "ice cover (fraction of ice+water)",          NULL     },
-  { 211, 0, "siced",      "ice thickness",                             "m"       },
-  { 212, 0, "forest",     "forest fraction",                            NULL     },
-  { 213, 0, "gld",        "glacier thickness",                         "m"       },
-  { 214, 0, "sni",        "water equivalent of snow on ice",           "m"       },
-  { 215, 0, "rogl",       "glacier runoff",                            "kg/m^2s" },
-  { 216, 0, "wimax",      "maximum 10m-wind speed",                    "m/s"     },
-  { 217, 0, "topmax",     "maximum height of convective cloud tops",   "Pa"      },
-  { 218, 0, "snmel",      "snow melt",                                 "kg/m^2s" },
-  { 219, 0, "runtoc",     "surface runoff into ocean",                 "kg/m^2s" },
-  { 220, 0, "runlnd",     "surface runoff not running into ocean",     "kg/m^2s" },
-  { 221, 0, "apmegl",     "P-E over land ice",                         "kg/m^2s" },
-  { 222, 0, "snacl",      "snow accumulation over land",               "kg/m^2s" },
-  { 223, 0, "aclcac",     "cloud cover",                                NULL     },
-  { 224, 0, "tke",        "turbulent kinetic energy",                  "m^2/s^2" },
-  { 225, 0, "tkem1",      "turbulent kinetic energy (t-1)",            "m^2/s^2" },
-  { 226, 0, "fao",        "FAO data set (soil data flags) 0...5",       NULL     },
-  { 227, 0, "rgcgn",      "heat capacity of soil",                      NULL     },
-  { 228, 0, "sodif",      "soil diffusivity",                          "m^2/s"   },
-  { 229, 0, "wsmx",       "field capacity of soil",                    "m"       },
-  { 230, 0, "qvi",        "vertically integrated water vapor",         "kg/m^2"  },
-  { 231, 0, "xlvi",       "vertically integrated cloud water",         "kg/m^2"  },
-  { 232, 0, "glac",       "fraction of land covered by glaciers",       NULL     },
-  { 233, 0, "snc",        "snow depth at the canopy",                  "m"       },
-  { 234, 0, "rtype",      "type of convection",                        "0...3"   },
-  { 235, 0, "abso4",      "anthropogenic sulfur burden",               "kg/m^2"  },
-  { 236, 0, "ao3",        "ipcc ozone",                                "kg/m^2"  },
-  { 237, 0, "tropo",      "WMO defined tropopause height",             "Pa"      },
-  { 259, 0, "windspeed",  "windspeed (sqrt(u^2+v^2))",                 "m/s"     },
-  { 260, 0, "precip",     "total precipitation  (142+143)",            "kg/m^2s" },
-  { 261, 0, "net_top",    "total top radiation  (178+179)",            "W/m^2"   },
-  { 262, 0, "net_bot",    "total surface radiation (176+177)",         "W/m^2"   },
-  { 272, 0, "mastrfu",    "mass stream function",                      "kg/s"    },
+static const param_type echam5[] = {
+  {   4, -1, 0, "precip",     "total precipitation",                       "kg/m^2s" },
+  {  79, -1, 0, "swnirac",    "net surface NIR flux acc.",                 "W/m^2"   },
+  {  80, -1, 0, "swdifnirac", "fraction of diffuse NIR acc.",              "W/m^2"   },
+  {  81, -1, 0, "swvisac",    "net surface visible flux acc.",             "W/m^2"   },
+  {  82, -1, 0, "swdifvisac", "fraction of diffuse visible acc.",          "W/m^2"   },
+  {  83, -1, 0, "ocu",        "ocean eastw. velocity (coupled mode)",      "m/s"     },
+  {  84, -1, 0, "ocv",        "ocean northw. velocity (coupled mode)",     "m/s"     },
+  {  85, -1, 0, "tradl",      "net LW radiation 200mb",                    "W/m^2"   },
+  {  86, -1, 0, "sradl",      "net SW radiation 200mb",                    "W/m^2"   },
+  {  87, -1, 0, "trafl",      "net LW radiation 200mb (clear sky)",        "W/m^2"   },
+  {  88, -1, 0, "srafl",      "net SW radiation 200mb (clear sky)",        "W/m^2"   },
+  {  89, -1, 0, "amlcorac",   "mixed layer flux correction",               "W/m^2"   },
+  {  90, -1, 0, "amlheatac",  "mixed layer heat content",                  "J/m^2"   },
+  {  91, -1, 0, "trfliac",    "net LW radiation over ice",                 "W/m^2"   },
+  {  92, -1, 0, "trflwac",    "net LW radiation over water",               "W/m^2"   },
+  {  93, -1, 0, "trfllac",    "net LW radiation over land",                "W/m^2"   },
+  {  94, -1, 0, "sofliac",    "net SW radiation over ice",                 "W/m^2"   },
+  {  95, -1, 0, "soflwac",    "net SW radiation over water",               "W/m^2"   },
+  {  96, -1, 0, "sofllac",    "net SW radiation over land",                "W/m^2"   },
+  {  97, -1, 0, "friac",      "ice cover (fraction of grid box)",           NULL     },
+  { 102, -1, 0, "tsi",        "surface temperature of ice",                "K"       },
+  { 103, -1, 0, "tsw",        "surface temperature of water",              "K"       },
+  { 104, -1, 0, "ustri",      "zonal      wind stress over ice",           "Pa"      },
+  { 105, -1, 0, "vstri",      "meridional wind stress over ice",           "Pa"      },
+  { 106, -1, 0, "ustrw",      "zonal      wind stress over water",         "Pa"      },
+  { 107, -1, 0, "vstrw",      "meridional wind stress over water",         "Pa"      },
+  { 108, -1, 0, "ustrl",      "zonal      wind stress over land",          "Pa"      },
+  { 109, -1, 0, "vstrl",      "meridional wind stress over land",          "Pa"      },
+  { 110, -1, 0, "ahfliac",    "latent heat flux over ice",                 "W/m^2"   },
+  { 111, -1, 0, "ahflwac",    "latent heat flux over water",               "W/m^2"   },
+  { 112, -1, 0, "ahfllac",    "latent heat flux over land",                "W/m^2"   },
+  { 113, -1, 0, "evapiac",    "evaporation over ice",                      "kg/m^2s" },
+  { 114, -1, 0, "evapwac",    "evaporation over water",                    "kg/m^2s" },
+  { 115, -1, 0, "evaplac",    "evaporation over land",                     "kg/m^2s" },
+  { 116, -1, 0, "az0i",       "roughness length over ice",                 "m"       },
+  { 117, -1, 0, "az0w",       "roughness length over water",               "m"       },
+  { 118, -1, 0, "az0l",       "roughness length over land",                "m"       },
+  { 119, -1, 0, "ahfsiac",    "sensible heat flux over ice",               "W/m^2"   },
+  { 120, -1, 0, "ahfswac",    "sensible heat flux over water",             "W/m^2"   },
+  { 121, -1, 0, "ahfslac",    "sensible heat flux over land",              "W/m^2"   },
+  { 122, -1, 0, "alsoi",      "albedo of ice",                              NULL     },
+  { 123, -1, 0, "alsow",      "albedo of water",                            NULL     },
+  { 124, -1, 0, "alsol",      "albedo of land",                             NULL     },
+  { 125, -1, 0, "ahfice",     "conductive heat flux through ice",          "W/m^2"   },
+  { 126, -1, 0, "qres",       "residual heat flux for melting sea ice",    "W/m^2"   },
+  { 127, -1, 0, "alake",      "lake fraction",                              NULL     },
+  { 128, -1, 0, "rintop",     "low level inversion",                        NULL     },
+  { 129, -1, 0, "geosp",      "surface geopotential (orography)",          "m^2/s^2" },
+  { 130, -1, 0, "t",          "temperature",                               "K"       },
+  { 131, -1, 0, "u",          "u-velocity",                                "m/s"     },
+  { 132, -1, 0, "v",          "v-velocity",                                "m/s"     },
+  { 133, -1, 0, "q",          "specific humidity",                         "kg/kg"   },
+  { 134, -1, 0, "aps",        "surface pressure",                          "Pa"      },
+  { 135, -1, 0, "omega",      "vertical velocity",                         "Pa/s"    },
+  { 136, -1, 0, "acdnc",      "cloud droplet number concentration",        "1/m^3"   },
+  { 137, -1, 0, "apmeb",      "(P-E) error",                               "kg/m^2s" },
+  { 138, -1, 0, "svo",        "vorticity",                                 "1/s"     },
+  { 139, -1, 0, "tslm1",      "surface temperature of land",               "K"       },
+  { 140, -1, 0, "ws",         "soil wetness",                              "m"       },
+  { 141, -1, 0, "sn",         "water equivalent snow depth",               "m"       },
+  { 142, -1, 0, "aprl",       "large scale precipitation",                 "kg/m^2s" },
+  { 143, -1, 0, "aprc",       "convective  precipitation",                 "kg/m^2s" },
+  { 144, -1, 0, "aprs",       "snow fall",                                 "kg/m^2s" },
+  { 145, -1, 0, "vdis",       "boundary layer dissipation",                "W/m^2"   },
+  { 146, -1, 0, "ahfs",       "sensible heat flux",                        "W/m^2"   },
+  { 147, -1, 0, "ahfl",       "latent heat flux",                          "W/m^2"   },
+  { 148, -1, 0, "stream",     "streamfunction",                            "m^2/s"   },
+  { 149, -1, 0, "velopot",    "velocity potential",                        "m^2/s"   },
+  { 150, -1, 0, "xivi",       "vertically integrated cloud ice",           "kg/m^2"  },
+  { 151, -1, 0, "slp",        "mean sea level pressure",                   "Pa"      },
+  { 152, -1, 0, "lsp",        "log surface pressure",                       NULL     },
+  { 153, -1, 0, "xl",         "cloud water",                               "kg/kg"   },
+  { 154, -1, 0, "xi",         "cloud ice",                                 "kg/kg"   },
+  { 155, -1, 0, "sd",         "divergence",                                "1/s"     },
+  { 156, -1, 0, "geopoth",    "geopotential height",                       "m"       },
+  { 157, -1, 0, "rhumidity",  "relative humidity",                          NULL     },
+  { 159, -1, 0, "wind10w",    "10m windspeed over water",                  "m/s"     },
+  { 160, -1, 0, "runoff",     "surface runoff and drainage",               "kg/m^2s" },
+  { 161, -1, 0, "drain",      "drainage",                                  "kg/m^2s" },
+  { 162, -1, 0, "aclc",       "cloud cover",                                NULL     },
+  { 164, -1, 0, "aclcov",     "total cloud cover",                          NULL     },
+  { 165, -1, 0, "u10",        "10m u-velocity",                            "m/s"     },
+  { 166, -1, 0, "v10",        "10m v-velocity",                            "m/s"     },
+  { 167, -1, 0, "temp2",      "2m temperature",                            "K"       },
+  { 168, -1, 0, "dew2",       "2m dew point temperature",                  "K"       },
+  { 169, -1, 0, "tsurf",      "surface temperature",                       "K"       },
+  { 170, -1, 0, "xvar",       "variance of total water amount",            "kg/kg"   },
+  { 171, -1, 0, "wind10",     "10m windspeed",                             "m/s"     },
+  { 172, -1, 0, "slm",        "land sea mask (1. = land, 0. = sea/lakes)",  NULL     },
+  { 173, -1, 0, "az0",        "roughness length",                          "m"       },
+  { 174, -1, 0, "alb",        "surface background albedo",                  NULL     },
+  { 175, -1, 0, "albedo",     "surface albedo",                             NULL     },
+  { 176, -1, 0, "srads",      "net surface SW radiation",                  "W/m^2"   },
+  { 177, -1, 0, "trads",      "net surface LW radiation",                  "W/m^2"   },
+  { 178, -1, 0, "srad0",      "net top SW radiation",                      "W/m^2"   },
+  { 179, -1, 0, "trad0",      "net top LW radiation (-OLR)",               "W/m^2"   },
+  { 180, -1, 0, "ustr",       "u-stress",                                  "Pa"      },
+  { 181, -1, 0, "vstr",       "v-stress",                                  "Pa"      },
+  { 182, -1, 0, "evap",       "evaporation",                               "kg/m^2s" },
+  { 183, -1, 0, "xskew",      "skewness of total water amount qv+qi+ql",    NULL     },
+  { 184, -1, 0, "srad0d",     "top incoming SW radiation",                 "W/m^2"   },
+  { 185, -1, 0, "srafs",      "net surface SW radiation (clear sky)",      "W/m^2"   },
+  { 186, -1, 0, "trafs",      "net surface LW radiation (clear sky)",      "W/m^2"   },
+  { 187, -1, 0, "sraf0",      "net top SW radiation   (clear sky)",        "W/m^2"   },
+  { 188, -1, 0, "traf0",      "net top LW radiation   (clear sky)",        "W/m^2"   },
+  { 189, -1, 0, "sclfs",      "net surface SW cloud forcing (176-185)",    "W/m^2"   },
+  { 190, -1, 0, "tclfs",      "net surface LW cloud forcing (177-186)",    "W/m^2"   },
+  { 191, -1, 0, "sclf0",      "net SW top cloud forcing (178-187)",        "W/m^2"   },
+  { 192, -1, 0, "tclf0",      "net LW top cloud forcing (179-188)",        "W/m^2"   },
+  { 193, -1, 0, "wl",         "skin reservoir content",                    "m"       },
+  { 194, -1, 0, "slf",        "fractional land cover",                      NULL     },
+  { 195, -1, 0, "ustrgw",     "u-gravity wave stress",                     "Pa"      },
+  { 196, -1, 0, "vstrgw",     "v-gravity wave stress",                     "Pa"      },
+  { 197, -1, 0, "vdisgw",     "gravity wave dissipation",                  "W/m^2"   },
+  { 198, -1, 0, "vgrat",      "vegetation ratio",                           NULL     },
+  { 199, -1, 0, "orostd",     "orographic standard deviation",             "m"       },
+  { 200, -1, 0, "vlt",        "leaf area index",                            NULL     },
+  { 201, -1, 0, "t2max",      "maximum 2m-temperature",                    "K"       },
+  { 202, -1, 0, "t2min",      "minimum 2m-temperature",                    "K"       },
+  { 203, -1, 0, "srad0u",     "top SW radiation upward",                   "W/m^2"   },
+  { 204, -1, 0, "sradsu",     "surface SW radiation upward",               "W/m^2"   },
+  { 205, -1, 0, "tradsu",     "surface LW radiation upward",               "W/m^2"   },
+  { 206, -1, 0, "grndflux",   "surface ground heat flux",                   NULL     },
+  { 207, -1, 0, "tsoil",      "deep soil temperatures (5 layers)",         "K"       },
+  { 208, -1, 0, "ahfcon",     "conductive heat flux through ice",          "W/m^2"   },
+  { 209, -1, 0, "ahfres",     "res. heat flux for melting ice",            "W/m^2"   },
+  { 210, -1, 0, "seaice",     "ice cover (fraction of ice+water)",          NULL     },
+  { 211, -1, 0, "siced",      "ice thickness",                             "m"       },
+  { 212, -1, 0, "forest",     "forest fraction",                            NULL     },
+  { 213, -1, 0, "gld",        "glacier thickness",                         "m"       },
+  { 214, -1, 0, "sni",        "water equivalent of snow on ice",           "m"       },
+  { 215, -1, 0, "rogl",       "glacier runoff",                            "kg/m^2s" },
+  { 216, -1, 0, "wimax",      "maximum 10m-wind speed",                    "m/s"     },
+  { 217, -1, 0, "topmax",     "maximum height of convective cloud tops",   "Pa"      },
+  { 218, -1, 0, "snmel",      "snow melt",                                 "kg/m^2s" },
+  { 219, -1, 0, "runtoc",     "surface runoff into ocean",                 "kg/m^2s" },
+  { 220, -1, 0, "runlnd",     "surface runoff not running into ocean",     "kg/m^2s" },
+  { 221, -1, 0, "apmegl",     "P-E over land ice",                         "kg/m^2s" },
+  { 222, -1, 0, "snacl",      "snow accumulation over land",               "kg/m^2s" },
+  { 223, -1, 0, "aclcac",     "cloud cover",                                NULL     },
+  { 224, -1, 0, "tke",        "turbulent kinetic energy",                  "m^2/s^2" },
+  { 225, -1, 0, "tkem1",      "turbulent kinetic energy (t-1)",            "m^2/s^2" },
+  { 226, -1, 0, "fao",        "FAO data set (soil data flags) 0...5",       NULL     },
+  { 227, -1, 0, "rgcgn",      "heat capacity of soil",                      NULL     },
+  { 228, -1, 0, "sodif",      "soil diffusivity",                          "m^2/s"   },
+  { 229, -1, 0, "wsmx",       "field capacity of soil",                    "m"       },
+  { 230, -1, 0, "qvi",        "vertically integrated water vapor",         "kg/m^2"  },
+  { 231, -1, 0, "xlvi",       "vertically integrated cloud water",         "kg/m^2"  },
+  { 232, -1, 0, "glac",       "fraction of land covered by glaciers",       NULL     },
+  { 233, -1, 0, "snc",        "snow depth at the canopy",                  "m"       },
+  { 234, -1, 0, "rtype",      "type of convection",                        "0...3"   },
+  { 235, -1, 0, "abso4",      "anthropogenic sulfur burden",               "kg/m^2"  },
+  { 236, -1, 0, "ao3",        "ipcc ozone",                                "kg/m^2"  },
+  { 237, -1, 0, "tropo",      "WMO defined tropopause height",             "Pa"      },
+  { 259, -1, 0, "windspeed",  "windspeed (sqrt(u^2+v^2))",                 "m/s"     },
+  { 260, -1, 0, "precip",     "total precipitation  (142+143)",            "kg/m^2s" },
+  { 261, -1, 0, "net_top",    "total top radiation  (178+179)",            "W/m^2"   },
+  { 262, -1, 0, "net_bot",    "total surface radiation (176+177)",         "W/m^2"   },
+  { 272, -1, 0, "mastrfu",    "mass stream function",                      "kg/s"    },
 };
 
-static const PAR echam6[] = {
-  {   4, 0, "precip",         "total precipitation",                       "kg m-2 s-1" },
-  {  34, 0, "low_cld",        "low cloud",                                  NULL        },
-  {  35, 0, "mid_cld",        "mid cloud",                                  NULL        },
-  {  36, 0, "hih_cld",        "high cloud",                                 NULL        },
-  {  68, 0, "fage",           "aging factor of snow on ice",                NULL        },
-  {  69, 0, "snifrac",        "fraction of ice covered with snow",          NULL        },
-  {  70, 0, "barefrac",       "bare ice fraction",                          NULL        },
-  {  71, 0, "alsom",          "albedo of melt ponds",                       NULL        },
-  {  72, 0, "alsobs",         "albedo of bare ice and snow",                NULL        },
-  {  73, 0, "sicepdw",        "melt pond depth on sea-ice",                "m"          },
-  {  74, 0, "sicepdi",        "ice thickness on melt pond",                "m"          },
-  {  75, 0, "tsicepdi",       "ice temperature on frozen melt pond",       "K"          },
-  {  76, 0, "sicepres",       "residual heat flux",                        "W m-2"      },
-  {  77, 0, "ameltdepth",     "total melt pond depth",                     "m"          },
-  {  78, 0, "ameltfrac",      "fractional area of melt ponds on sea-ice",   NULL        },
-  {  79, 0, "albedo_vis_dir", "surface albedo visible range direct",        NULL        },
-  {  80, 0, "albedo_nir_dir", "surface albedo NIR range direct",            NULL        },
-  {  81, 0, "albedo_vis_dif", "surface albedo visible range diffuse",       NULL        },
-  {  82, 0, "albedo_nir_dif", "surface albedo NIR range diffuse",           NULL        },
-  {  83, 0, "ocu",            "ocean eastw. velocity (coupled mode)",      "m/s"        },
-  {  84, 0, "ocv",            "ocean northw. velocity (coupled mode)",     "m/s"        },
-  {  85, 0, "tradl",          "thermal radiation 200mb",                   "W m-2"      },
-  {  86, 0, "sradl",          "solar radiation 200mb",                     "W m-2"      },
-  {  87, 0, "trafl",          "thermal radiation 200mb (clear sky)",       "W m-2"      },
-  {  88, 0, "srafl",          "solar radiation 200mb (clear sky)",         "W m-2"      },
-  {  89, 0, "amlcorac",       "mixed layer flux correction",               "W m-2"      },
-  {  90, 0, "amlheatac",      "mixed layer heat content",                  "J m-2"      },
-  {  91, 0, "trfliac",        "LW flux over ice",                          "W m-2"      },
-  {  92, 0, "trflwac",        "LW flux over water",                        "W m-2"      },
-  {  93, 0, "trfllac",        "LW flux over land",                         "W m-2"      },
-  {  94, 0, "sofliac",        "SW flux over ice",                          "W m-2"      },
-  {  95, 0, "soflwac",        "SW flux over water",                        "W m-2"      },
-  {  96, 0, "sofllac",        "SW flux over land",                         "W m-2"      },
-  {  97, 0, "friac",          "ice cover (fraction of grid box)",           NULL        },
-  { 102, 0, "tsi",            "surface temperature of ice",                "K"          },
-  { 103, 0, "tsw",            "surface temperature of water",              "K"          },
-  { 104, 0, "ustri",          "zonal      wind stress over ice",           "Pa"         },
-  { 105, 0, "vstri",          "meridional wind stress over ice",           "Pa"         },
-  { 106, 0, "ustrw",          "zonal      wind stress over water",         "Pa"         },
-  { 107, 0, "vstrw",          "meridional wind stress over water",         "Pa"         },
-  { 108, 0, "ustrl",          "zonal      wind stress over land",          "Pa"         },
-  { 109, 0, "vstrl",          "meridional wind stress over land",          "Pa"         },
-  { 110, 0, "ahfliac",        "latent heat flux over ice",                 "W m-2"      },
-  { 111, 0, "ahflwac",        "latent heat flux over water",               "W m-2"      },
-  { 112, 0, "ahfllac",        "latent heat flux over land",                "W m-2"      },
-  { 113, 0, "evapiac",        "evaporation over ice",                      "kg m-2 s-1" },
-  { 114, 0, "evapwac",        "evaporation over water",                    "kg m-2 s-1" },
-  { 115, 0, "evaplac",        "evaporation over land",                     "kg m-2 s-1" },
-  { 116, 0, "az0i",           "roughness length over ice",                 "m"          },
-  { 117, 0, "az0w",           "roughness length over water",               "m"          },
-  { 118, 0, "az0l",           "roughness length over land",                "m"          },
-  { 119, 0, "ahfsiac",        "sensible heat flux over ice",               "W m-2"      },
-  { 120, 0, "ahfswac",        "sensible heat flux over water",             "W m-2"      },
-  { 121, 0, "ahfslac",        "sensible heat flux over land",              "W m-2"      },
-  { 122, 0, "alsoi",          "albedo of ice",                              NULL        },
-  { 123, 0, "alsow",          "albedo of water",                            NULL        },
-  { 124, 0, "alsol",          "albedo of land",                             NULL        },
-  { 125, 0, "ahfice",         "conductive heat flux",                      "W m-2"      },
-  { 126, 0, "qres",           "residual heat flux for melting sea ice",    "W m-2"      },
-  { 127, 0, "alake",          "lake fraction of grid box",                 "fraction"   },
-  { 128, 0, "rintop",         "low level inversion",                        NULL        },
-  { 129, 0, "geosp",          "surface geopotential (orography)",          "m^2/s^2"    },
-  { 130, 0, "t",              "temperature",                               "K"          },
-  { 131, 0, "u",              "u-velocity",                                "m/s"        },
-  { 132, 0, "v",              "v-velocity",                                "m/s"        },
-  { 133, 0, "q",              "specific humidity",                         "kg/kg"      },
-  { 134, 0, "aps",            "surface pressure",                          "Pa"         },
-  { 135, 0, "omega",          "vertical velocity",                         "Pa/s"       },
-  { 136, 0, "acdnc",          "cloud droplet number concentration",        "1 m-3"      },
-  { 137, 0, "apmeb",          "vert. integr. tendencies of water",         "kg m-2 s-1" },
-  { 138, 0, "svo",            "vorticity",                                 "1/s"        },
-  { 139, 0, "tslm1",          "surface temperature of land",               "K"          },
-  { 140, 0, "ws",             "soil wetness",                              "m"          },
-  { 141, 0, "sn",             "snow depth",                                "m"          },
-  { 142, 0, "aprl",           "large scale precipitation",                 "kg m-2 s-1" },
-  { 143, 0, "aprc",           "convective  precipitation",                 "kg m-2 s-1" },
-  { 144, 0, "aprs",           "snow fall",                                 "kg m-2 s-1" },
-  { 145, 0, "vdis",           "boundary layer dissipation",                "W m-2"      },
-  { 146, 0, "ahfs",           "sensible heat flux",                        "W m-2"      },
-  { 147, 0, "ahfl",           "latent heat flux",                          "W m-2"      },
-  { 148, 0, "stream",         "streamfunction",                            "m^2/s"      },
-  { 149, 0, "velopot",        "velocity potential",                        "m^2/s"      },
-  { 150, 0, "xivi",           "vertically integrated cloud ice",           "kg m-2"     },
-  { 151, 0, "slp",            "mean sea level pressure",                   "Pa"         },
-  { 152, 0, "lsp",            "log surface pressure",                       NULL        },
-  { 153, 0, "xl",             "cloud water",                               "kg/kg"      },
-  { 154, 0, "xi",             "cloud ice",                                 "kg/kg"      },
-  { 155, 0, "sd",             "divergence",                                "1/s"        },
-  { 156, 0, "geopoth",        "geopotential height",                       "m"          },
-  { 157, 0, "rhumidity",      "relative humidity",                         "fraction"   },
-  { 158, 0, "var158",         "tendency of surface pressure",              "Pa/s"       },
-  { 159, 0, "wind10w",        "10m windspeed over water",                  "m/s"        },
-  { 160, 0, "runoff",         "surface runoff and drainage",               "kg m-2 s-1" },
-  { 161, 0, "drain",          "drainage",                                  "kg m-2 s-1" },
-  { 162, 0, "aclc",           "cloud cover",                                NULL        },
-  { 163, 0, "aclcv",          "total cloud cover",                          NULL        },
-  { 164, 0, "aclcov",         "total cloud cover (mean)",                   NULL        },
-  { 165, 0, "u10",            "10m u-velocity",                            "m/s"        },
-  { 166, 0, "v10",            "10m v-velocity",                            "m/s"        },
-  { 167, 0, "temp2",          "2m temperature",                            "K"          },
-  { 168, 0, "dew2",           "2m dew point temperature",                  "K"          },
-  { 169, 0, "tsurf",          "surface temperature",                       "K"          },
-  { 170, 0, "xvar",           "variance of total water amount qv+qi+ql",   "kg/kg"      },
-  { 171, 0, "wind10",         "10m windspeed",                             "m/s"        },
-  { 172, 0, "slm",            "land sea mask (1. = land, 0. = sea/lakes)",  NULL        },
-  { 173, 0, "az0",            "roughness length",                          "m"          },
-  { 174, 0, "alb",            "surface background albedo",                  NULL        },
-  { 175, 0, "albedo",         "surface albedo",                             NULL        },
-  { 176, 0, "srads",          "net surface solar radiation",               "W m-2"      },
-  { 177, 0, "trads",          "net surface thermal radiation",             "W m-2"      },
-  { 178, 0, "srad0",          "net top solar radiation",                   "W m-2"      },
-  { 179, 0, "trad0",          "top thermal radiation (OLR)",               "W m-2"      },
-  { 180, 0, "ustr",           "u-stress",                                  "Pa"         },
-  { 181, 0, "vstr",           "v-stress",                                  "Pa"         },
-  { 182, 0, "evap",           "evaporation",                               "kg m-2 s-1" },
-  { 183, 0, "xskew",          "skewness of total water amount qv+qi+ql",    NULL        },
-  { 184, 0, "srad0d",         "top incoming solar radiation",              "W m-2"      },
-  { 185, 0, "srafs",          "net surf. solar radiation   (clear sky)",   "W m-2"      },
-  { 186, 0, "trafs",          "net surf. thermal radiation (clear sky)",   "W m-2"      },
-  { 187, 0, "sraf0",          "net top solar radiation     (clear sky)",   "W m-2"      },
-  { 188, 0, "traf0",          "net top thermal radiation   (clear sky)",   "W m-2"      },
-  { 189, 0, "sclfs",          "surface solar cloud forcing",               "W m-2"      },
-  { 190, 0, "tclfs",          "surface thermal cloud forcing",             "W m-2"      },
-  { 191, 0, "sclf0",          "SW top cloud forcing (178-187)",            "W m-2"      },
-  { 192, 0, "tclf0",          "LW top cloud forcing (179-188)",            "W m-2"      },
-  { 193, 0, "wl",             "skin reservoir content",                    "m"          },
-  { 194, 0, "slf",            "sea land fraction",                          NULL        },
-  { 195, 0, "ustrgw",         "u-gravity wave stress",                     "Pa"         },
-  { 196, 0, "vstrgw",         "v-gravity wave stress",                     "Pa"         },
-  { 197, 0, "vdisgw",         "gravity wave dissipation",                  "W m-2"      },
-  { 198, 0, "vgrat",          "vegetation ratio",                           NULL        },
-  { 199, 0, "orostd",         "orographic standard deviation",             "m"          },
-  { 200, 0, "vlt",            "leaf area index",                            NULL        },
-  { 201, 0, "t2max",          "maximum 2m-temperature",                    "K"          },
-  { 202, 0, "t2min",          "minimum 2m-temperature",                    "K"          },
-  { 203, 0, "srad0u",         "top solar radiation upward",                "W m-2"      },
-  { 204, 0, "sradsu",         "surface solar radiation upward",            "W m-2"      },
-  { 205, 0, "tradsu",         "surface thermal radiation upward",          "W m-2"      },
-  { 206, 0, "grndflux",       "surface ground heat flux",                   NULL        },
-  { 207, 0, "tsoil",          "deep soil temperatures (5 layers)",         "K"          },
-  { 208, 0, "ahfcon",         "conductive heat flux through ice",          "W m-2"      },
-  { 209, 0, "ahfres",         "melting of ice",                            "W m-2"      },
-  { 210, 0, "seaice",         "ice cover (fraction of 1-SLM)",              NULL        },
-  { 211, 0, "siced",          "ice depth",                                 "m"          },
-  { 212, 0, "forest",         "forest fraction",                            NULL        },
-  { 213, 0, "gld",            "glacier depth",                             "m"          },
-  { 214, 0, "sni",            "water equivalent of snow on ice",           "m"          },
-  { 215, 0, "rogl",           "glacier runoff",                            "kg m-2 s-1" },
-  { 216, 0, "wimax",          "maximum 10m-wind speed",                    "m/s"        },
-  { 217, 0, "topmax",         "maximum height of convective cloud tops",   "Pa"         },
-  { 218, 0, "snmel",          "snow melt",                                 "kg m-2 s-1" },
-  { 219, 0, "runtoc",         "surface runoff into ocean",                 "kg m-2 s-1" },
-  { 220, 0, "runlnd",         "surface runoff not running into ocean",     "kg m-2 s-1" },
-  { 221, 0, "apmegl",         "P-E over land ice",                         "kg m-2 s-1" },
-  { 222, 0, "snacl",          "snow accumulation over land",               "kg m-2 s-1" },
-  { 223, 0, "aclcac",         "cloud cover",                                NULL        },
-  { 224, 0, "tke",            "turbulent kinetic energy",                  "m^2/s^2"    },
-  { 225, 0, "tkem1",          "turbulent kinetic energy (t-1)",            "m^2/s^2"    },
-  { 226, 0, "fao",            "FAO data set (soil data flags)",            "0...5"      },
-  { 227, 0, "rgcgn",          "heat capacity of soil",                      NULL        },
-  { 228, 0, "sodif",          "diffusivity of soil and land ice",          "m^2/s"      },
-  { 229, 0, "wsmx",           "field capacity of soil",                    "m"          },
-  { 230, 0, "qvi",            "vertically integrated water vapor",         "kg m-2"     },
-  { 231, 0, "xlvi",           "vertically integrated cloud water",         "kg m-2"     },
-  { 232, 0, "glac",           "fraction of land covered by glaciers",       NULL        },
-  { 233, 0, "snc",            "snow depth at the canopy",                  "m"          },
-  { 234, 0, "rtype",          "type of convection",                        "0...3"      },
-  { 235, 0, "abso4",          "antropogenic sulfur burden",                "kg m-2"     },
-  { 236, 0, "ao3",            "ipcc ozone",                                "kg m-2"     },
-  { 237, 0, "tropo",          "WMO defined tropopause height",             "Pa"         },
-  { 259, 0, "windspeed",      "windspeed (sqrt(u^2+v^2))",                 "m/s"        },
-  { 260, 0, "precip",         "total precipitation  (142+143)",            "kg m-2 s-1" },
-  { 261, 0, "net_top",        "total top radiation  (178+179)",            "W m-2"      },
-  { 262, 0, "net_bot",        "total surface radiation (176+177)",         "W m-2"      },
-  { 272, 0, "mastfru",        "mass stream function",                      "kg/s"       },
+static const param_type echam6[] = {
+  {   4, -1, 0, "precip",         "total precipitation",                       "kg m-2 s-1" },
+  {  34, -1, 0, "low_cld",        "low cloud",                                  NULL        },
+  {  35, -1, 0, "mid_cld",        "mid cloud",                                  NULL        },
+  {  36, -1, 0, "hih_cld",        "high cloud",                                 NULL        },
+  {  68, -1, 0, "fage",           "aging factor of snow on ice",                NULL        },
+  {  69, -1, 0, "snifrac",        "fraction of ice covered with snow",          NULL        },
+  {  70, -1, 0, "barefrac",       "bare ice fraction",                          NULL        },
+  {  71, -1, 0, "alsom",          "albedo of melt ponds",                       NULL        },
+  {  72, -1, 0, "alsobs",         "albedo of bare ice and snow",                NULL        },
+  {  73, -1, 0, "sicepdw",        "melt pond depth on sea-ice",                "m"          },
+  {  74, -1, 0, "sicepdi",        "ice thickness on melt pond",                "m"          },
+  {  75, -1, 0, "tsicepdi",       "ice temperature on frozen melt pond",       "K"          },
+  {  76, -1, 0, "sicepres",       "residual heat flux",                        "W m-2"      },
+  {  77, -1, 0, "ameltdepth",     "total melt pond depth",                     "m"          },
+  {  78, -1, 0, "ameltfrac",      "fractional area of melt ponds on sea-ice",   NULL        },
+  {  79, -1, 0, "albedo_vis_dir", "surface albedo visible range direct",        NULL        },
+  {  80, -1, 0, "albedo_nir_dir", "surface albedo NIR range direct",            NULL        },
+  {  81, -1, 0, "albedo_vis_dif", "surface albedo visible range diffuse",       NULL        },
+  {  82, -1, 0, "albedo_nir_dif", "surface albedo NIR range diffuse",           NULL        },
+  {  83, -1, 0, "ocu",            "ocean eastw. velocity (coupled mode)",      "m/s"        },
+  {  84, -1, 0, "ocv",            "ocean northw. velocity (coupled mode)",     "m/s"        },
+  {  85, -1, 0, "tradl",          "thermal radiation 200mb",                   "W m-2"      },
+  {  86, -1, 0, "sradl",          "solar radiation 200mb",                     "W m-2"      },
+  {  87, -1, 0, "trafl",          "thermal radiation 200mb (clear sky)",       "W m-2"      },
+  {  88, -1, 0, "srafl",          "solar radiation 200mb (clear sky)",         "W m-2"      },
+  {  89, -1, 0, "amlcorac",       "mixed layer flux correction",               "W m-2"      },
+  {  90, -1, 0, "amlheatac",      "mixed layer heat content",                  "J m-2"      },
+  {  91, -1, 0, "trfliac",        "LW flux over ice",                          "W m-2"      },
+  {  92, -1, 0, "trflwac",        "LW flux over water",                        "W m-2"      },
+  {  93, -1, 0, "trfllac",        "LW flux over land",                         "W m-2"      },
+  {  94, -1, 0, "sofliac",        "SW flux over ice",                          "W m-2"      },
+  {  95, -1, 0, "soflwac",        "SW flux over water",                        "W m-2"      },
+  {  96, -1, 0, "sofllac",        "SW flux over land",                         "W m-2"      },
+  {  97, -1, 0, "friac",          "ice cover (fraction of grid box)",           NULL        },
+  { 102, -1, 0, "tsi",            "surface temperature of ice",                "K"          },
+  { 103, -1, 0, "tsw",            "surface temperature of water",              "K"          },
+  { 104, -1, 0, "ustri",          "zonal      wind stress over ice",           "Pa"         },
+  { 105, -1, 0, "vstri",          "meridional wind stress over ice",           "Pa"         },
+  { 106, -1, 0, "ustrw",          "zonal      wind stress over water",         "Pa"         },
+  { 107, -1, 0, "vstrw",          "meridional wind stress over water",         "Pa"         },
+  { 108, -1, 0, "ustrl",          "zonal      wind stress over land",          "Pa"         },
+  { 109, -1, 0, "vstrl",          "meridional wind stress over land",          "Pa"         },
+  { 110, -1, 0, "ahfliac",        "latent heat flux over ice",                 "W m-2"      },
+  { 111, -1, 0, "ahflwac",        "latent heat flux over water",               "W m-2"      },
+  { 112, -1, 0, "ahfllac",        "latent heat flux over land",                "W m-2"      },
+  { 113, -1, 0, "evapiac",        "evaporation over ice",                      "kg m-2 s-1" },
+  { 114, -1, 0, "evapwac",        "evaporation over water",                    "kg m-2 s-1" },
+  { 115, -1, 0, "evaplac",        "evaporation over land",                     "kg m-2 s-1" },
+  { 116, -1, 0, "az0i",           "roughness length over ice",                 "m"          },
+  { 117, -1, 0, "az0w",           "roughness length over water",               "m"          },
+  { 118, -1, 0, "az0l",           "roughness length over land",                "m"          },
+  { 119, -1, 0, "ahfsiac",        "sensible heat flux over ice",               "W m-2"      },
+  { 120, -1, 0, "ahfswac",        "sensible heat flux over water",             "W m-2"      },
+  { 121, -1, 0, "ahfslac",        "sensible heat flux over land",              "W m-2"      },
+  { 122, -1, 0, "alsoi",          "albedo of ice",                              NULL        },
+  { 123, -1, 0, "alsow",          "albedo of water",                            NULL        },
+  { 124, -1, 0, "alsol",          "albedo of land",                             NULL        },
+  { 125, -1, 0, "ahfice",         "conductive heat flux",                      "W m-2"      },
+  { 126, -1, 0, "qres",           "residual heat flux for melting sea ice",    "W m-2"      },
+  { 127, -1, 0, "alake",          "lake fraction of grid box",                 "fraction"   },
+  { 128, -1, 0, "rintop",         "low level inversion",                        NULL        },
+  { 129, -1, 0, "geosp",          "surface geopotential (orography)",          "m^2/s^2"    },
+  { 130, -1, 0, "t",              "temperature",                               "K"          },
+  { 131, -1, 0, "u",              "u-velocity",                                "m/s"        },
+  { 132, -1, 0, "v",              "v-velocity",                                "m/s"        },
+  { 133, -1, 0, "q",              "specific humidity",                         "kg/kg"      },
+  { 134, -1, 0, "aps",            "surface pressure",                          "Pa"         },
+  { 135, -1, 0, "omega",          "vertical velocity",                         "Pa/s"       },
+  { 136, -1, 0, "acdnc",          "cloud droplet number concentration",        "1 m-3"      },
+  { 137, -1, 0, "apmeb",          "vert. integr. tendencies of water",         "kg m-2 s-1" },
+  { 138, -1, 0, "svo",            "vorticity",                                 "1/s"        },
+  { 139, -1, 0, "tslm1",          "surface temperature of land",               "K"          },
+  { 140, -1, 0, "ws",             "soil wetness",                              "m"          },
+  { 141, -1, 0, "sn",             "snow depth",                                "m"          },
+  { 142, -1, 0, "aprl",           "large scale precipitation",                 "kg m-2 s-1" },
+  { 143, -1, 0, "aprc",           "convective  precipitation",                 "kg m-2 s-1" },
+  { 144, -1, 0, "aprs",           "snow fall",                                 "kg m-2 s-1" },
+  { 145, -1, 0, "vdis",           "boundary layer dissipation",                "W m-2"      },
+  { 146, -1, 0, "ahfs",           "sensible heat flux",                        "W m-2"      },
+  { 147, -1, 0, "ahfl",           "latent heat flux",                          "W m-2"      },
+  { 148, -1, 0, "stream",         "streamfunction",                            "m^2/s"      },
+  { 149, -1, 0, "velopot",        "velocity potential",                        "m^2/s"      },
+  { 150, -1, 0, "xivi",           "vertically integrated cloud ice",           "kg m-2"     },
+  { 151, -1, 0, "slp",            "mean sea level pressure",                   "Pa"         },
+  { 152, -1, 0, "lsp",            "log surface pressure",                       NULL        },
+  { 153, -1, 0, "xl",             "cloud water",                               "kg/kg"      },
+  { 154, -1, 0, "xi",             "cloud ice",                                 "kg/kg"      },
+  { 155, -1, 0, "sd",             "divergence",                                "1/s"        },
+  { 156, -1, 0, "geopoth",        "geopotential height",                       "m"          },
+  { 157, -1, 0, "rhumidity",      "relative humidity",                         "fraction"   },
+  { 158, -1, 0, "var158",         "tendency of surface pressure",              "Pa/s"       },
+  { 159, -1, 0, "wind10w",        "10m windspeed over water",                  "m/s"        },
+  { 160, -1, 0, "runoff",         "surface runoff and drainage",               "kg m-2 s-1" },
+  { 161, -1, 0, "drain",          "drainage",                                  "kg m-2 s-1" },
+  { 162, -1, 0, "aclc",           "cloud cover",                                NULL        },
+  { 163, -1, 0, "aclcv",          "total cloud cover",                          NULL        },
+  { 164, -1, 0, "aclcov",         "total cloud cover (mean)",                   NULL        },
+  { 165, -1, 0, "u10",            "10m u-velocity",                            "m/s"        },
+  { 166, -1, 0, "v10",            "10m v-velocity",                            "m/s"        },
+  { 167, -1, 0, "temp2",          "2m temperature",                            "K"          },
+  { 168, -1, 0, "dew2",           "2m dew point temperature",                  "K"          },
+  { 169, -1, 0, "tsurf",          "surface temperature",                       "K"          },
+  { 170, -1, 0, "xvar",           "variance of total water amount qv+qi+ql",   "kg/kg"      },
+  { 171, -1, 0, "wind10",         "10m windspeed",                             "m/s"        },
+  { 172, -1, 0, "slm",            "land sea mask (1. = land, 0. = sea/lakes)",  NULL        },
+  { 173, -1, 0, "az0",            "roughness length",                          "m"          },
+  { 174, -1, 0, "alb",            "surface background albedo",                  NULL        },
+  { 175, -1, 0, "albedo",         "surface albedo",                             NULL        },
+  { 176, -1, 0, "srads",          "net surface solar radiation",               "W m-2"      },
+  { 177, -1, 0, "trads",          "net surface thermal radiation",             "W m-2"      },
+  { 178, -1, 0, "srad0",          "net top solar radiation",                   "W m-2"      },
+  { 179, -1, 0, "trad0",          "top thermal radiation (OLR)",               "W m-2"      },
+  { 180, -1, 0, "ustr",           "u-stress",                                  "Pa"         },
+  { 181, -1, 0, "vstr",           "v-stress",                                  "Pa"         },
+  { 182, -1, 0, "evap",           "evaporation",                               "kg m-2 s-1" },
+  { 183, -1, 0, "xskew",          "skewness of total water amount qv+qi+ql",    NULL        },
+  { 184, -1, 0, "srad0d",         "top incoming solar radiation",              "W m-2"      },
+  { 185, -1, 0, "srafs",          "net surf. solar radiation   (clear sky)",   "W m-2"      },
+  { 186, -1, 0, "trafs",          "net surf. thermal radiation (clear sky)",   "W m-2"      },
+  { 187, -1, 0, "sraf0",          "net top solar radiation     (clear sky)",   "W m-2"      },
+  { 188, -1, 0, "traf0",          "net top thermal radiation   (clear sky)",   "W m-2"      },
+  { 189, -1, 0, "sclfs",          "surface solar cloud forcing",               "W m-2"      },
+  { 190, -1, 0, "tclfs",          "surface thermal cloud forcing",             "W m-2"      },
+  { 191, -1, 0, "sclf0",          "SW top cloud forcing (178-187)",            "W m-2"      },
+  { 192, -1, 0, "tclf0",          "LW top cloud forcing (179-188)",            "W m-2"      },
+  { 193, -1, 0, "wl",             "skin reservoir content",                    "m"          },
+  { 194, -1, 0, "slf",            "sea land fraction",                          NULL        },
+  { 195, -1, 0, "ustrgw",         "u-gravity wave stress",                     "Pa"         },
+  { 196, -1, 0, "vstrgw",         "v-gravity wave stress",                     "Pa"         },
+  { 197, -1, 0, "vdisgw",         "gravity wave dissipation",                  "W m-2"      },
+  { 198, -1, 0, "vgrat",          "vegetation ratio",                           NULL        },
+  { 199, -1, 0, "orostd",         "orographic standard deviation",             "m"          },
+  { 200, -1, 0, "vlt",            "leaf area index",                            NULL        },
+  { 201, -1, 0, "t2max",          "maximum 2m-temperature",                    "K"          },
+  { 202, -1, 0, "t2min",          "minimum 2m-temperature",                    "K"          },
+  { 203, -1, 0, "srad0u",         "top solar radiation upward",                "W m-2"      },
+  { 204, -1, 0, "sradsu",         "surface solar radiation upward",            "W m-2"      },
+  { 205, -1, 0, "tradsu",         "surface thermal radiation upward",          "W m-2"      },
+  { 206, -1, 0, "grndflux",       "surface ground heat flux",                   NULL        },
+  { 207, -1, 0, "tsoil",          "deep soil temperatures (5 layers)",         "K"          },
+  { 208, -1, 0, "ahfcon",         "conductive heat flux through ice",          "W m-2"      },
+  { 209, -1, 0, "ahfres",         "melting of ice",                            "W m-2"      },
+  { 210, -1, 0, "seaice",         "ice cover (fraction of 1-SLM)",              NULL        },
+  { 211, -1, 0, "siced",          "ice depth",                                 "m"          },
+  { 212, -1, 0, "forest",         "forest fraction",                            NULL        },
+  { 213, -1, 0, "gld",            "glacier depth",                             "m"          },
+  { 214, -1, 0, "sni",            "water equivalent of snow on ice",           "m"          },
+  { 215, -1, 0, "rogl",           "glacier runoff",                            "kg m-2 s-1" },
+  { 216, -1, 0, "wimax",          "maximum 10m-wind speed",                    "m/s"        },
+  { 217, -1, 0, "topmax",         "maximum height of convective cloud tops",   "Pa"         },
+  { 218, -1, 0, "snmel",          "snow melt",                                 "kg m-2 s-1" },
+  { 219, -1, 0, "runtoc",         "surface runoff into ocean",                 "kg m-2 s-1" },
+  { 220, -1, 0, "runlnd",         "surface runoff not running into ocean",     "kg m-2 s-1" },
+  { 221, -1, 0, "apmegl",         "P-E over land ice",                         "kg m-2 s-1" },
+  { 222, -1, 0, "snacl",          "snow accumulation over land",               "kg m-2 s-1" },
+  { 223, -1, 0, "aclcac",         "cloud cover",                                NULL        },
+  { 224, -1, 0, "tke",            "turbulent kinetic energy",                  "m^2/s^2"    },
+  { 225, -1, 0, "tkem1",          "turbulent kinetic energy (t-1)",            "m^2/s^2"    },
+  { 226, -1, 0, "fao",            "FAO data set (soil data flags)",            "0...5"      },
+  { 227, -1, 0, "rgcgn",          "heat capacity of soil",                      NULL        },
+  { 228, -1, 0, "sodif",          "diffusivity of soil and land ice",          "m^2/s"      },
+  { 229, -1, 0, "wsmx",           "field capacity of soil",                    "m"          },
+  { 230, -1, 0, "qvi",            "vertically integrated water vapor",         "kg m-2"     },
+  { 231, -1, 0, "xlvi",           "vertically integrated cloud water",         "kg m-2"     },
+  { 232, -1, 0, "glac",           "fraction of land covered by glaciers",       NULL        },
+  { 233, -1, 0, "snc",            "snow depth at the canopy",                  "m"          },
+  { 234, -1, 0, "rtype",          "type of convection",                        "0...3"      },
+  { 235, -1, 0, "abso4",          "antropogenic sulfur burden",                "kg m-2"     },
+  { 236, -1, 0, "ao3",            "ipcc ozone",                                "kg m-2"     },
+  { 237, -1, 0, "tropo",          "WMO defined tropopause height",             "Pa"         },
+  { 259, -1, 0, "windspeed",      "windspeed (sqrt(u^2+v^2))",                 "m/s"        },
+  { 260, -1, 0, "precip",         "total precipitation  (142+143)",            "kg m-2 s-1" },
+  { 261, -1, 0, "net_top",        "total top radiation  (178+179)",            "W m-2"      },
+  { 262, -1, 0, "net_bot",        "total surface radiation (176+177)",         "W m-2"      },
+  { 272, -1, 0, "mastfru",        "mass stream function",                      "kg/s"       },
 };
 
-static const PAR mpiom1[] = {
-  {   2, 0, "THO",      "temperature",                     "C"        },
-  {   5, 0, "SAO",      "salinity",                        "psu"      },
-  {   3, 0, "UKO",      "zon. velocity",                   "m/s"      },
-  {   4, 0, "VKE",      "mer. velocity",                   "m/s"      },
-  { 303, 0, "UKOMFL",   "zon. velocity (divergence free)", "m/s"      },
-  { 304, 0, "VKEMFL",   "mer. velocity (divergence free)", "m/s"      },
-  {   7, 0, "WO",       "ver. velocity",                   "m/s"      },
-  {   8, 0, "RHO",      "insitu density",                  "kg/m**3"  },
-  {   6, 0, "PO",       "pressure",                        "Pa"       },
-  {  67, 0, "EMINPO",   "freshwaterflux by restoring",     "m/s"      },
-  {  70, 0, "FLUM",     "total heatflux",                  "W/m**2"   },
-  {  79, 0, "PEM",      "total freshwaterflux",            "m/s"      },
-  {  13, 0, "SICTHO",   "ice thickness",                   "m"        },
-  {  15, 0, "SICOMO",   "ice compactness",                 "frac."    },
-  {  35, 0, "SICUO",    "zon. ice velocity",               "m/s"      },
-  {  36, 0, "SICVE",    "mer. ice velocity",               "m/s"      },
-  {  92, 0, "TAFO",     "surface air temperature",         "C"        },
-  { 164, 0, "FCLOU",    "cloud cover",                      NULL      },
-  {  52, 0, "TXO",      "surface u-stress",                "Pa/1025." },
-  {  53, 0, "TYE",      "surface v-stress",                "Pa/1025." },
-  { 260, 0, "FPREC",    "prescr. precipitation",           "m/s"      },
-  {  80, 0, "FSWR",     "downward shortwave rad.",         "W/m**2"   },
-  {  81, 0, "FTDEW",    "dewpoint temperature",            "K"        },
-  { 171, 0, "FU10",     "10m windspeed",                   "m/s"      },
-  { 141, 0, "SICSNO",   "snow thickness",                  "m"        },
-  { 176, 0, "QSWO",     "heat flux shortwave",             "W/m**2"   },
-  { 177, 0, "QLWO",     "heat flux longwave",              "W/m**2"   },
-  { 147, 0, "QLAO",     "heat flux latent",                "W/m**2"   },
-  { 146, 0, "QSEO",     "heat flux sensible",              "W/m**2"   },
-  {  65, 0, "PRECO",    "net freshwater flux + runoff",    "m/s"      },
-  {   1, 0, "ZO",       "sealevel",                        "m"        },
-  {  82, 0, "Z1O",      "sealevel change",                 "m"        },
-  {  69, 0, "KCONDEP",  "depth of convection",             "level"    },
-  {  27, 0, "PSIUWE",   "hor. bar. streamfunction",        "Sv"       },
-  {  83, 0, "AMLD",     "mixed layer depth",               "m"        },
-  { 172, 0, "WETO",     "landseamask (pressure points)",    NULL      },
-  { 507, 0, "AMSUE",    "landseamask (vector points v)",    NULL      },
-  { 508, 0, "AMSUO",    "landseamask (vector points u)",    NULL      },
-  {  84, 0, "DEPTO",    "depth at pressure points",        "m"        },
-  { 484, 0, "DEUTO",    "depth at vector points (u)",      "m"        },
-  { 584, 0, "DEUTE",    "depth at vector points (v)",      "m"        },
-  { 184, 0, "DDUO",     "level thickness (vector u )",     "m"        },
-  { 284, 0, "DDUE",     "level thickness (vector v )",     "m"        },
-  { 384, 0, "DDPO",     "level thickness (pressure )",     "m"        },
-  {  85, 0, "DLXP",     "grid distance x",                 "m"        },
-  {  86, 0, "DLYP",     "grid distance y",                 "m"        },
-  { 185, 0, "DLXU",     "grid distance x  (vector u)",     "m"        },
-  { 186, 0, "DLYU",     "grid distance y  (vector u)",     "m"        },
-  { 285, 0, "DLXV",     "grid distance x  (vector v)",     "m"        },
-  { 286, 0, "DLYV",     "grid distance y  (vector v)",     "m"        },
-  {  54, 0, "GILA",     "latitude in radiants",            "rad"      },
-  {  55, 0, "GIPH",     "longitude in radiants",           "rad"      },
-  { 354, 0, "ALAT",     "latitude in degrees (pressure)",  "deg"      },
-  { 355, 0, "ALON",     "longitude in degrees (pressure)", "deg"      },
-  { 154, 0, "ALATU",    "latitude in degrees (vector u)",  "deg"      },
-  { 155, 0, "ALONU",    "longitude in degrees (vector u)", "deg"      },
-  { 254, 0, "ALATV",    "latitude in degrees (vector v)",  "deg"      },
-  { 255, 0, "ALONV",    "longitude in degrees (vector v)", "deg"      },
-  { 110, 0, "AVO",      "vertical impuls diffusion",       "m**2/s"   },
-  { 111, 0, "DVO",      "vertical T,S diffusion",          "m**2/s"   },
-  { 142, 0, "SICTRU",   "seaice transport x",              "m**2/s"   },
-  { 143, 0, "SICTRV",   "seaice transport y",              "m**2/s"   },
-  { 612, 0, "WTMIX",    "wind mixing",                     "m**2/s"   },
-  { 183, 0, "zmld",     "mixed layer depth (SJ)",          "m"        },
-  { 207, 0, "WGO",      "GM vertical velocity",            "m/s"      },
-  { 305, 0, "rivrun",   "RiverRunoff",                     "m/s"      },
-  { 158, 0, "TMCDO",    "mon. mean depth of convection",   "level"    },
-  { 247, 0, "DQSWO",    "heatflux sw over water",          "W/m**2"   },
-  { 248, 0, "DQLWO",    "heatflux lw over water",          "W/m**2"   },
-  { 249, 0, "DQSEO",    "heatflux se over water",          "W/m**2"   },
-  { 250, 0, "DQLAO",    "heatflux la over water",          "W/m**2"   },
-  { 251, 0, "DQTHO",    "heatflux net over water",         "W/m**2"   },
-  { 252, 0, "DQSWI",    "heatflux sw over seaice",         "W/m**2"   },
-  { 253, 0, "DQLWI",    "heatflux lw over seaice",         "W/m**2"   },
-  { 254, 0, "DQSEI",    "heatflux se over seaice",         "W/m**2"   },
-  { 255, 0, "DQLAI",    "heatflux la over seaice",         "W/m**2"   },
-  { 256, 0, "DQTHI",    "heatflux net over seaice",        "W/m**2"   },
-  { 257, 0, "DTICEO",   "Equi. temp over seaice",          "K"        },
-  { 270, 0, "AOFLNHWO", "oasis net heat flux water",       "W/m**2"   },
-  { 271, 0, "AOFLSHWO", "oasis downward short wave",       "W/m**2"   },
-  { 272, 0, "AOFLRHIO", "oasis residual heat flux ice",    "W/m**2"   },
-  { 273, 0, "AOFLCHIO", "oasis conduct. heat flux ice",    "W/m**2"   },
-  { 274, 0, "AOFLFRWO", "oasis fluid fresh water flux",    "m/s"      },
-  { 275, 0, "AOFLFRIO", "oasis solid fresh water flux",    "m/s"      },
-  { 276, 0, "AOFLTXWO", "oasis wind stress water x",       "Pa/102"   },
-  { 277, 0, "AOFLTYWO", "oasis wind stress water y",       "Pa/102"   },
-  { 278, 0, "AOFLTXIO", "oasis wind stress ice x",         "Pa/102"   },
-  { 279, 0, "AOFLTYIO", "oasis wind stress ice x",         "Pa/102"   },
-  { 280, 0, "AOFLWSVO", "oasis wind speed",                "m/s"      },
+static const param_type mpiom1[] = {
+  {   2, -1, 0, "THO",      "temperature",                     "C"        },
+  {   5, -1, 0, "SAO",      "salinity",                        "psu"      },
+  {   3, -1, 0, "UKO",      "zon. velocity",                   "m/s"      },
+  {   4, -1, 0, "VKE",      "mer. velocity",                   "m/s"      },
+  { 303, -1, 0, "UKOMFL",   "zon. velocity (divergence free)", "m/s"      },
+  { 304, -1, 0, "VKEMFL",   "mer. velocity (divergence free)", "m/s"      },
+  {   7, -1, 0, "WO",       "ver. velocity",                   "m/s"      },
+  {   8, -1, 0, "RHO",      "insitu density",                  "kg/m**3"  },
+  {   6, -1, 0, "PO",       "pressure",                        "Pa"       },
+  {  67, -1, 0, "EMINPO",   "freshwaterflux by restoring",     "m/s"      },
+  {  70, -1, 0, "FLUM",     "total heatflux",                  "W/m**2"   },
+  {  79, -1, 0, "PEM",      "total freshwaterflux",            "m/s"      },
+  {  13, -1, 0, "SICTHO",   "ice thickness",                   "m"        },
+  {  15, -1, 0, "SICOMO",   "ice compactness",                 "frac."    },
+  {  35, -1, 0, "SICUO",    "zon. ice velocity",               "m/s"      },
+  {  36, -1, 0, "SICVE",    "mer. ice velocity",               "m/s"      },
+  {  92, -1, 0, "TAFO",     "surface air temperature",         "C"        },
+  { 164, -1, 0, "FCLOU",    "cloud cover",                      NULL      },
+  {  52, -1, 0, "TXO",      "surface u-stress",                "Pa/1025." },
+  {  53, -1, 0, "TYE",      "surface v-stress",                "Pa/1025." },
+  { 260, -1, 0, "FPREC",    "prescr. precipitation",           "m/s"      },
+  {  80, -1, 0, "FSWR",     "downward shortwave rad.",         "W/m**2"   },
+  {  81, -1, 0, "FTDEW",    "dewpoint temperature",            "K"        },
+  { 171, -1, 0, "FU10",     "10m windspeed",                   "m/s"      },
+  { 141, -1, 0, "SICSNO",   "snow thickness",                  "m"        },
+  { 176, -1, 0, "QSWO",     "heat flux shortwave",             "W/m**2"   },
+  { 177, -1, 0, "QLWO",     "heat flux longwave",              "W/m**2"   },
+  { 147, -1, 0, "QLAO",     "heat flux latent",                "W/m**2"   },
+  { 146, -1, 0, "QSEO",     "heat flux sensible",              "W/m**2"   },
+  {  65, -1, 0, "PRECO",    "net freshwater flux + runoff",    "m/s"      },
+  {   1, -1, 0, "ZO",       "sealevel",                        "m"        },
+  {  82, -1, 0, "Z1O",      "sealevel change",                 "m"        },
+  {  69, -1, 0, "KCONDEP",  "depth of convection",             "level"    },
+  {  27, -1, 0, "PSIUWE",   "hor. bar. streamfunction",        "Sv"       },
+  {  83, -1, 0, "AMLD",     "mixed layer depth",               "m"        },
+  { 172, -1, 0, "WETO",     "landseamask (pressure points)",    NULL      },
+  { 507, -1, 0, "AMSUE",    "landseamask (vector points v)",    NULL      },
+  { 508, -1, 0, "AMSUO",    "landseamask (vector points u)",    NULL      },
+  {  84, -1, 0, "DEPTO",    "depth at pressure points",        "m"        },
+  { 484, -1, 0, "DEUTO",    "depth at vector points (u)",      "m"        },
+  { 584, -1, 0, "DEUTE",    "depth at vector points (v)",      "m"        },
+  { 184, -1, 0, "DDUO",     "level thickness (vector u )",     "m"        },
+  { 284, -1, 0, "DDUE",     "level thickness (vector v )",     "m"        },
+  { 384, -1, 0, "DDPO",     "level thickness (pressure )",     "m"        },
+  {  85, -1, 0, "DLXP",     "grid distance x",                 "m"        },
+  {  86, -1, 0, "DLYP",     "grid distance y",                 "m"        },
+  { 185, -1, 0, "DLXU",     "grid distance x  (vector u)",     "m"        },
+  { 186, -1, 0, "DLYU",     "grid distance y  (vector u)",     "m"        },
+  { 285, -1, 0, "DLXV",     "grid distance x  (vector v)",     "m"        },
+  { 286, -1, 0, "DLYV",     "grid distance y  (vector v)",     "m"        },
+  {  54, -1, 0, "GILA",     "latitude in radiants",            "rad"      },
+  {  55, -1, 0, "GIPH",     "longitude in radiants",           "rad"      },
+  { 354, -1, 0, "ALAT",     "latitude in degrees (pressure)",  "deg"      },
+  { 355, -1, 0, "ALON",     "longitude in degrees (pressure)", "deg"      },
+  { 154, -1, 0, "ALATU",    "latitude in degrees (vector u)",  "deg"      },
+  { 155, -1, 0, "ALONU",    "longitude in degrees (vector u)", "deg"      },
+  { 254, -1, 0, "ALATV",    "latitude in degrees (vector v)",  "deg"      },
+  { 255, -1, 0, "ALONV",    "longitude in degrees (vector v)", "deg"      },
+  { 110, -1, 0, "AVO",      "vertical impuls diffusion",       "m**2/s"   },
+  { 111, -1, 0, "DVO",      "vertical T,S diffusion",          "m**2/s"   },
+  { 142, -1, 0, "SICTRU",   "seaice transport x",              "m**2/s"   },
+  { 143, -1, 0, "SICTRV",   "seaice transport y",              "m**2/s"   },
+  { 612, -1, 0, "WTMIX",    "wind mixing",                     "m**2/s"   },
+  { 183, -1, 0, "zmld",     "mixed layer depth (SJ)",          "m"        },
+  { 207, -1, 0, "WGO",      "GM vertical velocity",            "m/s"      },
+  { 305, -1, 0, "rivrun",   "RiverRunoff",                     "m/s"      },
+  { 158, -1, 0, "TMCDO",    "mon. mean depth of convection",   "level"    },
+  { 247, -1, 0, "DQSWO",    "heatflux sw over water",          "W/m**2"   },
+  { 248, -1, 0, "DQLWO",    "heatflux lw over water",          "W/m**2"   },
+  { 249, -1, 0, "DQSEO",    "heatflux se over water",          "W/m**2"   },
+  { 250, -1, 0, "DQLAO",    "heatflux la over water",          "W/m**2"   },
+  { 251, -1, 0, "DQTHO",    "heatflux net over water",         "W/m**2"   },
+  { 252, -1, 0, "DQSWI",    "heatflux sw over seaice",         "W/m**2"   },
+  { 253, -1, 0, "DQLWI",    "heatflux lw over seaice",         "W/m**2"   },
+  { 254, -1, 0, "DQSEI",    "heatflux se over seaice",         "W/m**2"   },
+  { 255, -1, 0, "DQLAI",    "heatflux la over seaice",         "W/m**2"   },
+  { 256, -1, 0, "DQTHI",    "heatflux net over seaice",        "W/m**2"   },
+  { 257, -1, 0, "DTICEO",   "Equi. temp over seaice",          "K"        },
+  { 270, -1, 0, "AOFLNHWO", "oasis net heat flux water",       "W/m**2"   },
+  { 271, -1, 0, "AOFLSHWO", "oasis downward short wave",       "W/m**2"   },
+  { 272, -1, 0, "AOFLRHIO", "oasis residual heat flux ice",    "W/m**2"   },
+  { 273, -1, 0, "AOFLCHIO", "oasis conduct. heat flux ice",    "W/m**2"   },
+  { 274, -1, 0, "AOFLFRWO", "oasis fluid fresh water flux",    "m/s"      },
+  { 275, -1, 0, "AOFLFRIO", "oasis solid fresh water flux",    "m/s"      },
+  { 276, -1, 0, "AOFLTXWO", "oasis wind stress water x",       "Pa/102"   },
+  { 277, -1, 0, "AOFLTYWO", "oasis wind stress water y",       "Pa/102"   },
+  { 278, -1, 0, "AOFLTXIO", "oasis wind stress ice x",         "Pa/102"   },
+  { 279, -1, 0, "AOFLTYIO", "oasis wind stress ice x",         "Pa/102"   },
+  { 280, -1, 0, "AOFLWSVO", "oasis wind speed",                "m/s"      },
 };
 
-static const PAR ecmwf[] = {
-  {   1, 0, "STRF",     "Stream function",                                            "m**2 s**-1"            },
-  {   2, 0, "VPOT",     "Velocity potential",                                         "m**2 s**-1"            },
-  {   3, 0, "PT",       "Potential temperature",                                      "K"                     },
-  {   4, 0, "EQPT",     "Equivalent potential temperature",                           "K"                     },
-  {   5, 0, "SEPT",     "Saturated equivalent potential temperature",                 "K"                     },
-  {  11, 0, "UDVW",     "U component of divergent wind",                              "m s**-1"               },
-  {  12, 0, "VDVW",     "V component of divergent wind",                              "m s**-1"               },
-  {  13, 0, "URTW",     "U component of rotational wind",                             "m s**-1"               },
-  {  14, 0, "VRTW",     "V component of rotational wind",                             "m s**-1"               },
-  {  21, 0, "UCTP",     "Unbalanced component of temperature",                        "K"                     },
-  {  22, 0, "UCLN",     "Unbalanced component of logarithm of surface pressure",       NULL                   },
-  {  23, 0, "UCDV",     "Unbalanced component of divergence",                         "s**-1"                 },
-  {  26, 0, "CL",       "Lake cover",                                                  NULL                   },
-  {  27, 0, "CVL",      "Low vegetation cover",                                        NULL                   },
-  {  28, 0, "CVH",      "High vegetation cover",                                       NULL                   },
-  {  29, 0, "TVL",      "Type of low vegetation",                                      NULL                   },
-  {  30, 0, "TVH",      "Type of high vegetation",                                     NULL                   },
-  {  31, 0, "CI",       "Sea-ice cover",                                               NULL                   },
-  {  32, 0, "ASN",      "Snow albedo",                                                 NULL                   },
-  {  33, 0, "RSN",      "Snow density kg",                                            "m**-3"                 },
-  {  34, 0, "SSTK",     "Sea surface temperature",                                    "K"                     },
-  {  35, 0, "ISTL1",    "Ice surface temperature layer 1",                            "K"                     },
-  {  36, 0, "ISTL2",    "Ice surface temperature layer 2",                            "K"                     },
-  {  37, 0, "ISTL3",    "Ice surface temperature layer 3",                            "K"                     },
-  {  38, 0, "ISTL4",    "Ice surface temperature layer 4",                            "K"                     },
-  {  39, 0, "SWVL1",    "Volumetric soil water layer 1",                              "m**3 m**-3"            },
-  {  40, 0, "SWVL2",    "Volumetric soil water layer 2",                              "m**3 m**-3"            },
-  {  41, 0, "SWVL3",    "Volumetric soil water layer 3",                              "m**3 m**-3"            },
-  {  42, 0, "SWVL4",    "Volumetric soil water layer 4",                              "m**3 m**-3"            },
-  {  43, 0, "SLT",      "Soil type",                                                   NULL                   },
-  {  44, 0, "ES",       "Snow evaporation m of water",                                 NULL                   },
-  {  45, 0, "SMLT",     "Snowmelt m of water",                                         NULL                   },
-  {  46, 0, "SDUR",     "Solar duration",                                             "s"                     },
-  {  47, 0, "DSRP",     "Direct solar radiation",                                     "w m**-2"               },
-  {  48, 0, "MAGSS",    "Magnitude of surface stress",                                "N m**-2 s"             },
-  {  49, 0, "WG10",     "Wind gust at 10 metres",                                     "m s**-1"               },
-  {  50, 0, "LSPF",     "Large-scale precipitation fraction",                         "s"                     },
-  {  51, 0, "MX2T24",   "Maximum 2 metre temperature",                                "K"                     },
-  {  52, 0, "MN2T24",   "Minimum 2 metre temperature",                                "K"                     },
-  {  53, 0, "MONT",     "Montgomery potential",                                       "m**2 s**-2"            },
-  {  54, 0, "PRES",     "Pressure",                                                   "Pa"                    },
-  {  55, 0, "MEAN2T24", "Mean 2 metre temperature past 24 hours",                     "K"                     },
-  {  56, 0, "MEAN2D24", "Mean 2 metre dewpoint temperature past 24 hours",            "K"                     },
-  {  60, 0, "PV",       "Potential vorticity",                                        "K m**2 kg**-1 s**-1"   },
-  { 127, 0, "AT",       "Atmospheric tide",                                            NULL                   },
-  { 128, 0, "BV",       "Budget values",                                               NULL                   },
-  { 129, 0, "Z",        "Geopotential",                                               "m**2 s**-2"            },
-  { 130, 0, "T",        "Temperature",                                                "K"                     },
-  { 131, 0, "U",        "U velocity",                                                 "m s**-1"               },
-  { 132, 0, "V",        "V velocity",                                                 "m s**-1"               },
-  { 133, 0, "Q",        "Specific humidity",                                          "kg kg**-1"             },
-  { 134, 0, "SP",       "Surface pressure",                                           "Pa"                    },
-  { 135, 0, "W",        "Vertical velocity",                                          "Pa s**-1"              },
-  { 136, 0, "TCW",      "Total column water",                                         "kg m**-2"              },
-  { 137, 0, "TCWV",     "Total column water vapour",                                  "kg m**-2"              },
-  { 138, 0, "VO",       "Vorticity (relative)",                                       "s**-1"                 },
-  { 139, 0, "STL1",     "Soil temperature level 1",                                   "K"                     },
-  { 140, 0, "SWL1",     "Soil wetness level 1 m of water",                             NULL                   },
-  { 141, 0, "SD",       "Snow depth         1 m of water equivalent",                  NULL                   },
-  { 142, 0, "LSP",      "Stratiform precipitation (Large scale precipitation)",       "m"                     },
-  { 143, 0, "CP",       "Convective precipitation",                                   "m"                     },
-  { 144, 0, "SF",       "Snowfall (convective + stratiform)",                         "m"                     },
-  { 145, 0, "BLD",      "Boundary layer dissipation",                                 "W m**-2 s"             },
-  { 146, 0, "SSHF",     "Surface sensible heat flux",                                 "W m**-2 s"             },
-  { 147, 0, "SLHF",     "Surface latent heat flux",                                   "W m**-2 s"             },
-  { 148, 0, "CHNK",     "Charnock",                                                    NULL                   },
-  { 149, 0, "SNR",      "Surface net radiation",                                      "W m**-2 s"             },
-  { 150, 0, "TNR",      "Top net radiation",                                           NULL                   },
-  { 151, 0, "MSL",      "Mean sea-level pressure",                                    "Pa"                    },
-  { 152, 0, "LNSP",     "Logarithm of surface pressure",                               NULL                   },
-  { 153, 0, "SWHR",     "Short-wave heating rate",                                    "K"                     },
-  { 154, 0, "LWHR",     "Long-wave heating rate",                                     "K"                     },
-  { 155, 0, "D",        "Divergence",                                                 "s**-1"                 },
-  { 156, 0, "GH",       "Height m Geopotential height",                                NULL                   },
-  { 157, 0, "R",        "Relative humidity",                                          "%"                     },
-  { 158, 0, "TSP",      "Tendency of surface pressure",                               "Pa s**-1"              },
-  { 159, 0, "BLH",      "Boundary layer height",                                      "m"                     },
-  { 160, 0, "SDOR",     "Standard deviation of orography",                             NULL                   },
-  { 161, 0, "ISOR",     "Anisotropy of sub-gridscale orography",                       NULL                   },
-  { 162, 0, "ANOR",     "Angle of sub-gridscale orography",                           "rad"                   },
-  { 163, 0, "SLOR",     "Slope of sub-gridscale orography",                            NULL                   },
-  { 164, 0, "TCC",      "Total cloud cover",                                           NULL                   },
-  { 165, 0, "U10M",     "10 metre U wind component",                                  "m s**-1"               },
-  { 166, 0, "V10M",     "10 metre V wind component",                                  "m s**-1"               },
-  { 167, 0, "T2M",      "2 metre temperature",                                        "K"                     },
-  { 168, 0, "D2M",      "2 metre dewpoint temperature",                               "K"                     },
-  { 169, 0, "SSRD",     "Surface solar radiation downwards",                          "W m**-2 s"             },
-  { 170, 0, "STL2",     "Soil temperature level 2",                                   "K"                     },
-  { 171, 0, "SWL2",     "Soil wetness level 2",                                       "m of water"            },
-  { 172, 0, "LSM",      "Land/sea mask",                                               NULL                   },
-  { 173, 0, "SR",       "Surface roughness",                                          "m"                     },
-  { 174, 0, "AL",       "Albedo",                                                      NULL                   },
-  { 175, 0, "STRD",     "Surface thermal radiation downwards",                        "W m**-2 s"             },
-  { 176, 0, "SSR",      "Surface solar radiation",                                    "W m**-2 s"             },
-  { 177, 0, "STR",      "Surface thermal radiation",                                  "W m**-2 s"             },
-  { 178, 0, "TSR",      "Top solar radiation",                                        "W m**-2 s"             },
-  { 179, 0, "TTR",      "Top thermal radiation",                                      "W m**-2 s"             },
-  { 180, 0, "EWSS",     "East/West surface stress",                                   "N m**-2 s"             },
-  { 181, 0, "NSSS",     "North/South surface stress",                                 "N m**-2 s"             },
-  { 182, 0, "E",        "Evaporation",                                                "m of water"            },
-  { 183, 0, "STL3",     "Soil temperature level 3",                                   "K"                     },
-  { 184, 0, "SWL3",     "Soil wetness level 3",                                       "m of water"            },
-  { 185, 0, "CCC",      "Convective cloud cover",                                      NULL                   },
-  { 186, 0, "LCC",      "Low cloud cover",                                             NULL                   },
-  { 187, 0, "MCC",      "Medium cloud cover",                                          NULL                   },
-  { 188, 0, "HCC",      "High cloud cover",                                            NULL                   },
-  { 189, 0, "SUND",     "Sunshine duration",                                          "s"                     },
-  { 190, 0, "EWOV",     "EW component of subgrid orographic variance",                "m**2"                  },
-  { 191, 0, "NSOV",     "NS component of subgrid orographic variance",                "m**2"                  },
-  { 192, 0, "NWOV",     "NWSE component of subgrid orographic variance",              "m**2"                  },
-  { 193, 0, "NEOV",     "NESW component of subgrid orographic variance",              "m**2"                  },
-  { 194, 0, "BTMP",     "Brightness temperature",                                     "K"                     },
-  { 195, 0, "LGWS",     "Lat. component of gravity wave stress",                      "N m**-2 s"             },
-  { 196, 0, "MGWS",     "Meridional component of gravity wave stress",                "N m**-2 s"             },
-  { 197, 0, "GWD",      "Gravity wave dissipation",                                   "W m**-2 s"             },
-  { 198, 0, "SRC",      "Skin reservoir content",                                     "m of water"            },
-  { 199, 0, "VEG",      "Vegetation fraction",                                         NULL                   },
-  { 200, 0, "VSO",      "Variance of sub-gridscale orography",                        "m**2"                  },
-  { 201, 0, "MX2T",     "Maximum 2 metre temperature since previous post-processing", "K"                     },
-  { 202, 0, "MN2T",     "Minimum 2 metre temperature since previous post-processing", "K"                     },
-  { 203, 0, "O3",       "Ozone mass mixing ratio",                                    "kg kg**-1"             },
-  { 204, 0, "PAW",      "Precipiation analysis weights",                               NULL                   },
-  { 205, 0, "RO",       "Runoff",                                                     "m"                     },
-  { 206, 0, "TCO3",     "Total column ozone",                                         "kg m**-2"              },
-  { 207, 0, "WS10",     "10 meter windspeed",                                         "m s**-1"               },
-  { 208, 0, "TSRC",     "Top net solar radiation, clear sky",                         "W m**-2"               },
-  { 209, 0, "TTRC",     "Top net thermal radiation, clear sky",                       "W m**-2"               },
-  { 210, 0, "SSRC",     "Surface net solar radiation, clear sky",                     "W m**-2"               },
-  { 211, 0, "STRC",     "Surface net thermal radiation, clear sky",                   "W m**-2"               },
-  { 212, 0, "SI",       "Solar insolation",                                           "W m**-2"               },
-  { 214, 0, "DHR",      "Diabatic heating by radiation",                              "K"                     },
-  { 215, 0, "DHVD",     "Diabatic heating by vertical diffusion",                     "K"                     },
-  { 216, 0, "DHCC",     "Diabatic heating by cumulus convection",                     "K"                     },
-  { 217, 0, "DHLC",     "Diabatic heating large-scale condensation",                  "K"                     },
-  { 218, 0, "VDZW",     "Vertical diffusion of zonal wind",                           "m s**-1"               },
-  { 219, 0, "VDMW",     "Vertical diffusion of meridional wind",                      "m s**-1"               },
-  { 220, 0, "EWGD",     "EW gravity wave drag tendency",                              "m s**-1"               },
-  { 221, 0, "NSGD",     "NS gravity wave drag tendency",                              "m s**-1"               },
-  { 222, 0, "CTZW",     "Convective tendency of zonal wind",                          "m s**-1"               },
-  { 223, 0, "CTMW",     "Convective tendency of meridional wind",                     "m s**-1"               },
-  { 224, 0, "VDH",      "Vertical diffusion of humidity",                             "kg kg**-1"             },
-  { 225, 0, "HTCC",     "Humidity tendency by cumulus convection",                    "kg kg**-1"             },
-  { 226, 0, "HTLC",     "Humidity tendency large-scale condensation",                 "kg kg**-1"             },
-  { 227, 0, "CRNH",     "Change from removing negative humidity",                     "kg kg**-1"             },
-  { 228, 0, "TP",       "Total precipitation",                                        "m"                     },
-  { 229, 0, "IEWS",     "Instantaneous X surface stress",                             "N m**-2"               },
-  { 230, 0, "INSS",     "Instantaneous Y surface stress",                             "N m**-2"               },
-  { 231, 0, "ISHF",     "Instantaneous surface heat flux",                            "W m**-2"               },
-  { 232, 0, "IE",       "Instantaneous moisture flux",                                "kg m**-2 s"            },
-  { 233, 0, "ASQ",      "Apparent surface humidity",                                  "kg kg**-1"             },
-  { 234, 0, "LSRH",     "Logarithm of surface roughness length for heat",              NULL                   },
-  { 235, 0, "SKT",      "Skin temperature",                                           "K"                     },
-  { 236, 0, "STL4",     "Soil temperature level 4",                                   "K"                     },
-  { 237, 0, "SWL4",     "Soil wetness level 4",                                       "m"                     },
-  { 238, 0, "TSN",      "Temperature of snow layer",                                  "K"                     },
-  { 239, 0, "CSF",      "Convective snowfall",                                        "m of water equivalent" },
-  { 240, 0, "LSF",      "Large-scale snowfall",                                       "m of water equivalent" },
-  { 241, 0, "ACF",      "Accumulated cloud fraction tendency",                         NULL                   },
-  { 242, 0, "ALW",      "Accumulated liquid water tendency",                           NULL                   },
-  { 243, 0, "FAL",      "Forecast albedo",                                             NULL                   },
-  { 244, 0, "FSR",      "Forecast surface roughness",                                 "m"                     },
-  { 245, 0, "FLSR",     "Forecast log of surface roughness for heat",                  NULL                   },
-  { 246, 0, "CLWC",     "Cloud liquid water content",                                 "kg kg**-1"             },
-  { 247, 0, "CIWC",     "Cloud ice water content",                                    "kg kg**-1"             },
-  { 248, 0, "CC",       "Cloud cover",                                                 NULL                   },
-  { 249, 0, "AIW",      "Accumulated ice water tendency",                              NULL                   },
-  { 250, 0, "ICE",      "Ice age",                                                     NULL                   },
-  { 251, 0, "ATTE",     "Adiabatic tendency of temperature",                          "K"                     },
-  { 252, 0, "ATHE",     "Adiabatic tendency of humidity",                             "kg kg**-1"             },
-  { 253, 0, "ATZE",     "Adiabatic tendency of zonal wind",                           "m s**-1"               },
-  { 254, 0, "ATMW",     "Adiabatic tendency of meridional wind",                      "m s**-1"               },
+static const param_type ecmwf[] = {
+  {   1, -1, 0, "STRF",     "Stream function",                                            "m**2 s**-1"            },
+  {   2, -1, 0, "VPOT",     "Velocity potential",                                         "m**2 s**-1"            },
+  {   3, -1, 0, "PT",       "Potential temperature",                                      "K"                     },
+  {   4, -1, 0, "EQPT",     "Equivalent potential temperature",                           "K"                     },
+  {   5, -1, 0, "SEPT",     "Saturated equivalent potential temperature",                 "K"                     },
+  {  11, -1, 0, "UDVW",     "U component of divergent wind",                              "m s**-1"               },
+  {  12, -1, 0, "VDVW",     "V component of divergent wind",                              "m s**-1"               },
+  {  13, -1, 0, "URTW",     "U component of rotational wind",                             "m s**-1"               },
+  {  14, -1, 0, "VRTW",     "V component of rotational wind",                             "m s**-1"               },
+  {  21, -1, 0, "UCTP",     "Unbalanced component of temperature",                        "K"                     },
+  {  22, -1, 0, "UCLN",     "Unbalanced component of logarithm of surface pressure",       NULL                   },
+  {  23, -1, 0, "UCDV",     "Unbalanced component of divergence",                         "s**-1"                 },
+  {  26, -1, 0, "CL",       "Lake cover",                                                  NULL                   },
+  {  27, -1, 0, "CVL",      "Low vegetation cover",                                        NULL                   },
+  {  28, -1, 0, "CVH",      "High vegetation cover",                                       NULL                   },
+  {  29, -1, 0, "TVL",      "Type of low vegetation",                                      NULL                   },
+  {  30, -1, 0, "TVH",      "Type of high vegetation",                                     NULL                   },
+  {  31, -1, 0, "CI",       "Sea-ice cover",                                               NULL                   },
+  {  32, -1, 0, "ASN",      "Snow albedo",                                                 NULL                   },
+  {  33, -1, 0, "RSN",      "Snow density kg",                                            "m**-3"                 },
+  {  34, -1, 0, "SSTK",     "Sea surface temperature",                                    "K"                     },
+  {  35, -1, 0, "ISTL1",    "Ice surface temperature layer 1",                            "K"                     },
+  {  36, -1, 0, "ISTL2",    "Ice surface temperature layer 2",                            "K"                     },
+  {  37, -1, 0, "ISTL3",    "Ice surface temperature layer 3",                            "K"                     },
+  {  38, -1, 0, "ISTL4",    "Ice surface temperature layer 4",                            "K"                     },
+  {  39, -1, 0, "SWVL1",    "Volumetric soil water layer 1",                              "m**3 m**-3"            },
+  {  40, -1, 0, "SWVL2",    "Volumetric soil water layer 2",                              "m**3 m**-3"            },
+  {  41, -1, 0, "SWVL3",    "Volumetric soil water layer 3",                              "m**3 m**-3"            },
+  {  42, -1, 0, "SWVL4",    "Volumetric soil water layer 4",                              "m**3 m**-3"            },
+  {  43, -1, 0, "SLT",      "Soil type",                                                   NULL                   },
+  {  44, -1, 0, "ES",       "Snow evaporation m of water",                                 NULL                   },
+  {  45, -1, 0, "SMLT",     "Snowmelt m of water",                                         NULL                   },
+  {  46, -1, 0, "SDUR",     "Solar duration",                                             "s"                     },
+  {  47, -1, 0, "DSRP",     "Direct solar radiation",                                     "w m**-2"               },
+  {  48, -1, 0, "MAGSS",    "Magnitude of surface stress",                                "N m**-2 s"             },
+  {  49, -1, 0, "WG10",     "Wind gust at 10 metres",                                     "m s**-1"               },
+  {  50, -1, 0, "LSPF",     "Large-scale precipitation fraction",                         "s"                     },
+  {  51, -1, 0, "MX2T24",   "Maximum 2 metre temperature",                                "K"                     },
+  {  52, -1, 0, "MN2T24",   "Minimum 2 metre temperature",                                "K"                     },
+  {  53, -1, 0, "MONT",     "Montgomery potential",                                       "m**2 s**-2"            },
+  {  54, -1, 0, "PRES",     "Pressure",                                                   "Pa"                    },
+  {  55, -1, 0, "MEAN2T24", "Mean 2 metre temperature past 24 hours",                     "K"                     },
+  {  56, -1, 0, "MEAN2D24", "Mean 2 metre dewpoint temperature past 24 hours",            "K"                     },
+  {  60, -1, 0, "PV",       "Potential vorticity",                                        "K m**2 kg**-1 s**-1"   },
+  { 127, -1, 0, "AT",       "Atmospheric tide",                                            NULL                   },
+  { 128, -1, 0, "BV",       "Budget values",                                               NULL                   },
+  { 129, -1, 0, "Z",        "Geopotential",                                               "m**2 s**-2"            },
+  { 130, -1, 0, "T",        "Temperature",                                                "K"                     },
+  { 131, -1, 0, "U",        "U velocity",                                                 "m s**-1"               },
+  { 132, -1, 0, "V",        "V velocity",                                                 "m s**-1"               },
+  { 133, -1, 0, "Q",        "Specific humidity",                                          "kg kg**-1"             },
+  { 134, -1, 0, "SP",       "Surface pressure",                                           "Pa"                    },
+  { 135, -1, 0, "W",        "Vertical velocity",                                          "Pa s**-1"              },
+  { 136, -1, 0, "TCW",      "Total column water",                                         "kg m**-2"              },
+  { 137, -1, 0, "TCWV",     "Total column water vapour",                                  "kg m**-2"              },
+  { 138, -1, 0, "VO",       "Vorticity (relative)",                                       "s**-1"                 },
+  { 139, -1, 0, "STL1",     "Soil temperature level 1",                                   "K"                     },
+  { 140, -1, 0, "SWL1",     "Soil wetness level 1 m of water",                             NULL                   },
+  { 141, -1, 0, "SD",       "Snow depth         1 m of water equivalent",                  NULL                   },
+  { 142, -1, 0, "LSP",      "Stratiform precipitation (Large scale precipitation)",       "m"                     },
+  { 143, -1, 0, "CP",       "Convective precipitation",                                   "m"                     },
+  { 144, -1, 0, "SF",       "Snowfall (convective + stratiform)",                         "m"                     },
+  { 145, -1, 0, "BLD",      "Boundary layer dissipation",                                 "W m**-2 s"             },
+  { 146, -1, 0, "SSHF",     "Surface sensible heat flux",                                 "W m**-2 s"             },
+  { 147, -1, 0, "SLHF",     "Surface latent heat flux",                                   "W m**-2 s"             },
+  { 148, -1, 0, "CHNK",     "Charnock",                                                    NULL                   },
+  { 149, -1, 0, "SNR",      "Surface net radiation",                                      "W m**-2 s"             },
+  { 150, -1, 0, "TNR",      "Top net radiation",                                           NULL                   },
+  { 151, -1, 0, "MSL",      "Mean sea-level pressure",                                    "Pa"                    },
+  { 152, -1, 0, "LNSP",     "Logarithm of surface pressure",                               NULL                   },
+  { 153, -1, 0, "SWHR",     "Short-wave heating rate",                                    "K"                     },
+  { 154, -1, 0, "LWHR",     "Long-wave heating rate",                                     "K"                     },
+  { 155, -1, 0, "D",        "Divergence",                                                 "s**-1"                 },
+  { 156, -1, 0, "GH",       "Height m Geopotential height",                                NULL                   },
+  { 157, -1, 0, "R",        "Relative humidity",                                          "%"                     },
+  { 158, -1, 0, "TSP",      "Tendency of surface pressure",                               "Pa s**-1"              },
+  { 159, -1, 0, "BLH",      "Boundary layer height",                                      "m"                     },
+  { 160, -1, 0, "SDOR",     "Standard deviation of orography",                             NULL                   },
+  { 161, -1, 0, "ISOR",     "Anisotropy of sub-gridscale orography",                       NULL                   },
+  { 162, -1, 0, "ANOR",     "Angle of sub-gridscale orography",                           "rad"                   },
+  { 163, -1, 0, "SLOR",     "Slope of sub-gridscale orography",                            NULL                   },
+  { 164, -1, 0, "TCC",      "Total cloud cover",                                           NULL                   },
+  { 165, -1, 0, "U10M",     "10 metre U wind component",                                  "m s**-1"               },
+  { 166, -1, 0, "V10M",     "10 metre V wind component",                                  "m s**-1"               },
+  { 167, -1, 0, "T2M",      "2 metre temperature",                                        "K"                     },
+  { 168, -1, 0, "D2M",      "2 metre dewpoint temperature",                               "K"                     },
+  { 169, -1, 0, "SSRD",     "Surface solar radiation downwards",                          "W m**-2 s"             },
+  { 170, -1, 0, "STL2",     "Soil temperature level 2",                                   "K"                     },
+  { 171, -1, 0, "SWL2",     "Soil wetness level 2",                                       "m of water"            },
+  { 172, -1, 0, "LSM",      "Land/sea mask",                                               NULL                   },
+  { 173, -1, 0, "SR",       "Surface roughness",                                          "m"                     },
+  { 174, -1, 0, "AL",       "Albedo",                                                      NULL                   },
+  { 175, -1, 0, "STRD",     "Surface thermal radiation downwards",                        "W m**-2 s"             },
+  { 176, -1, 0, "SSR",      "Surface solar radiation",                                    "W m**-2 s"             },
+  { 177, -1, 0, "STR",      "Surface thermal radiation",                                  "W m**-2 s"             },
+  { 178, -1, 0, "TSR",      "Top solar radiation",                                        "W m**-2 s"             },
+  { 179, -1, 0, "TTR",      "Top thermal radiation",                                      "W m**-2 s"             },
+  { 180, -1, 0, "EWSS",     "East/West surface stress",                                   "N m**-2 s"             },
+  { 181, -1, 0, "NSSS",     "North/South surface stress",                                 "N m**-2 s"             },
+  { 182, -1, 0, "E",        "Evaporation",                                                "m of water"            },
+  { 183, -1, 0, "STL3",     "Soil temperature level 3",                                   "K"                     },
+  { 184, -1, 0, "SWL3",     "Soil wetness level 3",                                       "m of water"            },
+  { 185, -1, 0, "CCC",      "Convective cloud cover",                                      NULL                   },
+  { 186, -1, 0, "LCC",      "Low cloud cover",                                             NULL                   },
+  { 187, -1, 0, "MCC",      "Medium cloud cover",                                          NULL                   },
+  { 188, -1, 0, "HCC",      "High cloud cover",                                            NULL                   },
+  { 189, -1, 0, "SUND",     "Sunshine duration",                                          "s"                     },
+  { 190, -1, 0, "EWOV",     "EW component of subgrid orographic variance",                "m**2"                  },
+  { 191, -1, 0, "NSOV",     "NS component of subgrid orographic variance",                "m**2"                  },
+  { 192, -1, 0, "NWOV",     "NWSE component of subgrid orographic variance",              "m**2"                  },
+  { 193, -1, 0, "NEOV",     "NESW component of subgrid orographic variance",              "m**2"                  },
+  { 194, -1, 0, "BTMP",     "Brightness temperature",                                     "K"                     },
+  { 195, -1, 0, "LGWS",     "Lat. component of gravity wave stress",                      "N m**-2 s"             },
+  { 196, -1, 0, "MGWS",     "Meridional component of gravity wave stress",                "N m**-2 s"             },
+  { 197, -1, 0, "GWD",      "Gravity wave dissipation",                                   "W m**-2 s"             },
+  { 198, -1, 0, "SRC",      "Skin reservoir content",                                     "m of water"            },
+  { 199, -1, 0, "VEG",      "Vegetation fraction",                                         NULL                   },
+  { 200, -1, 0, "VSO",      "Variance of sub-gridscale orography",                        "m**2"                  },
+  { 201, -1, 0, "MX2T",     "Maximum 2 metre temperature since previous post-processing", "K"                     },
+  { 202, -1, 0, "MN2T",     "Minimum 2 metre temperature since previous post-processing", "K"                     },
+  { 203, -1, 0, "O3",       "Ozone mass mixing ratio",                                    "kg kg**-1"             },
+  { 204, -1, 0, "PAW",      "Precipiation analysis weights",                               NULL                   },
+  { 205, -1, 0, "RO",       "Runoff",                                                     "m"                     },
+  { 206, -1, 0, "TCO3",     "Total column ozone",                                         "kg m**-2"              },
+  { 207, -1, 0, "WS10",     "10 meter windspeed",                                         "m s**-1"               },
+  { 208, -1, 0, "TSRC",     "Top net solar radiation, clear sky",                         "W m**-2"               },
+  { 209, -1, 0, "TTRC",     "Top net thermal radiation, clear sky",                       "W m**-2"               },
+  { 210, -1, 0, "SSRC",     "Surface net solar radiation, clear sky",                     "W m**-2"               },
+  { 211, -1, 0, "STRC",     "Surface net thermal radiation, clear sky",                   "W m**-2"               },
+  { 212, -1, 0, "SI",       "Solar insolation",                                           "W m**-2"               },
+  { 214, -1, 0, "DHR",      "Diabatic heating by radiation",                              "K"                     },
+  { 215, -1, 0, "DHVD",     "Diabatic heating by vertical diffusion",                     "K"                     },
+  { 216, -1, 0, "DHCC",     "Diabatic heating by cumulus convection",                     "K"                     },
+  { 217, -1, 0, "DHLC",     "Diabatic heating large-scale condensation",                  "K"                     },
+  { 218, -1, 0, "VDZW",     "Vertical diffusion of zonal wind",                           "m s**-1"               },
+  { 219, -1, 0, "VDMW",     "Vertical diffusion of meridional wind",                      "m s**-1"               },
+  { 220, -1, 0, "EWGD",     "EW gravity wave drag tendency",                              "m s**-1"               },
+  { 221, -1, 0, "NSGD",     "NS gravity wave drag tendency",                              "m s**-1"               },
+  { 222, -1, 0, "CTZW",     "Convective tendency of zonal wind",                          "m s**-1"               },
+  { 223, -1, 0, "CTMW",     "Convective tendency of meridional wind",                     "m s**-1"               },
+  { 224, -1, 0, "VDH",      "Vertical diffusion of humidity",                             "kg kg**-1"             },
+  { 225, -1, 0, "HTCC",     "Humidity tendency by cumulus convection",                    "kg kg**-1"             },
+  { 226, -1, 0, "HTLC",     "Humidity tendency large-scale condensation",                 "kg kg**-1"             },
+  { 227, -1, 0, "CRNH",     "Change from removing negative humidity",                     "kg kg**-1"             },
+  { 228, -1, 0, "TP",       "Total precipitation",                                        "m"                     },
+  { 229, -1, 0, "IEWS",     "Instantaneous X surface stress",                             "N m**-2"               },
+  { 230, -1, 0, "INSS",     "Instantaneous Y surface stress",                             "N m**-2"               },
+  { 231, -1, 0, "ISHF",     "Instantaneous surface heat flux",                            "W m**-2"               },
+  { 232, -1, 0, "IE",       "Instantaneous moisture flux",                                "kg m**-2 s"            },
+  { 233, -1, 0, "ASQ",      "Apparent surface humidity",                                  "kg kg**-1"             },
+  { 234, -1, 0, "LSRH",     "Logarithm of surface roughness length for heat",              NULL                   },
+  { 235, -1, 0, "SKT",      "Skin temperature",                                           "K"                     },
+  { 236, -1, 0, "STL4",     "Soil temperature level 4",                                   "K"                     },
+  { 237, -1, 0, "SWL4",     "Soil wetness level 4",                                       "m"                     },
+  { 238, -1, 0, "TSN",      "Temperature of snow layer",                                  "K"                     },
+  { 239, -1, 0, "CSF",      "Convective snowfall",                                        "m of water equivalent" },
+  { 240, -1, 0, "LSF",      "Large-scale snowfall",                                       "m of water equivalent" },
+  { 241, -1, 0, "ACF",      "Accumulated cloud fraction tendency",                         NULL                   },
+  { 242, -1, 0, "ALW",      "Accumulated liquid water tendency",                           NULL                   },
+  { 243, -1, 0, "FAL",      "Forecast albedo",                                             NULL                   },
+  { 244, -1, 0, "FSR",      "Forecast surface roughness",                                 "m"                     },
+  { 245, -1, 0, "FLSR",     "Forecast log of surface roughness for heat",                  NULL                   },
+  { 246, -1, 0, "CLWC",     "Cloud liquid water content",                                 "kg kg**-1"             },
+  { 247, -1, 0, "CIWC",     "Cloud ice water content",                                    "kg kg**-1"             },
+  { 248, -1, 0, "CC",       "Cloud cover",                                                 NULL                   },
+  { 249, -1, 0, "AIW",      "Accumulated ice water tendency",                              NULL                   },
+  { 250, -1, 0, "ICE",      "Ice age",                                                     NULL                   },
+  { 251, -1, 0, "ATTE",     "Adiabatic tendency of temperature",                          "K"                     },
+  { 252, -1, 0, "ATHE",     "Adiabatic tendency of humidity",                             "kg kg**-1"             },
+  { 253, -1, 0, "ATZE",     "Adiabatic tendency of zonal wind",                           "m s**-1"               },
+  { 254, -1, 0, "ATMW",     "Adiabatic tendency of meridional wind",                      "m s**-1"               },
 };
 
-static const PAR remo[] = {
-  {  14, 0, "FTKVM",     "turbulent transfer coefficient of momentum in the atmosphere",   NULL           },
-  {  15, 0, "FTKVH",     "turbulent transfer coefficient of heat in the atmosphere",       NULL           },
-  {  38, 0, "U10ER",     "10m u-velocity",                                                "m/s"           },
-  {  39, 0, "V10ER",     "10m v-velocity",                                                "m/s"           },
-  {  40, 0, "CAPE",      "convetive available potential energy",                           NULL           },
-  {  41, 0, "GHPBL",     "height of the planetary boudary layer",                         "gpm"           },
-  {  42, 0, "BETA",      "BETA",                                                           NULL           },
-  {  43, 0, "WMINLOK",   "WMINLOK",                                                        NULL           },
-  {  44, 0, "WMAXLOK",   "WMAXLOK",                                                        NULL           },
-  {  45, 0, "VBM10M",    "maximum of the expected gust velocity near the surface",        "m/s"           },
-  {  46, 0, "BFLHS",     "surface sensible heat flux",                                    "W/m**2"        },
-  {  47, 0, "BFLQDS",    "surface latent heat flux",                                      "W/m**2"        },
-  {  48, 0, "TMCM",      "turbulent transfer coefficient of momentum at the surface",      NULL           },
-  {  49, 0, "TRSOL",     "TRSOL",                                                          NULL           },
-  {  50, 0, "TMCH",      "turbulent transfer coefficient of heat at the surface",          NULL           },
-  {  51, 0, "EMTEF",     "EMTEF",                                                          NULL           },
-  {  52, 0, "TRSOF",     "TRSOF",                                                          NULL           },
-  {  53, 0, "DRAIN",     "drainage",                                                      "mm"            },
-  {  54, 0, "TSL",       "surface temperature (land)",                                    "K"             },
-  {  55, 0, "TSW",       "surface temperature (water)",                                   "K"             },
-  {  56, 0, "TSI",       "surface temperature (ice)",                                     "K"             },
-  {  57, 0, "USTRL",     "surface u-stress (land)",                                       "Pa"            },
-  {  58, 0, "USTRW",     "surface u-stress (water)",                                      "Pa"            },
-  {  59, 0, "USTRI",     "surface u-stress (ice)",                                        "Pa"            },
-  {  60, 0, "VSTRL",     "surface v-stress (land)",                                       "Pa"            },
-  {  61, 0, "VSTRW",     "surface v-stress (water)",                                      "Pa"            },
-  {  62, 0, "VSTRI",     "surface v-stress (ice)",                                        "Pa"            },
-  {  63, 0, "EVAPL",     "surface evaporation (land)",                                    "mm"            },
-  {  64, 0, "EVAPW",     "surface evaporation (water)",                                   "mm"            },
-  {  65, 0, "EVAPI",     "surface evaporation (ice)",                                     "mm"            },
-  {  66, 0, "AHFLL",     "surface latent heat flux (land)",                               "W/m**2"        },
-  {  67, 0, "AHFLW",     "surface latent heat flux (water)",                              "W/m**2"        },
-  {  68, 0, "AHFLI",     "surface latent heat flux (ice)",                                "W/m**2"        },
-  {  69, 0, "AHFSL",     "surface sensible heat flux (land)",                             "W/m**2"        },
-  {  70, 0, "AHFSW",     "surface sensible heat flux (water)",                            "W/m**2"        },
-  {  71, 0, "AHFSI",     "surface sensible heat flux (ice)",                              "W/m**2"        },
-  {  72, 0, "AZ0L",      "surface roughness length (land)",                               "m"             },
-  {  73, 0, "AZ0W",      "surface roughness length (water)",                              "m"             },
-  {  74, 0, "AZ0I",      "surface roughness length (ice)",                                "m"             },
-  {  75, 0, "ALSOL",     "surface albedo (land)",                                         "fract."        },
-  {  76, 0, "ALSOW",     "surface albedo (water)",                                        "fract."        },
-  {  77, 0, "ALSOI",     "surface albedo (ice)",                                          "fract."        },
-  {  81, 0, "TMCHL",     "turbulent transfer coefficient of heat at the surface (land)",   NULL           },
-  {  82, 0, "TMCHW",     "turbulent transfer coefficient of heat at the surface (water)",  NULL           },
-  {  83, 0, "TMCHI",     "turbulent transfer coefficient of heat at the surface (ice)",    NULL           },
-  {  84, 0, "QDBL",      "specific humidity surface (land)",                              "kg/kg"         },
-  {  85, 0, "QDBW",      "specific humidity surface (water)",                             "kg/kg"         },
-  {  86, 0, "QDBI",      "specific humidity surface (ice)",                               "kg/kg"         },
-  {  87, 0, "BFLHSL",    "surface sensible heat flux (land)",                             "W/m**2"        },
-  {  88, 0, "BFLHSW",    "surface sensible heat flux (water)",                            "W/m**2"        },
-  {  89, 0, "BFLHSI",    "surface sensible heat flux (ice)",                              "W/m**2"        },
-  {  90, 0, "BFLQDSL",   "surface latent heat flux (land)",                               "W/m**2"        },
-  {  91, 0, "BFLQDSW",   "surface latent heat flux (water)",                              "W/m**2"        },
-  {  92, 0, "BFLQDSI",   "surface latent heat flux (ice)",                                "W/m**2"        },
-  {  93, 0, "AHFICE",    "sea-ice: conductive heat",                                      "W/m"           },
-  {  94, 0, "QRES",      "residual heat flux for melting sea ice",                        "W/m**2"        },
-  {  95, 0, "SRFL",      "SRFL",                                                           NULL           },
-  {  96, 0, "QDBOXS",    "horizontal transport of water vapour",                          "kg/m**2"       },
-  {  97, 0, "QWBOXS",    "horizontal transport of cloud water",                           "kg/m**2"       },
-  {  98, 0, "EKBOXS",    "horizontal transport of kinetic energy",                        "(3600*J)/m**2" },
-  {  99, 0, "FHBOXS",    "horizontal transport of sensible heat",                         "(3600*J)/m**2" },
-  { 100, 0, "FIBOXS",    "horizontal transport of potential energy",                      "(3600*J)/m**2" },
-  { 101, 0, "TLAMBDA",   "heat conductivity of dry soil",                                 "W/(K*m)"       },
-  { 103, 0, "DLAMBDA",   "parameter for increasing the heat conductivity of the soil",     NULL           },
-  { 104, 0, "PORVOL",    "pore volume",                                                    NULL           },
-  { 105, 0, "FCAP",      "field capacity of soil",                                         NULL           },
-  { 106, 0, "WI3",       "fraction of frozen soil",                                        NULL           },
-  { 107, 0, "WI4",       "fraction of frozen soil",                                        NULL           },
-  { 108, 0, "WI5",       "fraction of frozen soil",                                        NULL           },
-  { 109, 0, "WI",        "fraction of frozen soil",                                        NULL           },
-  { 110, 0, "WICL",      "fraction of frozen soil",                                        NULL           },
-  { 112, 0, "QDB",       "specific humidity surface",                                     "kg/kg"         },
-  { 129, 0, "FIB",       "surface geopotential (orography)",                              "m"             },
-  { 130, 0, "T",         "temperature",                                                   "K"             },
-  { 131, 0, "U",         "u-velocity",                                                    "m/s"           },
-  { 132, 0, "V",         "v-velocity",                                                    "m/s"           },
-  { 133, 0, "QD",        "specific humidity",                                             "kg/kg"         },
-  { 134, 0, "PS",        "Surface pressure",                                              "Pa"            },
-  { 135, 0, "VERVEL",    "Vertical velocity",                                             "Pa/s"          },
-  { 138, 0, "SVO",       "vorticity",                                                     "1/s"           },
-  { 139, 0, "TS",        "surface temperature",                                           "K"             },
-  { 140, 0, "WS",        "soil wetness",                                                  "m"             },
-  { 141, 0, "SN",        "snow depth",                                                    "m"             },
-  { 142, 0, "APRL",      "large scale precipitation",                                     "mm"            },
-  { 143, 0, "APRC",      "convective  precipitation",                                     "mm"            },
-  { 144, 0, "APRS",      "snow fall",                                                     "mm"            },
-  { 145, 0, "VDIS",      "boundary layer dissipation",                                    "W/m**2"        },
-  { 146, 0, "AHFS",      "surface sensible heat flux",                                    "W/m**2"        },
-  { 147, 0, "AHFL",      "surface latent heat flux",                                      "W/m**2"        },
-  { 148, 0, "STREAM",    "streamfunction",                                                "m**2/s"        },
-  { 149, 0, "VELOPOT",   "velocity potential",                                            "m**2/s"        },
-  { 151, 0, "PSRED",     "mean sea level pressure",                                       "Pa"            },
-  { 152, 0, "LSP",       "log surface pressure",                                           NULL           },
-  { 153, 0, "QW",        "liquid water content",                                          "kg/kg"         },
-  { 155, 0, "SD",        "divergence",                                                    "1/s"           },
-  { 156, 0, "FI",        "geopotential height",                                           "gpm"           },
-  { 159, 0, "USTAR3",    "ustar**3",                                                      "m**3/s**3"     },
-  { 160, 0, "RUNOFF",    "surface runoff",                                                "mm"            },
-  { 162, 0, "ACLC",      "cloud cover",                                                   "fract."        },
-  { 163, 0, "ACLCV",     "total cloud cover",                                             "fract."        },
-  { 164, 0, "ACLCOV",    "total cloud cover",                                             "fract."        },
-  { 165, 0, "U10",       "10m u-velocity",                                                "m/s"           },
-  { 166, 0, "V10",       "10m v-velocity",                                                "m/s"           },
-  { 167, 0, "TEMP2",     "2m temperature",                                                "K"             },
-  { 168, 0, "DEW2",      "2m dew point temperature",                                      "K"             },
-  { 169, 0, "TSURF",     "surface temperature (land)",                                    "K"             },
-  { 170, 0, "TD",        "deep soil temperature",                                         "K"             },
-  { 171, 0, "WIND10",    "10m windspeed",                                                 "m/s"           },
-  { 172, 0, "BLA",       "land sea mask",                                                 "fract."        },
-  { 173, 0, "AZ0",       "surface roughness length",                                      "m"             },
-  { 174, 0, "ALB",       "surface background albedo",                                     "fract."        },
-  { 175, 0, "ALBEDO",    "surface albedo",                                                "fract."        },
-  { 176, 0, "SRADS",     "net surface solar radiation",                                   "W/m**2"        },
-  { 177, 0, "TRADS",     "net surface thermal radiation",                                 "W/m**2"        },
-  { 178, 0, "SRAD0",     "net top solar radiation",                                       "W/m**2"        },
-  { 179, 0, "TRAD0",     "top thermal radiation (OLR)",                                   "W/m**2"        },
-  { 180, 0, "USTR",      "surface u-stress",                                              "Pa"            },
-  { 181, 0, "VSTR",      "surface v-stress",                                              "Pa"            },
-  { 182, 0, "EVAP",      "surface evaporation",                                           "mm"            },
-  { 183, 0, "TDCL",      "soil temperature",                                              "K"             },
-  { 185, 0, "SRAFS",     "net surf. solar radiation   (clear sky)",                       "W/m**2"        },
-  { 186, 0, "TRAFS",     "net surf. thermal radiation (clear sky)",                       "W/m**2"        },
-  { 187, 0, "SRAF0",     "net top solar radiation     (clear sky)",                       "W/m**2"        },
-  { 188, 0, "TRAF0",     "net top thermal radiation   (clear sky)",                       "W/m**2"        },
-  { 189, 0, "SCLFS",     "surface solar cloud forcing",                                   "W/m**2"        },
-  { 190, 0, "TCLFS",     "surface thermal cloud forcing",                                 "W/m**2"        },
-  { 191, 0, "SCLF0",     "top solar cloud forcing",                                       "W/m**2"        },
-  { 192, 0, "TCLF0",     "top thermal cloud forcing",                                     "W/m**2"        },
-  { 194, 0, "WL",        "skin reservoir content",                                        "m"             },
-  { 195, 0, "USTRGW",    "u-gravity wave stress",                                         "Pa"            },
-  { 196, 0, "VSTRGW",    "v-gravity wave stress",                                         "Pa"            },
-  { 197, 0, "VDISGW",    "gravity wave dissipation",                                      "W/m**2"        },
-  { 198, 0, "VGRAT",     "vegetation ratio",                                               NULL           },
-  { 199, 0, "VAROR",     "orographic variance (for surface runoff)",                       NULL           },
-  { 200, 0, "VLT",       "leaf area index",                                                NULL           },
-  { 201, 0, "T2MAX",     "maximum 2m-temperature",                                        "K"             },
-  { 202, 0, "T2MIN",     "minimum 2m-temperature",                                        "K"             },
-  { 203, 0, "SRAD0U",    "top solar radiation upward",                                    "W/m**2"        },
-  { 204, 0, "SRADSU",    "surface solar radiation upward",                                "W/m**2"        },
-  { 205, 0, "TRADSU",    "surface thermal radiation upward",                              "W/m**2"        },
-  { 206, 0, "TSN",       "snow temperature",                                              "K"             },
-  { 207, 0, "TD3",       "soil temperature",                                              "K"             },
-  { 208, 0, "TD4",       "soil temperature",                                              "K"             },
-  { 209, 0, "TD5",       "soil temperature",                                              "K"             },
-  { 210, 0, "SEAICE",    "sea ice cover",                                                 "fract."        },
-  { 211, 0, "SICED",     "sea ice depth",                                                 "m"             },
-  { 212, 0, "FOREST",    "vegetation type",                                                NULL           },
-  { 213, 0, "TEFF",      "(effective) sea-ice skin temperature",                          "K"             },
-  { 214, 0, "TSMAX",     "maximum surface temperature",                                   "K"             },
-  { 215, 0, "TSMIN",     "minimum surface temperature",                                   "K"             },
-  { 216, 0, "WIMAX",     "maximum 10m-wind speed",                                        "m/s"           },
-  { 217, 0, "TOPMAX",    "maximum height of convective cloud tops",                       "Pa"            },
-  { 218, 0, "SNMEL",     "snow melt",                                                     "mm"            },
-  { 220, 0, "TSLIN",     "land: residual surface heat budget",                            "W/m**2"        },
-  { 221, 0, "DSNAC",     "snow depth change",                                             "mm"            },
-  { 222, 0, "EMTER",     "EMTER",                                                          NULL           },
-  { 223, 0, "ACLCAC",    "cloud cover",                                                   "fract."        },
-  { 224, 0, "TKE",       "turbulent kinetic energy",                                       NULL           },
-  { 226, 0, "FAO",       "FAO data set (soil data flags)",                                 NULL           },
-  { 227, 0, "RGCGN",     "heat capacity of soil",                                          NULL           },
-  { 229, 0, "WSMX",      "field capacity of soil",                                         NULL           },
-  { 230, 0, "QVI",       "vertically integrated specific humidity",                       "kg/m**2"       },
-  { 231, 0, "ALWCVI",    "vertically integrated liquid water cont.",                      "kg/m**2"       },
-  { 232, 0, "GLAC",      "glacier mask",                                                   NULL           },
-  { 253, 0, "PHI",       "latitude in real coordinates",                                  "degrees_north" },
-  { 254, 0, "RLA",       "longitude in real coordinates",                                 "degrees_east"  },
-  { 259, 0, "WINDSPEED", "windspeed (sqrt(u**2+v**2))",                                    NULL           },
-  { 260, 0, "PRECIP",    "total precipitation",                                            NULL           },
+static const param_type remo[] = {
+  {  14, -1, 0, "FTKVM",     "turbulent transfer coefficient of momentum in the atmosphere",   NULL           },
+  {  15, -1, 0, "FTKVH",     "turbulent transfer coefficient of heat in the atmosphere",       NULL           },
+  {  38, -1, 0, "U10ER",     "10m u-velocity",                                                "m/s"           },
+  {  39, -1, 0, "V10ER",     "10m v-velocity",                                                "m/s"           },
+  {  40, -1, 0, "CAPE",      "convetive available potential energy",                           NULL           },
+  {  41, -1, 0, "GHPBL",     "height of the planetary boudary layer",                         "gpm"           },
+  {  42, -1, 0, "BETA",      "BETA",                                                           NULL           },
+  {  43, -1, 0, "WMINLOK",   "WMINLOK",                                                        NULL           },
+  {  44, -1, 0, "WMAXLOK",   "WMAXLOK",                                                        NULL           },
+  {  45, -1, 0, "VBM10M",    "maximum of the expected gust velocity near the surface",        "m/s"           },
+  {  46, -1, 0, "BFLHS",     "surface sensible heat flux",                                    "W/m**2"        },
+  {  47, -1, 0, "BFLQDS",    "surface latent heat flux",                                      "W/m**2"        },
+  {  48, -1, 0, "TMCM",      "turbulent transfer coefficient of momentum at the surface",      NULL           },
+  {  49, -1, 0, "TRSOL",     "TRSOL",                                                          NULL           },
+  {  50, -1, 0, "TMCH",      "turbulent transfer coefficient of heat at the surface",          NULL           },
+  {  51, -1, 0, "EMTEF",     "EMTEF",                                                          NULL           },
+  {  52, -1, 0, "TRSOF",     "TRSOF",                                                          NULL           },
+  {  53, -1, 0, "DRAIN",     "drainage",                                                      "mm"            },
+  {  54, -1, 0, "TSL",       "surface temperature (land)",                                    "K"             },
+  {  55, -1, 0, "TSW",       "surface temperature (water)",                                   "K"             },
+  {  56, -1, 0, "TSI",       "surface temperature (ice)",                                     "K"             },
+  {  57, -1, 0, "USTRL",     "surface u-stress (land)",                                       "Pa"            },
+  {  58, -1, 0, "USTRW",     "surface u-stress (water)",                                      "Pa"            },
+  {  59, -1, 0, "USTRI",     "surface u-stress (ice)",                                        "Pa"            },
+  {  60, -1, 0, "VSTRL",     "surface v-stress (land)",                                       "Pa"            },
+  {  61, -1, 0, "VSTRW",     "surface v-stress (water)",                                      "Pa"            },
+  {  62, -1, 0, "VSTRI",     "surface v-stress (ice)",                                        "Pa"            },
+  {  63, -1, 0, "EVAPL",     "surface evaporation (land)",                                    "mm"            },
+  {  64, -1, 0, "EVAPW",     "surface evaporation (water)",                                   "mm"            },
+  {  65, -1, 0, "EVAPI",     "surface evaporation (ice)",                                     "mm"            },
+  {  66, -1, 0, "AHFLL",     "surface latent heat flux (land)",                               "W/m**2"        },
+  {  67, -1, 0, "AHFLW",     "surface latent heat flux (water)",                              "W/m**2"        },
+  {  68, -1, 0, "AHFLI",     "surface latent heat flux (ice)",                                "W/m**2"        },
+  {  69, -1, 0, "AHFSL",     "surface sensible heat flux (land)",                             "W/m**2"        },
+  {  70, -1, 0, "AHFSW",     "surface sensible heat flux (water)",                            "W/m**2"        },
+  {  71, -1, 0, "AHFSI",     "surface sensible heat flux (ice)",                              "W/m**2"        },
+  {  72, -1, 0, "AZ0L",      "surface roughness length (land)",                               "m"             },
+  {  73, -1, 0, "AZ0W",      "surface roughness length (water)",                              "m"             },
+  {  74, -1, 0, "AZ0I",      "surface roughness length (ice)",                                "m"             },
+  {  75, -1, 0, "ALSOL",     "surface albedo (land)",                                         "fract."        },
+  {  76, -1, 0, "ALSOW",     "surface albedo (water)",                                        "fract."        },
+  {  77, -1, 0, "ALSOI",     "surface albedo (ice)",                                          "fract."        },
+  {  81, -1, 0, "TMCHL",     "turbulent transfer coefficient of heat at the surface (land)",   NULL           },
+  {  82, -1, 0, "TMCHW",     "turbulent transfer coefficient of heat at the surface (water)",  NULL           },
+  {  83, -1, 0, "TMCHI",     "turbulent transfer coefficient of heat at the surface (ice)",    NULL           },
+  {  84, -1, 0, "QDBL",      "specific humidity surface (land)",                              "kg/kg"         },
+  {  85, -1, 0, "QDBW",      "specific humidity surface (water)",                             "kg/kg"         },
+  {  86, -1, 0, "QDBI",      "specific humidity surface (ice)",                               "kg/kg"         },
+  {  87, -1, 0, "BFLHSL",    "surface sensible heat flux (land)",                             "W/m**2"        },
+  {  88, -1, 0, "BFLHSW",    "surface sensible heat flux (water)",                            "W/m**2"        },
+  {  89, -1, 0, "BFLHSI",    "surface sensible heat flux (ice)",                              "W/m**2"        },
+  {  90, -1, 0, "BFLQDSL",   "surface latent heat flux (land)",                               "W/m**2"        },
+  {  91, -1, 0, "BFLQDSW",   "surface latent heat flux (water)",                              "W/m**2"        },
+  {  92, -1, 0, "BFLQDSI",   "surface latent heat flux (ice)",                                "W/m**2"        },
+  {  93, -1, 0, "AHFICE",    "sea-ice: conductive heat",                                      "W/m"           },
+  {  94, -1, 0, "QRES",      "residual heat flux for melting sea ice",                        "W/m**2"        },
+  {  95, -1, 0, "SRFL",      "SRFL",                                                           NULL           },
+  {  96, -1, 0, "QDBOXS",    "horizontal transport of water vapour",                          "kg/m**2"       },
+  {  97, -1, 0, "QWBOXS",    "horizontal transport of cloud water",                           "kg/m**2"       },
+  {  98, -1, 0, "EKBOXS",    "horizontal transport of kinetic energy",                        "(3600*J)/m**2" },
+  {  99, -1, 0, "FHBOXS",    "horizontal transport of sensible heat",                         "(3600*J)/m**2" },
+  { 100, -1, 0, "FIBOXS",    "horizontal transport of potential energy",                      "(3600*J)/m**2" },
+  { 101, -1, 0, "TLAMBDA",   "heat conductivity of dry soil",                                 "W/(K*m)"       },
+  { 103, -1, 0, "DLAMBDA",   "parameter for increasing the heat conductivity of the soil",     NULL           },
+  { 104, -1, 0, "PORVOL",    "pore volume",                                                    NULL           },
+  { 105, -1, 0, "FCAP",      "field capacity of soil",                                         NULL           },
+  { 106, -1, 0, "WI3",       "fraction of frozen soil",                                        NULL           },
+  { 107, -1, 0, "WI4",       "fraction of frozen soil",                                        NULL           },
+  { 108, -1, 0, "WI5",       "fraction of frozen soil",                                        NULL           },
+  { 109, -1, 0, "WI",        "fraction of frozen soil",                                        NULL           },
+  { 110, -1, 0, "WICL",      "fraction of frozen soil",                                        NULL           },
+  { 112, -1, 0, "QDB",       "specific humidity surface",                                     "kg/kg"         },
+  { 129, -1, 0, "FIB",       "surface geopotential (orography)",                              "m"             },
+  { 130, -1, 0, "T",         "temperature",                                                   "K"             },
+  { 131, -1, 0, "U",         "u-velocity",                                                    "m/s"           },
+  { 132, -1, 0, "V",         "v-velocity",                                                    "m/s"           },
+  { 133, -1, 0, "QD",        "specific humidity",                                             "kg/kg"         },
+  { 134, -1, 0, "PS",        "Surface pressure",                                              "Pa"            },
+  { 135, -1, 0, "VERVEL",    "Vertical velocity",                                             "Pa/s"          },
+  { 138, -1, 0, "SVO",       "vorticity",                                                     "1/s"           },
+  { 139, -1, 0, "TS",        "surface temperature",                                           "K"             },
+  { 140, -1, 0, "WS",        "soil wetness",                                                  "m"             },
+  { 141, -1, 0, "SN",        "snow depth",                                                    "m"             },
+  { 142, -1, 0, "APRL",      "large scale precipitation",                                     "mm"            },
+  { 143, -1, 0, "APRC",      "convective  precipitation",                                     "mm"            },
+  { 144, -1, 0, "APRS",      "snow fall",                                                     "mm"            },
+  { 145, -1, 0, "VDIS",      "boundary layer dissipation",                                    "W/m**2"        },
+  { 146, -1, 0, "AHFS",      "surface sensible heat flux",                                    "W/m**2"        },
+  { 147, -1, 0, "AHFL",      "surface latent heat flux",                                      "W/m**2"        },
+  { 148, -1, 0, "STREAM",    "streamfunction",                                                "m**2/s"        },
+  { 149, -1, 0, "VELOPOT",   "velocity potential",                                            "m**2/s"        },
+  { 151, -1, 0, "PSRED",     "mean sea level pressure",                                       "Pa"            },
+  { 152, -1, 0, "LSP",       "log surface pressure",                                           NULL           },
+  { 153, -1, 0, "QW",        "liquid water content",                                          "kg/kg"         },
+  { 155, -1, 0, "SD",        "divergence",                                                    "1/s"           },
+  { 156, -1, 0, "FI",        "geopotential height",                                           "gpm"           },
+  { 159, -1, 0, "USTAR3",    "ustar**3",                                                      "m**3/s**3"     },
+  { 160, -1, 0, "RUNOFF",    "surface runoff",                                                "mm"            },
+  { 162, -1, 0, "ACLC",      "cloud cover",                                                   "fract."        },
+  { 163, -1, 0, "ACLCV",     "total cloud cover",                                             "fract."        },
+  { 164, -1, 0, "ACLCOV",    "total cloud cover",                                             "fract."        },
+  { 165, -1, 0, "U10",       "10m u-velocity",                                                "m/s"           },
+  { 166, -1, 0, "V10",       "10m v-velocity",                                                "m/s"           },
+  { 167, -1, 0, "TEMP2",     "2m temperature",                                                "K"             },
+  { 168, -1, 0, "DEW2",      "2m dew point temperature",                                      "K"             },
+  { 169, -1, 0, "TSURF",     "surface temperature (land)",                                    "K"             },
+  { 170, -1, 0, "TD",        "deep soil temperature",                                         "K"             },
+  { 171, -1, 0, "WIND10",    "10m windspeed",                                                 "m/s"           },
+  { 172, -1, 0, "BLA",       "land sea mask",                                                 "fract."        },
+  { 173, -1, 0, "AZ0",       "surface roughness length",                                      "m"             },
+  { 174, -1, 0, "ALB",       "surface background albedo",                                     "fract."        },
+  { 175, -1, 0, "ALBEDO",    "surface albedo",                                                "fract."        },
+  { 176, -1, 0, "SRADS",     "net surface solar radiation",                                   "W/m**2"        },
+  { 177, -1, 0, "TRADS",     "net surface thermal radiation",                                 "W/m**2"        },
+  { 178, -1, 0, "SRAD0",     "net top solar radiation",                                       "W/m**2"        },
+  { 179, -1, 0, "TRAD0",     "top thermal radiation (OLR)",                                   "W/m**2"        },
+  { 180, -1, 0, "USTR",      "surface u-stress",                                              "Pa"            },
+  { 181, -1, 0, "VSTR",      "surface v-stress",                                              "Pa"            },
+  { 182, -1, 0, "EVAP",      "surface evaporation",                                           "mm"            },
+  { 183, -1, 0, "TDCL",      "soil temperature",                                              "K"             },
+  { 185, -1, 0, "SRAFS",     "net surf. solar radiation   (clear sky)",                       "W/m**2"        },
+  { 186, -1, 0, "TRAFS",     "net surf. thermal radiation (clear sky)",                       "W/m**2"        },
+  { 187, -1, 0, "SRAF0",     "net top solar radiation     (clear sky)",                       "W/m**2"        },
+  { 188, -1, 0, "TRAF0",     "net top thermal radiation   (clear sky)",                       "W/m**2"        },
+  { 189, -1, 0, "SCLFS",     "surface solar cloud forcing",                                   "W/m**2"        },
+  { 190, -1, 0, "TCLFS",     "surface thermal cloud forcing",                                 "W/m**2"        },
+  { 191, -1, 0, "SCLF0",     "top solar cloud forcing",                                       "W/m**2"        },
+  { 192, -1, 0, "TCLF0",     "top thermal cloud forcing",                                     "W/m**2"        },
+  { 194, -1, 0, "WL",        "skin reservoir content",                                        "m"             },
+  { 195, -1, 0, "USTRGW",    "u-gravity wave stress",                                         "Pa"            },
+  { 196, -1, 0, "VSTRGW",    "v-gravity wave stress",                                         "Pa"            },
+  { 197, -1, 0, "VDISGW",    "gravity wave dissipation",                                      "W/m**2"        },
+  { 198, -1, 0, "VGRAT",     "vegetation ratio",                                               NULL           },
+  { 199, -1, 0, "VAROR",     "orographic variance (for surface runoff)",                       NULL           },
+  { 200, -1, 0, "VLT",       "leaf area index",                                                NULL           },
+  { 201, -1, 0, "T2MAX",     "maximum 2m-temperature",                                        "K"             },
+  { 202, -1, 0, "T2MIN",     "minimum 2m-temperature",                                        "K"             },
+  { 203, -1, 0, "SRAD0U",    "top solar radiation upward",                                    "W/m**2"        },
+  { 204, -1, 0, "SRADSU",    "surface solar radiation upward",                                "W/m**2"        },
+  { 205, -1, 0, "TRADSU",    "surface thermal radiation upward",                              "W/m**2"        },
+  { 206, -1, 0, "TSN",       "snow temperature",                                              "K"             },
+  { 207, -1, 0, "TD3",       "soil temperature",                                              "K"             },
+  { 208, -1, 0, "TD4",       "soil temperature",                                              "K"             },
+  { 209, -1, 0, "TD5",       "soil temperature",                                              "K"             },
+  { 210, -1, 0, "SEAICE",    "sea ice cover",                                                 "fract."        },
+  { 211, -1, 0, "SICED",     "sea ice depth",                                                 "m"             },
+  { 212, -1, 0, "FOREST",    "vegetation type",                                                NULL           },
+  { 213, -1, 0, "TEFF",      "(effective) sea-ice skin temperature",                          "K"             },
+  { 214, -1, 0, "TSMAX",     "maximum surface temperature",                                   "K"             },
+  { 215, -1, 0, "TSMIN",     "minimum surface temperature",                                   "K"             },
+  { 216, -1, 0, "WIMAX",     "maximum 10m-wind speed",                                        "m/s"           },
+  { 217, -1, 0, "TOPMAX",    "maximum height of convective cloud tops",                       "Pa"            },
+  { 218, -1, 0, "SNMEL",     "snow melt",                                                     "mm"            },
+  { 220, -1, 0, "TSLIN",     "land: residual surface heat budget",                            "W/m**2"        },
+  { 221, -1, 0, "DSNAC",     "snow depth change",                                             "mm"            },
+  { 222, -1, 0, "EMTER",     "EMTER",                                                          NULL           },
+  { 223, -1, 0, "ACLCAC",    "cloud cover",                                                   "fract."        },
+  { 224, -1, 0, "TKE",       "turbulent kinetic energy",                                       NULL           },
+  { 226, -1, 0, "FAO",       "FAO data set (soil data flags)",                                 NULL           },
+  { 227, -1, 0, "RGCGN",     "heat capacity of soil",                                          NULL           },
+  { 229, -1, 0, "WSMX",      "field capacity of soil",                                         NULL           },
+  { 230, -1, 0, "QVI",       "vertically integrated specific humidity",                       "kg/m**2"       },
+  { 231, -1, 0, "ALWCVI",    "vertically integrated liquid water cont.",                      "kg/m**2"       },
+  { 232, -1, 0, "GLAC",      "glacier mask",                                                   NULL           },
+  { 253, -1, 0, "PHI",       "latitude in real coordinates",                                  "degrees_north" },
+  { 254, -1, 0, "RLA",       "longitude in real coordinates",                                 "degrees_east"  },
+  { 259, -1, 0, "WINDSPEED", "windspeed (sqrt(u**2+v**2))",                                    NULL           },
+  { 260, -1, 0, "PRECIP",    "total precipitation",                                            NULL           },
 };
 
-static const PAR cosmo002[] = {
-  {   1, 0, "P",         "pressure",                                          "Pa"         },
-  {   2, 0, "PMSL",      "mean sea level pressure",                           "Pa"         },
-  {   3, 0, "DPSDT",     "surface pressure change",                           "Pa s-1"     },
-  {   6, 0, "FI",        "geopotential",                                      "m2 s-2"     },
-  {   8, 0, "HH",        "height",                                            "m"          },
-  {  10, 0, "TO3",       "vertical integrated ozone content",                 "Dobson"     },
-  {  11, 0, "T",         "temperature",                                       "K"          },
-  {  15, 0, "TMAX",      "2m maximum temperature",                            "K"          },
-  {  16, 0, "TMIN",      "2m minimum temperature",                            "K"          },
-  {  17, 0, "TD",        "2m dew point temperature",                          "K"          },
-  {  31, 0, "DD",        "undefined",                                         "undefined"  },
-  {  32, 0, "FF",        "undefined",                                         "undefined"  },
-  {  33, 0, "U",         "U-component of wind",                               "m s-1"      },
-  {  34, 0, "V",         "V-component of wind",                               "m s-1"      },
-  {  39, 0, "OMEGA",     "omega",                                             "Pa s-1"     },
-  {  40, 0, "W",         "vertical wind velocity",                            "m s-1"      },
-  {  51, 0, "QV",        "specific humidity",                                 "kg kg-1"    },
-  {  52, 0, "RELHUM",    "relative humidity",                                 "%"          },
-  {  54, 0, "TQV",       "precipitable water",                                "kg m-2"     },
-  {  57, 0, "AEVAP",     "surface evaporation",                               "kg m-2"     },
-  {  58, 0, "TQI",       "vertical integrated cloud ice",                     "kg m-2"     },
-  {  59, 0, "TOT_PR",    "total precipitation rate",                          "kg m-2 s-1" },
-  {  61, 0, "TOT_PREC",  "total precipitation amount",                        "kg m-2"     },
-  {  65, 0, "W_SNOW",    "surface snow amount",                               "m"          },
-  {  66, 0, "H_SNOW",    "thickness of snow",                                 "m"          },
-  {  71, 0, "CLCT",      "total cloud cover",                                 "1"          },
-  {  72, 0, "CLC_CON",   "convective cloud area fraction",                    "1"          },
-  {  73, 0, "CLCL",      "low cloud cover",                                   "1"          },
-  {  74, 0, "CLCM",      "medium cloud cover",                                "1"          },
-  {  75, 0, "CLCH",      "high cloud cover",                                  "1"          },
-  {  76, 0, "TQC",       "vertical integrated cloud water",                   "kg m-2"     },
-  {  78, 0, "SNOW_CON",  "convective snowfall",                               "kg m-2"     },
-  {  79, 0, "SNOW_GSP",  "large scale snowfall",                              "kg m-2"     },
-  {  81, 0, "FR_LAND",   "land-sea fraction",                                 "1"          },
-  {  83, 0, "Z0",        "surface roughness length",                          "m"          },
-  {  84, 0, "ALB_RAD",   "surface albedo",                                    "1"          },
-  {  85, 0, "TSOIL",     "soil surface temperature",                          "K"          },
-  {  86, 0, "WSOIL",     "water content of 1. soil layer",                    "m"          },
-  {  87, 0, "PLCOV",     "vegetation area fraction",                          "1"          },
-  {  90, 0, "RUNOFF",    "subsurface runoff",                                 "kg m-2"     },
-  {  91, 0, "FR_ICE",    "sea ice area fraction",                             "1"          },
-  {  92, 0, "H_ICE",     "sea ice thickness",                                 "m"          },
-  { 111, 0, "ASOB",      "averaged surface net downward shortwave radiation", "W m-2"      },
-  { 112, 0, "ATHB",      "averaged surface net downward longwave radiation",  "W m-2"      },
-  { 113, 0, "ASOB",      "averaged TOA net downward shortwave radiation",     "W m-2"      },
-  { 114, 0, "ATHB",      "averaged TOA outgoing longwave radiation",          "W m-2"      },
-  { 115, 0, "ASWDIR",    "direct downward sw radiation at the surface",       "W m-2"      },
-  { 116, 0, "ASWDIFD",   "diffuse downward sw radiation at the surface",      "W m-2"      },
-  { 117, 0, "ASWDIFU",   "diffuse upwnward sw radiation at the surface",      "W m-2"      },
-  { 118, 0, "ALWD",      "downward lw radiation at the surface",              "W m-2"      },
-  { 119, 0, "ALWU",      "upward lw radiation at the surface",                "W m-2"      },
-  { 121, 0, "ALHFL",     "averaged surface latent heat flux",                 "W m-2"      },
-  { 122, 0, "ASHFL",     "averaged surface sensible heat flux",               "W m-2"      },
-  { 124, 0, "AUMFL",     "averaged eastward stress",                          "Pa"         },
-  { 125, 0, "AVMFL",     "averaged northward stress",                         "Pa"         },
-  { 128, 0, "SUNSH",     "undefined",                                         "undefined"  },
-  { 129, 0, "SUNSH2",    "undefined",                                         "undefined"  },
-  { 130, 0, "SUN_SUM",   "undefined",                                         "undefined"  },
-  { 131, 0, "SUN_SUM2",  "undefined",                                         "undefined"  },
-  { 133, 0, "FCOR",      "undefined",                                         "undefined"  },
-  { 134, 0, "SKYVIEW",   "sky-view factor",                                   "1"          },
-  { 137, 0, "SWDIR_COR", "topo correction of direct solar radiarion",         "1"          },
+static const param_type cosmo002[] = {
+  {   1, -1, 0, "P",         "pressure",                                          "Pa"         },
+  {   2, -1, 0, "PMSL",      "mean sea level pressure",                           "Pa"         },
+  {   3, -1, 0, "DPSDT",     "surface pressure change",                           "Pa s-1"     },
+  {   6, -1, 0, "FI",        "geopotential",                                      "m2 s-2"     },
+  {   8, -1, 0, "HH",        "height",                                            "m"          },
+  {  10, -1, 0, "TO3",       "vertical integrated ozone content",                 "Dobson"     },
+  {  11, -1, 0, "T",         "temperature",                                       "K"          },
+  {  15, -1, 0, "TMAX",      "2m maximum temperature",                            "K"          },
+  {  16, -1, 0, "TMIN",      "2m minimum temperature",                            "K"          },
+  {  17, -1, 0, "TD",        "2m dew point temperature",                          "K"          },
+  {  31, -1, 0, "DD",        "undefined",                                         "undefined"  },
+  {  32, -1, 0, "FF",        "undefined",                                         "undefined"  },
+  {  33, -1, 0, "U",         "U-component of wind",                               "m s-1"      },
+  {  34, -1, 0, "V",         "V-component of wind",                               "m s-1"      },
+  {  39, -1, 0, "OMEGA",     "omega",                                             "Pa s-1"     },
+  {  40, -1, 0, "W",         "vertical wind velocity",                            "m s-1"      },
+  {  51, -1, 0, "QV",        "specific humidity",                                 "kg kg-1"    },
+  {  52, -1, 0, "RELHUM",    "relative humidity",                                 "%"          },
+  {  54, -1, 0, "TQV",       "precipitable water",                                "kg m-2"     },
+  {  57, -1, 0, "AEVAP",     "surface evaporation",                               "kg m-2"     },
+  {  58, -1, 0, "TQI",       "vertical integrated cloud ice",                     "kg m-2"     },
+  {  59, -1, 0, "TOT_PR",    "total precipitation rate",                          "kg m-2 s-1" },
+  {  61, -1, 0, "TOT_PREC",  "total precipitation amount",                        "kg m-2"     },
+  {  65, -1, 0, "W_SNOW",    "surface snow amount",                               "m"          },
+  {  66, -1, 0, "H_SNOW",    "thickness of snow",                                 "m"          },
+  {  71, -1, 0, "CLCT",      "total cloud cover",                                 "1"          },
+  {  72, -1, 0, "CLC_CON",   "convective cloud area fraction",                    "1"          },
+  {  73, -1, 0, "CLCL",      "low cloud cover",                                   "1"          },
+  {  74, -1, 0, "CLCM",      "medium cloud cover",                                "1"          },
+  {  75, -1, 0, "CLCH",      "high cloud cover",                                  "1"          },
+  {  76, -1, 0, "TQC",       "vertical integrated cloud water",                   "kg m-2"     },
+  {  78, -1, 0, "SNOW_CON",  "convective snowfall",                               "kg m-2"     },
+  {  79, -1, 0, "SNOW_GSP",  "large scale snowfall",                              "kg m-2"     },
+  {  81, -1, 0, "FR_LAND",   "land-sea fraction",                                 "1"          },
+  {  83, -1, 0, "Z0",        "surface roughness length",                          "m"          },
+  {  84, -1, 0, "ALB_RAD",   "surface albedo",                                    "1"          },
+  {  85, -1, 0, "TSOIL",     "soil surface temperature",                          "K"          },
+  {  86, -1, 0, "WSOIL",     "water content of 1. soil layer",                    "m"          },
+  {  87, -1, 0, "PLCOV",     "vegetation area fraction",                          "1"          },
+  {  90, -1, 0, "RUNOFF",    "subsurface runoff",                                 "kg m-2"     },
+  {  91, -1, 0, "FR_ICE",    "sea ice area fraction",                             "1"          },
+  {  92, -1, 0, "H_ICE",     "sea ice thickness",                                 "m"          },
+  { 111, -1, 0, "ASOB",      "averaged surface net downward shortwave radiation", "W m-2"      },
+  { 112, -1, 0, "ATHB",      "averaged surface net downward longwave radiation",  "W m-2"      },
+  { 113, -1, 0, "ASOB",      "averaged TOA net downward shortwave radiation",     "W m-2"      },
+  { 114, -1, 0, "ATHB",      "averaged TOA outgoing longwave radiation",          "W m-2"      },
+  { 115, -1, 0, "ASWDIR",    "direct downward sw radiation at the surface",       "W m-2"      },
+  { 116, -1, 0, "ASWDIFD",   "diffuse downward sw radiation at the surface",      "W m-2"      },
+  { 117, -1, 0, "ASWDIFU",   "diffuse upwnward sw radiation at the surface",      "W m-2"      },
+  { 118, -1, 0, "ALWD",      "downward lw radiation at the surface",              "W m-2"      },
+  { 119, -1, 0, "ALWU",      "upward lw radiation at the surface",                "W m-2"      },
+  { 121, -1, 0, "ALHFL",     "averaged surface latent heat flux",                 "W m-2"      },
+  { 122, -1, 0, "ASHFL",     "averaged surface sensible heat flux",               "W m-2"      },
+  { 124, -1, 0, "AUMFL",     "averaged eastward stress",                          "Pa"         },
+  { 125, -1, 0, "AVMFL",     "averaged northward stress",                         "Pa"         },
+  { 128, -1, 0, "SUNSH",     "undefined",                                         "undefined"  },
+  { 129, -1, 0, "SUNSH2",    "undefined",                                         "undefined"  },
+  { 130, -1, 0, "SUN_SUM",   "undefined",                                         "undefined"  },
+  { 131, -1, 0, "SUN_SUM2",  "undefined",                                         "undefined"  },
+  { 133, -1, 0, "FCOR",      "undefined",                                         "undefined"  },
+  { 134, -1, 0, "SKYVIEW",   "sky-view factor",                                   "1"          },
+  { 137, -1, 0, "SWDIR_COR", "topo correction of direct solar radiarion",         "1"          },
 };
 
-static const PAR cosmo201[] = {
-  {   5, 0, "APAB",      "&",                                                         "W m-2"      },
-  {  13, 0, "SOHR_RAD",  "&",                                                         "K s-1"      },
-  {  14, 0, "THHR_RAD",  "&",                                                         "K s-1"      },
-  {  20, 0, "DURSUN",    "duration of sunshine",                                      "s"          },
-  {  29, 0, "CLC",       "cloud area fraction",                                       "1"          },
-  {  30, 0, "CLC_SGS",   "grid scale cloud area fraction",                            "1"          },
-  {  31, 0, "QC",        "specific cloud liquid water content",                       "kg kg-1"    },
-  {  33, 0, "QI",        "specific cloud ice content",                                "kg kg-1"    },
-  {  35, 0, "QR",        "specific rain content",                                     "kg kg-1"    },
-  {  36, 0, "QS",        "specific snow content",                                     "kg kg-1"    },
-  {  37, 0, "TQR",       "total rain water content vertically integrated",            "kg m-2"     },
-  {  38, 0, "TQS",       "total snow content vertically integrated",                  "kg m-2"     },
-  {  39, 0, "QG",        "specific graupel content",                                  "kg kg-1"    },
-  {  40, 0, "TQG",       "total graupel content vertically integrated",               "kg m-2"     },
-  {  41, 0, "TWATER",    "cloud condensed water content",                             "kg m-2"     },
-  {  42, 0, "TDIV_HUM",  "atmosphere water divergence",                               "kg m-2"     },
-  {  43, 0, "QC_RAD",    "sub scale specific cloud liquid water content",             "kg kg-1"    },
-  {  44, 0, "QI_RAD",    "sub scale specific cloud ice content",                      "kg kg-1"    },
-  {  61, 0, "CLW_CON",   "convective cloud liquid water",                             "1"          },
-  {  68, 0, "HBAS_CON",  "height of convective cloud base",                           "m"          },
-  {  69, 0, "HTOP_CON",  "height of convective cloud top",                            "m"          },
-  {  70, 0, "HBAS_CONI", "height of convective cloud base",                           "m"          },
-  {  71, 0, "HTOP_CONI", "height of convective cloud top",                            "m"          },
-  {  72, 0, "BAS_CON",   "index of convective cloud base",                            "1"          },
-  {  73, 0, "TOP_CON",   "index of convective cloud top",                             "1"          },
-  {  74, 0, "DT_CON",    "convective tendency of temperature",                        "K s-1"      },
-  {  75, 0, "DQV_CON",   "convective tendency of specific humidity",                  "s-1"        },
-  {  78, 0, "DU_CON",    "convective tendency of u-wind component",                   "m s-2"      },
-  {  79, 0, "DV_CON",    "convective tendency of v-wind component",                   "m s-2"      },
-  {  82, 0, "HTOP_DC",   "height of dry convection top",                              "m"          },
-  {  84, 0, "HZEROCL",   "height of freezing level",                                  "m"          },
-  {  85, 0, "SNOWLMT",   "height of the snow fall limit in m above sea level",        "m"          },
-  {  86, 0, "HCBAS",     "height of cloud base",                                      "m"          },
-  {  87, 0, "HCTOP",     "height of cloud top",                                       "m"          },
-  {  91, 0, "C_T_LK",    "&",                                                         "1"          },
-  {  92, 0, "GAMSO_LK",  "&",                                                         "m-1"        },
-  {  93, 0, "DP_BS_LK",  "&",                                                         "m"          },
-  {  94, 0, "H_B1_LK",   "&",                                                         "m"          },
-  {  95, 0, "H_ML_LK",   "&",                                                         "m"          },
-  {  96, 0, "DEPTH_LK",  "lake depth",                                                "m"          },
-  {  97, 0, "FETCH_LK",  "wind fetch over lake",                                      "m"          },
-  {  99, 0, "QRS",       "precipitation water (water loading)",                       "1"          },
-  { 100, 0, "PRR_GSP",   "mass flux density of large scale rainfall",                 "kg m-2 s-1" },
-  { 101, 0, "PRS_GSP",   "mass flux density of large scale snowfall",                 "kg m-2 s-1" },
-  { 102, 0, "RAIN_GSP",  "large scale rainfall",                                      "kg m-2"     },
-  { 111, 0, "PRR_CON",   "mass flux density of convective rainfall",                  "kg m-2 s-1" },
-  { 112, 0, "PRS_CON",   "mass flux density of convective snowfall",                  "kg m-2 s-1" },
-  { 113, 0, "RAIN_CON",  "convective rainfall",                                       "kg m-2"     },
-  { 129, 0, "FRESHSNW",  "freshness of snow",                                         "undefined"  },
-  { 131, 0, "PRG_GSP",   "mass flux density of large scale graupel",                  "kg m-2 s-1" },
-  { 132, 0, "GRAU_GSP",  "large scale graupel",                                       "kg m-2"     },
-  { 133, 0, "RHO_SNOW",  "density of snow",                                           "kg m-3"     },
-  { 139, 0, "PP",        "deviation from reference pressure",                         "Pa"         },
-  { 140, 0, "RCLD",      "standard deviation of saturation deficit",                  "undefined"  },
-  { 143, 0, "CAPE_MU",   "cape of most unstable parcel",                              "J kg-1"     },
-  { 144, 0, "CIN_MU",    "convective inhibition of most unstable parcel",             "J kg-1"     },
-  { 145, 0, "CAPE_ML",   "cape of mean surface layer parcel",                         "J kg-1"     },
-  { 146, 0, "CIN_ML",    "convective inhibition of mean surface layer parcel",        "J kg-1"     },
-  { 147, 0, "TKE_CON",   "convective turbulent kinetic energy",                       "undefined"  },
-  { 148, 0, "TKETENS",   "tendency of turbulent kinetic energy",                      "undefined"  },
-  { 152, 0, "TKE",       "turbulent kinetic energy",                                  "m2 s-2"     },
-  { 153, 0, "TKVM",      "diffusion coefficient of momentum",                         "m2 s-1"     },
-  { 154, 0, "TKVH",      "diffusion coefficient of heat",                             "m2 s-1"     },
-  { 170, 0, "TCM",       "drag coefficient of momentum",                              "1"          },
-  { 171, 0, "TCH",       "drag coefficient of heat",                                  "1"          },
-  { 187, 0, "VMAX",      "maximum turbulent wind gust in 10m",                        "m s-1"      },
-  { 190, 0, "TSOIL",     "&",                                                         "K"          },
-  { 191, 0, "TSOIL",     "&",                                                         "K"          },
-  { 192, 0, "TSOIL",     "&",                                                         "K"          },
-  { 193, 0, "TSOIL",     "mixed layer temperature",                                   "K"          },
-  { 194, 0, "TSOIL",     "mean temperature of water column",                          "K"          },
-  { 197, 0, "TSOIL",     "soil temperature",                                          "K"          },
-  { 198, 0, "W_SO",      "soil water content",                                        "m"          },
-  { 199, 0, "W_SO_ICE",  "soil frozen water content",                                 "m"          },
-  { 200, 0, "W_I",       "canopy water amount",                                       "m"          },
-  { 203, 0, "TSOIL",     "snow surface temperature",                                  "K"          },
-  { 215, 0, "TSOIL",     "temperature of ice upper surface",                          "K"          },
-  { 230, 0, "dBZ",       "unattenuated radar reflectivity in Rayleigh approximation", "1"          },
-  { 240, 0, "MFLX_CON",  "convective mass flux density",                              "kg m-2 s-1" },
-  { 241, 0, "CAPE_CON",  "&",                                                         "J kg-1"     },
-  { 243, 0, "QCVG_CON",  "&",                                                         "s-1"        },
+static const param_type cosmo201[] = {
+  {   5, -1, 0, "APAB",      "&",                                                         "W m-2"      },
+  {  13, -1, 0, "SOHR_RAD",  "&",                                                         "K s-1"      },
+  {  14, -1, 0, "THHR_RAD",  "&",                                                         "K s-1"      },
+  {  20, -1, 0, "DURSUN",    "duration of sunshine",                                      "s"          },
+  {  29, -1, 0, "CLC",       "cloud area fraction",                                       "1"          },
+  {  30, -1, 0, "CLC_SGS",   "grid scale cloud area fraction",                            "1"          },
+  {  31, -1, 0, "QC",        "specific cloud liquid water content",                       "kg kg-1"    },
+  {  33, -1, 0, "QI",        "specific cloud ice content",                                "kg kg-1"    },
+  {  35, -1, 0, "QR",        "specific rain content",                                     "kg kg-1"    },
+  {  36, -1, 0, "QS",        "specific snow content",                                     "kg kg-1"    },
+  {  37, -1, 0, "TQR",       "total rain water content vertically integrated",            "kg m-2"     },
+  {  38, -1, 0, "TQS",       "total snow content vertically integrated",                  "kg m-2"     },
+  {  39, -1, 0, "QG",        "specific graupel content",                                  "kg kg-1"    },
+  {  40, -1, 0, "TQG",       "total graupel content vertically integrated",               "kg m-2"     },
+  {  41, -1, 0, "TWATER",    "cloud condensed water content",                             "kg m-2"     },
+  {  42, -1, 0, "TDIV_HUM",  "atmosphere water divergence",                               "kg m-2"     },
+  {  43, -1, 0, "QC_RAD",    "sub scale specific cloud liquid water content",             "kg kg-1"    },
+  {  44, -1, 0, "QI_RAD",    "sub scale specific cloud ice content",                      "kg kg-1"    },
+  {  61, -1, 0, "CLW_CON",   "convective cloud liquid water",                             "1"          },
+  {  68, -1, 0, "HBAS_CON",  "height of convective cloud base",                           "m"          },
+  {  69, -1, 0, "HTOP_CON",  "height of convective cloud top",                            "m"          },
+  {  70, -1, 0, "HBAS_CONI", "height of convective cloud base",                           "m"          },
+  {  71, -1, 0, "HTOP_CONI", "height of convective cloud top",                            "m"          },
+  {  72, -1, 0, "BAS_CON",   "index of convective cloud base",                            "1"          },
+  {  73, -1, 0, "TOP_CON",   "index of convective cloud top",                             "1"          },
+  {  74, -1, 0, "DT_CON",    "convective tendency of temperature",                        "K s-1"      },
+  {  75, -1, 0, "DQV_CON",   "convective tendency of specific humidity",                  "s-1"        },
+  {  78, -1, 0, "DU_CON",    "convective tendency of u-wind component",                   "m s-2"      },
+  {  79, -1, 0, "DV_CON",    "convective tendency of v-wind component",                   "m s-2"      },
+  {  82, -1, 0, "HTOP_DC",   "height of dry convection top",                              "m"          },
+  {  84, -1, 0, "HZEROCL",   "height of freezing level",                                  "m"          },
+  {  85, -1, 0, "SNOWLMT",   "height of the snow fall limit in m above sea level",        "m"          },
+  {  86, -1, 0, "HCBAS",     "height of cloud base",                                      "m"          },
+  {  87, -1, 0, "HCTOP",     "height of cloud top",                                       "m"          },
+  {  91, -1, 0, "C_T_LK",    "&",                                                         "1"          },
+  {  92, -1, 0, "GAMSO_LK",  "&",                                                         "m-1"        },
+  {  93, -1, 0, "DP_BS_LK",  "&",                                                         "m"          },
+  {  94, -1, 0, "H_B1_LK",   "&",                                                         "m"          },
+  {  95, -1, 0, "H_ML_LK",   "&",                                                         "m"          },
+  {  96, -1, 0, "DEPTH_LK",  "lake depth",                                                "m"          },
+  {  97, -1, 0, "FETCH_LK",  "wind fetch over lake",                                      "m"          },
+  {  99, -1, 0, "QRS",       "precipitation water (water loading)",                       "1"          },
+  { 100, -1, 0, "PRR_GSP",   "mass flux density of large scale rainfall",                 "kg m-2 s-1" },
+  { 101, -1, 0, "PRS_GSP",   "mass flux density of large scale snowfall",                 "kg m-2 s-1" },
+  { 102, -1, 0, "RAIN_GSP",  "large scale rainfall",                                      "kg m-2"     },
+  { 111, -1, 0, "PRR_CON",   "mass flux density of convective rainfall",                  "kg m-2 s-1" },
+  { 112, -1, 0, "PRS_CON",   "mass flux density of convective snowfall",                  "kg m-2 s-1" },
+  { 113, -1, 0, "RAIN_CON",  "convective rainfall",                                       "kg m-2"     },
+  { 129, -1, 0, "FRESHSNW",  "freshness of snow",                                         "undefined"  },
+  { 131, -1, 0, "PRG_GSP",   "mass flux density of large scale graupel",                  "kg m-2 s-1" },
+  { 132, -1, 0, "GRAU_GSP",  "large scale graupel",                                       "kg m-2"     },
+  { 133, -1, 0, "RHO_SNOW",  "density of snow",                                           "kg m-3"     },
+  { 139, -1, 0, "PP",        "deviation from reference pressure",                         "Pa"         },
+  { 140, -1, 0, "RCLD",      "standard deviation of saturation deficit",                  "undefined"  },
+  { 143, -1, 0, "CAPE_MU",   "cape of most unstable parcel",                              "J kg-1"     },
+  { 144, -1, 0, "CIN_MU",    "convective inhibition of most unstable parcel",             "J kg-1"     },
+  { 145, -1, 0, "CAPE_ML",   "cape of mean surface layer parcel",                         "J kg-1"     },
+  { 146, -1, 0, "CIN_ML",    "convective inhibition of mean surface layer parcel",        "J kg-1"     },
+  { 147, -1, 0, "TKE_CON",   "convective turbulent kinetic energy",                       "undefined"  },
+  { 148, -1, 0, "TKETENS",   "tendency of turbulent kinetic energy",                      "undefined"  },
+  { 152, -1, 0, "TKE",       "turbulent kinetic energy",                                  "m2 s-2"     },
+  { 153, -1, 0, "TKVM",      "diffusion coefficient of momentum",                         "m2 s-1"     },
+  { 154, -1, 0, "TKVH",      "diffusion coefficient of heat",                             "m2 s-1"     },
+  { 170, -1, 0, "TCM",       "drag coefficient of momentum",                              "1"          },
+  { 171, -1, 0, "TCH",       "drag coefficient of heat",                                  "1"          },
+  { 187, -1, 0, "VMAX",      "maximum turbulent wind gust in 10m",                        "m s-1"      },
+  { 190, -1, 0, "TSOIL",     "&",                                                         "K"          },
+  { 191, -1, 0, "TSOIL",     "&",                                                         "K"          },
+  { 192, -1, 0, "TSOIL",     "&",                                                         "K"          },
+  { 193, -1, 0, "TSOIL",     "mixed layer temperature",                                   "K"          },
+  { 194, -1, 0, "TSOIL",     "mean temperature of water column",                          "K"          },
+  { 197, -1, 0, "TSOIL",     "soil temperature",                                          "K"          },
+  { 198, -1, 0, "W_SO",      "soil water content",                                        "m"          },
+  { 199, -1, 0, "W_SO_ICE",  "soil frozen water content",                                 "m"          },
+  { 200, -1, 0, "W_I",       "canopy water amount",                                       "m"          },
+  { 203, -1, 0, "TSOIL",     "snow surface temperature",                                  "K"          },
+  { 215, -1, 0, "TSOIL",     "temperature of ice upper surface",                          "K"          },
+  { 230, -1, 0, "dBZ",       "unattenuated radar reflectivity in Rayleigh approximation", "1"          },
+  { 240, -1, 0, "MFLX_CON",  "convective mass flux density",                              "kg m-2 s-1" },
+  { 241, -1, 0, "CAPE_CON",  "&",                                                         "J kg-1"     },
+  { 243, -1, 0, "QCVG_CON",  "&",                                                         "s-1"        },
 };
 
-static const PAR cosmo202[] = {
-  {  46, 0, "SSO_STDH",  "standard deviation of subgrid scale height",                "m"         },
-  {  47, 0, "SSO_GAMMA", "anisotropy of topography",                                  "-"         },
-  {  48, 0, "SSO_THETA", "angle between principal axis of orography and global east", "-"         },
-  {  49, 0, "SSO_SIGMA", "mean slope of subgrid scale orography",                     "-"         },
-  {  55, 0, "FR_LAKE",   "fraction of inland lake water",                             "1"         },
-  {  57, 0, "SOILTYP",   "soil type",                                                 "1"         },
-  {  61, 0, "LAI",       "leaf area index",                                           "1"         },
-  {  62, 0, "ROOTDP",    "root depth",                                                "m"         },
-  {  64, 0, "HMO3",      "air pressure at ozone maximum",                             "Pa"        },
-  {  65, 0, "VIO3",      "vertical integrated ozone amount",                          "Pa"        },
-  {  67, 0, "PLCOV_MX",  "vegetation area fraction maximum",                          "1"         },
-  {  68, 0, "PLCOV_MN",  "vegetation area fraction minimum",                          "1"         },
-  {  69, 0, "LAI_MX",    "leaf area index maximum",                                   "1"         },
-  {  70, 0, "LAI_MN",    "leaf area index minimum",                                   "1"         },
-  {  75, 0, "FOR_E",     "ground fraction covered by evergreen forest",               "-"         },
-  {  76, 0, "FOR_D",     "ground fraction covered by deciduous forest",               "-"         },
-  { 104, 0, "DQVDT",     "tendency of water vapor",                                   "s-1"       },
-  { 105, 0, "QVSFLX",    "surface flux of water vapour",                              "s-1m-2"    },
-  { 113, 0, "FC",        "coriolis parameter",                                        "s-1"       },
-  { 114, 0, "RLAT",      "latitude",                                                  "radian"    },
-  { 115, 0, "RLON",      "longitude",                                                 "radian"    },
-  { 121, 0, "ZTD",       "integrated total atmospheric refractivity",                 "undefined" },
-  { 122, 0, "ZWD",       "integrated wet atmospheric refractivity",                   "undefined" },
-  { 123, 0, "ZHD",       "integrated dry atmospheric refractivity",                   "undefined" },
-  { 180, 0, "O3",        "ozone mass mixing ratio",                                   "kg kg-1"   },
-  { 200, 0, "I131a",     "undefined",                                                 "undefined" },
-  { 201, 0, "I131a_DD",  "undefined",                                                 "undefined" },
-  { 202, 0, "I131a_WD",  "undefined",                                                 "undefined" },
-  { 203, 0, "Cs137",     "undefined",                                                 "undefined" },
-  { 204, 0, "Cs137_DD",  "undefined",                                                 "undefined" },
-  { 205, 0, "Cs137_WD",  "undefined",                                                 "undefined" },
-  { 206, 0, "Te132",     "undefined",                                                 "undefined" },
-  { 207, 0, "Te132_DD",  "undefined",                                                 "undefined" },
-  { 208, 0, "Te132_WD",  "undefined",                                                 "undefined" },
-  { 209, 0, "Zr95",      "undefined",                                                 "undefined" },
-  { 210, 0, "Zr95_DD",   "undefined",                                                 "undefined" },
-  { 211, 0, "Zr95_WD",   "undefined",                                                 "undefined" },
-  { 212, 0, "Kr85",      "undefined",                                                 "undefined" },
-  { 213, 0, "Kr85_DD",   "undefined",                                                 "undefined" },
-  { 214, 0, "Kr85_WD",   "undefined",                                                 "undefined" },
-  { 215, 0, "TRACER",    "undefined",                                                 "undefined" },
-  { 216, 0, "TRACER_DD", "undefined",                                                 "undefined" },
-  { 217, 0, "TRACER_WD", "undefined",                                                 "undefined" },
-  { 218, 0, "Xe133",     "undefined",                                                 "undefined" },
-  { 219, 0, "Xe133_DD",  "undefined",                                                 "undefined" },
-  { 220, 0, "Xe133_WD",  "undefined",                                                 "undefined" },
-  { 221, 0, "I131g",     "undefined",                                                 "undefined" },
-  { 222, 0, "I131g_DD",  "undefined",                                                 "undefined" },
-  { 223, 0, "I131g_WD",  "undefined",                                                 "undefined" },
-  { 224, 0, "I131o",     "undefined",                                                 "undefined" },
-  { 225, 0, "I131o_DD",  "undefined",                                                 "undefined" },
-  { 226, 0, "I131o_WD",  "undefined",                                                 "undefined" },
-  { 227, 0, "Ba140",     "undefined",                                                 "undefined" },
-  { 228, 0, "Ba140_DD",  "undefined",                                                 "undefined" },
-  { 229, 0, "Ba140_WD",  "undefined",                                                 "undefined" },
-  { 230, 0, "Sr90",      "undefined",                                                 "undefined" },
-  { 231, 0, "Sr90_DD",   "undefined",                                                 "undefined" },
-  { 232, 0, "Sr90_WD",   "undefined",                                                 "undefined" },
-  { 233, 0, "Ru103",     "undefined",                                                 "undefined" },
-  { 234, 0, "Ru103_DD",  "undefined",                                                 "undefined" },
-  { 235, 0, "Ru103_WD",  "undefined",                                                 "undefined" },
+static const param_type cosmo202[] = {
+  {  46, -1, 0, "SSO_STDH",  "standard deviation of subgrid scale height",                "m"         },
+  {  47, -1, 0, "SSO_GAMMA", "anisotropy of topography",                                  "-"         },
+  {  48, -1, 0, "SSO_THETA", "angle between principal axis of orography and global east", "-"         },
+  {  49, -1, 0, "SSO_SIGMA", "mean slope of subgrid scale orography",                     "-"         },
+  {  55, -1, 0, "FR_LAKE",   "fraction of inland lake water",                             "1"         },
+  {  57, -1, 0, "SOILTYP",   "soil type",                                                 "1"         },
+  {  61, -1, 0, "LAI",       "leaf area index",                                           "1"         },
+  {  62, -1, 0, "ROOTDP",    "root depth",                                                "m"         },
+  {  64, -1, 0, "HMO3",      "air pressure at ozone maximum",                             "Pa"        },
+  {  65, -1, 0, "VIO3",      "vertical integrated ozone amount",                          "Pa"        },
+  {  67, -1, 0, "PLCOV_MX",  "vegetation area fraction maximum",                          "1"         },
+  {  68, -1, 0, "PLCOV_MN",  "vegetation area fraction minimum",                          "1"         },
+  {  69, -1, 0, "LAI_MX",    "leaf area index maximum",                                   "1"         },
+  {  70, -1, 0, "LAI_MN",    "leaf area index minimum",                                   "1"         },
+  {  75, -1, 0, "FOR_E",     "ground fraction covered by evergreen forest",               "-"         },
+  {  76, -1, 0, "FOR_D",     "ground fraction covered by deciduous forest",               "-"         },
+  { 104, -1, 0, "DQVDT",     "tendency of water vapor",                                   "s-1"       },
+  { 105, -1, 0, "QVSFLX",    "surface flux of water vapour",                              "s-1m-2"    },
+  { 113, -1, 0, "FC",        "coriolis parameter",                                        "s-1"       },
+  { 114, -1, 0, "RLAT",      "latitude",                                                  "radian"    },
+  { 115, -1, 0, "RLON",      "longitude",                                                 "radian"    },
+  { 121, -1, 0, "ZTD",       "integrated total atmospheric refractivity",                 "undefined" },
+  { 122, -1, 0, "ZWD",       "integrated wet atmospheric refractivity",                   "undefined" },
+  { 123, -1, 0, "ZHD",       "integrated dry atmospheric refractivity",                   "undefined" },
+  { 180, -1, 0, "O3",        "ozone mass mixing ratio",                                   "kg kg-1"   },
+  { 200, -1, 0, "I131a",     "undefined",                                                 "undefined" },
+  { 201, -1, 0, "I131a_DD",  "undefined",                                                 "undefined" },
+  { 202, -1, 0, "I131a_WD",  "undefined",                                                 "undefined" },
+  { 203, -1, 0, "Cs137",     "undefined",                                                 "undefined" },
+  { 204, -1, 0, "Cs137_DD",  "undefined",                                                 "undefined" },
+  { 205, -1, 0, "Cs137_WD",  "undefined",                                                 "undefined" },
+  { 206, -1, 0, "Te132",     "undefined",                                                 "undefined" },
+  { 207, -1, 0, "Te132_DD",  "undefined",                                                 "undefined" },
+  { 208, -1, 0, "Te132_WD",  "undefined",                                                 "undefined" },
+  { 209, -1, 0, "Zr95",      "undefined",                                                 "undefined" },
+  { 210, -1, 0, "Zr95_DD",   "undefined",                                                 "undefined" },
+  { 211, -1, 0, "Zr95_WD",   "undefined",                                                 "undefined" },
+  { 212, -1, 0, "Kr85",      "undefined",                                                 "undefined" },
+  { 213, -1, 0, "Kr85_DD",   "undefined",                                                 "undefined" },
+  { 214, -1, 0, "Kr85_WD",   "undefined",                                                 "undefined" },
+  { 215, -1, 0, "TRACER",    "undefined",                                                 "undefined" },
+  { 216, -1, 0, "TRACER_DD", "undefined",                                                 "undefined" },
+  { 217, -1, 0, "TRACER_WD", "undefined",                                                 "undefined" },
+  { 218, -1, 0, "Xe133",     "undefined",                                                 "undefined" },
+  { 219, -1, 0, "Xe133_DD",  "undefined",                                                 "undefined" },
+  { 220, -1, 0, "Xe133_WD",  "undefined",                                                 "undefined" },
+  { 221, -1, 0, "I131g",     "undefined",                                                 "undefined" },
+  { 222, -1, 0, "I131g_DD",  "undefined",                                                 "undefined" },
+  { 223, -1, 0, "I131g_WD",  "undefined",                                                 "undefined" },
+  { 224, -1, 0, "I131o",     "undefined",                                                 "undefined" },
+  { 225, -1, 0, "I131o_DD",  "undefined",                                                 "undefined" },
+  { 226, -1, 0, "I131o_WD",  "undefined",                                                 "undefined" },
+  { 227, -1, 0, "Ba140",     "undefined",                                                 "undefined" },
+  { 228, -1, 0, "Ba140_DD",  "undefined",                                                 "undefined" },
+  { 229, -1, 0, "Ba140_WD",  "undefined",                                                 "undefined" },
+  { 230, -1, 0, "Sr90",      "undefined",                                                 "undefined" },
+  { 231, -1, 0, "Sr90_DD",   "undefined",                                                 "undefined" },
+  { 232, -1, 0, "Sr90_WD",   "undefined",                                                 "undefined" },
+  { 233, -1, 0, "Ru103",     "undefined",                                                 "undefined" },
+  { 234, -1, 0, "Ru103_DD",  "undefined",                                                 "undefined" },
+  { 235, -1, 0, "Ru103_WD",  "undefined",                                                 "undefined" },
 };
 
-static const PAR cosmo203[] = {
-  { 135, 0, "LCL_ML",   "undefined",                  "undefined" },
-  { 136, 0, "LFC_ML",   "undefined",                  "undefined" },
-  { 137, 0, "CAPE_3KM", "undefined",                  "undefined" },
-  { 138, 0, "SWISS00",  "swiss00 index",              "1"         },
-  { 139, 0, "SWISS12",  "swiss12 index",              "1"         },
-  { 147, 0, "SLI",      "surface lifted index",       "K"         },
-  { 149, 0, "SI",       "showalter index",            "K"         },
-  { 155, 0, "BRN",      "undefined",                  "undefined" },
-  { 156, 0, "HPBL",     "undefined",                  "undefined" },
-  { 203, 0, "CLDEPTH",  "normalized cloud depth",     "1"         },
-  { 204, 0, "CLCT_MOD", "modified_total_cloud_cover", "1"         },
+static const param_type cosmo203[] = {
+  { 135, -1, 0, "LCL_ML",   "undefined",                  "undefined" },
+  { 136, -1, 0, "LFC_ML",   "undefined",                  "undefined" },
+  { 137, -1, 0, "CAPE_3KM", "undefined",                  "undefined" },
+  { 138, -1, 0, "SWISS00",  "swiss00 index",              "1"         },
+  { 139, -1, 0, "SWISS12",  "swiss12 index",              "1"         },
+  { 147, -1, 0, "SLI",      "surface lifted index",       "K"         },
+  { 149, -1, 0, "SI",       "showalter index",            "K"         },
+  { 155, -1, 0, "BRN",      "undefined",                  "undefined" },
+  { 156, -1, 0, "HPBL",     "undefined",                  "undefined" },
+  { 203, -1, 0, "CLDEPTH",  "normalized cloud depth",     "1"         },
+  { 204, -1, 0, "CLCT_MOD", "modified_total_cloud_cover", "1"         },
 };
 
-static const PAR cosmo205[] = {
-  {   1, 0, "SYNME5", "synthetic satellite images Meteosat5", "-" },
-  {   2, 0, "SYNME6", "synthetic satellite images Meteosat6", "-" },
-  {   3, 0, "SYNME7", "synthetic satellite images Meteosat7", "-" },
-  {   4, 0, "SYNMSG", "synthetic satellite images MSG",       "-" },
+static const param_type cosmo205[] = {
+  {   1, -1, 0, "SYNME5", "synthetic satellite images Meteosat5", "-" },
+  {   2, -1, 0, "SYNME6", "synthetic satellite images Meteosat6", "-" },
+  {   3, -1, 0, "SYNME7", "synthetic satellite images Meteosat7", "-" },
+  {   4, -1, 0, "SYNMSG", "synthetic satellite images MSG",       "-" },
 };
 
-static const PAR cosmo250[] = {
-  {   1, 0, "QNH",       "sea level air pressure",                                         "hPa"                                },
-  {  11, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
-  {  12, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
-  {  13, 0, "D_T_2M_K",  "kalman correction to 2m temperature",                            "K"                                  },
-  {  14, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
-  {  15, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
-  {  16, 0, "RH_ICE",    "relative humidity over ice",                                     "%"                                  },
-  {  17, 0, "TD",        "dew point temperature",                                          "K"                                  },
-  {  18, 0, "D_TD",      "dew point depression",                                           "K"                                  },
-  {  19, 0, "THETAE",    "equivalent potential temperature",                               "K"                                  },
-  {  20, 0, "TD_2M_K",   "2m dew point temperature",                                       "K"                                  },
-  {  21, 0, "D_TD_2M_K", "kalman correction to 2m dew point temperature",                  "K"                                  },
-  {  22, 0, "TD_2M_OLD", "2m dew point temperature",                                       "K"                                  },
-  {  23, 0, "TD_2M_BUZ", "2m dew point temperature",                                       "K"                                  },
-  {  24, 0, "HI",        "heat index",                                                     "Fahrenheit"                         },
-  {  25, 0, "DURSUN_M",  "maximum duration of sunshine",                                   "s"                                  },
-  {  26, 0, "DURSUN_R",  "relative duration of sunshine",                                  "%"                                  },
-  {  52, 0, "RH_2M_K",   "2m relative humidity",                                           "%"                                  },
-  {  53, 0, "D_RH_2M_K", "kalman correction to 2m relative humidity",                      "%"                                  },
-  {  58, 0, "CLI_RATIO", "cloud ice ratio (Qi/Qc+Qi)",                                     "%"                                  },
-  {  61, 0, "TOT_SNOW",  "total precipitation in snow",                                    "kg/m**2"                            },
-  {  62, 0, "TOT_RAIN",  "total precipitation in rain",                                    "kg/m**2"                            },
-  {  63, 0, "TOT_CON",   "total convective precipitation",                                 "kg/m**2"                            },
-  {  64, 0, "TOT_GSP",   "total large scale precipitation",                                "kg/m**2"                            },
-  {  65, 0, "SNOW_%",    "percentage of precipitation in snow",                            "%"                                  },
-  {  66, 0, "CONV_%",    "percentage of convective precipitation",                         "%"                                  },
-  {  67, 0, "VORTP_ABS", "absolute",                                                       "VORTP_ABS 67 -1 absolute vorticity" },
-  {  68, 0, "VORTP_REL", "relative",                                                       "VORTP_REL 68 -1 relative vorticity" },
-  {  70, 0, "PDIFF_CON", "pressure difference between cloud base and cloud top",           "Pa"                                 },
-  {  71, 0, "TTOP_CON",  "temperature at cloud top",                                       "K"                                  },
-  {  80, 0, "GEM",       "emissivity of the ground",                                       "%"                                  },
-  {  82, 0, "Z0LOC",     "local surface roughness length",                                 "m"                                  },
-  { 110, 0, "LUM",       "luminosity",                                                     "klux"                               },
-  { 111, 0, "GLOB",      "global shortwave radiation at surface",                          "W/m**2"                             },
-  { 112, 0, "LW_IN_TG",  "incoming longwave radiation at surface",                         "W/m**2"                             },
-  { 113, 0, "LW_IN_TS",  "incoming longwave radiation at surface",                         "W/m**2"                             },
-  { 114, 0, "LW_IN_T2M", "incoming longwave radiation at surface",                         "W/m**2"                             },
-  { 115, 0, "SWISS_WE",  "Swiss",                                                          "SWISS_WE 115 1 Swiss coordinates"   },
-  { 116, 0, "SWISS_SN",  "Swiss",                                                          "SWISS_SN 116 1 Swiss coordinates"   },
-  { 150, 0, "KOINDEX",   "KO index",                                                       "K"                                  },
-  { 151, 0, "TTINDEX",   "total-totals index",                                             "K"                                  },
-  { 152, 0, "DCI",       "deep convection index",                                          "K"                                  },
-  { 153, 0, "SWEAT",     "severe weather thread index",                                    "undefined"                          },
-  { 154, 0, "ADEDO2",    "adedokun 2 index",                                               "K"                                  },
-  { 160, 0, "C_TSTORM",  "thunderstorm index using AdaBoost classifier",                   "undefined"                          },
-  { 161, 0, "CN_TSTORM", "thunderstorm probabilty using AdaBoost classifier",              "%"                                  },
-  { 200, 0, "WSHEARL",   "wind shear between surface and 3 km asl",                        "1/s"                                },
-  { 201, 0, "WSHEARM",   "wind shear between surface and 6 km asl",                        "1/s"                                },
-  { 202, 0, "WSHEARU",   "wind shear between 3 km (or surface) and 6 km asl",              "1/s"                                },
-  { 211, 0, "VWIN",      "maximum OLD turbulent wind gust in 10m",                         "m s-1"                              },
-  { 212, 0, "VW10M_20",  "maximum 10m wind speed",                                         "m s-1"                              },
-  { 213, 0, "VW10M_25",  "duration of VWIN_10M above 25 knots",                            "s"                                  },
-  { 214, 0, "VW10M_30",  "duration of VWIN_10M above 30 knots",                            "s"                                  },
-  { 215, 0, "VW10M_35",  "duration of VWIN_10M above 35 knots",                            "s"                                  },
-  { 216, 0, "VW10M_40",  "duration of VWIN_10M above 40 knots",                            "s"                                  },
-  { 217, 0, "VW10M_45",  "duration of VWIN_10M above 45 knots",                            "s"                                  },
-  { 218, 0, "VW10M_50",  "duration of VWIN_10M above 50 knots",                            "s"                                  },
-  { 219, 0, "VOLD",      "maximum turbulent wind gust in 10m",                             "m s-1"                              },
-  { 220, 0, "VJPS",      "maximum turbulent wind gust in 10m",                             "m s-1"                              },
-  { 221, 0, "VBRA",      "maximum Brasseur turbulent wind gust in 10m",                    "m s-1"                              },
-  { 222, 0, "VB10M_20",  "duration of VBRA_10M above 20 knots",                            "s"                                  },
-  { 223, 0, "VB10M_25",  "duration of VBRA_10M above 25 knots",                            "s"                                  },
-  { 224, 0, "VB10M_30",  "duration of VBRA_10M above 30 knots",                            "s"                                  },
-  { 225, 0, "VB10M_35",  "duration of VBRA_10M above 35 knots",                            "s"                                  },
-  { 226, 0, "VB10M_40",  "duration of VBRA_10M above 40 knots",                            "s"                                  },
-  { 227, 0, "VB10M_45",  "duration of VBRA_10M above 45 knots",                            "s"                                  },
-  { 228, 0, "VB10M_50",  "duration of VBRA_10M above 50 knots",                            "s"                                  },
-  { 231, 0, "VCON",      "maximum convective wind gust in 10m",                            "m s-1"                              },
-  { 232, 0, "VC10M_20",  "duration of VCON_10M above 20 knots",                            "s"                                  },
-  { 233, 0, "VC10M_25",  "duration of VCON_10M above 25 knots",                            "s"                                  },
-  { 234, 0, "VC10M_30",  "duration of VCON_10M above 30 knots",                            "s"                                  },
-  { 235, 0, "VC10M_35",  "duration of VCON_10M above 35 knots",                            "s"                                  },
-  { 236, 0, "VC10M_40",  "duration of VCON_10M above 40 knots",                            "s"                                  },
-  { 237, 0, "VC10M_45",  "duration of VCON_10M above 45 knots",                            "s"                                  },
-  { 238, 0, "VC10M_50",  "duration of VCON_10M above 50 knots",                            "s"                                  },
-  { 241, 0, "FMAX",      "maximum wind speed at k=ke",                                     "m s-1"                              },
-  { 242, 0, "USTARMAX",  "maximal u*=SQRT(Drag_coef)*fmax_10m",                            "m s-1"                              },
-  { 243, 0, "GLOB_DIF",  "global diffuse shortwave radiation at the surface",              "W/m**2"                             },
-  { 244, 0, "GLOB_DIR",  "global direct (beam) shortwave radiation at the surface",        "W/m**2"                             },
-  { 245, 0, "GLOB_vE",   "global shortwave radiation on a vertical surface facing east",   "W/m**2"                             },
-  { 246, 0, "GLOB_vS",   "global shortwave radiation on a vertical surface facing south",  "W/m**2"                             },
-  { 247, 0, "GLOB_vW",   "global shortwave radiation on a vertical surface facing west",   "W/m**2"                             },
-  { 248, 0, "GLOB_vN",   "global shortwave radiation on a vertical surface facing north",  "W/m**2"                             },
-  { 249, 0, "LW_TG_vS",  "incoming longwave radiation on a vertical surface facing south", "W/m**2"                             },
-  { 250, 0, "ENTH",      "enthalpy",                                                       "kJ/kg"                              },
-  { 251, 0, "ENTH",      "enthalpy",                                                       "kJ/kg"                              },
-  { 252, 0, "MIXRAT",    "mixing ratio",                                                   "g/kg"                               },
-  { 253, 0, "MIXRAT",    "mixing ratio",                                                   "g/kg"                               },
-  { 254, 0, "TW",        "wet bulb temperature",                                           "degC"                               },
-  { 255, 0, "TW",        "wet bulb temperature",                                           "degC"                               },
+static const param_type cosmo250[] = {
+  {   1, -1, 0, "QNH",       "sea level air pressure",                                         "hPa"                                },
+  {  11, -1, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
+  {  12, -1, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
+  {  13, -1, 0, "D_T_2M_K",  "kalman correction to 2m temperature",                            "K"                                  },
+  {  14, -1, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
+  {  15, -1, 0, "TSOIL",     "2m temperature",                                                 "K"                                  },
+  {  16, -1, 0, "RH_ICE",    "relative humidity over ice",                                     "%"                                  },
+  {  17, -1, 0, "TD",        "dew point temperature",                                          "K"                                  },
+  {  18, -1, 0, "D_TD",      "dew point depression",                                           "K"                                  },
+  {  19, -1, 0, "THETAE",    "equivalent potential temperature",                               "K"                                  },
+  {  20, -1, 0, "TD_2M_K",   "2m dew point temperature",                                       "K"                                  },
+  {  21, -1, 0, "D_TD_2M_K", "kalman correction to 2m dew point temperature",                  "K"                                  },
+  {  22, -1, 0, "TD_2M_OLD", "2m dew point temperature",                                       "K"                                  },
+  {  23, -1, 0, "TD_2M_BUZ", "2m dew point temperature",                                       "K"                                  },
+  {  24, -1, 0, "HI",        "heat index",                                                     "Fahrenheit"                         },
+  {  25, -1, 0, "DURSUN_M",  "maximum duration of sunshine",                                   "s"                                  },
+  {  26, -1, 0, "DURSUN_R",  "relative duration of sunshine",                                  "%"                                  },
+  {  52, -1, 0, "RH_2M_K",   "2m relative humidity",                                           "%"                                  },
+  {  53, -1, 0, "D_RH_2M_K", "kalman correction to 2m relative humidity",                      "%"                                  },
+  {  58, -1, 0, "CLI_RATIO", "cloud ice ratio (Qi/Qc+Qi)",                                     "%"                                  },
+  {  61, -1, 0, "TOT_SNOW",  "total precipitation in snow",                                    "kg/m**2"                            },
+  {  62, -1, 0, "TOT_RAIN",  "total precipitation in rain",                                    "kg/m**2"                            },
+  {  63, -1, 0, "TOT_CON",   "total convective precipitation",                                 "kg/m**2"                            },
+  {  64, -1, 0, "TOT_GSP",   "total large scale precipitation",                                "kg/m**2"                            },
+  {  65, -1, 0, "SNOW_%",    "percentage of precipitation in snow",                            "%"                                  },
+  {  66, -1, 0, "CONV_%",    "percentage of convective precipitation",                         "%"                                  },
+  {  67, -1, 0, "VORTP_ABS", "absolute",                                                       "VORTP_ABS 67 -1 absolute vorticity" },
+  {  68, -1, 0, "VORTP_REL", "relative",                                                       "VORTP_REL 68 -1 relative vorticity" },
+  {  70, -1, 0, "PDIFF_CON", "pressure difference between cloud base and cloud top",           "Pa"                                 },
+  {  71, -1, 0, "TTOP_CON",  "temperature at cloud top",                                       "K"                                  },
+  {  80, -1, 0, "GEM",       "emissivity of the ground",                                       "%"                                  },
+  {  82, -1, 0, "Z0LOC",     "local surface roughness length",                                 "m"                                  },
+  { 110, -1, 0, "LUM",       "luminosity",                                                     "klux"                               },
+  { 111, -1, 0, "GLOB",      "global shortwave radiation at surface",                          "W/m**2"                             },
+  { 112, -1, 0, "LW_IN_TG",  "incoming longwave radiation at surface",                         "W/m**2"                             },
+  { 113, -1, 0, "LW_IN_TS",  "incoming longwave radiation at surface",                         "W/m**2"                             },
+  { 114, -1, 0, "LW_IN_T2M", "incoming longwave radiation at surface",                         "W/m**2"                             },
+  { 115, -1, 0, "SWISS_WE",  "Swiss",                                                          "SWISS_WE 115 1 Swiss coordinates"   },
+  { 116, -1, 0, "SWISS_SN",  "Swiss",                                                          "SWISS_SN 116 1 Swiss coordinates"   },
+  { 150, -1, 0, "KOINDEX",   "KO index",                                                       "K"                                  },
+  { 151, -1, 0, "TTINDEX",   "total-totals index",                                             "K"                                  },
+  { 152, -1, 0, "DCI",       "deep convection index",                                          "K"                                  },
+  { 153, -1, 0, "SWEAT",     "severe weather thread index",                                    "undefined"                          },
+  { 154, -1, 0, "ADEDO2",    "adedokun 2 index",                                               "K"                                  },
+  { 160, -1, 0, "C_TSTORM",  "thunderstorm index using AdaBoost classifier",                   "undefined"                          },
+  { 161, -1, 0, "CN_TSTORM", "thunderstorm probabilty using AdaBoost classifier",              "%"                                  },
+  { 200, -1, 0, "WSHEARL",   "wind shear between surface and 3 km asl",                        "1/s"                                },
+  { 201, -1, 0, "WSHEARM",   "wind shear between surface and 6 km asl",                        "1/s"                                },
+  { 202, -1, 0, "WSHEARU",   "wind shear between 3 km (or surface) and 6 km asl",              "1/s"                                },
+  { 211, -1, 0, "VWIN",      "maximum OLD turbulent wind gust in 10m",                         "m s-1"                              },
+  { 212, -1, 0, "VW10M_20",  "maximum 10m wind speed",                                         "m s-1"                              },
+  { 213, -1, 0, "VW10M_25",  "duration of VWIN_10M above 25 knots",                            "s"                                  },
+  { 214, -1, 0, "VW10M_30",  "duration of VWIN_10M above 30 knots",                            "s"                                  },
+  { 215, -1, 0, "VW10M_35",  "duration of VWIN_10M above 35 knots",                            "s"                                  },
+  { 216, -1, 0, "VW10M_40",  "duration of VWIN_10M above 40 knots",                            "s"                                  },
+  { 217, -1, 0, "VW10M_45",  "duration of VWIN_10M above 45 knots",                            "s"                                  },
+  { 218, -1, 0, "VW10M_50",  "duration of VWIN_10M above 50 knots",                            "s"                                  },
+  { 219, -1, 0, "VOLD",      "maximum turbulent wind gust in 10m",                             "m s-1"                              },
+  { 220, -1, 0, "VJPS",      "maximum turbulent wind gust in 10m",                             "m s-1"                              },
+  { 221, -1, 0, "VBRA",      "maximum Brasseur turbulent wind gust in 10m",                    "m s-1"                              },
+  { 222, -1, 0, "VB10M_20",  "duration of VBRA_10M above 20 knots",                            "s"                                  },
+  { 223, -1, 0, "VB10M_25",  "duration of VBRA_10M above 25 knots",                            "s"                                  },
+  { 224, -1, 0, "VB10M_30",  "duration of VBRA_10M above 30 knots",                            "s"                                  },
+  { 225, -1, 0, "VB10M_35",  "duration of VBRA_10M above 35 knots",                            "s"                                  },
+  { 226, -1, 0, "VB10M_40",  "duration of VBRA_10M above 40 knots",                            "s"                                  },
+  { 227, -1, 0, "VB10M_45",  "duration of VBRA_10M above 45 knots",                            "s"                                  },
+  { 228, -1, 0, "VB10M_50",  "duration of VBRA_10M above 50 knots",                            "s"                                  },
+  { 231, -1, 0, "VCON",      "maximum convective wind gust in 10m",                            "m s-1"                              },
+  { 232, -1, 0, "VC10M_20",  "duration of VCON_10M above 20 knots",                            "s"                                  },
+  { 233, -1, 0, "VC10M_25",  "duration of VCON_10M above 25 knots",                            "s"                                  },
+  { 234, -1, 0, "VC10M_30",  "duration of VCON_10M above 30 knots",                            "s"                                  },
+  { 235, -1, 0, "VC10M_35",  "duration of VCON_10M above 35 knots",                            "s"                                  },
+  { 236, -1, 0, "VC10M_40",  "duration of VCON_10M above 40 knots",                            "s"                                  },
+  { 237, -1, 0, "VC10M_45",  "duration of VCON_10M above 45 knots",                            "s"                                  },
+  { 238, -1, 0, "VC10M_50",  "duration of VCON_10M above 50 knots",                            "s"                                  },
+  { 241, -1, 0, "FMAX",      "maximum wind speed at k=ke",                                     "m s-1"                              },
+  { 242, -1, 0, "USTARMAX",  "maximal u*=SQRT(Drag_coef)*fmax_10m",                            "m s-1"                              },
+  { 243, -1, 0, "GLOB_DIF",  "global diffuse shortwave radiation at the surface",              "W/m**2"                             },
+  { 244, -1, 0, "GLOB_DIR",  "global direct (beam) shortwave radiation at the surface",        "W/m**2"                             },
+  { 245, -1, 0, "GLOB_vE",   "global shortwave radiation on a vertical surface facing east",   "W/m**2"                             },
+  { 246, -1, 0, "GLOB_vS",   "global shortwave radiation on a vertical surface facing south",  "W/m**2"                             },
+  { 247, -1, 0, "GLOB_vW",   "global shortwave radiation on a vertical surface facing west",   "W/m**2"                             },
+  { 248, -1, 0, "GLOB_vN",   "global shortwave radiation on a vertical surface facing north",  "W/m**2"                             },
+  { 249, -1, 0, "LW_TG_vS",  "incoming longwave radiation on a vertical surface facing south", "W/m**2"                             },
+  { 250, -1, 0, "ENTH",      "enthalpy",                                                       "kJ/kg"                              },
+  { 251, -1, 0, "ENTH",      "enthalpy",                                                       "kJ/kg"                              },
+  { 252, -1, 0, "MIXRAT",    "mixing ratio",                                                   "g/kg"                               },
+  { 253, -1, 0, "MIXRAT",    "mixing ratio",                                                   "g/kg"                               },
+  { 254, -1, 0, "TW",        "wet bulb temperature",                                           "degC"                               },
+  { 255, -1, 0, "TW",        "wet bulb temperature",                                           "degC"                               },
 };
 
 
 static
 void tableDefault(void)
 {
-  int tableID, instID, modelID;
-
-
-  /*
-   *  define table : echam4
-   */
-
-  instID  = institutInq(98, 255, "MPIMET", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(98, 255, "MPIMET", NULL);
-
-  modelID = modelInq(instID, 0, "ECHAM4");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "ECHAM4");
-
-  tableID = tableDef(modelID, 128, "echam4");
-
-  tableLink(tableID, echam4, sizeof(echam4) / sizeof(PAR));
-
-  /*
-   *  define table : echam5
-   */
-
-  instID  = institutInq(0, 0, "MPIMET", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MPIMET", NULL);
-
-  modelID = modelInq(instID, 0, "ECHAM5");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "ECHAM5");
-
-  tableID = tableDef(modelID, 128, "echam5");
-
-  tableLink(tableID, echam5, sizeof(echam5) / sizeof(PAR));
-
-  /*
-   *  define table : echam6
-   */
-
-  instID  = institutInq(0, 0, "MPIMET", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MPIMET", NULL);
 
-  modelID = modelInq(instID, 0, "ECHAM6");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "ECHAM6");
+  // define table : echam4
+  {
+    int instID  = institutInq(98, 255, "MPIMET", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(98, 255, "MPIMET", NULL);
 
-  tableID = tableDef(modelID, 128, "echam6");
+    int modelID = modelInq(instID, 0, "ECHAM4");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "ECHAM4");
 
-  tableLink(tableID, echam6, sizeof(echam6) / sizeof(PAR));
+    int tableID = tableDef(modelID, 128, "echam4");
 
-  /*
-   *  define table : mpiom1
-   */
+    tableLink(tableID, echam4, sizeof(echam4) / sizeof(param_type));
+  }
 
-  instID  = institutInq(0, 0, "MPIMET", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MPIMET", NULL);
+  // define table : echam5
+  {
+    int instID  = institutInq(0, 0, "MPIMET", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MPIMET", NULL);
 
-  modelID = modelInq(instID, 0, "MPIOM1");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "MPIOM1");
+    int modelID = modelInq(instID, 0, "ECHAM5");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "ECHAM5");
 
-  tableID = tableDef(modelID, 128, "mpiom1");
+    int tableID = tableDef(modelID, 128, "echam5");
 
-  tableLink(tableID, mpiom1, sizeof(mpiom1) / sizeof(PAR));
+    tableLink(tableID, echam5, sizeof(echam5) / sizeof(param_type));
+  }
 
-  /*
-   *  define table : ecmwf
-   */
+  // define table : echam6
+  {
+    int instID  = institutInq(0, 0, "MPIMET", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MPIMET", NULL);
 
-  instID  = institutInq(0, 0, "ECMWF", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "ECMWF", NULL);
+    int modelID = modelInq(instID, 0, "ECHAM6");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "ECHAM6");
 
-  modelID = modelInq(instID, 0, "");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "");
+    int tableID = tableDef(modelID, 128, "echam6");
 
-  tableID = tableDef(modelID, 128, "ecmwf");
+    tableLink(tableID, echam6, sizeof(echam6) / sizeof(param_type));
+  }
 
-  tableLink(tableID, ecmwf, sizeof(ecmwf) / sizeof(PAR));
+  // define table : mpiom1
+  {
+    int instID  = institutInq(0, 0, "MPIMET", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MPIMET", NULL);
 
-  /*
-   *  define table : remo
-   */
+    int modelID = modelInq(instID, 0, "MPIOM1");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "MPIOM1");
 
-  instID  = institutInq(0, 0, "MPIMET", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MPIMET", NULL);
+    int tableID = tableDef(modelID, 128, "mpiom1");
 
-  modelID = modelInq(instID, 0, "REMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "REMO");
+    tableLink(tableID, mpiom1, sizeof(mpiom1) / sizeof(param_type));
+  }
 
-  tableID = tableDef(modelID, 128, "remo");
+  // define table : ecmwf
+  {
+    int instID  = institutInq(0, 0, "ECMWF", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "ECMWF", NULL);
 
-  tableLink(tableID, remo, sizeof(remo) / sizeof(PAR));
+    int modelID = modelInq(instID, 0, "");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "");
 
-  /*
-   *  define table : cosmo002
-   */
+    int tableID = tableDef(modelID, 128, "ecmwf");
 
-  instID  = institutInq(0, 0, "MCH", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MCH", NULL);
+    tableLink(tableID, ecmwf, sizeof(ecmwf) / sizeof(param_type));
+  }
 
-  modelID = modelInq(instID, 0, "COSMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "COSMO");
+  // define table : remo
+  {
+    int instID  = institutInq(0, 0, "MPIMET", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MPIMET", NULL);
 
-  tableID = tableDef(modelID, 002, "cosmo002");
+    int modelID = modelInq(instID, 0, "REMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "REMO");
 
-  tableLink(tableID, cosmo002, sizeof(cosmo002) / sizeof(PAR));
+    int tableID = tableDef(modelID, 128, "remo");
 
-  /*
-   *  define table : cosmo201
-   */
+    tableLink(tableID, remo, sizeof(remo) / sizeof(param_type));
+  }
 
-  instID  = institutInq(0, 0, "MCH", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MCH", NULL);
+  // define table : cosmo002
+  {
+    int instID  = institutInq(0, 0, "MCH", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MCH", NULL);
 
-  modelID = modelInq(instID, 0, "COSMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "COSMO");
+    int modelID = modelInq(instID, 0, "COSMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "COSMO");
 
-  tableID = tableDef(modelID, 201, "cosmo201");
+    int tableID = tableDef(modelID, 002, "cosmo002");
 
-  tableLink(tableID, cosmo201, sizeof(cosmo201) / sizeof(PAR));
+    tableLink(tableID, cosmo002, sizeof(cosmo002) / sizeof(param_type));
+  }
 
-  /*
-   *  define table : cosmo202
-   */
+  // define table : cosmo201
+  {
+    int instID  = institutInq(0, 0, "MCH", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MCH", NULL);
 
-  instID  = institutInq(0, 0, "MCH", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MCH", NULL);
+    int modelID = modelInq(instID, 0, "COSMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "COSMO");
 
-  modelID = modelInq(instID, 0, "COSMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "COSMO");
+    int tableID = tableDef(modelID, 201, "cosmo201");
 
-  tableID = tableDef(modelID, 202, "cosmo202");
+    tableLink(tableID, cosmo201, sizeof(cosmo201) / sizeof(param_type));
+  }
 
-  tableLink(tableID, cosmo202, sizeof(cosmo202) / sizeof(PAR));
+  // define table : cosmo202
+  {
+    int instID  = institutInq(0, 0, "MCH", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MCH", NULL);
 
-  /*
-   *  define table : cosmo203
-   */
+    int modelID = modelInq(instID, 0, "COSMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "COSMO");
 
-  instID  = institutInq(0, 0, "MCH", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MCH", NULL);
+    int tableID = tableDef(modelID, 202, "cosmo202");
 
-  modelID = modelInq(instID, 0, "COSMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "COSMO");
+    tableLink(tableID, cosmo202, sizeof(cosmo202) / sizeof(param_type));
+  }
 
-  tableID = tableDef(modelID, 203, "cosmo203");
+  // define table : cosmo203
+  {
+    int instID  = institutInq(0, 0, "MCH", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MCH", NULL);
 
-  tableLink(tableID, cosmo203, sizeof(cosmo203) / sizeof(PAR));
+    int modelID = modelInq(instID, 0, "COSMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "COSMO");
 
-  /*
-   *  define table : cosmo205
-   */
+    int tableID = tableDef(modelID, 203, "cosmo203");
 
-  instID  = institutInq(0, 0, "MCH", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MCH", NULL);
+    tableLink(tableID, cosmo203, sizeof(cosmo203) / sizeof(param_type));
+  }
 
-  modelID = modelInq(instID, 0, "COSMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "COSMO");
+  // define table : cosmo205
+  {
+    int instID  = institutInq(0, 0, "MCH", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MCH", NULL);
 
-  tableID = tableDef(modelID, 205, "cosmo205");
+    int modelID = modelInq(instID, 0, "COSMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "COSMO");
 
-  tableLink(tableID, cosmo205, sizeof(cosmo205) / sizeof(PAR));
+    int tableID = tableDef(modelID, 205, "cosmo205");
 
-  /*
-   *  define table : cosmo250
-   */
+    tableLink(tableID, cosmo205, sizeof(cosmo205) / sizeof(param_type));
+  }
 
-  instID  = institutInq(0, 0, "MCH", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(0, 0, "MCH", NULL);
+  // define table : cosmo250
+  {
+    int instID  = institutInq(0, 0, "MCH", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(0, 0, "MCH", NULL);
 
-  modelID = modelInq(instID, 0, "COSMO");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "COSMO");
+    int modelID = modelInq(instID, 0, "COSMO");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "COSMO");
 
-  tableID = tableDef(modelID, 250, "cosmo250");
+    int tableID = tableDef(modelID, 250, "cosmo250");
 
-  tableLink(tableID, cosmo250, sizeof(cosmo250) / sizeof(PAR));
+    tableLink(tableID, cosmo250, sizeof(cosmo250) / sizeof(param_type));
+  }
 }
 
-#endif  /* _TABLE_H */
+#endif  /* TABLE_H */
diff --git a/libcdi/src/tablepar.h b/libcdi/src/tablepar.h
index 0223f6b..160d669 100644
--- a/libcdi/src/tablepar.h
+++ b/libcdi/src/tablepar.h
@@ -1,5 +1,5 @@
-#ifndef _TABLEPAR_H
-#define _TABLEPAR_H
+#ifndef TABLEPAR_H
+#define TABLEPAR_H
 
 enum {
   TABLE_DUP_NAME = 1 << 0,
@@ -9,18 +9,21 @@ enum {
 
 typedef struct
 {
-  int   id;	     /* Parameter number (GRIB) */
-  int dupflags;      /* keep track of which attributes got strdup'ed */
-  const char *name;	     /* Parameter name */
-  const char *longname;    /* Parameter long name */
-  const char *units;	     /* Parameter units */
+  int id;	        // Parameter number (GRIB)
+  int ltype;	        // Level type (GRIB)
+  int dupflags;         // keep track of which attributes got strdup'ed
+  const char *name;	// Parameter name
+  const char *longname; // Parameter long name
+  const char *units;	// Parameter units
 }
-PAR;
+param_type;
 
 
-static void tableLink(int tableID, const PAR *pars, int npars);
+static void tableLink(int tableID, const param_type *pars, int npars);
 int tableDef(int modelID, int tablegribID, const char *tablename);
 
+int tableInqParCode(int tableID, char *name, int *code);
+
 #endif
 /*
  * Local Variables:
diff --git a/libcdi/src/tsteps.c b/libcdi/src/tsteps.c
index 92273ec..c1c4fc6 100644
--- a/libcdi/src/tsteps.c
+++ b/libcdi/src/tsteps.c
@@ -53,7 +53,7 @@ int tstepsNewEntry(stream_t *streamptr)
 
   tstepsInitEntry(streamptr, tsID);
 
-  streamptr->tsteps[tsID].taxis.used = TRUE;
+  streamptr->tsteps[tsID].taxis.used = true;
 
   return (int)tsID;
 }
@@ -61,24 +61,20 @@ int tstepsNewEntry(stream_t *streamptr)
 
 void cdiCreateTimesteps(stream_t *streamptr)
 {
-  long ntsteps;
-  long tsID;
-
   if ( streamptr->ntsteps < 0 || streamptr->tstepsTableSize > 0 )
     return;
 
-  if ( streamptr->ntsteps == 0 ) ntsteps = 1;    /* <<<<<-------- */
-  else ntsteps = streamptr->ntsteps;
+  long ntsteps = (streamptr->ntsteps == 0) ? 1 : streamptr->ntsteps;
 
   streamptr->tsteps = (tsteps_t *) Malloc((size_t)ntsteps*sizeof(tsteps_t));
 
   streamptr->tstepsTableSize = (int)ntsteps;
   streamptr->tstepsNextID    = (int)ntsteps;
 
-  for ( tsID = 0; tsID < ntsteps; tsID++ )
+  for ( long tsID = 0; tsID < ntsteps; tsID++ )
     {
       tstepsInitEntry(streamptr, (size_t)tsID);
-      streamptr->tsteps[tsID].taxis.used = TRUE;
+      streamptr->tsteps[tsID].taxis.used = true;
     }
 }
 /*
diff --git a/libcdi/src/varscan.c b/libcdi/src/varscan.c
index c398508..56d5e06 100644
--- a/libcdi/src/varscan.c
+++ b/libcdi/src/varscan.c
@@ -578,7 +578,6 @@ int cmp_varname(const void *s1, const void *s2)
 
 void cdi_generate_vars(stream_t *streamptr)
 {
-  char name[CDI_MAX_NAME], longname[CDI_MAX_NAME], units[CDI_MAX_NAME];
   int vlistID = streamptr->vlistID;
 
   int *varids = (int *) Malloc(varTableUsed*sizeof(int));
@@ -734,7 +733,7 @@ void cdi_generate_vars(stream_t *streamptr)
 
       const char **cvals = NULL;
       const char *unitptr = cdiUnitNamePtr(vartable[varid].level_unit);
-      int zaxisID = varDefZaxis(vlistID, zaxistype, (int)nlevels, dlevels, cvals, lbounds, dlevels1, dlevels2,
+      int zaxisID = varDefZaxis(vlistID, zaxistype, (int)nlevels, dlevels, cvals, 0, lbounds, dlevels1, dlevels2,
                                 (int)Vctsize, Vct, NULL, NULL, unitptr, 0, 0, ltype1);
 
       if ( CDI_cmor_mode && nlevels == 1 && zaxistype != ZAXIS_HYBRID ) zaxisDefScalar(zaxisID);
@@ -794,7 +793,7 @@ void cdi_generate_vars(stream_t *streamptr)
 	  if ( vartable[varid].opt_grib_kvpair[i].keyword )
 	    vlistptr->vars[varID].opt_grib_kvpair[idx].keyword =
 	      strdupx(vartable[varid].opt_grib_kvpair[i].keyword);
-          vlistptr->vars[varID].opt_grib_kvpair[i].update = TRUE;
+          vlistptr->vars[varID].opt_grib_kvpair[i].update = true;
         }
       /* note: if the key is not defined, we do not throw an error! */
 
@@ -802,23 +801,18 @@ void cdi_generate_vars(stream_t *streamptr)
 	{
 	  int pdis, pcat, pnum;
 	  cdiDecodeParam(param, &pnum, &pcat, &pdis);
-	  if ( tableInqParNamePtr(cdiDefaultTableID, pnum) )
+          char name[CDI_MAX_NAME]; name[0] = 0;
+          char longname[CDI_MAX_NAME]; longname[0] = 0;
+          char units[CDI_MAX_NAME]; units[0] = 0;
+          tableInqEntry(cdiDefaultTableID, pnum, -1, name, longname, units);
+	  if ( name[0] )
 	    {
 	      if ( tableID != CDI_UNDEFID )
 		{
-		  strcpy(name, tableInqParNamePtr(cdiDefaultTableID, pnum));
 		  vlistDefVarName(vlistID, varID, name);
-		  if ( tableInqParLongnamePtr(cdiDefaultTableID, pnum) )
-		    {
-		      strcpy(longname, tableInqParLongnamePtr(cdiDefaultTableID, pnum));
-		      vlistDefVarLongname(vlistID, varID, longname);
-		    }
-		  if ( tableInqParUnitsPtr(cdiDefaultTableID, pnum) )
-		    {
-		      strcpy(units, tableInqParUnitsPtr(cdiDefaultTableID, pnum));
-		      vlistDefVarUnits(vlistID, varID, units);
-		    }
-		}
+                  if ( longname[0] ) vlistDefVarLongname(vlistID, varID, longname);
+                  if ( units[0] ) vlistDefVarUnits(vlistID, varID, units);
+                }
 	      else
 		tableID = cdiDefaultTableID;
 	    }
@@ -955,8 +949,7 @@ varDefZAxisSearch(int id, void *res, void *data)
 }
 
 
-int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, const char **cvals, bool lbounds,
-		const double *levels1, const double *levels2, int vctsize, const double *vct, char *name,
+int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, const char **cvals, size_t clength, bool lbounds,        const double *levels1, const double *levels2, int vctsize, const double *vct, char *name,
 		const char *longname, const char *units, int prec, int mode, int ltype1)
 {
   /*
@@ -1018,7 +1011,7 @@ int varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, c
 	      zaxisDefUbounds(zaxisID, levels2);
 	    }
 
-          if ( cvals ) zaxisDefCvals(zaxisID, cvals);
+          if ( cvals != NULL && nlevels != 0 && clength != 0 ) zaxisDefCvals(zaxisID, cvals, clength);
 
 	  if ( (zaxistype == ZAXIS_HYBRID || zaxistype == ZAXIS_HYBRID_HALF) && vctsize > 0 )
             zaxisDefVct(zaxisID, vctsize, vct);
@@ -1141,7 +1134,7 @@ void resize_vartable_opt_grib_entries(vartable_t *var, int nentries)
       for (i=var->opt_grib_kvpair_size; i<new_size; i++) {
         tmp[i].int_val =     0;
         tmp[i].dbl_val =     0;
-        tmp[i].update  = FALSE;
+        tmp[i].update  = false;
         tmp[i].keyword =  NULL;
       } // for
       var->opt_grib_kvpair_size = new_size;
diff --git a/libcdi/src/varscan.h b/libcdi/src/varscan.h
index f837ca1..68cfbda 100644
--- a/libcdi/src/varscan.h
+++ b/libcdi/src/varscan.h
@@ -15,7 +15,7 @@ void varAddRecord(int recID, int param, int gridID, int zaxistype, int lbounds,
 void varDefVCT(size_t vctsize, double *vctptr);
 void varDefZAxisReference(int nlev, int nvgrid, unsigned char uuid[CDI_UUID_SIZE]);
 
-int  varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, const char **cvals, bool lbounds,
+int  varDefZaxis(int vlistID, int zaxistype, int nlevels, const double *levels, const char **cvals, size_t clength, bool lbounds,
 		 const double *levels1, const double *levels2, int vctsize, const double *vct, char *name,
 		 const char *longname, const char *units, int prec, int mode, int ltype);
 
diff --git a/libcdi/src/vlist.c b/libcdi/src/vlist.c
index 6721087..b1302d4 100644
--- a/libcdi/src/vlist.c
+++ b/libcdi/src/vlist.c
@@ -37,7 +37,7 @@ static pthread_once_t  _vlist_init_thread = PTHREAD_ONCE_INIT;
 
 #else
 
-static int vlistIsInitialized = 0;
+static bool vlistIsInitialized = false;
 
 #  define VLIST_INIT()               \
   if ( !vlistIsInitialized ) vlist_initialize()
@@ -146,7 +146,7 @@ void vlist_initialize(void)
   char *env = getenv("VLIST_DEBUG");
   if ( env ) VLIST_Debug = atoi(env);
 #ifndef HAVE_LIBPTHREAD
-  vlistIsInitialized = TRUE;
+  vlistIsInitialized = true;
 #endif
 }
 
@@ -311,7 +311,7 @@ void var_copy_entries(var_t *var2, var_t *var1)
     if ( var1->opt_grib_kvpair[i].keyword != NULL ) {
       var2->opt_grib_kvpair[i]         = var1->opt_grib_kvpair[i];
       var2->opt_grib_kvpair[i].keyword = strdupx(var1->opt_grib_kvpair[i].keyword);
-      var2->opt_grib_kvpair[i].update  = TRUE;
+      var2->opt_grib_kvpair[i].update  = true;
       if ( CDI_Debug )  Message("done.");
     }
     else {
@@ -405,12 +405,12 @@ void vlistClearFlag(int vlistID)
 
   for ( int varID = 0; varID < vlistptr->nvars; varID++ )
     {
-      vlistptr->vars[varID].flag = FALSE;
+      vlistptr->vars[varID].flag = false;
       if ( vlistptr->vars[varID].levinfo )
         {
           int nlevs = zaxisInqSize(vlistptr->vars[varID].zaxisID);
           for ( int levID = 0; levID < nlevs; levID++ )
-            vlistptr->vars[varID].levinfo[levID].flag = FALSE;
+            vlistptr->vars[varID].levinfo[levID].flag = false;
         }
     }
 }
@@ -443,7 +443,8 @@ vgzZAxisSearch(int id, void *res, void *data)
 
 static
 int vlist_generate_zaxis(int vlistID, int zaxistype, int nlevels, const double *levels,
-                         const double *lbounds, const double *ubounds, int vctsize, const double *vct)
+                         const double *lbounds, const double *ubounds, int vctsize, const double *vct,
+                         const char **cvals, size_t clen)
 {
   int zaxisID = CDI_UNDEFID;
   bool zaxisdefined = false;
@@ -485,6 +486,10 @@ int vlist_generate_zaxis(int vlistID, int zaxistype, int nlevels, const double *
 	{
 	  zaxisID = zaxisCreate(zaxistype, nlevels);
 	  zaxisDefLevels(zaxisID, levels);
+
+          if ( zaxistype == ZAXIS_CHAR )
+            zaxisDefCvals(zaxisID, cvals, clen);
+
 	  if ( has_bounds )
 	    {
 	      zaxisDefLbounds(zaxisID, lbounds);
@@ -537,7 +542,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
       vlistptr2->nzaxis = 0;
 
       for ( int varID = 0; varID < nvars; varID++ )
-        nvars2 += (vars1[varID].flag != 0);
+        nvars2 += vars1[varID].flag;
 
       vlistptr2->nvars = nvars2;
       vlistptr2->varsAllocated = nvars2;
@@ -552,7 +557,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
       for ( int varID = 0; varID < nvars; varID++ )
 	if ( vars1[varID].flag )
 	  {
-	    vlistptr2->vars[varID2].flag = FALSE;
+	    vlistptr2->vars[varID2].flag = false;
 	    int zaxisID   = vlistptr1->vars[varID].zaxisID;
 	    int gridID    = vlistptr1->vars[varID].gridID;
 	    int subtypeID = vlistptr1->vars[varID].subtypeID;
@@ -573,7 +578,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
 	    int nlevs2 = 0;
             if ( vars1[varID].levinfo )
               for ( int levID = 0; levID < nlevs; levID++ )
-                nlevs2 += (vars1[varID].levinfo[levID].flag != 0);
+                nlevs2 += vars1[varID].levinfo[levID].flag;
 
 	    vars2[varID2].levinfo = (levinfo_t *) Malloc((size_t)nlevs2 * sizeof(levinfo_t));
 
@@ -581,6 +586,8 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
 	      {
 		int nvct = 0;
                 double *levels = NULL;
+                char **cvals1 = NULL, **cvals2 = NULL;
+                size_t clen2 = 0;
 		double *lbounds = NULL, *ubounds = NULL;
 		const double *vct = NULL;
                 char ctemp[CDI_MAX_NAME];
@@ -598,6 +605,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                       vars1[varID].levinfo[levID].mlevelID = levID2;
                     }
 
+
                 if ( zaxisInqLevels(zaxisID, NULL) )
                   {
                     levels = (double *) Malloc((size_t)nlevs2 * sizeof (double));
@@ -605,9 +613,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                     levID2 = 0;
                     for ( int levID = 0; levID < nlevs; ++levID )
                       if ( vars1[varID].levinfo[levID].flag )
-                        {
-                          levels[levID2++] = zaxisInqLevel(zaxisID, levID);
-                        }
+                        levels[levID2++] = zaxisInqLevel(zaxisID, levID);
                   }
 
                 if ( zaxisType == ZAXIS_HYBRID )
@@ -616,6 +622,31 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                     vct  = zaxisInqVctPtr(zaxisID);
                   }
 
+                if ( zaxisType == ZAXIS_CHAR )
+                  {
+                    cvals1 = zaxisInqCValsPtr(zaxisID);
+                    size_t clen1 = (size_t)zaxisInqCLen(zaxisID);
+                    for ( int levID = 0; levID < nlevs; ++levID )
+                      if ( vars1[varID].levinfo[levID].flag )
+                          {
+                            size_t testlen = clen1;
+                            while ( cvals1[levID][testlen] == ' ' )
+                              testlen--;
+                            if ( clen2 < testlen )
+                              clen2 = testlen;
+                          }
+                    cvals2 = (char **) Malloc((size_t)nlevs2 * sizeof (char *));
+                    levID2 = 0;
+
+                    for ( int levID = 0; levID < nlevs; ++levID )
+                      if ( vars1[varID].levinfo[levID].flag )
+                        {
+                          cvals2[levID2] = Malloc((size_t)(clen2) * sizeof (char));
+                          memcpy(cvals2[levID2], cvals1[levID], clen2*sizeof(char));
+                          levID2++;
+                        }
+                  }
+
                 if ( zaxisInqLbounds(zaxisID, NULL) && zaxisInqUbounds(zaxisID, NULL) )
                   {
                     lbounds = (double *) Malloc(2 * (size_t)nlevs2 * sizeof (double));
@@ -639,9 +670,15 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                     Free(lbounds1);
                   }
 
-		int zaxisID2 = vlist_generate_zaxis(vlistID2, zaxisType, nlevs2, levels, lbounds, ubounds, nvct, vct);
+		int zaxisID2 = vlist_generate_zaxis(vlistID2, zaxisType, nlevs2, levels, lbounds, ubounds, nvct, vct, (const char **)cvals2, clen2);
 		if ( levels )  Free(levels);
                 if ( lbounds ) Free(lbounds);
+                if ( cvals2 )
+                  {
+                    for ( int levID = 0; levID < nlevs2; ++levID )
+                      Free(cvals2[levID]);
+                    Free(cvals2);
+                  }
 
                 zaxisInqName(zaxisID, ctemp);
                 zaxisDefName(zaxisID2, ctemp);
@@ -650,6 +687,14 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
                 zaxisInqUnits(zaxisID, ctemp);
                 zaxisDefUnits(zaxisID2, ctemp);
 
+                if ( zaxisType == ZAXIS_CHAR )
+                  {
+                    char dimname[CDI_MAX_NAME+3]; dimname[0] = 0;
+                    cdiZaxisInqKeyStr(zaxisID, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
+                    if ( dimname[0] == 0 ) { memcpy(dimname, "area_type", 10); dimname[10] = 0; }
+                    cdiZaxisDefKeyStr(zaxisID2, CDI_KEY_DIMNAME, CDI_MAX_NAME, dimname);
+                  }
+
                 if ( zaxisType == ZAXIS_GENERIC ) zaxisDefLtype(zaxisID2, zaxisInqLtype(zaxisID));
 
 		zaxisID = zaxisID2;
@@ -658,7 +703,7 @@ void vlistCopyFlag(int vlistID2, int vlistID1)
 
 	    for ( int levID = 0; levID < nlevs2; levID++ )
 	      {
-		vars2[varID2].levinfo[levID].flag  = FALSE;
+		vars2[varID2].levinfo[levID].flag  = false;
 		vars2[varID2].levinfo[levID].index = -1;
 	      }
 
@@ -1451,17 +1496,17 @@ int vlistSubtypeIndex(int vlistID, int subtypeID)
 
 int vlistHasTime(int vlistID)
 {
-  int hastime = FALSE;
+  bool hastime = false;
   vlist_t *vlistptr = vlist_to_pointer(vlistID);
 
   for ( int varID = 0; varID <  vlistptr->nvars; varID++ )
     if ( vlistptr->vars[varID].tsteptype != TSTEP_CONSTANT )
       {
-        hastime = TRUE;
+        hastime = true;
         break;
       }
 
-  return hastime;
+  return (int)hastime;
 }
 
 enum {
@@ -1572,7 +1617,7 @@ void resize_opt_grib_entries(var_t *var, int nentries)
       for (i=var->opt_grib_kvpair_size; i<new_size; i++) {
         tmp[i].int_val =     0;
         tmp[i].dbl_val =     0;
-        tmp[i].update  = FALSE;
+        tmp[i].update  = false;
         tmp[i].keyword =  NULL;
       } // for
       var->opt_grib_kvpair_size = new_size;
diff --git a/libcdi/src/vlist.h b/libcdi/src/vlist.h
index bcba360..c2eea4c 100644
--- a/libcdi/src/vlist.h
+++ b/libcdi/src/vlist.h
@@ -22,7 +22,7 @@
 
 typedef struct
 {
-  int      flag;
+  bool     flag;
   int      index;
   int      mlevelID;
   int      flevelID;
@@ -48,7 +48,7 @@ ensinfo_t;
 typedef struct
 {
   bool        isUsed;
-  int         flag;
+  bool        flag;
   int         mvarID;
   int         fvarID;
   int         param;
@@ -65,8 +65,8 @@ typedef struct
   int         productDefinitionTemplate;
   int         chunktype;
   int         xyz;
-  int         missvalused; /* TRUE if missval is defined */
-  int         lvalidrange;
+  bool        missvalused; /* true if missval is defined */
+  bool        lvalidrange;
   char       *name;
   char       *longname;
   char       *stdname;
@@ -122,7 +122,6 @@ vlist_t *vlist_to_pointer(int vlistID);
 void cdiVlistMakeInternal(int vlistID);
 void cdiVlistMakeImmutable(int vlistID);
 void vlistCheckVarID(const char *caller, int vlistID, int varID);
-const char *vlistInqVarStdnamePtr(int vlistID, int varID);
 void     vlistDestroyVarName(int vlistID, int varID);
 void     vlistDestroyVarLongname(int vlistID, int varID);
 void     vlistDestroyVarStdname(int vlistID, int varID);
diff --git a/libcdi/src/vlist_var.c b/libcdi/src/vlist_var.c
index 9b5b78e..eb753ac 100644
--- a/libcdi/src/vlist_var.c
+++ b/libcdi/src/vlist_var.c
@@ -11,6 +11,7 @@
 #include "vlist_var.h"
 #include "resource_handle.h"
 #include "cdi_att.h"
+#include "tablepar.h"
 #include "namespace.h"
 #include "serialize.h"
 #include "error.h"
@@ -44,7 +45,7 @@ void vlistvarInitEntry(int vlistID, int varID)
   vlistptr->vars[varID].instID        = CDI_UNDEFID;
   vlistptr->vars[varID].modelID       = CDI_UNDEFID;
   vlistptr->vars[varID].tableID       = CDI_UNDEFID;
-  vlistptr->vars[varID].missvalused   = FALSE;
+  vlistptr->vars[varID].missvalused   = false;
   vlistptr->vars[varID].missval       = cdiDefaultMissval;
   vlistptr->vars[varID].addoffset     = 0.0;
   vlistptr->vars[varID].scalefactor   = 1.0;
@@ -58,7 +59,7 @@ void vlistvarInitEntry(int vlistID, int varID)
   vlistptr->vars[varID].complevel     = 1;
   vlistptr->vars[varID].atts.nalloc   = MAX_ATTRIBUTES;
   vlistptr->vars[varID].atts.nelems   = 0;
-  vlistptr->vars[varID].lvalidrange   = 0;
+  vlistptr->vars[varID].lvalidrange   = false;
   vlistptr->vars[varID].validrange[0] = VALIDMISS;
   vlistptr->vars[varID].validrange[1] = VALIDMISS;
   vlistptr->vars[varID].ensdata       = NULL;
@@ -438,36 +439,6 @@ const char *vlistInqVarNamePtr(int vlistID, int varID)
   return vlistptr->vars[varID].name;
 }
 
-
-const char *vlistInqVarLongnamePtr(int vlistID, int varID)
-{
-  vlist_t *vlistptr = vlist_to_pointer(vlistID);
-
-  vlistCheckVarID(__func__, vlistID, varID);
-
-  return vlistptr->vars[varID].longname;
-}
-
-
-const char *vlistInqVarStdnamePtr(int vlistID, int varID)
-{
-  vlist_t *vlistptr = vlist_to_pointer(vlistID);
-
-  vlistCheckVarID(__func__, vlistID, varID);
-
-  return vlistptr->vars[varID].stdname;
-}
-
-
-const char *vlistInqVarUnitsPtr(int vlistID, int varID)
-{
-  vlist_t *vlistptr = vlist_to_pointer(vlistID);
-
-  vlistCheckVarID(__func__, vlistID, varID);
-
-  return vlistptr->vars[varID].units;
-}
-
 /*
 @Function  vlistInqVarName
 @Title     Get the name of a Variable
@@ -504,8 +475,9 @@ void vlistInqVarName(int vlistID, int varID, char *name)
 	{
 	  int code = pnum;
 	  int tableID = vlistptr->vars[varID].tableID;
-	  if ( tableInqParName(tableID, code, name) != 0 )
-	    sprintf(name, "var%d", code);
+          name[0] = 0;
+          tableInqEntry(tableID, code, -1, name, NULL, NULL);
+	  if ( !name[0] ) sprintf(name, "var%d", code);
 	}
       else
 	{
@@ -541,24 +513,29 @@ char* vlistCopyVarName(int vlistId, int varId)
   vlistCheckVarID(__func__, vlistId, varId);
 
   //If a name is set in the variable description, use that.
-  const char* name = vlistptr->vars[varId].name;
-  if(name) return strdup(name);
+  {
+    const char* name = vlistptr->vars[varId].name;
+    if (name) return strdup(name);
+  }
 
   //Otherwise we check if we should use the table of parameter descriptions.
   int param = vlistptr->vars[varId].param;
   int discipline, category, number;
   cdiDecodeParam(param, &number, &category, &discipline);
   char *result = NULL;
-  if(discipline == 255)
+  if (discipline == 255)
     {
       int tableId = vlistptr->vars[varId].tableID;
-      if(( name = tableInqParNamePtr(tableId, number) ))
+      char name[CDI_MAX_NAME]; name[0] = 0;
+      tableInqEntry(tableId, number, -1, name, NULL, NULL);
+      if ( name[0] )
         result = strdup(name);
-      {
-        //No luck, fall back to outputting a name of the format "var<num>".
-        result = (char *) Malloc(3 + 3 * sizeof (int) * CHAR_BIT / 8 + 2);
-        sprintf(result, "var%d", number);
-      }
+      else
+        {
+          //No luck, fall back to outputting a name of the format "var<num>".
+          result = (char *) Malloc(3 + 3 * sizeof (int) * CHAR_BIT / 8 + 2);
+          sprintf(result, "var%d", number);
+        }
     }
   else
     {
@@ -607,8 +584,7 @@ void vlistInqVarLongname(int vlistID, int varID, char *longname)
 	{
 	  int code = pnum;
           int tableID = vlistptr->vars[varID].tableID;
-	  if ( tableInqParLongname(tableID, code, longname) != 0 )
-	    longname[0] = '\0';
+          tableInqEntry(tableID, code, -1, NULL, longname, NULL);
 	}
     }
   else
@@ -692,8 +668,7 @@ void vlistInqVarUnits(int vlistID, int varID, char *units)
 	{
 	  int code = pnum;
 	  int tableID = vlistptr->vars[varID].tableID;
-	  if ( tableInqParUnits(tableID, code, units) != 0 )
-	    units[0] = '\0';
+          tableInqEntry(tableID, code, -1, NULL, NULL, units);
 	}
     }
   else
@@ -807,7 +782,7 @@ void vlistDefVarDatatype(int vlistID, int varID, int datatype)
     {
       vlistptr->vars[varID].datatype = datatype;
 
-      if ( vlistptr->vars[varID].missvalused == FALSE )
+      if ( !vlistptr->vars[varID].missvalused )
         switch (datatype)
           {
           case CDI_DATATYPE_INT8:   vlistptr->vars[varID].missval = -SCHAR_MAX; break;
@@ -1067,7 +1042,7 @@ void vlistDefVarMissval(int vlistID, int varID, double missval)
   vlistCheckVarID(__func__, vlistID, varID);
 
   vlistptr->vars[varID].missval = missval;
-  vlistptr->vars[varID].missvalused = TRUE;
+  vlistptr->vars[varID].missvalused = true;
 }
 
 /*
@@ -1152,7 +1127,7 @@ int vlistInqVarValidrange(int vlistID, int varID, double *validrange)
       validrange[1] = vlistptr->vars[varID].validrange[1];
     }
 
-  return vlistptr->vars[varID].lvalidrange;
+  return (int)vlistptr->vars[varID].lvalidrange;
 }
 
 
@@ -1164,7 +1139,7 @@ void vlistDefVarValidrange(int vlistID, int varID, const double *validrange)
 
   vlistptr->vars[varID].validrange[0] = validrange[0];
   vlistptr->vars[varID].validrange[1] = validrange[1];
-  vlistptr->vars[varID].lvalidrange = TRUE;
+  vlistptr->vars[varID].lvalidrange = true;
   reshSetStatus(vlistID, &vlistOps, RESH_DESYNC_IN_USE);
 }
 
@@ -1381,7 +1356,7 @@ void vlistDestroyVarUnits(int vlistID, int varID)
 int vlistInqVarMissvalUsed(int vlistID, int varID)
 {
   vlist_t *vlistptr = vlist_to_pointer(vlistID);
-  return vlistptr->vars[varID].missvalused;
+  return (int)vlistptr->vars[varID].missvalused;
 }
 
 
@@ -1792,7 +1767,7 @@ void vlistDefVarIntKey(int vlistID, int varID, const char *name, int value)
   if ( idx < vlistptr->vars[varID].opt_grib_nentries )
     {
       vlistptr->vars[varID].opt_grib_kvpair[idx].int_val = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = true;
     }
   else
     {
@@ -1801,7 +1776,7 @@ void vlistDefVarIntKey(int vlistID, int varID, const char *name, int value)
       idx = vlistptr->vars[varID].opt_grib_nentries -1;
       vlistptr->vars[varID].opt_grib_kvpair[idx].data_type   = t_int;
       vlistptr->vars[varID].opt_grib_kvpair[idx].int_val     = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update      = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update      = true;
       if ( name )
         vlistptr->vars[varID].opt_grib_kvpair[idx].keyword = strdupx(name);
       else
@@ -1855,7 +1830,7 @@ void vlistDefVarDblKey(int vlistID, int varID, const char *name, double value)
   if ( idx < vlistptr->vars[varID].opt_grib_nentries )
     {
       vlistptr->vars[varID].opt_grib_kvpair[idx].dbl_val = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update  = true;
     }
   else
     {
@@ -1864,7 +1839,7 @@ void vlistDefVarDblKey(int vlistID, int varID, const char *name, double value)
       idx = vlistptr->vars[varID].opt_grib_nentries - 1;
       vlistptr->vars[varID].opt_grib_kvpair[idx].data_type = t_double;
       vlistptr->vars[varID].opt_grib_kvpair[idx].dbl_val   = value;
-      vlistptr->vars[varID].opt_grib_kvpair[idx].update    = TRUE;
+      vlistptr->vars[varID].opt_grib_kvpair[idx].update    = true;
       if ( name )
         vlistptr->vars[varID].opt_grib_kvpair[idx].keyword = strdupx(name);
       else
@@ -2116,7 +2091,7 @@ void vlistVarPack(vlist_t *p, int varID, char * buf, int size, int *position,
   tempbuf[12] = var->tableID;
   tempbuf[13] = var->timave;
   tempbuf[14] = var->timaccu;
-  tempbuf[15] = var->missvalused;
+  tempbuf[15] = (int)var->missvalused;
   tempbuf[16] = var->comptype;
   tempbuf[17] = var->complevel;
   int nlevs = var->levinfo ? zaxisInqSize(var->zaxisID) : 0;
diff --git a/libcdi/src/vlist_var.h b/libcdi/src/vlist_var.h
index baba96a..0c2493e 100644
--- a/libcdi/src/vlist_var.h
+++ b/libcdi/src/vlist_var.h
@@ -20,6 +20,8 @@ int  vlistInqVarIOrank    ( int, int );
 
 void cdiVlistCreateVarLevInfo(vlist_t *vlistptr, int varID);
 
+const char *vlistInqVarNamePtr(int vlistID, int varID);
+
 #endif
 /*
  * Local Variables:
diff --git a/libcdi/src/zaxis.c b/libcdi/src/zaxis.c
index fab24c5..9d28e0c 100644
--- a/libcdi/src/zaxis.c
+++ b/libcdi/src/zaxis.c
@@ -129,6 +129,7 @@ void zaxis_init(zaxis_t *zaxisptr)
   zaxisptr->p0value.defined = false;
   zaxisptr->vals          = NULL;
   zaxisptr->cvals         = NULL;
+  zaxisptr->clength       = 0;
   zaxisptr->ubounds       = NULL;
   zaxisptr->lbounds       = NULL;
   zaxisptr->weights       = NULL;
@@ -273,7 +274,12 @@ void zaxisDestroyKernel( zaxis_t * zaxisptr )
   int id = zaxisptr->self;
 
   if ( zaxisptr->vals )    Free( zaxisptr->vals );
-  if ( zaxisptr->cvals )   Free( zaxisptr->cvals );
+  if ( zaxisptr->cvals )
+    {
+      for ( int i=0; i<zaxisptr->size; i++)
+        Free(zaxisptr->cvals[i]);
+      Free( zaxisptr->cvals );
+    }
   if ( zaxisptr->lbounds ) Free( zaxisptr->lbounds );
   if ( zaxisptr->ubounds ) Free( zaxisptr->ubounds );
   if ( zaxisptr->weights ) Free( zaxisptr->weights );
@@ -777,20 +783,21 @@ void zaxisDefLevels(int zaxisID, const double *levels)
 }
 
 
-void zaxisDefCvals(int zaxisID, const char **cvals)
+void zaxisDefCvals(int zaxisID, const char **cvals, size_t clen)
 {
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
   size_t size = (size_t)zaxisptr->size;
 
-  if ( cvals )
+  if ( cvals && clen )
     {
-      if ( zaxisptr->cvals != NULL )
-        zaxisptr->cvals = NULL;
+      zaxisptr->clength = clen;
       zaxisptr->cvals = (char**) Malloc(size*sizeof(char *));
 
       for ( size_t ilev = 0; ilev < size; ++ilev )
-        zaxisptr->cvals[ilev] = strdup(cvals[ilev]);
-
+        {
+          zaxisptr->cvals[ilev] = Malloc(clen*sizeof(char));
+          memcpy(zaxisptr->cvals[ilev],cvals[ilev], clen*sizeof(char));
+        }
       reshSetStatus(zaxisID, &zaxisOps, RESH_DESYNC_IN_USE);
     }
 }
@@ -988,6 +995,15 @@ const double *zaxisInqLevelsPtr(int zaxisID)
   return zaxisptr->vals;
 }
 
+
+char **zaxisInqCValsPtr(int zaxisID)
+{
+  char **cvals = NULL;
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+  cvals = zaxisptr->cvals;
+  return cvals;
+}
+
 /*
 @Function  zaxisInqLevels
 @Title     Get all levels of a Z-axis
@@ -1022,6 +1038,40 @@ int zaxisInqLevels(int zaxisID, double *levels)
   return size;
 }
 
+int zaxisInqCLen(int zaxisID)
+{
+  int size = 0;
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+
+  if ( zaxisptr->cvals && zaxisptr->clength)
+    size = zaxisptr->clength;
+  return size;
+}
+
+int zaxisInqCVals(int zaxisID, char ***clevels)
+{
+  int size = 0;
+  size_t clen = 0;
+  zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
+
+  if ( zaxisptr->cvals )
+    {
+      size = zaxisptr->size;
+      clen = zaxisptr->clength;
+      if ( size && clen )
+        {
+          (*clevels) = Malloc(size*sizeof(char*));
+          for ( int i = 0; i < size; i++ )
+            {
+              (*clevels)[i] = Malloc(clen*sizeof(char));
+              memcpy((*clevels)[i], zaxisptr->cvals[i], clen*sizeof(char));
+            }
+          }
+    }
+
+  return size;
+}
+
 
 int zaxisInqLbounds(int zaxisID, double *lbounds)
 {
diff --git a/libcdi/src/zaxis.h b/libcdi/src/zaxis.h
index 04cfa0b..60ccad5 100644
--- a/libcdi/src/zaxis.h
+++ b/libcdi/src/zaxis.h
@@ -21,6 +21,7 @@ typedef struct {
   zkey_double_t p0value;
   double  *vals;
   char   **cvals;
+  int      clength;
   double  *lbounds;
   double  *ubounds;
   double  *weights;
@@ -63,6 +64,7 @@ const resOps *getZaxisOps(void);
 const char *zaxisInqNamePtr(int zaxisID);
 
 const double *zaxisInqLevelsPtr(int zaxisID);
+char **zaxisInqCValsPtr(int zaxisID);
 
 void zaxisResize(int zaxisID, int size);
 
diff --git a/libcdi/tables/gen_tableheaderfile.in b/libcdi/tables/gen_tableheaderfile.in
index 54b3f8c..2f1147c 100755
--- a/libcdi/tables/gen_tableheaderfile.in
+++ b/libcdi/tables/gen_tableheaderfile.in
@@ -31,8 +31,8 @@ unset PTFILE[item]
 #
 cat >&4 <<EOF
 /* Automatically generated, do not edit! */
-#ifndef _TABLE_H
-#define _TABLE_H
+#ifndef TABLE_H
+#define TABLE_H
 
 EOF
 #
@@ -47,8 +47,6 @@ cat >&4 <<EOF
 static
 void tableDefault(void)
 {
-  int tableID, instID, modelID;
-
 EOF
 #
 settabvar() {
@@ -78,21 +76,20 @@ TABLENAME=`echo ${TFBASENAME} | sed -e "s/\./_/g" `
 #
 cat >&4 <<EOF
 
-  /*
-   *  define table : ${TFBASENAME}
-   */
-
-  instID  = institutInq(${TABLE_CE}, ${TABLE_SU}, "${TABLE_IN}", NULL);
-  if ( instID == -1 )
-    instID  = institutDef(${TABLE_CE}, ${TABLE_SU}, "${TABLE_IN}", NULL);
+  // define table : ${TFBASENAME}
+  {
+    int instID  = institutInq(${TABLE_CE}, ${TABLE_SU}, "${TABLE_IN}", NULL);
+    if ( instID == -1 )
+      instID  = institutDef(${TABLE_CE}, ${TABLE_SU}, "${TABLE_IN}", NULL);
 
-  modelID = modelInq(instID, 0, "${TABLE_MO}");
-  if ( modelID == -1 )
-    modelID = modelDef(instID, 0, "${TABLE_MO}");
+    int modelID = modelInq(instID, 0, "${TABLE_MO}");
+    if ( modelID == -1 )
+      modelID = modelDef(instID, 0, "${TABLE_MO}");
 
-  tableID = tableDef(modelID, ${TABLE_ID}, "${TABLE_NA}");
+    int tableID = tableDef(modelID, ${TABLE_ID}, "${TABLE_NA}");
 
-  tableLink(tableID, ${TABLENAME}, sizeof(${TABLENAME}) / sizeof(PAR));
+    tableLink(tableID, ${TABLENAME}, sizeof(${TABLENAME}) / sizeof(param_type));
+  }
 EOF
 #
 done
@@ -100,7 +97,7 @@ done
 cat >&4 <<EOF
 }
 
-#endif  /* _TABLE_H */
+#endif  /* TABLE_H */
 EOF
 #
 rm -f ptfile
diff --git a/libcdi/tests/Makefile.in b/libcdi/tests/Makefile.in
index 2341351..4f0df77 100644
--- a/libcdi/tests/Makefile.in
+++ b/libcdi/tests/Makefile.in
@@ -350,6 +350,8 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
diff --git a/libcdi/tests/test_table.c b/libcdi/tests/test_table.c
index 1bbd120..274ae16 100644
--- a/libcdi/tests/test_table.c
+++ b/libcdi/tests/test_table.c
@@ -5,6 +5,7 @@
 
 int main()
 {
-  assert(tableInqParName(-1, -1, NULL) != 0);
+  tableInqEntry(-1, -1, -1, NULL, NULL, NULL);
+  //assert(tableInqEntry(-1, -1, -1, NULL, NULL, NULL) != 0);
   return EXIT_SUCCESS;
 }
diff --git a/m4/acx_options.m4 b/m4/acx_options.m4
index 4aa09ce..d023a1a 100644
--- a/m4/acx_options.m4
+++ b/m4/acx_options.m4
@@ -17,6 +17,7 @@ AS_CASE([$with_threads],
                            ENABLE_THREADS=yes],[AC_MSG_ERROR([multithreaded settings NOT found])])
                LIBS="$PTHREAD_LIBS $LIBS"
                CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+               CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
                CC="$PTHREAD_CC"
                AS_ECHO(["CC:$CC CFLAGS:$CFLAGS LIBS:$LIBS"])],
         [*],[THREADS_ROOT=$with_threads
@@ -258,10 +259,44 @@ AC_ARG_WITH([cmor],
              AC_MSG_RESULT([suppressed])])
 AC_SUBST([CMOR_LIBS])
 #  ----------------------------------------------------------------------
+#  Compile application with ECCODES library (for GRIB2 support)
+ECCODES_INCLUDE=''
+ECCODES_LIBS=''
+ENABLE_GRIBAPI=no
+AC_ARG_WITH([eccodes],
+            [AS_HELP_STRING([--with-eccodes=<yes|no|directory> (default=no)],[location of ECCODES library (lib and include subdirs)])],
+            [AS_CASE(["$with_eccodes"],
+                     [no],[AC_MSG_CHECKING([for ECCODES library])
+                           AC_MSG_RESULT([suppressed])],
+                     [yes],[AC_CHECK_HEADERS([grib_api.h])
+                            AC_SEARCH_LIBS([grib_get_message],
+                                           [eccodes],
+                                           [AC_DEFINE([HAVE_LIBGRIB_API],[1],[ECCODES library is present if defined to 1])
+                                            ENABLE_GRIBAPI=yes],
+                                           [AC_MSG_ERROR([Could not link to eccodes library])])],
+                     [*],[ECCODES_ROOT=$with_eccodes
+                          AS_IF([test -d "$ECCODES_ROOT"],
+                                [LDFLAGS="-L$ECCODES_ROOT/lib $LDFLAGS"
+                                 CPPFLAGS="-I$ECCODES_ROOT/include $CPPFLAGS"
+                                 AC_CHECK_HEADERS([grib_api.h])
+                                 AC_SEARCH_LIBS([grib_get_message],
+                                                [eccodes],
+                                                [AC_DEFINE([HAVE_LIBGRIB_API],[1],[ECCODES library is present if defined to 1])
+                                                 ENABLE_GRIBAPI=yes],
+                                                [AC_MSG_ERROR([Could not link to eccodes library])])
+                                 ECCODES_LIBS=" -L$ECCODES_ROOT/lib -leccodes"
+                                 ECCODES_INCLUDE=" -I$ECCODES_ROOT/include"],
+                                [AC_MSG_ERROR([$ECCODES_ROOT is not a directory! ECCODES suppressed])])])],
+            [AC_MSG_CHECKING([for the ECCODES library])
+             AC_MSG_RESULT([suppressed])])
+AC_SUBST([ECCODES_INCLUDE])
+AC_SUBST([ECCODES_LIBS])
+#AC_SUBST([ENABLE_GRIBAPI])
+#  ----------------------------------------------------------------------
 #  Compile application with GRIB_API library (for GRIB2 support)
 GRIB_API_INCLUDE=''
 GRIB_API_LIBS=''
-ENABLE_GRIBAPI=no
+#ENABLE_GRIBAPI=no
 AC_ARG_WITH([grib_api],
             [AS_HELP_STRING([--with-grib_api=<yes|no|directory> (default=no)],[location of GRIB_API library (lib and include subdirs)])],
             [AS_CASE(["$with_grib_api"],
diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4
new file mode 100644
index 0000000..5032bba
--- /dev/null
+++ b/m4/ax_cxx_compile_stdcxx.m4
@@ -0,0 +1,982 @@
+# ===========================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXX and
+#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
+#   or '14' (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz at redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw at panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr at ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov at google.com>
+#   Copyright (c) 2015 Paul Norman <penorman at mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz at klammler.eu>
+#   Copyright (c) 2016 Krzesimir Nowak <qdlacz at gmail.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 7
+
+dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AX_REQUIRE_DEFINED([AC_MSG_WARN])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
+        [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
+        [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+  ax_cv_cxx_compile_cxx$1,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+    [ax_cv_cxx_compile_cxx$1=yes],
+    [ax_cv_cxx_compile_cxx$1=no])])
+  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      switch="-std=gnu++${alternative}"
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+        cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+        AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                       $cachevar,
+          [ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+            [eval $cachevar=yes],
+            [eval $cachevar=no])
+           CXX="$ac_save_CXX"])
+        if eval test x\$$cachevar = xyes; then
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX$1=0
+    AC_MSG_NOTICE([No compiler with C++$1 support was found])
+  else
+    HAVE_CXX$1=1
+    AC_DEFINE(HAVE_CXX$1,1,
+              [define if the compiler supports basic C++$1 syntax])
+  fi
+  AC_SUBST(HAVE_CXX$1)
+  m4_if([$1], [17], [AC_MSG_WARN([C++17 is not yet standardized, so the checks may change in incompatible ways anytime])])
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+)
+
+dnl  Tests for new features in C++11
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
+
+
+dnl  Tests for new features in C++17
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus <= 201402L
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#if defined(__clang__)
+  #define REALLY_CLANG
+#else
+  #if defined(__GNUC__)
+    #define REALLY_GCC
+  #endif
+#endif
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+#if !defined(REALLY_CLANG)
+  namespace test_constexpr_lambdas
+  {
+
+    // TODO: test it with clang++ from git
+
+    constexpr int foo = [](){return 42;}();
+
+  }
+#endif // !defined(REALLY_CLANG)
+
+  namespace test::nested_namespace::definitions
+  {
+
+  }
+
+  namespace test_fold_expression
+  {
+
+    template<typename... Args>
+    int multiply(Args... args)
+    {
+      return (args * ... * 1);
+    }
+
+    template<typename... Args>
+    bool all(Args... args)
+    {
+      return (args && ...);
+    }
+
+  }
+
+  namespace test_extended_static_assert
+  {
+
+    static_assert (true);
+
+  }
+
+  namespace test_auto_brace_init_list
+  {
+
+    auto foo = {5};
+    auto bar {5};
+
+    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+    static_assert(std::is_same<int, decltype(bar)>::value);
+  }
+
+  namespace test_typename_in_template_template_parameter
+  {
+
+    template<template<typename> typename X> struct D;
+
+  }
+
+  namespace test_fallthrough_nodiscard_maybe_unused_attributes
+  {
+
+    int f1()
+    {
+      return 42;
+    }
+
+    [[nodiscard]] int f2()
+    {
+      [[maybe_unused]] auto unused = f1();
+
+      switch (f1())
+      {
+      case 17:
+        f1();
+        [[fallthrough]];
+      case 42:
+        f1();
+      }
+      return f1();
+    }
+
+  }
+
+  namespace test_extended_aggregate_initialization
+  {
+
+    struct base1
+    {
+      int b1, b2 = 42;
+    };
+
+    struct base2
+    {
+      base2() {
+        b3 = 42;
+      }
+      int b3;
+    };
+
+    struct derived : base1, base2
+    {
+        int d;
+    };
+
+    derived d1 {{1, 2}, {}, 4};  // full initialization
+    derived d2 {{}, {}, 4};      // value-initialized bases
+
+  }
+
+  namespace test_general_range_based_for_loop
+  {
+
+    struct iter
+    {
+      int i;
+
+      int& operator* ()
+      {
+        return i;
+      }
+
+      const int& operator* () const
+      {
+        return i;
+      }
+
+      iter& operator++()
+      {
+        ++i;
+        return *this;
+      }
+    };
+
+    struct sentinel
+    {
+      int i;
+    };
+
+    bool operator== (const iter& i, const sentinel& s)
+    {
+      return i.i == s.i;
+    }
+
+    bool operator!= (const iter& i, const sentinel& s)
+    {
+      return !(i == s);
+    }
+
+    struct range
+    {
+      iter begin() const
+      {
+        return {0};
+      }
+
+      sentinel end() const
+      {
+        return {5};
+      }
+    };
+
+    void f()
+    {
+      range r {};
+
+      for (auto i : r)
+      {
+        [[maybe_unused]] auto v = i;
+      }
+    }
+
+  }
+
+  namespace test_lambda_capture_asterisk_this_by_value
+  {
+
+    struct t
+    {
+      int i;
+      int foo()
+      {
+        return [*this]()
+        {
+          return i;
+        }();
+      }
+    };
+
+  }
+
+  namespace test_enum_class_construction
+  {
+
+    enum class byte : unsigned char
+    {};
+
+    byte foo {42};
+
+  }
+
+  namespace test_constexpr_if
+  {
+
+    template <bool cond>
+    int f ()
+    {
+      if constexpr(cond)
+      {
+        return 13;
+      }
+      else
+      {
+        return 42;
+      }
+    }
+
+  }
+
+  namespace test_selection_statement_with_initializer
+  {
+
+    int f()
+    {
+      return 13;
+    }
+
+    int f2()
+    {
+      if (auto i = f(); i > 0)
+      {
+        return 3;
+      }
+
+      switch (auto i = f(); i + 4)
+      {
+      case 17:
+        return 2;
+
+      default:
+        return 1;
+      }
+    }
+
+  }
+
+#if !defined(REALLY_CLANG)
+  namespace test_template_argument_deduction_for_class_templates
+  {
+
+    // TODO: test it with clang++ from git
+
+    template <typename T1, typename T2>
+    struct pair
+    {
+      pair (T1 p1, T2 p2)
+        : m1 {p1},
+          m2 {p2}
+      {}
+
+      T1 m1;
+      T2 m2;
+    };
+
+    void f()
+    {
+      [[maybe_unused]] auto p = pair{13, 42u};
+    }
+
+  }
+#endif // !defined(REALLY_CLANG)
+
+  namespace test_non_type_auto_template_parameters
+  {
+
+    template <auto n>
+    struct B
+    {};
+
+    B<5> b1;
+    B<'a'> b2;
+
+  }
+
+#if !defined(REALLY_CLANG)
+  namespace test_structured_bindings
+  {
+
+    // TODO: test it with clang++ from git
+
+    int arr[2] = { 1, 2 };
+    std::pair<int, int> pr = { 1, 2 };
+
+    auto f1() -> int(&)[2]
+    {
+      return arr;
+    }
+
+    auto f2() -> std::pair<int, int>&
+    {
+      return pr;
+    }
+
+    struct S
+    {
+      int x1 : 2;
+      volatile double y1;
+    };
+
+    S f3()
+    {
+      return {};
+    }
+
+    auto [ x1, y1 ] = f1();
+    auto& [ xr1, yr1 ] = f1();
+    auto [ x2, y2 ] = f2();
+    auto& [ xr2, yr2 ] = f2();
+    const auto [ x3, y3 ] = f3();
+
+  }
+#endif // !defined(REALLY_CLANG)
+
+#if !defined(REALLY_CLANG)
+  namespace test_exception_spec_type_system
+  {
+
+    // TODO: test it with clang++ from git
+
+    struct Good {};
+    struct Bad {};
+
+    void g1() noexcept;
+    void g2();
+
+    template<typename T>
+    Bad
+    f(T*, T*);
+
+    template<typename T1, typename T2>
+    Good
+    f(T1*, T2*);
+
+    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+  }
+#endif // !defined(REALLY_CLANG)
+
+  namespace test_inline_variables
+  {
+
+    template<class T> void f(T)
+    {}
+
+    template<class T> inline T g(T)
+    {
+      return T{};
+    }
+
+    template<> inline void f<>(int)
+    {}
+
+    template<> int g<>(int)
+    {
+      return 5;
+    }
+
+  }
+
+}  // namespace cxx17
+
+#endif  // __cplusplus <= 201402L
+
+]])
diff --git a/m4/ax_cxx_compile_stdcxx_11.m4 b/m4/ax_cxx_compile_stdcxx_11.m4
new file mode 100644
index 0000000..1733fd8
--- /dev/null
+++ b/m4/ax_cxx_compile_stdcxx_11.m4
@@ -0,0 +1,39 @@
+# =============================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
+# =============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++11
+#   standard; if necessary, add switches to CXX and CXXCPP to enable
+#   support.
+#
+#   This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
+#   macro with the version set to C++11.  The two optional arguments are
+#   forwarded literally as the second and third argument respectively.
+#   Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
+#   more information.  If you want to use this macro, you also need to
+#   download the ax_cxx_compile_stdcxx.m4 file.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz at redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw at panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr at ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov at google.com>
+#   Copyright (c) 2015 Paul Norman <penorman at mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz at klammler.eu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 18
+
+AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])])
diff --git a/src/Adisit.c b/src/Adisit.cc
similarity index 92%
rename from src/Adisit.c
rename to src/Adisit.cc
index 1c31e99..3618847 100644
--- a/src/Adisit.c
+++ b/src/Adisit.cc
@@ -176,9 +176,9 @@ void *Adisit(void *argument)
 
   if ( operatorArgc() == 1 ) pin = parameter2double(operatorArgv()[0]);
   
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nvars = vlistNvars(vlistID1);
 
@@ -294,31 +294,31 @@ void *Adisit(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; ++recID )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  offset = gridsize*levelID;
 
 	  if ( varID == thoID )
             {
-              streamReadRecord(streamID1, tho.ptr+offset, &nmiss);
+              pstreamReadRecord(streamID1, tho.ptr+offset, &nmiss);
               tho.nmiss = (size_t) nmiss;
             }
 	  if ( varID == saoID )
             {
-              streamReadRecord(streamID1, sao.ptr+offset, &nmiss);
+              pstreamReadRecord(streamID1, sao.ptr+offset, &nmiss);
               sao.nmiss = (size_t) nmiss;
             }
         }
@@ -339,8 +339,8 @@ void *Adisit(void *argument)
 	  for ( i = 0; i < gridsize; ++i )
 	    if ( DBL_IS_EQUAL(single[i], tis.missval) ) nmiss++;
  
-	  streamDefRecord(streamID2, tisID2, levelID);
-	  streamWriteRecord(streamID2, single, nmiss);     
+	  pstreamDefRecord(streamID2, tisID2, levelID);
+	  pstreamWriteRecord(streamID2, single, nmiss);     
 
 	  single = sao.ptr+offset;
 
@@ -348,15 +348,15 @@ void *Adisit(void *argument)
 	  for ( i = 0; i < gridsize; ++i )
 	    if ( DBL_IS_EQUAL(single[i], sao.missval) ) nmiss++;
  
-	  streamDefRecord(streamID2, saoID2, levelID);
-	  streamWriteRecord(streamID2, single, nmiss);     
+	  pstreamDefRecord(streamID2, saoID2, levelID);
+	  pstreamWriteRecord(streamID2, single, nmiss);     
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Afterburner.c b/src/Afterburner.cc
similarity index 97%
rename from src/Afterburner.c
rename to src/Afterburner.cc
index 565e86c..df16fff 100644
--- a/src/Afterburner.c
+++ b/src/Afterburner.cc
@@ -20,6 +20,9 @@
 #include "cdo.h"
 #include "cdo_int.h"
 #include "pstream_write.h"
+#define  streamOpenWrite          pstreamOpenWrite
+#define  streamDefVlist           pstreamDefVlist
+#define  streamDefTimestep        pstreamDefTimestep
 #endif
 
 #if defined(AFTERBURNER)
@@ -1168,18 +1171,13 @@ void after_defineGrid(struct Control *globs, struct Variable *vars)
 static
 void after_setCodes(struct Control *globs, struct Variable *vars, int maxCodes, int numCodes)
 {
-  int code;
-  int table, modelID, tableID;
-  const char *name, *longname;
-  int varID;
-
   if ( globs->Verbose ) lprintf(stdout);
 
   if ( numCodes == 0 )
     {
       if ( globs->Verbose ) fprintf(stdout, " All detected codes selected:\n");
       
-      for ( code = 0; code < maxCodes; code++ )
+      for ( int code = 0; code < maxCodes; code++ )
 	if ( vars[code].detected ) vars[code].selected = 1;
     }
   else if ( globs->Verbose )
@@ -1191,17 +1189,18 @@ void after_setCodes(struct Control *globs, struct Variable *vars, int maxCodes,
       fprintf(stdout, "  ----- ---- ----              --------\n");
     }
 
-  for ( code = 0; code < maxCodes; code++ )
+  for ( int code = 0; code < maxCodes; code++ )
     if ( vars[code].selected )
       {
-	table    = 0;
-	name     = NULL;
-	longname = NULL;
-	varID    = vars[code].ivarID;
+        char name[CDI_MAX_NAME]; name[0] = 0;
+        char longname[CDI_MAX_NAME]; longname[0] = 0;
+        int tableID;
+        int table = 0;
+	int varID = vars[code].ivarID;
 
 	if ( varID == CDI_UNDEFID )
 	  {
-	    modelID  = vlistInqVarModel(globs->ivlistID, 0);
+	    int modelID  = vlistInqVarModel(globs->ivlistID, 0);
 	    table    = 128;
 	    tableID  = tableInq(modelID, table, NULL);
 
@@ -1211,23 +1210,23 @@ void after_setCodes(struct Control *globs, struct Variable *vars, int maxCodes,
 	  {
 	    tableID  = vlistInqVarTable(globs->ivlistID, varID);
 	    table    = tableInqNum(tableID);
-	    name     = vlistInqVarNamePtr(globs->ivlistID, varID);
-	    longname = vlistInqVarLongnamePtr(globs->ivlistID, varID);
+	    vlistInqVarName(globs->ivlistID, varID, name);
+	    vlistInqVarLongname(globs->ivlistID, varID, longname);
 	  }
-	if ( name     == NULL )     name = (char*) tableInqParNamePtr(tableID, code);
-	if ( longname == NULL ) longname = (char*) tableInqParLongnamePtr(tableID, code);
+
+	if ( !name[0] ) tableInqEntry(tableID, code, -1, name, longname, NULL);
 	
 	if ( globs->Verbose )
 	  {
 	    fprintf(stdout, " %5d", table);
 	    fprintf(stdout, " %4d", code);
-	    if ( name == NULL )
+	    if ( !name[0] )
 	      fprintf(stdout, "  var%d", code);
 	    else
 	      {
 		fprintf(stdout, "  %-16s", name);
-	    if ( longname != NULL )
-	      fprintf(stdout, "  %s", longname);
+                if ( longname[0] )
+                  fprintf(stdout, "  %s", longname);
 	      }
 	    fprintf(stdout, "\n");
 	  }
@@ -1722,7 +1721,7 @@ void after_postcntl(struct Control *globs, struct Variable *vars)
   int ovarID, ogridID, ozaxisID;
   int ovarID2;
   int ivarID, instID, modelID, tableID;
-  const char *name, *longname, *units;
+  char name[CDI_MAX_NAME], longname[CDI_MAX_NAME], units[CDI_MAX_NAME];
   char histstring[99];
   int datatype;
 
@@ -1759,9 +1758,9 @@ void after_postcntl(struct Control *globs, struct Variable *vars)
   for ( code = 0; code < MaxCodes; code++ )
     if ( vars[code].selected )
       {
-	name     = NULL;
-	longname = NULL;
-	units    = NULL;
+	name[0] = 0;
+	longname[0] = 0;
+	units[0] = 0;
 	ivarID   = vars[code].ivarID;
 	ogridID  = vars[code].ogridID;
 	ozaxisID = vars[code].ozaxisID;
@@ -1799,9 +1798,9 @@ void after_postcntl(struct Control *globs, struct Variable *vars)
 	  }
 	else
 	  {
-	    name     = vlistInqVarNamePtr(globs->ivlistID, ivarID);
-	    longname = vlistInqVarLongnamePtr(globs->ivlistID, ivarID);
-	    units    = vlistInqVarUnitsPtr(globs->ivlistID, ivarID);
+	    vlistInqVarName(globs->ivlistID, ivarID, name);
+	    vlistInqVarLongname(globs->ivlistID, ivarID, longname);
+	    vlistInqVarUnits(globs->ivlistID, ivarID, units);
 	  }
 
         int tsteptype = (globs->Mean) ? TSTEP_AVG : TSTEP_INSTANT;
@@ -1815,9 +1814,9 @@ void after_postcntl(struct Control *globs, struct Variable *vars)
 	    vlistDefVarInstitut(globs->ovlistID, ovarID, instID);
 	    vlistDefVarModel(globs->ovlistID, ovarID, modelID);
 	    vlistDefVarTable(globs->ovlistID, ovarID, tableID);
-	    if ( name )     vlistDefVarName(globs->ovlistID, ovarID, name);
-	    if ( longname ) vlistDefVarLongname(globs->ovlistID, ovarID, longname);
-	    if ( units )    vlistDefVarUnits(globs->ovlistID, ovarID, units);
+	    if ( name[0] )     vlistDefVarName(globs->ovlistID, ovarID, name);
+	    if ( longname[0] ) vlistDefVarLongname(globs->ovlistID, ovarID, longname);
+	    if ( units[0] )    vlistDefVarUnits(globs->ovlistID, ovarID, units);
 	    vlistDefVarDatatype(globs->ovlistID, ovarID, datatype);
 	    vlistDefVarMissval(globs->ovlistID, ovarID, vars[code].missval);
 	  }
@@ -1831,9 +1830,9 @@ void after_postcntl(struct Control *globs, struct Variable *vars)
 	    vlistDefVarInstitut(globs->ovlistID2, ovarID2, instID);
 	    vlistDefVarModel(globs->ovlistID2, ovarID2, modelID);
 	    vlistDefVarTable(globs->ovlistID2, ovarID2, tableID);
-	    if ( name )     vlistDefVarName(globs->ovlistID2, ovarID2, name);
-	    if ( longname ) vlistDefVarLongname(globs->ovlistID2, ovarID2, longname);
-	    if ( units )    vlistDefVarUnits(globs->ovlistID2, ovarID2, units);
+	    if ( name[0] )     vlistDefVarName(globs->ovlistID2, ovarID2, name);
+	    if ( longname[0] ) vlistDefVarLongname(globs->ovlistID2, ovarID2, longname);
+	    if ( units[0] )    vlistDefVarUnits(globs->ovlistID2, ovarID2, units);
 	    vlistDefVarDatatype(globs->ovlistID2, ovarID2, datatype);
 	    vlistDefVarMissval(globs->ovlistID2, ovarID2, vars[code].missval);
 	  }
@@ -1971,18 +1970,20 @@ void after_printCodes(void)
   for ( int i = 0; i < ncodes; i++ )
     {
       int code     = codes[i];
-      const char *name     = tableInqParNamePtr(tableID, code);
-      const char *longname = tableInqParLongnamePtr(tableID, code);
+      char name[CDI_MAX_NAME]; name[0] = 0;
+      char longname[CDI_MAX_NAME]; longname[0] = 0;
+      tableInqEntry(tableID, code, -1, name, longname, NULL);
 
       fprintf(stdout, " %4d", code);
-      if ( name == NULL )
-	fprintf(stdout, "  var%d", code);
-      else
+      if ( name[0] )
 	{
 	  fprintf(stdout, "  %-16s", name);
-	  if ( longname != NULL )
+	  if ( longname[0] )
 	    fprintf(stdout, "  %s", longname);
 	}
+      else
+	fprintf(stdout, "  var%d", code);
+        
       fprintf(stdout, "\n");
     }
 
@@ -2075,7 +2076,7 @@ void after_processing(struct Control *globs, struct Variable *vars)
 {
   int i;
 
-  //#if defined(_PSTREAM_H)
+  //#if defined(PSTREAM_H)
   //  globs->istreamID = streamOpenRead(cdoStreamName(0));
   //#else
   globs->istreamID = streamOpenRead(ifile);
@@ -2089,7 +2090,7 @@ void after_processing(struct Control *globs, struct Variable *vars)
 
   if ( globs->Mean != 2 )
     {
-#if defined(_PSTREAM_WRITE_H)
+#if defined(PSTREAM_WRITE_H)
       globs->ostreamID = streamOpenWrite(cdoStreamName(ofileidx), ofiletype);
 #else
       globs->ostreamID = streamOpenWrite(ofile, ofiletype);
@@ -2229,7 +2230,7 @@ void after_processing(struct Control *globs, struct Variable *vars)
 
   after_control(globs, vars);
 
-#if defined(_PSTREAM_WRITE_H)
+#if defined(PSTREAM_WRITE_H)
   if ( globs->ostreamID  != CDI_UNDEFID ) pstreamClose(globs->ostreamID);
 #else
   if ( globs->ostreamID2 != CDI_UNDEFID ) streamClose(globs->ostreamID2);
diff --git a/src/Arith.c b/src/Arith.cc
similarity index 89%
rename from src/Arith.c
rename to src/Arith.cc
index e6e6901..19df12d 100644
--- a/src/Arith.c
+++ b/src/Arith.cc
@@ -49,6 +49,7 @@ void *Arith(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("add",   func_add,   0, NULL);
   cdoOperatorAdd("sub",   func_sub,   0, NULL);
   cdoOperatorAdd("mul",   func_mul,   0, NULL);
@@ -56,13 +57,14 @@ void *Arith(void *argument)
   cdoOperatorAdd("min",   func_min,   0, NULL);
   cdoOperatorAdd("max",   func_max,   0, NULL);
   cdoOperatorAdd("atan2", func_atan2, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
   operatorCheckArgc(0);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
   int streamIDx1 = streamID1;
   int streamIDx2 = streamID2;
@@ -71,8 +73,8 @@ void *Arith(void *argument)
   field_type *fieldx1 = &field1;
   field_type *fieldx2 = &field2;
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistIDx1 = vlistID1;
   int vlistIDx2 = vlistID2;
 
@@ -200,17 +202,16 @@ void *Arith(void *argument)
   int taxisID3 = taxisDuplicate(taxisIDx1);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int tsID = 0;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamIDx1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamIDx1, tsID)) )
     {
       if ( tsID == 0 || filltype == FILL_NONE || filltype == FILL_FILE || filltype == FILL_VARTS )
 	{
-	  nrecs2 = streamInqTimestep(streamIDx2, tsID2);
+	  nrecs2 = pstreamInqTimestep(streamIDx2, tsID2);
 	  if ( nrecs2 == 0 )
 	    {
 	      if ( filltype == FILL_NONE && streamIDx2 == streamID2 )
@@ -222,16 +223,16 @@ void *Arith(void *argument)
 	      if ( filltype == FILL_FILE )
 		{
 		  tsID2 = 0;
-		  streamClose(streamID2);
-		  streamID2 = streamOpenRead(cdoStreamName(1));
+		  pstreamClose(streamID2);
+		  streamID2 = pstreamOpenRead(cdoStreamName(1));
 		  streamIDx2 = streamID2;
 
-		  vlistID2 = streamInqVlist(streamID2);
+		  vlistID2 = pstreamInqVlist(streamID2);
 		  vlistIDx2 = vlistID2;
 
 		  vlistCompare(vlistID1, vlistID2, CMP_DIM);
 
-		  nrecs2 = streamInqTimestep(streamIDx2, tsID2);
+		  nrecs2 = pstreamInqTimestep(streamIDx2, tsID2);
 		  if ( nrecs2 == 0 )
 		    cdoAbort("Empty input stream %s!", cdoStreamName(1)->args);
 		}
@@ -242,12 +243,12 @@ void *Arith(void *argument)
 
       taxisCopyTimestep(taxisID3, taxisIDx1);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamIDx1, &varID, &levelID);
-	  streamReadRecord(streamIDx1, fieldx1->ptr, &nmiss);
+	  pstreamInqRecord(streamIDx1, &varID, &levelID);
+	  pstreamReadRecord(streamIDx1, fieldx1->ptr, &nmiss);
           fieldx1->nmiss = (size_t) nmiss;
           int varID2 = varID;
           
@@ -257,8 +258,8 @@ void *Arith(void *argument)
 
 	      if ( lstatus || (filltype != FILL_VAR && filltype != FILL_VARTS) )
 		{
-		  streamInqRecord(streamIDx2, &varID2, &levelID2);
-		  streamReadRecord(streamIDx2, fieldx2->ptr, &nmiss);
+		  pstreamInqRecord(streamIDx2, &varID2, &levelID2);
+		  pstreamReadRecord(streamIDx2, fieldx2->ptr, &nmiss);
                   fieldx2->nmiss = (size_t) nmiss;
                   if ( varID   != varID2 ) cdoAbort("Internal error, varIDs of input streams differ!");
                   if ( levelID != levelID2 ) cdoAbort("Internal error, levelIDs of input streams differ!");
@@ -309,17 +310,17 @@ void *Arith(void *argument)
 
 	  farfun(&field1, field2, operfunc);
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
 	}
 
       tsID++;
       tsID2++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID3);
 
diff --git a/src/Arithc.c b/src/Arithc.cc
similarity index 85%
rename from src/Arithc.c
rename to src/Arithc.cc
index 3e53071..bc0f2e7 100644
--- a/src/Arithc.c
+++ b/src/Arithc.cc
@@ -78,11 +78,13 @@ void *Arithc(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("addc", func_add, 0, "constant value");
   cdoOperatorAdd("subc", func_sub, 0, "constant value");
   cdoOperatorAdd("mulc", func_mul, 0, "constant value");
   cdoOperatorAdd("divc", func_div, 0, "constant value");
   cdoOperatorAdd("mod",  func_mod, 0, "divisor");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -91,9 +93,9 @@ void *Arithc(void *argument)
   operatorCheckArgc(1);
   double rconst = parameter2double(operatorArgv()[0]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int *vars = fill_vars(vlistID1);
@@ -102,9 +104,8 @@ void *Arithc(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -114,16 +115,16 @@ void *Arithc(void *argument)
   field.weight = NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field.ptr, &nmiss);
           field.nmiss = (size_t) nmiss;
 
 	  if ( vars[varID] )
@@ -141,14 +142,14 @@ void *Arithc(void *argument)
 	    }
 
           nmiss = (int) field.nmiss;
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, field.ptr, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, field.ptr, nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field.ptr ) Free(field.ptr);
   if ( vars ) Free(vars);
diff --git a/src/Arithdays.c b/src/Arithdays.cc
similarity index 86%
rename from src/Arithdays.c
rename to src/Arithdays.cc
index 39faecb..ad411a6 100644
--- a/src/Arithdays.c
+++ b/src/Arithdays.cc
@@ -78,19 +78,21 @@ void *Arithdays(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
                cdoOperatorAdd("muldpm", func_mul, func_month, NULL);
                cdoOperatorAdd("divdpm", func_div, func_month, NULL);
                cdoOperatorAdd("muldpy", func_mul, func_year,  NULL);
                cdoOperatorAdd("divdpy", func_div, func_year,  NULL);
   int MULDOY = cdoOperatorAdd("muldoy", func_mul,         0,  NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
   int operfunc2 = cdoOperatorF2(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -99,9 +101,8 @@ void *Arithdays(void *argument)
 
   int calendar = taxisInqCalendar(taxisID1);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -111,14 +112,14 @@ void *Arithdays(void *argument)
   field.weight = NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       int vtime = taxisInqVtime(taxisID1);
 
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       cdiDecodeDate(vdate, &year, &month, &day);
 
@@ -139,8 +140,8 @@ void *Arithdays(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field.ptr, &nmiss);
 
           field.nmiss   = (size_t)nmiss;
 	  field.grid    = vlistInqVarGrid(vlistID1, varID);
@@ -148,14 +149,14 @@ void *Arithdays(void *argument)
 
 	  farcfun(&field, rconst, operfunc);
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, field.ptr, (int)field.nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, field.ptr, (int)field.nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field.ptr ) Free(field.ptr);
 
diff --git a/src/Arithlat.c b/src/Arithlat.cc
similarity index 85%
rename from src/Arithlat.c
rename to src/Arithlat.cc
index a5a422d..79cb79c 100644
--- a/src/Arithlat.c
+++ b/src/Arithlat.cc
@@ -49,34 +49,33 @@ void *Arithlat(void *argument)
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   long gridsize = vlistGridsizeMax(vlistID1);
 
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 	  
 	  int gridID = vlistInqVarGrid(vlistID1, varID);
 
@@ -131,15 +130,15 @@ void *Arithlat(void *argument)
 
 	  for ( i = 0; i < gridsize; ++i ) array[i] *= scale[i];
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
   if ( scale ) Free(scale);
diff --git a/src/CDIread.c b/src/CDIread.cc
similarity index 80%
rename from src/CDIread.c
rename to src/CDIread.cc
index e8c4b9c..7b6a8ab 100644
--- a/src/CDIread.c
+++ b/src/CDIread.cc
@@ -27,16 +27,16 @@ const char *filetypestr(int filetype)
 {
   switch ( filetype )
     {
-    case CDI_FILETYPE_GRB:  return ("GRIB");            break;
-    case CDI_FILETYPE_GRB2: return ("GRIB2");           break;
-    case CDI_FILETYPE_NC:   return ("NetCDF");          break;
-    case CDI_FILETYPE_NC2:  return ("NetCDF2");         break;
-    case CDI_FILETYPE_NC4:  return ("NetCDF4");         break;
-    case CDI_FILETYPE_NC4C: return ("NetCDF4 classic"); break;
-    case CDI_FILETYPE_SRV:  return ("SERVICE");         break;
-    case CDI_FILETYPE_EXT:  return ("EXTRA");           break;
-    case CDI_FILETYPE_IEG:  return ("IEG");             break;
-    default:            return ("");
+    case CDI_FILETYPE_GRB:  return ("GRIB");
+    case CDI_FILETYPE_GRB2: return ("GRIB2");
+    case CDI_FILETYPE_NC:   return ("NetCDF");
+    case CDI_FILETYPE_NC2:  return ("NetCDF2");
+    case CDI_FILETYPE_NC4:  return ("NetCDF4");
+    case CDI_FILETYPE_NC4C: return ("NetCDF4 classic");
+    case CDI_FILETYPE_SRV:  return ("SERVICE");
+    case CDI_FILETYPE_EXT:  return ("EXTRA");
+    case CDI_FILETYPE_IEG:  return ("IEG");
+    default:                return ("");
     }
 }
 
@@ -49,7 +49,7 @@ const char *datatypestr(int datatype)
   snprintf(str, sizeof(str), "%d bit packed", datatype);
 
   if      ( datatype == CDI_DATATYPE_PACK   ) return ("P0");
-  else if ( datatype > 0 && datatype <= 32 ) return (str);
+  else if ( datatype > 0 && datatype <= 32  ) return (str);
   else if ( datatype == CDI_DATATYPE_CPX32  ) return ("C32");
   else if ( datatype == CDI_DATATYPE_CPX64  ) return ("C64");
   else if ( datatype == CDI_DATATYPE_FLT32  ) return ("32 bit floats");
@@ -60,7 +60,7 @@ const char *datatypestr(int datatype)
   else if ( datatype == CDI_DATATYPE_UINT8  ) return ("U8");
   else if ( datatype == CDI_DATATYPE_UINT16 ) return ("U16");
   else if ( datatype == CDI_DATATYPE_UINT32 ) return ("U32");
-  else                                    return ("");
+  else                                        return ("");
 }
 
 static
@@ -116,11 +116,11 @@ void *CDIread(void *argument)
       data_size = 0;
       nvalues = 0;
 
-      int streamID = streamOpenRead(cdoStreamName(0));
+      int streamID = pstreamOpenRead(cdoStreamName(0));
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
 
-      filetype = streamInqFiletype(streamID);
+      filetype = pstreamInqFiletype(streamID);
       datatype = vlistInqVarDatatype(vlistID, 0);
 	  
       int gridsize = vlistGridsizeMax(vlistID);
@@ -131,25 +131,25 @@ void *CDIread(void *argument)
       t0 = timer_val(timer_read);
 
       int tsID = 0;
-      while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
 	{
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID, &varID, &levelID);
+	      pstreamInqRecord(streamID, &varID, &levelID);
 
 	      gridsize = gridInqSize(vlistInqVarGrid(vlistID, varID));
 	      nvalues += gridsize;
 
 	      if ( memtype == MEMTYPE_FLOAT )
 		{
-                  streamReadRecordF(streamID, farray, &nmiss);
+                  pstreamReadRecordF(streamID, farray, &nmiss);
                   //  for ( int i = 0; i < gridsize; ++i ) darray[i] = farray[i];
 		  data_size += gridsize*4;
 		}
 	      else
 		{
-		  streamReadRecord(streamID, darray, &nmiss);
+		  pstreamReadRecord(streamID, darray, &nmiss);
 		  data_size += gridsize*8;
 		}
 	    }
@@ -164,7 +164,7 @@ void *CDIread(void *argument)
 	  tsID++;
 	}
 
-      streamClose(streamID);
+      pstreamClose(streamID);
 
       tw = timer_val(timer_read) - tw0;
       twsum += tw;
diff --git a/src/CDItest.c b/src/CDItest.cc
similarity index 79%
rename from src/CDItest.c
rename to src/CDItest.cc
index 613c415..d893016 100644
--- a/src/CDItest.c
+++ b/src/CDItest.cc
@@ -54,51 +54,50 @@ void *CDItest(void *argument)
   int n = 0;
   while ( TRUE )
     {
-      int streamID1 = streamOpenRead(cdoStreamName(0));
+      int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-      int vlistID1 = streamInqVlist(streamID1);
+      int vlistID1 = pstreamInqVlist(streamID1);
       int taxisID1 = vlistInqTaxis(vlistID1);
 
-      int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
       int vlistID2 = vlistDuplicate(vlistID1);
       int taxisID2 = taxisDuplicate(taxisID1);
       vlistDefTaxis(vlistID2, taxisID2);
 
-      streamDefVlist(streamID2, vlistID2);
+      int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+      pstreamDefVlist(streamID2, vlistID2);
 
       int gridsize = vlistGridsizeMax(vlistID1);
       double *array = (double*) Malloc(gridsize*sizeof(double));
 
       int tsID1 = 0;
       int tsID2 = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
 	{
 	  taxisCopyTimestep(taxisID2, taxisID1);
 
-	  streamDefTimestep(streamID2, tsID2);
+	  pstreamDefTimestep(streamID2, tsID2);
 	       
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
-	      streamDefRecord(streamID2,  varID,  levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+	      pstreamDefRecord(streamID2,  varID,  levelID);
 	  
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	  tsID1++;
 	  tsID2++;
 	}
 
-      streamClose(streamID1);
-      streamClose(streamID2);
+      pstreamClose(streamID1);
+      pstreamClose(streamID2);
 
       vlistDestroy(vlistID2);
       taxisDestroy(taxisID2);
diff --git a/src/CDIwrite.c b/src/CDIwrite.cc
similarity index 95%
rename from src/CDIwrite.c
rename to src/CDIwrite.cc
index 1c04daf..1bcd8ec 100644
--- a/src/CDIwrite.c
+++ b/src/CDIwrite.cc
@@ -92,7 +92,6 @@ void *CDIwrite(void *argument)
   int memtype = CDO_Memtype;
   int nvars = 10, nlevs = 0, ntimesteps = 30;
   const char *defaultgrid = "global_.2";
-  int streamID;
   int tsID, varID, levelID;
   int gridsize, i;
   int vlistID;
@@ -215,11 +214,11 @@ void *CDIwrite(void *argument)
       data_size = 0;
       nvalues = 0;
 
-      streamID = streamOpenWrite(cdoStreamName(0), cdoFiletype());
+      int streamID = pstreamOpenWrite(cdoStreamName(0), cdoFiletype());
 
-      streamDefVlist(streamID, vlistID);
+      pstreamDefVlist(streamID, vlistID);
 
-      filetype = streamInqFiletype(streamID);
+      filetype = pstreamInqFiletype(streamID);
       datatype = vlistInqVarDatatype(vlistID, 0);
       if ( datatype == CDI_UNDEFID ) datatype = CDI_DATATYPE_FLT32;
 	  
@@ -233,24 +232,24 @@ void *CDIwrite(void *argument)
 	  vtime = 0;
 	  taxisDefVdate(taxisID, vdate);
 	  taxisDefVtime(taxisID, vtime);
-	  streamDefTimestep(streamID, tsID);
+	  pstreamDefTimestep(streamID, tsID);
 
 	  for ( varID = 0; varID < nvars; varID++ )
 	    {
 	      for ( levelID = 0; levelID < nlevs; levelID++ )
 		{
 		  nvalues += gridsize;
-		  streamDefRecord(streamID, varID, levelID);
+		  pstreamDefRecord(streamID, varID, levelID);
 		  if ( memtype == MEMTYPE_FLOAT )
 		    {
 		      double *darray = vars[varID][levelID];
 		      for ( i = 0; i < gridsize; ++i ) farray[i] = darray[i];
-		      streamWriteRecordF(streamID, farray, 0);
+		      pstreamWriteRecordF(streamID, farray, 0);
 		      data_size += gridsize*4;
 		    }
 		  else
 		    {
-		      streamWriteRecord(streamID, vars[varID][levelID], 0);
+		      pstreamWriteRecord(streamID, vars[varID][levelID], 0);
 		      data_size += gridsize*8;
 		    }
 		}
@@ -264,7 +263,7 @@ void *CDIwrite(void *argument)
 	    }
 	}
 
-      streamClose(streamID);
+      pstreamClose(streamID);
 
       tw = timer_val(timer_write) - tw0;
       twsum += tw;
diff --git a/src/CMOR.c b/src/CMOR.cc
similarity index 98%
rename from src/CMOR.c
rename to src/CMOR.cc
index cedabd8..defc06e 100644
--- a/src/CMOR.c
+++ b/src/CMOR.cc
@@ -18,8 +18,6 @@
 /* */
 int stringToParam(const char *paramstr);
 
-list_t *pmlist_search_kvlist_ventry(list_t *pml, const char *key, const char *value, int nentry, const char **entry);
-list_t *pmlist_get_kvlist_ventry(list_t *pml, int nentry, const char **entry);
 
 list_t *maptab_search_miptab(list_t *pmlist, const char *cmorname, const char *miptab, char *key)
 {
@@ -644,7 +642,7 @@ struct mapping
 
 static struct mapping *construct_var_mapping(int streamID)
 {
-  int nvars_max = vlistNvars(streamInqVlist(streamID));
+  int nvars_max = vlistNvars(pstreamInqVlist(streamID));
   struct mapping *vars =
     (struct mapping *) Malloc((nvars_max + 1) * sizeof(struct mapping));
   vars[0].cdi_varID = CDI_UNDEFID;
@@ -715,12 +713,12 @@ static void addcharvar(keyValues_t *charvars, int vlistID, char *key, struct map
   if ( cdoStreamName(0)->args[0] == '-' )
     cdoAbort("No variables can be merged to one character axis since you piped several cdo operators.");
 
-  int streamID2 = streamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(0));
   if ( ntsteps == -1 )
     {
       ntsteps = 0;
       int dummy;
-      while ( ( dummy = streamInqTimestep(streamID2, ntsteps++) ) );
+      while ( ( dummy = pstreamInqTimestep(streamID2, ntsteps++) ) );
     }
 
   int axissize[3];
@@ -803,16 +801,16 @@ static void addcharvar(keyValues_t *charvars, int vlistID, char *key, struct map
 
   int tsID = 0, nrecs = 0;
 
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
       while ( nrecs-- )
         {
           int varIDrw, levelIDrw, nmiss;
-          streamInqRecord(streamID2, &varIDrw, &levelIDrw);
+          pstreamInqRecord(streamID2, &varIDrw, &levelIDrw);
           for ( int i = 0; i < charvars->nvalues; i++ )
             if ( varIDrw == varIDs[i] )
               {
-                streamReadRecord(streamID2, buffer_old, &nmiss);
+                pstreamReadRecord(streamID2, buffer_old, &nmiss);
                 int newIndex;
                 for ( int j = 0; j < oldgridsize; j++ )
                   {
@@ -832,7 +830,7 @@ static void addcharvar(keyValues_t *charvars, int vlistID, char *key, struct map
     }
   var->charvars = 1;
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
   Free(buffer_old);
 
   if ( cdoVerbose )
@@ -1057,7 +1055,7 @@ static int check_mem(list_t *kvl, char *project_id)
 static void dump_global_attributes(list_t *pml, int streamID)
 {
   int natts;
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   cdiInqNatts(vlistID, CDI_GLOBAL, &natts);
   for ( int i = 0; i < natts; i++ )
     {
@@ -1094,7 +1092,7 @@ static void dump_global_attributes(list_t *pml, int streamID)
 
 static void dump_special_attributes(list_t *kvl, int streamID)
 {
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int fileID = pstreamFileID(streamID);
   size_t old_historysize;
   char *new_history = kv_get_a_val(kvl, "history", NULL);
@@ -1306,7 +1304,7 @@ static void setup_dataset(list_t *kvl, int streamID, int *calendar)
       kv_insert_a_val(kvl, "d", "y", 1);
     }
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   cmor_setup(kv_get_a_val(kvl, "inpath", "/usr/share/cmor/"),
              &netcdf_file_action,
@@ -1315,7 +1313,7 @@ static void setup_dataset(list_t *kvl, int streamID, int *calendar)
              kv_get_a_val(kvl, "logfile", NULL),
              &creat_subs);
 
-  int taxisID = vlistInqTaxis(streamInqVlist(streamID));
+  int taxisID = vlistInqTaxis(pstreamInqVlist(streamID));
 
 /*
   char *attcomment = kv_get_a_val(kvl, "comment", NULL);
@@ -1816,8 +1814,8 @@ static void change_grid(char *grid_file, int gridID, int vlistID)
   if ( cdoVerbose )
     printf("You configured a grid_info file: '%s'. It is tested for a valid use as substitution.\n");
   argument_t *fileargument = file_argument_new(grid_file);
-  int streamID2 = streamOpenRead(fileargument); 
-  int vlistID2 = streamInqVlist(streamID2);
+  int streamID2 = pstreamOpenRead(fileargument); 
+  int vlistID2 = pstreamInqVlist(streamID2);
   int gridID2 = vlistInqVarGrid(vlistID2, 0); 
 
   if ( !gridID2 )
@@ -1842,7 +1840,7 @@ static void change_grid(char *grid_file, int gridID, int vlistID)
   vlistChangeGrid(vlistID, gridID, gridID2);
   printf("Succesfully substituted grid.\n");
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 }
 
 static void move_lons(double *xcoord_vals, double *xcell_bounds, int xsize, int xboundsize, int xnbounds)
@@ -2524,7 +2522,7 @@ static void register_variable(list_t *kvl, int vlistID, int varID, int *axis_ids
 static void register_all_dimensions(list_t *kvl, int streamID,
                              struct mapping vars[], int table_id, char *project_id, int miptab_freq, int *time_axis)
 {
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int taxisID = vlistInqTaxis(vlistID);
 
   if ( cdoVerbose )
@@ -2693,12 +2691,12 @@ static char *get_frequency(list_t *kvl, int streamID, int vlistID, int taxisID,
 */
         } 
       
-      int streamID2 = streamOpenRead(cdoStreamName(0));
-          int vlistID2 = streamInqVlist(streamID2);
+      int streamID2 = pstreamOpenRead(cdoStreamName(0));
+      int vlistID2 = pstreamInqVlist(streamID2);
       int taxisID2 = vlistInqTaxis(vlistID2);
       if ( ntsteps < 0 )
         {
-          while ( recdummy = streamInqTimestep(streamID2, reccounter++) );
+          while ( recdummy = pstreamInqTimestep(streamID2, reccounter++) );
           ntsteps = reccounter;
         }    
       ntsteps-=1;
@@ -2706,9 +2704,9 @@ static char *get_frequency(list_t *kvl, int streamID, int vlistID, int taxisID,
 
       if ( ntsteps > 2 )
         {
-          int recfirst = streamInqTimestep(streamID2, 0);
+          int recfirst = pstreamInqTimestep(streamID2, 0);
           cdiDecodeDate(taxisInqVdate(taxisID2), &fyear, &fmonth, &dummytwo);
-          int reclast = streamInqTimestep(streamID2, ntsteps);    
+          int reclast = pstreamInqTimestep(streamID2, ntsteps);    
           cdiDecodeDate(taxisInqVdate(taxisID2), &lyear, &lmonth, &dummytwo);
 
           double covered_years = lyear-fyear + 1.0;
@@ -2734,7 +2732,7 @@ static char *get_frequency(list_t *kvl, int streamID, int vlistID, int taxisID,
               reccounter = 0;
               if ( cdoVerbose )
                 printf("Frequency is calculated by counting all timesteps in year %d\nin order to calculate time bounds in case they are not given.\n", fyear, fmonth);
-              while ( recdummy = streamInqTimestep(streamID2, reccounter++) )
+              while ( recdummy = pstreamInqTimestep(streamID2, reccounter++) )
                 {
                   int reqyear;
                   cdiDecodeDate(taxisInqVdate(taxisID2), &reqyear, &lmonth, &dummytwo);
@@ -2769,7 +2767,7 @@ static char *get_frequency(list_t *kvl, int streamID, int vlistID, int taxisID,
           else
             cdoWarning("For %d found timesteps no frequency can be computed - at least 3 timesteps are required.\nTime bounds of the rec are used.\n", ntsteps);
         }
-      streamClose(streamID2);
+      pstreamClose(streamID2);
     }
     }
   return frequency;
@@ -2852,7 +2850,7 @@ static double *get_time_bounds(int taxisID, char *frequency, juldate_t ref_date,
 static void read_record(int streamID, struct mapping vars[], int vlistID)
 {
   int varID, levelID;
-  streamInqRecord(streamID, &varID, &levelID);
+  pstreamInqRecord(streamID, &varID, &levelID);
 
   int gridID = vlistInqVarGrid(vlistID, varID);
   int type = gridInqType(gridID);
@@ -2867,14 +2865,14 @@ static void read_record(int streamID, struct mapping vars[], int vlistID)
       int levdim = zaxisInqSize(zaxisID);
       int chardim = gridsize/latdim;
       int nmiss;
-      streamReadRecord(streamID, buffer, &nmiss);
+      pstreamReadRecord(streamID, buffer, &nmiss);
       for ( size_t i = 0; i < gridsize; i++ )
         {
-/* Wrong:  (lat x basin, lev ) gridsize * levelID + i */
-/* Wrong:  (basin x lat, lev) gridsize * levelID + i * chardim - ( int ) floor(i / latdim) * gridsize + ( int ) floor(i/latdim)
-/* Wrong:  (basin x lev, lat ) gridsize/latdim * levdim * ( i - ( int ) floor(i/latdim) * latdim ) + ( int ) floor(i/latdim) + gridsize/latdim * levelID; */
-/* Wrong:  (lat x lev, basin ) latdim * levdim * ( int ) floor(i/latdim) + ( i - ( int ) floor(i/latdim) * latdim ) + levelID * latdim*/
-/* (lev x lat, basin ) */
+// Wrong:  (lat x basin, lev ) gridsize * levelID + i
+// Wrong:  (basin x lat, lev) gridsize * levelID + i * chardim - ( int ) floor(i / latdim) * gridsize + ( int ) floor(i/latdim)
+// Wrong:  (basin x lev, lat ) gridsize/latdim * levdim * ( i - ( int ) floor(i/latdim) * latdim ) + ( int ) floor(i/latdim) + gridsize/latdim * levelID;
+// Wrong:  (lat x lev, basin ) latdim * levdim * ( int ) floor(i/latdim) + ( i - ( int ) floor(i/latdim) * latdim ) + levelID * latdim
+// (lev x lat, basin )
           int newIndex;
           if ( levdim > 1 && type == GRID_CURVILINEAR )
             newIndex = i + gridsize*levelID;
@@ -2990,8 +2988,8 @@ static int check_append_and_size(list_t *kvl, int vlistID, char *testIn, int ifr
       return 0;
     }
       
-  int streamID2 = streamOpenRead(cdoStreamName(0));
-  int vlistID2 = streamInqVlist(streamID2);
+  int streamID2 = pstreamOpenRead(cdoStreamName(0));
+  int vlistID2 = pstreamInqVlist(streamID2);
   int taxisID2 = vlistInqTaxis(vlistID2);
   juldate_t firstdate = juldate_encode(calendar, taxisInqVdate(taxisID2),
                                      taxisInqVtime(taxisID2));
@@ -3004,7 +3002,7 @@ static int check_append_and_size(list_t *kvl, int vlistID, char *testIn, int ifr
      ||( j == 4 && ( append_distance/24.0/30.5 > 24.0 || append_distance < 0 ) ) )
     {
       cdoWarning("A temporal gap is diagnosed between end date of chunk file and first date of working file of: '%f' hours. Maximal valid gaps are:\n48 hours for daily frequency\n62 days for monthly frequency\n24 month for yearly frequency.\nSwitched to replace mode.", append_distance);
-      streamClose(streamID2);
+      pstreamClose(streamID2);
       return 0;
     }
 
@@ -3021,11 +3019,11 @@ static int check_append_and_size(list_t *kvl, int vlistID, char *testIn, int ifr
   if ( ntsteps < 0 )
     {
       ntsteps = 0;
-      while ( streamInqTimestep(streamID2, ntsteps++)) ;
+      while ( pstreamInqTimestep(streamID2, ntsteps++)) ;
       if ( ntsteps == 0 )
         {
           cdoWarning("A mistake occured during timesteps determination.\nSwitched to replace mode.");
-          streamClose(streamID2);
+          pstreamClose(streamID2);
           return 0;
         }
     }
@@ -3045,7 +3043,7 @@ static int check_append_and_size(list_t *kvl, int vlistID, char *testIn, int ifr
     default:
       {
         cdoWarning("Selected chunk to append data has subdaily frequency which is yet not enabled by cdo cmor.\nA new file will be written.");
-        streamClose(streamID2);
+        pstreamClose(streamID2);
         return 0;
       }
     }
@@ -3053,10 +3051,10 @@ static int check_append_and_size(list_t *kvl, int vlistID, char *testIn, int ifr
   if ( (unsigned int)estimated_size > (unsigned int) maxsizeb )
     {
       cdoWarning("Estimated file size of appended file is : '%f'gb and exceeds maximal allowed file size: '%d'gb.\nA new file will be written.", estimated_size/1024.0/1024.0/1024.0, maxsizegb);
-      streamClose(streamID2);
+      pstreamClose(streamID2);
       return 0;
     }
-  streamClose(streamID2);
+  pstreamClose(streamID2);
   if ( cdoVerbose) printf("*******Succesfully checked file size of chunk + working file.******\n");
   return 1;
 }
@@ -3187,7 +3185,7 @@ static char **get_chunk_files(list_t *kvl, struct mapping vars[], int vlistID, i
 
 static void write_variables(list_t *kvl, int *streamID, struct mapping vars[], int miptab_freq, int time_axis, int calendar, char *miptab_freqptr)
 {
-  int vlistID = streamInqVlist(*streamID);
+  int vlistID = pstreamInqVlist(*streamID);
   int taxisID = vlistInqTaxis(vlistID);
   int tsID = 0;
   int nrecs;
@@ -3232,15 +3230,15 @@ static void write_variables(list_t *kvl, int *streamID, struct mapping vars[], i
         charname = Malloc(CDI_MAX_NAME * sizeof(char));
         vlistInqVarName(vlistID, vars[i].cdi_varID, charname);
         
-        streamClose(*streamID);
-        *streamID = streamOpenRead(cdoStreamName(0));
+        pstreamClose(*streamID);
+        *streamID = pstreamOpenRead(cdoStreamName(0));
         pscheck = 0;
         break;
       }
   if ( !pscheck )
     cdoWarning("Since you defined a variable with character coordinate axis you cannot write another variable with zaxis of type ZAXIS_HYBRID.");
 
-  while ( (nrecs = streamInqTimestep(*streamID, tsID++)) )
+  while ( (nrecs = pstreamInqTimestep(*streamID, tsID++)) )
     { 
       double time_bnds[2];
       double *time_bndsp;
@@ -3434,7 +3432,7 @@ static void read_maptab(list_t *kvl, int streamID, char *miptabfreq, struct mapp
   if ( maptab )
     {
       if ( maptabbuild ) maptab = maptabbuild;
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
 
       if ( cdoVerbose )
         printf("*******Try to apply mapping table: '%s'*******\n", maptab);
@@ -3750,7 +3748,7 @@ void *CMOR(void *argument)
     printf("*******Successfully checked MIP table, MIP table frequency and project_id.*******\n");
 
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
   /* Existing attributes have lowest priority. */
   dump_special_attributes(kvl, streamID);
 
@@ -3789,7 +3787,7 @@ void *CMOR(void *argument)
   Free(project_id); 
   list_destroy(pml); 
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 #else
   cdoWarning("CMOR support not compiled in!");
 #endif
diff --git a/src/CMOR_lite.c b/src/CMOR_lite.cc
similarity index 96%
rename from src/CMOR_lite.c
rename to src/CMOR_lite.cc
index 7c6222c..ae778ea 100644
--- a/src/CMOR_lite.c
+++ b/src/CMOR_lite.cc
@@ -390,9 +390,9 @@ void *CMOR_lite(void *argument)
 
   if ( operatorArgc() > 2 ) cdoAbort("Too many arguments!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
   /* vlistPrint(vlistID2);*/
 
@@ -442,7 +442,7 @@ void *CMOR_lite(void *argument)
         }
 
       int vlistIDx = vlistCreate();
-      vlistCopyFlag(vlistIDx, vlistID2);
+      cdoVlistCopyFlag(vlistIDx, vlistID2);
 
       vlistDestroy(vlistID2);
     
@@ -463,26 +463,25 @@ void *CMOR_lite(void *argument)
   vlistDefTaxis(vlistID2, taxisID2);
 
   /* vlistPrint(vlistID2);*/
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   long gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double *) Malloc(gridsize*sizeof(double));
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID1);
+      pstreamDefTimestep(streamID2, tsID1);
 
       cmor_check_init(nvars, vars);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
           var_t *var = &vars[varID];
 	  int varID2 = varID;
@@ -499,9 +498,9 @@ void *CMOR_lite(void *argument)
 		}
 	    }
 
-	  streamDefRecord(streamID2,  varID2,  levelID2);
+	  pstreamDefRecord(streamID2,  varID2,  levelID2);
 
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  missval = vlistInqVarMissval(vlistID2, varID2);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID2));
@@ -544,7 +543,7 @@ void *CMOR_lite(void *argument)
 	    }
 #endif
 	  
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 
           cmor_check_prep(var, gridsize, missval, array);
 	}
@@ -554,8 +553,8 @@ void *CMOR_lite(void *argument)
       tsID1++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
 #if defined(HAVE_UDUNITS2)
   for ( int varID = 0; varID < nvars; varID++ )
diff --git a/src/CMOR_table.c b/src/CMOR_table.cc
similarity index 100%
rename from src/CMOR_table.c
rename to src/CMOR_table.cc
diff --git a/src/Cat.c b/src/Cat.cc
similarity index 83%
rename from src/Cat.c
rename to src/Cat.cc
index 91b866e..1c3f691 100644
--- a/src/Cat.c
+++ b/src/Cat.cc
@@ -55,9 +55,9 @@ void *Cat(void *argument)
       if ( cdoVerbose ) cdoPrint("Process file: %s", cdoStreamName(indf)->args);
       if ( cdoTimer ) tw0 = timer_val(timer_cat);
 
-      int streamID1 = streamOpenRead(cdoStreamName(indf));
+      int streamID1 = pstreamOpenRead(cdoStreamName(indf));
 
-      int vlistID1 = streamInqVlist(streamID1);
+      int vlistID1 = pstreamInqVlist(streamID1);
       int taxisID1 = vlistInqTaxis(vlistID1);
 
       if ( indf == 0 )
@@ -75,9 +75,9 @@ void *Cat(void *argument)
 	  bool file_exists = (!cdoOverwriteMode) ? fileExists(cdoStreamName(nfiles)->args) : false;
 	  if ( file_exists )
 	    {
-	      streamID2 = streamOpenAppend(cdoStreamName(nfiles));
+	      streamID2 = pstreamOpenAppend(cdoStreamName(nfiles));
 
-	      vlistID2 = streamInqVlist(streamID2);
+	      vlistID2 = pstreamInqVlist(streamID2);
 	      taxisID2 = vlistInqTaxis(vlistID2);
 
 	      vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -92,7 +92,7 @@ void *Cat(void *argument)
 	      if ( cdoVerbose )
 		cdoPrint("Output file doesn't exist, creating: %s", cdoStreamName(nfiles)->args);
 
-	      streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+	      streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
 
 	      vlistID2 = vlistDuplicate(vlistID1);
 	      taxisID2 = taxisDuplicate(taxisID1);
@@ -105,7 +105,7 @@ void *Cat(void *argument)
 		    vlistDefVarTsteptype(vlistID2, varID, TSTEP_INSTANT);
 		}
 
-	      streamDefVlist(streamID2, vlistID2);
+	      pstreamDefVlist(streamID2, vlistID2);
 	    }
 
 	  if ( ! lcopy )
@@ -122,33 +122,33 @@ void *Cat(void *argument)
       int ntsteps = vlistNtsteps(vlistID1);
 
       int tsID1 = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
 	{          
           double fstatus = (ntsteps > 1) ? indf+(tsID1+1.)/ntsteps : indf+1.;
           if ( !cdoVerbose ) progressStatus(0, 1, fstatus/nfiles);
 
 	  taxisCopyTimestep(taxisID2, taxisID1);
 
-	  streamDefTimestep(streamID2, tsID2);
+	  pstreamDefTimestep(streamID2, tsID2);
 	       
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 
               if ( lconstvars && tsID2 > 0 && tsID1 == 0 )
                 if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT )
                   continue;
 
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1); 
+		  pstreamCopyRecord(streamID2, streamID1); 
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 
@@ -156,13 +156,13 @@ void *Cat(void *argument)
 	  tsID2++;
 	}
       
-      streamClose(streamID1);
+      pstreamClose(streamID1);
 
       if ( cdoTimer ) tw = timer_val(timer_cat) - tw0;
       if ( cdoTimer ) cdoPrint("Processed file: %s   %.2f seconds", cdoStreamName(indf)->args, tw);
     }
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
  
   if ( cdoTimer ) timer_stop(timer_cat);
 
diff --git a/src/CdoMagicsMapper.c b/src/CdoMagicsMapper.cc
similarity index 100%
rename from src/CdoMagicsMapper.c
rename to src/CdoMagicsMapper.cc
diff --git a/src/Change.c b/src/Change.cc
similarity index 94%
rename from src/Change.c
rename to src/Change.cc
index 045d7ed..0a2f6db 100644
--- a/src/Change.c
+++ b/src/Change.cc
@@ -58,6 +58,7 @@ void *Change(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int CHCODE   = cdoOperatorAdd("chcode",   0, 0, "pairs of old and new code numbers");
   int CHTABNUM = cdoOperatorAdd("chtabnum", 0, 0, "pairs of old and new GRIB1 table numbers");
   int CHPARAM  = cdoOperatorAdd("chparam",  0, 0, "pairs of old and new parameter identifiers");
@@ -67,6 +68,7 @@ void *Change(void *argument)
   int CHLEVELC = cdoOperatorAdd("chlevelc", 0, 0, "code number, old and new level");
   int CHLEVELV = cdoOperatorAdd("chlevelv", 0, 0, "variable name, old and new level");
   int CHLTYPE  = cdoOperatorAdd("chltype",  0, 0, "pairs of old and new type");          
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -115,9 +117,9 @@ void *Change(void *argument)
 	chltypes[i] = parameter2int(operatorArgv()[i]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -302,33 +304,32 @@ void *Change(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID2);
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID1);
+      pstreamDefTimestep(streamID2, tsID1);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
       tsID1++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array ) Free(array);
 
diff --git a/src/Change_e5slm.c b/src/Change_e5slm.cc
similarity index 83%
rename from src/Change_e5slm.c
rename to src/Change_e5slm.cc
index 04043b6..670dff9 100644
--- a/src/Change_e5slm.c
+++ b/src/Change_e5slm.cc
@@ -36,19 +36,17 @@ void *Change_e5slm(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
   int vlistID2 = vlistDuplicate(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  streamDefVlist(streamID2, vlistID2);
-
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   /* get filename of SLM */
   operatorInputArg("filename of the sea land mask");
@@ -57,10 +55,10 @@ void *Change_e5slm(void *argument)
 
   /* read SLM */
   argument_t *fileargument = file_argument_new(fn_slm);
-  int streamIDslm = streamOpenRead(fileargument);
+  int streamIDslm = pstreamOpenRead(fileargument);
   file_argument_free(fileargument);
 
-  int vlistIDslm = streamInqVlist(streamIDslm);
+  int vlistIDslm = pstreamInqVlist(streamIDslm);
 
   long gridsize = gridInqSize(vlistInqVarGrid(vlistIDslm, 0));
 
@@ -68,10 +66,10 @@ void *Change_e5slm(void *argument)
   double *cland = (double*) Malloc(gridsize*sizeof(double));
   bool *lsea  = (bool*) Malloc(gridsize*sizeof(bool));
 
-  streamInqTimestep(streamIDslm, 0);
+  pstreamInqTimestep(streamIDslm, 0);
 
-  streamInqRecord(streamIDslm, &varID, &levelID);
-  streamReadRecord(streamIDslm, cland, &nmiss);
+  pstreamInqRecord(streamIDslm, &varID, &levelID);
+  pstreamReadRecord(streamIDslm, cland, &nmiss);
 
   if ( nmiss > 0 ) cdoAbort("SLM with missing values are unsupported!");
 
@@ -80,7 +78,7 @@ void *Change_e5slm(void *argument)
   if ( minval < 0 || maxval > 1 )
     cdoWarning("Values of SLM out of bounds! (minval=%g, maxval=%g)", minval , maxval);
 
-  streamClose(streamIDslm);
+  pstreamClose(streamIDslm);
 
   for ( long i = 0; i < gridsize; ++i )
     {
@@ -123,16 +121,16 @@ void *Change_e5slm(void *argument)
 
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{ 
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  int code = codes[varID];
 	  if ( code == 172 )
@@ -163,15 +161,15 @@ void *Change_e5slm(void *argument)
 		if ( lsea[i] ) array[i] = array[0];
 	    }
 
-	  streamDefRecord(streamID2,  varID,  levelID);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
 
       tsID++;
     }
   
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   Free(array);
   Free(cland);
diff --git a/src/Cloudlayer.c b/src/Cloudlayer.cc
similarity index 93%
rename from src/Cloudlayer.c
rename to src/Cloudlayer.cc
index d397503..8a961cc 100644
--- a/src/Cloudlayer.c
+++ b/src/Cloudlayer.cc
@@ -151,9 +151,9 @@ void *Cloudlayer(void *argument)
       nvars2 = NVARS;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int gridsize = vlist_check_gridsize(vlistID1);
 
@@ -307,20 +307,19 @@ void *Cloudlayer(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
      
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( zrev )
 	    offset = (nlevel-1-levelID)*gridsize;
@@ -329,7 +328,7 @@ void *Cloudlayer(void *argument)
 
 	  if ( varID == aclcacID )
 	    {
-	      streamReadRecord(streamID1, aclcac+offset, &nmiss);
+	      pstreamReadRecord(streamID1, aclcac+offset, &nmiss);
 	      if ( nmiss != 0 ) cdoAbort("Missing values unsupported!");
 	    }
 	}
@@ -351,15 +350,15 @@ void *Cloudlayer(void *argument)
 	  for ( i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(cloud[varID][i], missval) ) nmiss++;
 
-	  streamDefRecord(streamID2, varID, 0);
-	  streamWriteRecord(streamID2, cloud[varID], nmiss);
+	  pstreamDefRecord(streamID2, varID, 0);
+	  pstreamWriteRecord(streamID2, cloud[varID], nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   vlistDestroy(vlistID2);
 
diff --git a/src/Collgrid.c b/src/Collgrid.cc
similarity index 94%
rename from src/Collgrid.c
rename to src/Collgrid.cc
index 2feb150..39b6ee2 100644
--- a/src/Collgrid.c
+++ b/src/Collgrid.cc
@@ -320,8 +320,8 @@ void *Collgrid(void *argument)
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
-      ef[fileID].streamID = streamOpenRead(cdoStreamName(fileID));
-      ef[fileID].vlistID  = streamInqVlist(ef[fileID].streamID);
+      ef[fileID].streamID = pstreamOpenRead(cdoStreamName(fileID));
+      ef[fileID].vlistID  = pstreamInqVlist(ef[fileID].streamID);
     }
 
   int vlistID1 = ef[0].vlistID;
@@ -410,7 +410,7 @@ void *Collgrid(void *argument)
     }
 
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
   /*
   if ( cdoVerbose )
     {
@@ -476,36 +476,35 @@ void *Collgrid(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
-      
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 	  
   double *array2 = (gridsize2 > 0) ? (double*) Malloc(gridsize2*sizeof(double)) : NULL;
 
   int tsID = 0;
   do
     {
-      nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
+      nrecs0 = pstreamInqTimestep(ef[0].streamID, tsID);
       for ( int fileID = 1; fileID < nfiles; fileID++ )
 	{
-	  int nrecs = streamInqTimestep(ef[fileID].streamID, tsID);
+	  int nrecs = pstreamInqTimestep(ef[fileID].streamID, tsID);
 	  if ( nrecs != nrecs0 )
 	    cdoAbort("Number of records at time step %d of %s and %s differ!", tsID+1, cdoStreamName(0)->args, cdoStreamName(fileID)->args);
 	}
 
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      if ( nrecs0 > 0 ) streamDefTimestep(streamID2, tsID);
+      if ( nrecs0 > 0 ) pstreamDefTimestep(streamID2, tsID);
       
       for ( int recID = 0; recID < nrecs0; recID++ )
 	{
-	  streamInqRecord(ef[0].streamID, &varID, &levelID);
+	  pstreamInqRecord(ef[0].streamID, &varID, &levelID);
 	  if ( cdoVerbose && tsID == 0 ) printf(" tsID, recID, varID, levelID %d %d %d %d\n", tsID, recID, varID, levelID);
 
 	  for ( int fileID = 1; fileID < nfiles; fileID++ )
 	    {
 	      int varIDx, levelIDx;
-	      streamInqRecord(ef[fileID].streamID, &varIDx, &levelIDx);
+	      pstreamInqRecord(ef[fileID].streamID, &varIDx, &levelIDx);
 	    }
 
 	  if ( vlistInqFlag(vlistID1, varID, levelID) == TRUE )
@@ -522,7 +521,7 @@ void *Collgrid(void *argument)
 #endif
 	      for ( int fileID = 0; fileID < nfiles; fileID++ )
 		{
-		  streamReadRecord(ef[fileID].streamID, ef[fileID].array, &ef[fileID].nmiss);
+		  pstreamReadRecord(ef[fileID].streamID, ef[fileID].array, &ef[fileID].nmiss);
 
 		  if ( vars[varID2] )
 		    {
@@ -532,7 +531,7 @@ void *Collgrid(void *argument)
 		    }
 		}
 
-	      streamDefRecord(streamID2, varID2, levelID2);
+	      pstreamDefRecord(streamID2, varID2, levelID2);
 
 	      if ( vars[varID2] )
 		{
@@ -540,10 +539,10 @@ void *Collgrid(void *argument)
 		  for ( int i = 0; i < gridsize2; i++ )
 		    if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
 
-		  streamWriteRecord(streamID2, array2, nmiss);
+		  pstreamWriteRecord(streamID2, array2, nmiss);
 		}
 	      else
-		streamWriteRecord(streamID2, ef[0].array, ef[0].nmiss);
+		pstreamWriteRecord(streamID2, ef[0].array, ef[0].nmiss);
 	    }
 	}
 
@@ -552,9 +551,9 @@ void *Collgrid(void *argument)
   while ( nrecs0 > 0 );
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
-    streamClose(ef[fileID].streamID);
+    pstreamClose(ef[fileID].streamID);
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
diff --git a/src/Command.c b/src/Command.cc
similarity index 100%
rename from src/Command.c
rename to src/Command.cc
diff --git a/src/Comp.c b/src/Comp.cc
similarity index 89%
rename from src/Comp.c
rename to src/Comp.cc
index be06873..b553b1e 100644
--- a/src/Comp.c
+++ b/src/Comp.cc
@@ -40,7 +40,6 @@ void *Comp(void *argument)
   int nrecs, nrecs2, nvars = 0, nlev;
   int varID, levelID;
   double missval1, missval2 = 0;
-  double *missvalx1, *missvalx2;
   double **vardata = NULL;
 
   cdoInitialize(argument);
@@ -54,17 +53,17 @@ void *Comp(void *argument)
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
   int streamIDx1 = streamID1;
   int streamIDx2 = streamID2;
 
-  missvalx1 = &missval1;
-  missvalx2 = &missval2;
+  double *missvalx1 = &missval1;
+  double *missvalx2 = &missval2;
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistIDx1 = vlistID1;
   int vlistIDx2 = vlistID2;
 
@@ -161,37 +160,36 @@ void *Comp(void *argument)
   int taxisID3 = taxisDuplicate(taxisIDx1);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamIDx1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamIDx1, tsID)) )
     {
       if ( tsID == 0 || filltype == FILL_NONE )
 	{
-	  nrecs2 = streamInqTimestep(streamIDx2, tsID);
+	  nrecs2 = pstreamInqTimestep(streamIDx2, tsID);
 	  if ( nrecs2 == 0 )
 	    cdoAbort("Input streams have different number of timesteps!");
 	}
 	  
       taxisCopyTimestep(taxisID3, taxisIDx1);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
           int nmiss1;
-	  streamInqRecord(streamIDx1, &varID, &levelID);
-	  streamReadRecord(streamIDx1, arrayx1, &nmiss1);
+	  pstreamInqRecord(streamIDx1, &varID, &levelID);
+	  pstreamReadRecord(streamIDx1, arrayx1, &nmiss1);
 
 	  if ( tsID == 0 || filltype == FILL_NONE )
 	    {
 	      if ( recID == 0 || filltype != FILL_REC )
 		{
                   int nmiss2;
-		  streamInqRecord(streamIDx2, &varID, &levelID);
-		  streamReadRecord(streamIDx2, arrayx2, &nmiss2);
+		  pstreamInqRecord(streamIDx2, &varID, &levelID);
+		  pstreamReadRecord(streamIDx2, arrayx2, &nmiss2);
 		}
 
 	      if ( filltype == FILL_TS )
@@ -272,16 +270,16 @@ void *Comp(void *argument)
 	  for ( int i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(array3[i], missval1) ) nmiss3++;
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, array3, nmiss3);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, array3, nmiss3);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( vardata )
     {
diff --git a/src/Compc.c b/src/Compc.cc
similarity index 87%
rename from src/Compc.c
rename to src/Compc.cc
index dfbcf56..f815bf0 100644
--- a/src/Compc.c
+++ b/src/Compc.cc
@@ -56,9 +56,9 @@ void *Compc(void *argument)
   operatorInputArg("constant value");
   double rc = parameter2double(operatorArgv()[0]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -72,21 +72,20 @@ void *Compc(void *argument)
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  missval  = vlistInqVarMissval(vlistID1, varID);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
@@ -132,14 +131,15 @@ void *Compc(void *argument)
 	  for ( i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss2++;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss2);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss2);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array2 ) Free(array2);
   if ( array1 ) Free(array1);
diff --git a/src/Complextorect.c b/src/Complextorect.cc
similarity index 75%
rename from src/Complextorect.c
rename to src/Complextorect.cc
index 46c2587..1e7bf2f 100644
--- a/src/Complextorect.c
+++ b/src/Complextorect.cc
@@ -36,9 +36,9 @@ void *Complextorect(void *argument)
 
   // int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
   int vlistID3 = vlistDuplicate(vlistID1);
 
@@ -61,11 +61,11 @@ void *Complextorect(void *argument)
   vlistDefTaxis(vlistID2, taxisID2);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(2*gridsize*sizeof(double));
@@ -73,23 +73,23 @@ void *Complextorect(void *argument)
   double *array3 = (double*) Malloc(gridsize*sizeof(double));
       
   int tsID  = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamDefRecord(streamID3, varID, levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID3, varID, levelID);
 	      
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  for ( i = 0; i < gridsize; ++i )
 	    {
@@ -97,16 +97,16 @@ void *Complextorect(void *argument)
 	      array3[i] = array1[2*i+1];
 	    }
 
-	  streamWriteRecord(streamID2, array2, nmiss);
-	  streamWriteRecord(streamID3, array3, nmiss);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
+	  pstreamWriteRecord(streamID3, array3, nmiss);
 	}
        
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Cond.c b/src/Cond.cc
similarity index 85%
rename from src/Cond.c
rename to src/Cond.cc
index bac53ae..809da5f 100644
--- a/src/Cond.c
+++ b/src/Cond.cc
@@ -44,16 +44,18 @@ void *Cond(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int IFTHEN    = cdoOperatorAdd("ifthen",    0, 0, NULL);
   int IFNOTTHEN = cdoOperatorAdd("ifnotthen", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID2);
 
   int taxisID2 = vlistInqTaxis(vlistID2);
@@ -77,9 +79,8 @@ void *Cond(void *argument)
   nospec(vlistID1);
   nospec(vlistID2);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int gridsize = vlistGridsizeMax(vlistID2);
 
@@ -114,30 +115,30 @@ void *Cond(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
       if ( tsID == 0 || filltype == FILL_NONE )
 	{
-	  nrecs2 = streamInqTimestep(streamID1, tsID);
+	  nrecs2 = pstreamInqTimestep(streamID1, tsID);
 	  if ( nrecs2 == 0 )
 	    cdoAbort("Input streams have different number of timesteps!");
 	}
 
       taxisCopyTimestep(taxisID3, taxisID2);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, array2, &nmiss2);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, array2, &nmiss2);
 
 	  if ( tsID == 0 || filltype == FILL_NONE )
 	    {
 	      if ( recID == 0 || filltype != FILL_REC )
 		{
-		  streamInqRecord(streamID1, &varID, &levelID);
-		  streamReadRecord(streamID1, array1, &nmiss1);
+		  pstreamInqRecord(streamID1, &varID, &levelID);
+		  pstreamReadRecord(streamID1, array1, &nmiss1);
 		}
 
 	      if ( filltype == FILL_TS )
@@ -182,16 +183,16 @@ void *Cond(void *argument)
 	  for ( i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(array3[i], missval2) ) nmiss3++;
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, array3, nmiss3);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, array3, nmiss3);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( vardata1 )
     {
diff --git a/src/Cond2.c b/src/Cond2.cc
similarity index 82%
rename from src/Cond2.c
rename to src/Cond2.cc
index fd4a22a..6b4b33d 100644
--- a/src/Cond2.c
+++ b/src/Cond2.cc
@@ -47,13 +47,13 @@ void *Cond2(void *argument)
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID2);
 
   int taxisID2 = vlistInqTaxis(vlistID2);
@@ -80,9 +80,8 @@ void *Cond2(void *argument)
   nospec(vlistID2);
   nospec(vlistID3);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -119,36 +118,36 @@ void *Cond2(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
-      nrecs = streamInqTimestep(streamID3, tsID);
+      nrecs = pstreamInqTimestep(streamID3, tsID);
       if ( nrecs == 0 ) cdoAbort("Input streams have different number of timesteps!");
 
       if ( tsID == 0 || filltype == FILL_NONE )
 	{
-	  nrecs2 = streamInqTimestep(streamID1, tsID);
+	  nrecs2 = pstreamInqTimestep(streamID1, tsID);
 	  if ( nrecs2 == 0 )
 	    cdoAbort("Input streams have different number of timesteps!");
 	}
 
       taxisCopyTimestep(taxisID4, taxisID2);
 
-      streamDefTimestep(streamID4, tsID);
+      pstreamDefTimestep(streamID4, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, array2, &nmiss2);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, array2, &nmiss2);
 
-	  streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, array3, &nmiss3);
+	  pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, array3, &nmiss3);
 
 	  if ( tsID == 0 || filltype == FILL_NONE )
 	    {
 	      if ( recID == 0 || filltype != FILL_REC )
 		{
-		  streamInqRecord(streamID1, &varID, &levelID);
-		  streamReadRecord(streamID1, array1, &nmiss1);
+		  pstreamInqRecord(streamID1, &varID, &levelID);
+		  pstreamReadRecord(streamID1, array1, &nmiss1);
 		}
 
 	      if ( filltype == FILL_TS )
@@ -190,17 +189,17 @@ void *Cond2(void *argument)
 	  for ( i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(array4[i], missval2) ) nmiss4++;
 
-	  streamDefRecord(streamID4, varID, levelID);
-	  streamWriteRecord(streamID4, array4, nmiss4);
+	  pstreamDefRecord(streamID4, varID, levelID);
+	  pstreamWriteRecord(streamID4, array4, nmiss4);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( vardata1 )
     {
diff --git a/src/Condc.c b/src/Condc.cc
similarity index 81%
rename from src/Condc.c
rename to src/Condc.cc
index 9a0a9ae..fdca47e 100644
--- a/src/Condc.c
+++ b/src/Condc.cc
@@ -39,17 +39,19 @@ void *Condc(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int IFTHENC    = cdoOperatorAdd("ifthenc",    0, 0, NULL);
   int IFNOTTHENC = cdoOperatorAdd("ifnotthenc", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
   operatorInputArg("constant value");
   double rc = parameter2double(operatorArgv()[0]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -63,21 +65,20 @@ void *Condc(void *argument)
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  missval  = vlistInqVarMissval(vlistID1, varID);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
@@ -101,14 +102,14 @@ void *Condc(void *argument)
 	  for ( i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss2++;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss2);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss2);
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array2 ) Free(array2);
   if ( array1 ) Free(array1);
diff --git a/src/Consecstat.c b/src/Consecstat.cc
similarity index 87%
rename from src/Consecstat.c
rename to src/Consecstat.cc
index 029407e..7b78041 100644
--- a/src/Consecstat.c
+++ b/src/Consecstat.cc
@@ -138,9 +138,9 @@ void *Consecstat(void *argument)
   if ( operatorID == CONSECSUM )
     if ( operatorArgc() > 0 ) refval = parameter2double(operatorArgv()[0]);
 
-  int istreamID = streamOpenRead(cdoStreamName(0));
+  int istreamID = pstreamOpenRead(cdoStreamName(0));
 
-  int ivlistID = streamInqVlist(istreamID);
+  int ivlistID = pstreamInqVlist(istreamID);
   int itaxisID = vlistInqTaxis(ivlistID);
   int ovlistID = vlistDuplicate(ivlistID);
   int otaxisID = taxisDuplicate(itaxisID);
@@ -164,13 +164,12 @@ void *Consecstat(void *argument)
       vlistDefVarUnits(ovlistID, varID, "steps"); /* TODO */
     }
 
-  int ostreamID = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(ostreamID, ovlistID);
+  int ostreamID = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(ostreamID, ovlistID);
 
   int itsID = 0;
   int otsID = 0;
-  while ( (nrecs = streamInqTimestep(istreamID, itsID)) )
+  while ( (nrecs = pstreamInqTimestep(istreamID, itsID)) )
   {
     vdate = taxisInqVdate(itaxisID);
     vtime = taxisInqVtime(itaxisID);
@@ -179,14 +178,14 @@ void *Consecstat(void *argument)
       case CONSECSUM:
         taxisDefVdate(otaxisID, vdate);
         taxisDefVtime(otaxisID, vtime);
-        streamDefTimestep(ostreamID, otsID);
+        pstreamDefTimestep(ostreamID, otsID);
         break;
       case CONSECTS:
         if (itsID != 0 )
         {
           taxisDefVdate(otaxisID, histvdate);
           taxisDefVtime(otaxisID, histvtime);
-          streamDefTimestep(ostreamID, otsID-1);
+          pstreamDefTimestep(ostreamID, otsID-1);
         }
         break;
       default:
@@ -196,8 +195,8 @@ void *Consecstat(void *argument)
 
     for ( int recID = 0; recID < nrecs; recID++ )
     {
-      streamInqRecord(istreamID, &varID, &levelID);
-      streamReadRecord(istreamID, field.ptr, &nmiss);
+      pstreamInqRecord(istreamID, &varID, &levelID);
+      pstreamReadRecord(istreamID, field.ptr, &nmiss);
       field.nmiss   = (size_t)nmiss;
       field.grid    = vlistInqVarGrid(ovlistID, varID);
       field.missval = vlistInqVarMissval(ovlistID, varID);
@@ -207,15 +206,15 @@ void *Consecstat(void *argument)
       switch (operatorID)
       {
         case CONSECSUM:
-          streamDefRecord(ostreamID, varID, levelID);
-          streamWriteRecord(ostreamID, vars[varID][levelID].ptr, (int)vars[varID][levelID].nmiss);
+          pstreamDefRecord(ostreamID, varID, levelID);
+          pstreamWriteRecord(ostreamID, vars[varID][levelID].ptr, (int)vars[varID][levelID].nmiss);
           break;
         case CONSECTS:
           if ( itsID != 0 )
           {
             selEndOfPeriod(&periods[varID][levelID], hist[varID][levelID], vars[varID][levelID], FALSE);
-            streamDefRecord(ostreamID, varID, levelID);
-            streamWriteRecord(ostreamID, periods[varID][levelID].ptr, (int)periods[varID][levelID].nmiss);
+            pstreamDefRecord(ostreamID, varID, levelID);
+            pstreamWriteRecord(ostreamID, periods[varID][levelID].ptr, (int)periods[varID][levelID].nmiss);
           }
 #if defined(_OPENMP)
 #pragma omp parallel for default(shared) schedule(static)
@@ -242,15 +241,15 @@ void *Consecstat(void *argument)
   {
     taxisDefVdate(otaxisID, vdate);
     taxisDefVtime(otaxisID, vtime);
-    streamDefTimestep(ostreamID, otsID-1);
+    pstreamDefTimestep(ostreamID, otsID-1);
     for ( varID = 0; varID < nvars; varID++ )
     {
       nlevels = zaxisInqSize(vlistInqVarZaxis(ovlistID, varID));
       for ( levelID = 0; levelID < nlevels; levelID++ )
       {
         selEndOfPeriod(&periods[varID][levelID], hist[varID][levelID], vars[varID][levelID], TRUE);
-        streamDefRecord(ostreamID, varID, levelID);
-        streamWriteRecord(ostreamID, periods[varID][levelID].ptr, (int)periods[varID][levelID].nmiss);
+        pstreamDefRecord(ostreamID, varID, levelID);
+        pstreamWriteRecord(ostreamID, periods[varID][levelID].ptr, (int)periods[varID][levelID].nmiss);
       }
     }
   }
@@ -259,8 +258,8 @@ void *Consecstat(void *argument)
   if ( hist )    field_free(hist, ivlistID);
   if ( periods ) field_free(periods, ivlistID);
 
-  streamClose(istreamID);
-  streamClose(ostreamID);
+  pstreamClose(istreamID);
+  pstreamClose(ostreamID);
 
   cdoFinish();
 
diff --git a/src/Copy.c b/src/Copy.cc
similarity index 85%
rename from src/Copy.c
rename to src/Copy.cc
index 1620907..3f1946b 100644
--- a/src/Copy.c
+++ b/src/Copy.cc
@@ -53,9 +53,11 @@ void *Copy(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
                 cdoOperatorAdd("copy",   0, 0, NULL);
   int SELALL  = cdoOperatorAdd("selall", 0, 0, NULL);
   int SZIP    = cdoOperatorAdd("szip",   0, 0, NULL);
+  // clang-format on
 
 #ifdef HIRLAM_EXTENSIONS
   // KEEP in mind the difference between copy and selall with respect to unpacking and repacking the GRIB information!
@@ -81,14 +83,14 @@ void *Copy(void *argument)
     {
       if ( cdoVerbose ) cdoPrint("Process file: %s", cdoStreamName(indf)->args);
 
-      int streamID1 = streamOpenRead(cdoStreamName(indf));
+      int streamID1 = pstreamOpenRead(cdoStreamName(indf));
 
-      int vlistID1 = streamInqVlist(streamID1);
+      int vlistID1 = pstreamInqVlist(streamID1);
       int taxisID1 = vlistInqTaxis(vlistID1);
 
       if ( indf == 0 )
 	{
-	  streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+	  streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
 
 	  vlistID2 = vlistDuplicate(vlistID1);
 	  taxisID2 = taxisDuplicate(taxisID1);
@@ -112,7 +114,7 @@ void *Copy(void *argument)
 		vlistDefVarTsteptype(vlistID2, varID, TSTEP_INSTANT);
 	    }
 
-	  streamDefVlist(streamID2, vlistID2);
+	  pstreamDefVlist(streamID2, vlistID2);
 
 	  int gridsize = vlistGridsizeMax(vlistID1);
 	  array = (double*) Malloc(gridsize*sizeof(double));
@@ -129,24 +131,24 @@ void *Copy(void *argument)
 	}
 
       int tsID1 = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
 	{
 	  taxisCopyTimestep(taxisID2, taxisID1);
 
-	  streamDefTimestep(streamID2, tsID2);
+	  pstreamDefTimestep(streamID2, tsID2);
 	       
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    { 
 	      if ( lcopy && (operatorID == SELALL || operatorID == SZIP) )
 		{
-		  streamInqRecord(streamID1, &varID, &levelID);
+		  pstreamInqRecord(streamID1, &varID, &levelID);
 
                   if ( lconstvars && tsID2 > 0 && tsID1 == 0 )
                     if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT )
                       continue;
                   
-		  streamDefRecord(streamID2,  varID,  levelID);
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamDefRecord(streamID2,  varID,  levelID);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
@@ -159,34 +161,35 @@ void *Copy(void *argument)
 		    }
 		  else
 		    {
-		      streamInqRecord(streamID1, &varID, &levelID);
+		      pstreamInqRecord(streamID1, &varID, &levelID);
 
                       if ( lconstvars && tsID2 > 0 && tsID1 == 0 )
                         if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT )
                           continue;
 
-		      streamReadRecord(streamID1, array, &nmiss);
+		      pstreamReadRecord(streamID1, array, &nmiss);
 		    }
 		  /*
 		  if ( cdoParIO )
 		    fprintf(stderr, "out1 %d %d %d\n", streamID2,  varID,  levelID);
 		  */
-		  streamDefRecord(streamID2,  varID,  levelID);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamDefRecord(streamID2,  varID,  levelID);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		  /*
 		  if ( cdoParIO )
 		    fprintf(stderr, "out2 %d %d %d\n", streamID2,  varID,  levelID);
 		  */
 		}
 	    }
+
 	  tsID1++;
 	  tsID2++;
 	}
 
-      streamClose(streamID1);
+      pstreamClose(streamID1);
     }
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
   if ( array ) Free(array);
   if ( vlistID2 != CDI_UNDEFID ) vlistDestroy(vlistID2);
diff --git a/src/Deltat.c b/src/Deltat.cc
similarity index 77%
rename from src/Deltat.c
rename to src/Deltat.cc
index af7c402..4c5ac1d 100644
--- a/src/Deltat.c
+++ b/src/Deltat.cc
@@ -35,18 +35,17 @@ void *Deltat(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   field_type **vars = field_malloc(vlistID1, FIELD_PTR);
   
@@ -55,25 +54,25 @@ void *Deltat(void *argument)
   double *array2 = (double*) Malloc(gridsizemax*sizeof(double));
 
   int tsID = 0;
-  int nrecs = streamInqTimestep(streamID1, tsID);
+  int nrecs = pstreamInqTimestep(streamID1, tsID);
   for ( int recID = 0; recID < nrecs; ++recID )
     {
-      streamInqRecord(streamID1, &varID, &levelID);
-      streamReadRecord(streamID1, vars[varID][levelID].ptr, &nmiss);
+      pstreamInqRecord(streamID1, &varID, &levelID);
+      pstreamReadRecord(streamID1, vars[varID][levelID].ptr, &nmiss);
       vars[varID][levelID].nmiss = nmiss;
     }
 
   tsID++;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID2);
+      pstreamDefTimestep(streamID2, tsID2);
 
       for ( int recID = 0; recID < nrecs; ++recID )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
-          streamReadRecord(streamID1, array1, &nmiss);
+          pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, array1, &nmiss);
 
           double missval = vars[varID][levelID].missval;
           double *array0 = vars[varID][levelID].ptr;
@@ -100,8 +99,8 @@ void *Deltat(void *argument)
           
           for ( int i = 0; i < gridsize; ++i ) array0[i] = array1[i];
 
-          streamDefRecord(streamID2, varID, levelID);
-          streamWriteRecord(streamID2, array2, nmiss);
+          pstreamDefRecord(streamID2, varID, levelID);
+          pstreamWriteRecord(streamID2, array2, nmiss);
         }
       
       tsID++;
@@ -112,8 +111,8 @@ void *Deltat(void *argument)
   Free(array2);
   field_free(vars, vlistID1);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Deltime.c b/src/Deltime.cc
similarity index 83%
rename from src/Deltime.c
rename to src/Deltime.cc
index 3159098..6a884d1 100644
--- a/src/Deltime.c
+++ b/src/Deltime.cc
@@ -39,8 +39,10 @@ void *Deltime(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int DELDAY   = cdoOperatorAdd("delday",   0, 0, NULL);
   int DEL29FEB = cdoOperatorAdd("del29feb", 0, 0, NULL);
+  // clang-format on
 
   UNUSED(DELDAY);
 
@@ -78,9 +80,9 @@ void *Deltime(void *argument)
 
   if ( cdoVerbose ) cdoPrint("delete day %d%s", dday, cmons[dmon]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -88,9 +90,8 @@ void *Deltime(void *argument)
   taxisDefCalendar(taxisID2, CALENDAR_365DAYS);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   if ( ! lcopy )
     {
@@ -101,7 +102,7 @@ void *Deltime(void *argument)
   int nfound = 0;
   int tsID  = 0;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       // vtime = taxisInqVtime(taxisID1);
@@ -122,20 +123,20 @@ void *Deltime(void *argument)
 	{
 	  taxisCopyTimestep(taxisID2, taxisID1);
 
-	  streamDefTimestep(streamID2, tsID2++);
+	  pstreamDefTimestep(streamID2, tsID2++);
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	}
@@ -143,8 +144,8 @@ void *Deltime(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( nfound == 0 )
     cdoWarning("Day %d%s not found!", dday, cmons[dmon]);
diff --git a/src/Derivepar.c b/src/Derivepar.cc
similarity index 94%
rename from src/Derivepar.c
rename to src/Derivepar.cc
index 78d08bc..62119db 100644
--- a/src/Derivepar.c
+++ b/src/Derivepar.cc
@@ -54,18 +54,20 @@ void *Derivepar(void *argument)
   double *full_press = NULL;
   double minval, maxval;
   int instNum, tableNum;
-  gribcode_t gribcodes = {0};
+  gribcode_t gribcodes = {};
 
   cdoInitialize(argument);
 
+  // clang-format off
   int GHEIGHT          = cdoOperatorAdd("gheight",            0, 0, NULL);
   int SEALEVELPRESSURE = cdoOperatorAdd("sealevelpressure",   0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int gridID = vlistGrid(vlistID1, 0);
   if ( gridInqType(gridID) == GRID_SPECTRAL )
@@ -288,24 +290,23 @@ void *Derivepar(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  zaxisID  = vlistInqVarZaxis(vlistID1, varID);
 	  nlevel   = zaxisInqSize(zaxisID);
 	  offset   = gridsize*levelID;
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  if ( zaxisIDh != -1 )
 	    {
@@ -393,8 +394,8 @@ void *Derivepar(void *argument)
 	  nlevel = nhlevf;
 	  for ( levelID = 0; levelID < nlevel; levelID++ )
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, gheight+levelID*gridsize, nmissout);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, gheight+levelID*gridsize, nmissout);
 	    }
 	}
       else if ( operatorID == SEALEVELPRESSURE )
@@ -403,8 +404,8 @@ void *Derivepar(void *argument)
 
 	  extra_P(sealevelpressure, half_press+gridsize*(nhlevf), full_press+gridsize*(nhlevf-1), sgeopot, temp+gridsize*(nhlevf-1), gridsize);
 
-	  streamDefRecord(streamID2, 0, 0);
-	  streamWriteRecord(streamID2, sealevelpressure, 0);
+	  pstreamDefRecord(streamID2, 0, 0);
+	  pstreamWriteRecord(streamID2, sealevelpressure, 0);
 	}
       else
 	cdoAbort("Internal error");
@@ -412,8 +413,8 @@ void *Derivepar(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Detrend.c b/src/Detrend.cc
similarity index 88%
rename from src/Detrend.c
rename to src/Detrend.cc
index 56837d6..1d961d6 100644
--- a/src/Detrend.c
+++ b/src/Detrend.cc
@@ -82,23 +82,22 @@ void *Detrend(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars = vlistNvars(vlistID1);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -112,11 +111,11 @@ void *Detrend(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 	}
 
@@ -168,7 +167,7 @@ void *Detrend(void *argument)
   for ( int tsID = 0; tsID < nts; tsID++ )
     {
       dtlist_taxisDefTimestep(dtlist, taxisID2, tsID);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -178,8 +177,8 @@ void *Detrend(void *argument)
 	      if ( vars[tsID][varID][levelID].ptr )
 		{
 		  nmiss = vars[tsID][varID][levelID].nmiss;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
 		  Free(vars[tsID][varID][levelID].ptr);
 		  vars[tsID][varID][levelID].ptr = NULL;
 		}
@@ -193,8 +192,8 @@ void *Detrend(void *argument)
 
   dtlist_delete(dtlist);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Diff.c b/src/Diff.cc
similarity index 92%
rename from src/Diff.c
rename to src/Diff.cc
index 1abc71d..ecf0341 100644
--- a/src/Diff.c
+++ b/src/Diff.cc
@@ -43,10 +43,12 @@ void *Diff(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int DIFF  = cdoOperatorAdd("diff",  0, 0, NULL);
   int DIFFP = cdoOperatorAdd("diffp", 0, 0, NULL);
   int DIFFN = cdoOperatorAdd("diffn", 0, 0, NULL);
   int DIFFC = cdoOperatorAdd("diffc", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -55,11 +57,11 @@ void *Diff(void *argument)
   if ( operatorArgc() == 2 ) rellim = parameter2double(operatorArgv()[1]);
   if ( rellim < -1.e33 || rellim > 1.e+33 ) cdoAbort("Rel. limit out of range!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
 
@@ -73,21 +75,21 @@ void *Diff(void *argument)
   int taxisID = vlistInqTaxis(vlistID1);
   while ( TRUE )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs > 0 )
 	{
 	  date2str(taxisInqVdate(taxisID), vdatestr, sizeof(vdatestr));
 	  time2str(taxisInqVtime(taxisID), vtimestr, sizeof(vtimestr));
 	}
 
-      nrecs2 = streamInqTimestep(streamID2, tsID);
+      nrecs2 = pstreamInqTimestep(streamID2, tsID);
 
       if ( nrecs == 0 || nrecs2 == 0 ) break;
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID1, &levelID);
-	  streamInqRecord(streamID2, &varID2, &levelID);
+	  pstreamInqRecord(streamID1, &varID1, &levelID);
+	  pstreamInqRecord(streamID2, &varID2, &levelID);
 
 	  indg += 1;
 
@@ -104,8 +106,8 @@ void *Diff(void *argument)
 
 	  cdiParamToString(param, paramstr, sizeof(paramstr));
 
-	  streamReadRecord(streamID1, array1, &nmiss1);
-	  streamReadRecord(streamID2, array2, &nmiss2);
+	  pstreamReadRecord(streamID1, array1, &nmiss1);
+	  pstreamReadRecord(streamID2, array2, &nmiss2);
 
 	  int ndiff = 0;
 	  bool dsgn = false;
@@ -234,8 +236,8 @@ void *Diff(void *argument)
   if ( nrecs > 0 && nrecs2 == 0 )
     cdoWarning("stream1 has more time steps than stream2!");
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Distgrid.c b/src/Distgrid.cc
similarity index 94%
rename from src/Distgrid.c
rename to src/Distgrid.cc
index 87147dd..39982ef 100644
--- a/src/Distgrid.c
+++ b/src/Distgrid.cc
@@ -225,9 +225,9 @@ void *Distgrid(void *argument)
   if ( nxblocks <= 0 ) cdoAbort("nxblocks has to be greater than 0!");
   if ( nyblocks <= 0 ) cdoAbort("nyblocks has to be greater than 0!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int ngrids = vlistNgrids(vlistID1);
 
@@ -319,7 +319,7 @@ void *Distgrid(void *argument)
 
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   for ( int index = 0; index < nsplit; index++ )
     {
@@ -328,23 +328,23 @@ void *Distgrid(void *argument)
 	sprintf(filename+nchars+5, "%s", filesuffix);
 
       argument_t *fileargument = file_argument_new(filename);
-      streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+      streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
-      streamDefVlist(streamIDs[index], vlistIDs[index]);
+      pstreamDefVlist(streamIDs[index], vlistIDs[index]);
     }
 
   if ( ngrids > 1 ) cdoPrint("Baustelle: number of different grids > 1!");
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( int index = 0; index < nsplit; index++ )
-	streamDefTimestep(streamIDs[index], tsID);
+	pstreamDefTimestep(streamIDs[index], tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  double missval = vlistInqVarMissval(vlistID1, varID);
 
@@ -352,25 +352,25 @@ void *Distgrid(void *argument)
 	    {
 	      i = 0;
 	      window_cell(array1, array2, grids[i].gridsize[index], grids[i].gridindex[index]);
-	      streamDefRecord(streamIDs[index], varID, levelID);
+	      pstreamDefRecord(streamIDs[index], varID, levelID);
 	      if ( nmiss > 0 )
 		{
 		  nmiss = 0;
 		  for ( int k = 0; k < grids[i].gridsize[index]; ++k )
 		    if ( DBL_IS_EQUAL(array2[k], missval) ) nmiss++;
 		}
-	      streamWriteRecord(streamIDs[index], array2, nmiss);
+	      pstreamWriteRecord(streamIDs[index], array2, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
 
   for ( int index = 0; index < nsplit; index++ )
     {
-      streamClose(streamIDs[index]);
+      pstreamClose(streamIDs[index]);
       vlistDestroy(vlistIDs[index]);
     }
 
diff --git a/src/Duplicate.c b/src/Duplicate.cc
similarity index 83%
rename from src/Duplicate.c
rename to src/Duplicate.cc
index 257ff93..dbbfe0e 100644
--- a/src/Duplicate.c
+++ b/src/Duplicate.cc
@@ -41,9 +41,9 @@ void *Duplicate(void *argument)
 
   if ( cdoVerbose ) cdoPrint("ndup = %d", ndup);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -67,14 +67,13 @@ void *Duplicate(void *argument)
 	vlistDefVarTsteptype(vlistID2, varID, TSTEP_INSTANT);
     }
  
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   nvars = vlistNvars(vlistID1);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -91,11 +90,11 @@ void *Duplicate(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  int gridID   = vlistInqVarGrid(vlistID1, varID);
 	  int gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 	}
 
@@ -110,7 +109,7 @@ void *Duplicate(void *argument)
 	{
 	  taxisDefVdate(taxisID2, vdate[tsID]);
 	  taxisDefVtime(taxisID2, vtime[tsID]);
-	  streamDefTimestep(streamID2, idup*nts+tsID);
+	  pstreamDefTimestep(streamID2, idup*nts+tsID);
 
 	  for ( varID = 0; varID < nvars; varID++ )
 	    {
@@ -120,8 +119,8 @@ void *Duplicate(void *argument)
 		  if ( vars[tsID][varID][levelID].ptr )
 		    {
 		      nmiss = vars[tsID][varID][levelID].nmiss;
-		      streamDefRecord(streamID2, varID, levelID);
-		      streamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
+		      pstreamDefRecord(streamID2, varID, levelID);
+		      pstreamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
 		    }
 		}
 	    }
@@ -134,8 +133,8 @@ void *Duplicate(void *argument)
   if ( vdate ) Free(vdate);
   if ( vtime ) Free(vtime);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/EOFs.c b/src/EOFs.cc
similarity index 94%
rename from src/EOFs.c
rename to src/EOFs.cc
index cb0992b..d857380 100644
--- a/src/EOFs.c
+++ b/src/EOFs.cc
@@ -198,9 +198,11 @@ void *EOFs(void * argument)
   
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("eof",        EOF_,        0, NULL);
   cdoOperatorAdd("eoftime",    EOF_TIME,    0, NULL);
   cdoOperatorAdd("eofspatial", EOF_SPATIAL, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
@@ -211,8 +213,8 @@ void *EOFs(void * argument)
   enum T_EIGEN_MODE eigen_mode = get_eigenmode();
   enum T_WEIGHT_MODE weight_mode = get_weightmode();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int vlistID1  = streamInqVlist(streamID1);
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int vlistID1  = pstreamInqVlist(streamID1);
   int taxisID1  = vlistInqTaxis(vlistID1);
   int gridID1   = vlistInqVarGrid(vlistID1, 0);
   int gridsize  = vlistGridsizeMax(vlistID1);
@@ -248,17 +250,17 @@ void *EOFs(void * argument)
       if ( nts == -1 )
 	{
           nts = 0;
-	  while ( streamInqTimestep(streamID1, nts) ) nts++;
+	  while ( pstreamInqTimestep(streamID1, nts) ) nts++;
 
 	  if ( cdoVerbose ) cdoPrint("Counted %i timeSteps", nts);
 	}
       else
         if ( cdoVerbose ) cdoPrint("Found %i timeSteps", nts);
 
-      streamClose(streamID1);
+      pstreamClose(streamID1);
 
-      streamID1 = streamOpenRead(cdoStreamName(0));
-      vlistID1  = streamInqVlist(streamID1);
+      streamID1 = pstreamOpenRead(cdoStreamName(0));
+      vlistID1  = pstreamInqVlist(streamID1);
       taxisID1  = vlistInqTaxis(vlistID1);
 
       if ( nts < gridsize || operfunc == EOF_TIME )
@@ -350,13 +352,13 @@ void *EOFs(void * argument)
   /* read the data and create covariance matrices for each var & level */
   while ( TRUE )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
-          streamReadRecord(streamID1, in, &nmiss);
+          pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, in, &nmiss);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
           missval = vlistInqVarMissval(vlistID1, varID);
@@ -440,7 +442,7 @@ void *EOFs(void * argument)
   /* write files with eigenvalues (ID3) and eigenvectors (ID2) */
 
   /* eigenvalues */
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   int vlistID2 = vlistDuplicate(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
@@ -458,7 +460,7 @@ void *EOFs(void * argument)
     vlistChangeGridIndex(vlistID2, i, gridID2);
 
   /*  eigenvectors */
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
   int vlistID3  = vlistDuplicate(vlistID1);
   int taxisID3  = taxisDuplicate(taxisID1);
@@ -466,8 +468,8 @@ void *EOFs(void * argument)
   taxisDefRtime(taxisID3, 0);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  streamDefVlist(streamID2, vlistID2);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int vdate = 10101;
   int vtime = 0;
@@ -486,13 +488,13 @@ void *EOFs(void * argument)
 
       taxisDefVdate(taxisID2, vdate);
       taxisDefVtime(taxisID2, vtime);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       if ( tsID < n_eig )
         {
           taxisDefVdate(taxisID3, vdate);
           taxisDefVtime(taxisID3, vtime);
-          streamDefTimestep(streamID3, tsID);
+          pstreamDefTimestep(streamID3, tsID);
         }
 
       for ( varID = 0; varID < nvars; varID++ )
@@ -615,14 +617,14 @@ void *EOFs(void * argument)
                   nmiss = 0;
                   for ( int i = 0; i < gridsize; i++ ) if ( DBL_IS_EQUAL(out[i], missval) ) nmiss++;
 
-                  streamDefRecord(streamID3, varID, levelID);
-                  streamWriteRecord(streamID3, out, nmiss);
+                  pstreamDefRecord(streamID3, varID, levelID);
+                  pstreamWriteRecord(streamID3, out, nmiss);
 		} // loop n_eig
 
 	      nmiss = 0;
               if ( DBL_IS_EQUAL(eig_val[tsID], missval) ) nmiss = 1;
-              streamDefRecord(streamID2, varID, levelID);
-              streamWriteRecord(streamID2, &eig_val[tsID], nmiss);
+              pstreamDefRecord(streamID2, varID, levelID);
+              pstreamWriteRecord(streamID2, &eig_val[tsID], nmiss);
 	    } // loop nlevs
 	} // loop nvars
     }
@@ -652,9 +654,9 @@ void *EOFs(void * argument)
   Free(pack);
   Free(weight);
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
   vlistDestroy(vlistID3);
diff --git a/src/EcaIndices.c b/src/EcaIndices.cc
similarity index 99%
rename from src/EcaIndices.c
rename to src/EcaIndices.cc
index da9c15c..7400573 100755
--- a/src/EcaIndices.c
+++ b/src/EcaIndices.cc
@@ -509,7 +509,6 @@ void *EcaFd(void *argument)
 */
 void *EcaGsl(void *argument)
 {
-  char *longname;
   int argN = 6; 
   double argT = 5.0;
   double minLandFraction = 0.5;
@@ -522,7 +521,7 @@ void *EcaGsl(void *argument)
   if ( operatorArgc() > 1 ) argT = parameter2double(operatorArgv()[1]);
   if ( operatorArgc() > 2 ) minLandFraction = parameter2double(operatorArgv()[2]);
 
-  longname = (char*) Malloc(strlen(GSL_LONGNAME) + 160);
+  char *longname = (char*) Malloc(strlen(GSL_LONGNAME) + 160);
   sprintf(longname, GSL_LONGNAME, argN, argT, argN, argT);
   
   request.name      = GSL_NAME;
@@ -1027,9 +1026,11 @@ void *EcaPd(void *argument)
   
   cdoInitialize(argument);
 
+  // clang-format off
   ECA_PD      = cdoOperatorAdd("eca_pd",      0, 31, NULL);
   ECA_R10MM   = cdoOperatorAdd("eca_r10mm",   0, 31, NULL);
   ECA_R20MM   = cdoOperatorAdd("eca_r20mm",   0, 31, NULL);
+  // clang-format on
 
   operatorID = cdoOperatorID();
 
diff --git a/src/Echam5ini.c b/src/Echam5ini.cc
similarity index 98%
rename from src/Echam5ini.c
rename to src/Echam5ini.cc
index 7ea6dc5..f609848 100644
--- a/src/Echam5ini.c
+++ b/src/Echam5ini.cc
@@ -1438,10 +1438,12 @@ void *Echam5ini(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int IMPORT_E5ML  = cdoOperatorAdd("import_e5ml",  func_read,  0, NULL);
   int IMPORT_E5RES = cdoOperatorAdd("import_e5res", func_read,  0, NULL);
   int EXPORT_E5ML  = cdoOperatorAdd("export_e5ml",  func_write, 0, NULL);
   int EXPORT_E5RES = cdoOperatorAdd("export_e5res", func_write, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -1494,12 +1496,12 @@ void *Echam5ini(void *argument)
       if ( cdoDefaultFileType == CDI_UNDEFID )
 	cdoDefaultFileType = CDI_FILETYPE_NC;
 
-      streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+      streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-      streamDefVlist(streamID2, vlistID2);
+      pstreamDefVlist(streamID2, vlistID2);
 
       tsID = 0;
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -1508,12 +1510,12 @@ void *Echam5ini(void *argument)
 
 	  for ( levelID = 0; levelID < nlev; levelID++ )
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, vars[varID].ptr+levelID*gridsize, 0);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, vars[varID].ptr+levelID*gridsize, 0);
 	    }
 	}
 
-      streamClose(streamID2);
+      pstreamClose(streamID2);
 
       vlistDestroy(vlistID2);
     }
@@ -1525,9 +1527,9 @@ void *Echam5ini(void *argument)
       int taxisID, vdate, vtime;
       int ntr = 0;
 
-      streamID1 = streamOpenRead(cdoStreamName(0));
+      streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-      vlistID1 = streamInqVlist(streamID1);
+      vlistID1 = pstreamInqVlist(streamID1);
       taxisID = vlistInqTaxis(vlistID1);
 
       nvars = vlistNvars(vlistID1);
@@ -1586,7 +1588,7 @@ void *Echam5ini(void *argument)
 	  vars[varID].ptr = (double*) Malloc(nlev*gridsize*sizeof(double));
 	}
 
-      nrecs = streamInqTimestep(streamID1, 0);
+      nrecs = pstreamInqTimestep(streamID1, 0);
       vdate = taxisInqVdate(taxisID);
       vtime = taxisInqVtime(taxisID);
 
@@ -1598,15 +1600,15 @@ void *Echam5ini(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  gridID = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 
-	  streamReadRecord(streamID1, vars[varID].ptr+levelID*gridsize, &nmiss);
+	  pstreamReadRecord(streamID1, vars[varID].ptr+levelID*gridsize, &nmiss);
 	}
 
-      streamClose(streamID1);
+      pstreamClose(streamID1);
 
       if ( operatorID == EXPORT_E5ML )
 	export_e5ml(cdoStreamName(1)->args, vars, nvars, vdate, vtime, ntr);
diff --git a/src/Enlarge.c b/src/Enlarge.cc
similarity index 86%
rename from src/Enlarge.c
rename to src/Enlarge.cc
index 818db62..95bd050 100644
--- a/src/Enlarge.c
+++ b/src/Enlarge.cc
@@ -36,7 +36,7 @@ void *Enlarge(void *argument)
 
   operatorCheckArgc(1);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   int gridID2 = cdoDefineGrid(operatorArgv()[0]);
   int xsize2 = gridInqXsize(gridID2);
@@ -45,7 +45,7 @@ void *Enlarge(void *argument)
   if ( cdoVerbose ) fprintf(stderr, "gridID2 %d, xsize2 %d, ysize2 %d\n", gridID2, xsize2, ysize2);
 
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -62,25 +62,25 @@ void *Enlarge(void *argument)
       vlistChangeGridIndex(vlistID2, index, gridID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *array1 = (double*) Malloc(gridsize2*sizeof(double));
   double *array2 = (double*) Malloc(gridsize2*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
           int varID, levelID, nmiss;
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  double missval = vlistInqVarMissval(vlistID1, varID);
 	  int gridID1 = vlistInqVarGrid(vlistID1, varID);
@@ -131,15 +131,15 @@ void *Enlarge(void *argument)
 	      if ( nmiss && DBL_IS_EQUAL(array1[gridsize1-1], missval) ) nmiss += (gridsize2 - gridsize1);
 	    }
 	    
-	  streamDefRecord(streamID2, varID,  levelID);
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamDefRecord(streamID2, varID,  levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Enlargegrid.c b/src/Enlargegrid.cc
similarity index 91%
rename from src/Enlargegrid.c
rename to src/Enlargegrid.cc
index 8190e2a..66abc32 100644
--- a/src/Enlargegrid.c
+++ b/src/Enlargegrid.cc
@@ -166,11 +166,11 @@ void *Enlargegrid(void *argument)
   if ( operatorArgc() < 1 ) cdoAbort("Too few arguments!");
   if ( operatorArgc() > 2 ) cdoAbort("Too many arguments!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   int gridID2 = cdoDefineGrid(operatorArgv()[0]);
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
 
@@ -200,23 +200,23 @@ void *Enlargegrid(void *argument)
       vlistChangeGridIndex(vlistID2, index, gridID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   vlistDefTaxis(vlistID2, taxisID2);
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
           int varID, levelID, nmiss1;
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss1);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss1);
 
 	  double missval1 = vlistInqVarMissval(vlistID1, varID);
 
@@ -229,15 +229,15 @@ void *Enlargegrid(void *argument)
 	  for ( int i = 0; i < gridsize2; i++ )
 	    if ( DBL_IS_EQUAL(array2[i], missval1) ) nmiss2++;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss2);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss2);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   if ( gindex ) Free(gindex);
   if ( array2 ) Free(array2);
diff --git a/src/Ensstat.c b/src/Ensstat.cc
similarity index 52%
rename from src/Ensstat.c
rename to src/Ensstat.cc
index bd09c83..fc4c628 100644
--- a/src/Ensstat.c
+++ b/src/Ensstat.cc
@@ -18,6 +18,7 @@
 /*
    This module contains the following operators:
 
+      Ensstat    ensrange        Ensemble range
       Ensstat    ensmin          Ensemble minimum
       Ensstat    ensmax          Ensemble maximum
       Ensstat    enssum          Ensemble sum
@@ -119,250 +120,19 @@ void *ensstat_func(void *ensarg)
       if ( arg->count_data ) arg->count2[i] = nfiles - field[ompthID].nmiss;
     }
 
-  streamDefRecord(arg->streamID2, arg->varID[t], arg->levelID[t]);
-  streamWriteRecord(arg->streamID2, arg->array2, nmiss);
+  pstreamDefRecord(arg->streamID2, arg->varID[t], arg->levelID[t]);
+  pstreamWriteRecord(arg->streamID2, arg->array2, nmiss);
 
   if ( arg->count_data )
     {
-      streamDefRecord(arg->streamID2, arg->varID[t]+arg->nvars, arg->levelID[t]);
-      streamWriteRecord(arg->streamID2, arg->count2, 0);
+      pstreamDefRecord(arg->streamID2, arg->varID[t]+arg->nvars, arg->levelID[t]);
+      pstreamWriteRecord(arg->streamID2, arg->count2, 0);
     }
 
   return NULL;
 }
 
-//#define TEST_TASK
-#ifdef TEST_TASK
-void *Ensstat(void *argument)
-{
-  void *task = CDO_task ? cdo_task_new() : NULL;
-  ensstat_arg_t ensstat_arg;
-  int nrecs0;
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("ensmin",  func_min,  0, NULL);
-  cdoOperatorAdd("ensmax",  func_max,  0, NULL);
-  cdoOperatorAdd("enssum",  func_sum,  0, NULL);
-  cdoOperatorAdd("ensmean", func_mean, 0, NULL);
-  cdoOperatorAdd("ensavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("ensstd",  func_std,  0, NULL);
-  cdoOperatorAdd("ensstd1", func_std1, 0, NULL);
-  cdoOperatorAdd("ensvar",  func_var,  0, NULL);
-  cdoOperatorAdd("ensvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("enspctl", func_pctl, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  bool lpctl = operfunc == func_pctl;
-
-  int argc = operatorArgc();
-  int nargc = argc;
-
-  double pn = 0;
-  if ( operfunc == func_pctl )
-    {
-      operatorInputArg("percentile number");
-      pn = parameter2int(operatorArgv()[0]);
-      percentile_check_number(pn);
-      argc--;
-    }
-
-  bool count_data = false;
-  if ( argc == 1 )
-    {
-      if ( strcmp("count", operatorArgv()[nargc-1]) == 0 ) count_data = true;
-      else cdoAbort("Unknown parameter: >%s<", operatorArgv()[nargc-1]); 
-    }
-    
-  int nfiles = cdoStreamCnt() - 1;
-
-  if ( cdoVerbose ) cdoPrint("Ensemble over %d files.", nfiles);
-
-  const char *ofilename = cdoStreamName(nfiles)->args;
-
-  if ( !cdoOverwriteMode && fileExists(ofilename) && !userFileOverwrite(ofilename) )
-    cdoAbort("Outputfile %s already exists!", ofilename);
-
-  ens_file_t *ef = (ens_file_t *) Malloc(nfiles*sizeof(ens_file_t));
-
-  field_type *field = (field_type *) Malloc(ompNumThreads*sizeof(field_type));
-  for ( int i = 0; i < ompNumThreads; i++ )
-    {
-      field_init(&field[i]);
-      field[i].size = nfiles;
-      field[i].ptr  = (double*) Malloc(nfiles*sizeof(double));
-    }
-
-  for ( int fileID = 0; fileID < nfiles; fileID++ )
-    {
-      ef[fileID].streamID = streamOpenRead(cdoStreamName(fileID));
-      ef[fileID].vlistID  = streamInqVlist(ef[fileID].streamID);
-    }
-
-  /* check that the contents is always the same */
-  for ( int fileID = 1; fileID < nfiles; fileID++ )
-    vlistCompare(ef[0].vlistID, ef[fileID].vlistID, CMP_ALL);
-
-  int vlistID1 = ef[0].vlistID;
-  int vlistID2 = vlistDuplicate(vlistID1);
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int gridsizemax = vlistGridsizeMax(vlistID1);
-
-  for ( int fileID = 0; fileID < nfiles; fileID++ )
-    {
-      ef[fileID].array[0] = (double*) Malloc(gridsizemax*sizeof(double));
-      ef[fileID].array[1] = task ? (double*) Malloc(gridsizemax*sizeof(double)) : NULL;
-    }
-
-  double *array2 = (double *) Malloc(gridsizemax*sizeof(double));
-
-  int nvars = vlistNvars(vlistID2);
-  double *count2 = NULL;
-  if ( count_data )
-    {
-      count2 = (double *) Malloc(gridsizemax*sizeof(double));
-      for ( int varID = 0; varID < nvars; ++varID )
-	{
-	  char name[CDI_MAX_NAME];
-	  vlistInqVarName(vlistID2, varID, name);
-	  strcat(name, "_count");
-	  int gridID = vlistInqVarGrid(vlistID2, varID);
-	  int zaxisID = vlistInqVarZaxis(vlistID2, varID);
-	  int tsteptype = vlistInqVarTsteptype(vlistID2, varID);
-	  int cvarID = vlistDefVar(vlistID2, gridID, zaxisID, tsteptype);
-	  vlistDefVarName(vlistID2, cvarID, name);
-	  vlistDefVarDatatype(vlistID2, cvarID, CDI_DATATYPE_INT16);
-	  if ( cvarID != (varID+nvars) ) cdoAbort("Internal error, varIDs do not match!");
-	}
-    }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  ensstat_arg.vlistID1 = vlistID1;
-  ensstat_arg.streamID2 = streamID2;
-  ensstat_arg.nfiles = nfiles;
-  ensstat_arg.array2 = array2;
-  ensstat_arg.count2 = count2;
-  ensstat_arg.field = field;
-  ensstat_arg.operfunc = operfunc;
-  ensstat_arg.pn = pn;
-  ensstat_arg.lpctl = lpctl;
-  ensstat_arg.count_data = count_data;
-  ensstat_arg.nvars = nvars;
-  ensstat_arg.t = 0;
-
-  bool lwarning = false;
-  bool lerror = false;
-  int t = 0;
-  int tsID = 0;
-  do
-    {
-      nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
-      for ( int fileID = 1; fileID < nfiles; fileID++ )
-	{
-	  int streamID = ef[fileID].streamID;
-	  int nrecs = streamInqTimestep(streamID, tsID);
-	  if ( nrecs != nrecs0 )
-	    {
-	      if ( nrecs == 0 )
-                {
-                  lwarning = true;
-                  cdoWarning("Inconsistent ensemble file, too few time steps in %s!", cdoStreamName(fileID)->args);
-                }
-	      else if ( nrecs0 == 0 )
-                {
-                  lwarning = true;
-                  cdoWarning("Inconsistent ensemble file, too few time steps in %s!", cdoStreamName(0)->args);
-                }
-	      else
-                {
-                  lerror = true;
-                  cdoWarning("Inconsistent ensemble file, number of records at time step %d of %s and %s differ!",
-                             tsID+1, cdoStreamName(0)->args, cdoStreamName(fileID)->args);
-                }
-              goto CLEANUP;
-	    }
-	}
-
-      if ( nrecs0 > 0 )
-	{
-	  taxisCopyTimestep(taxisID2, taxisID1);
-	  streamDefTimestep(streamID2, tsID);
-	}
-
-      for ( int recID = 0; recID < nrecs0; recID++ )
-	{
-          int varID = 0, levelID;
-
-	  for ( int fileID = 0; fileID < nfiles; fileID++ )
-	    {
-	      streamInqRecord(ef[fileID].streamID, &varID, &levelID);
-              ef[fileID].missval[t] = vlistInqVarMissval(ef[fileID].vlistID, varID);
-	    }
-          //#pragma omp parallel for default(none) shared(ef, nfiles)
-	  for ( int fileID = 0; fileID < nfiles; fileID++ )
-	    {
-	      streamReadRecord(ef[fileID].streamID, ef[fileID].array[t], &ef[fileID].nmiss[t]);
-	    }
-
-          ensstat_arg.ef = ef;
-          ensstat_arg.varID[t] = varID;
-          ensstat_arg.levelID[t] = levelID;
-          if ( task )
-            {
-              cdo_task_start(task, ensstat_func, &ensstat_arg);
-              cdo_task_wait(task);
-              t = !t;
-            }
-          else
-            {
-              ensstat_func(&ensstat_arg);
-            }
-        }
-
-      tsID++;
-    }
-  while ( nrecs0 > 0 );
-
- CLEANUP:
-
-  if ( lwarning ) cdoWarning("Inconsistent ensemble, processed only the first %d timesteps!", tsID);
-  if ( lerror ) cdoAbort("Inconsistent ensemble, processed only the first %d timesteps!", tsID);
-
-  if ( task ) cdo_task_wait(task);
-
-  for ( int fileID = 0; fileID < nfiles; fileID++ )
-    streamClose(ef[fileID].streamID);
-
-  streamClose(streamID2);
-
-  for ( int fileID = 0; fileID < nfiles; fileID++ )
-    {
-      if ( ef[fileID].array[0] ) Free(ef[fileID].array[0]);
-      if ( ef[fileID].array[1] ) Free(ef[fileID].array[1]);
-    }
-
-  if ( ef ) Free(ef);
-  if ( array2 ) Free(array2);
-  if ( count2 ) Free(count2);
-
-  for ( int i = 0; i < ompNumThreads; i++ ) if ( field[i].ptr ) Free(field[i].ptr);
-  if ( field ) Free(field);
-
-  if ( task ) cdo_task_delete(task);
-
-  cdoFinish();
-
-  return 0;
-}
-#else
 void *Ensstat(void *argument)
 {
   void *task = CDO_task ? cdo_task_new() : NULL;
@@ -371,16 +141,19 @@ void *Ensstat(void *argument)
 
   cdoInitialize(argument);
 
-  cdoOperatorAdd("ensmin",  func_min,  0, NULL);
-  cdoOperatorAdd("ensmax",  func_max,  0, NULL);
-  cdoOperatorAdd("enssum",  func_sum,  0, NULL);
-  cdoOperatorAdd("ensmean", func_mean, 0, NULL);
-  cdoOperatorAdd("ensavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("ensstd",  func_std,  0, NULL);
-  cdoOperatorAdd("ensstd1", func_std1, 0, NULL);
-  cdoOperatorAdd("ensvar",  func_var,  0, NULL);
-  cdoOperatorAdd("ensvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("enspctl", func_pctl, 0, NULL);
+  // clang-format off
+  cdoOperatorAdd("ensrange", func_range, 0, NULL);
+  cdoOperatorAdd("ensmin",   func_min,   0, NULL);
+  cdoOperatorAdd("ensmax",   func_max,   0, NULL);
+  cdoOperatorAdd("enssum",   func_sum,   0, NULL);
+  cdoOperatorAdd("ensmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("ensavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("ensstd",   func_std,   0, NULL);
+  cdoOperatorAdd("ensstd1",  func_std1,  0, NULL);
+  cdoOperatorAdd("ensvar",   func_var,   0, NULL);
+  cdoOperatorAdd("ensvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("enspctl",  func_pctl,  0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -427,8 +200,8 @@ void *Ensstat(void *argument)
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
-      ef[fileID].streamID = streamOpenRead(cdoStreamName(fileID));
-      ef[fileID].vlistID  = streamInqVlist(ef[fileID].streamID);
+      ef[fileID].streamID = pstreamOpenRead(cdoStreamName(fileID));
+      ef[fileID].vlistID  = pstreamInqVlist(ef[fileID].streamID);
     }
 
   /* check that the contents is always the same */
@@ -471,9 +244,8 @@ void *Ensstat(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   ensstat_arg.vlistID1 = vlistID1;
   ensstat_arg.streamID2 = streamID2;
@@ -494,11 +266,11 @@ void *Ensstat(void *argument)
   int tsID = 0;
   do
     {
-      nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
+      nrecs0 = pstreamInqTimestep(ef[0].streamID, tsID);
       for ( int fileID = 1; fileID < nfiles; fileID++ )
 	{
 	  int streamID = ef[fileID].streamID;
-	  int nrecs = streamInqTimestep(streamID, tsID);
+	  int nrecs = pstreamInqTimestep(streamID, tsID);
 	  if ( nrecs != nrecs0 )
 	    {
 	      if ( nrecs == 0 )
@@ -524,7 +296,7 @@ void *Ensstat(void *argument)
       if ( nrecs0 > 0 )
 	{
 	  taxisCopyTimestep(taxisID2, taxisID1);
-	  streamDefTimestep(streamID2, tsID);
+	  pstreamDefTimestep(streamID2, tsID);
 	}
 
       for ( int recID = 0; recID < nrecs0; recID++ )
@@ -533,13 +305,13 @@ void *Ensstat(void *argument)
 
 	  for ( int fileID = 0; fileID < nfiles; fileID++ )
 	    {
-	      streamInqRecord(ef[fileID].streamID, &varID, &levelID);
+	      pstreamInqRecord(ef[fileID].streamID, &varID, &levelID);
               ef[fileID].missval[t] = vlistInqVarMissval(ef[fileID].vlistID, varID);
 	    }
           //#pragma omp parallel for default(none) shared(ef, nfiles)
 	  for ( int fileID = 0; fileID < nfiles; fileID++ )
 	    {
-	      streamReadRecord(ef[fileID].streamID, ef[fileID].array[t], &ef[fileID].nmiss[t]);
+	      pstreamReadRecord(ef[fileID].streamID, ef[fileID].array[t], &ef[fileID].nmiss[t]);
 	    }
 
           ensstat_arg.ef = ef;
@@ -549,6 +321,7 @@ void *Ensstat(void *argument)
             {
               cdo_task_start(task, ensstat_func, &ensstat_arg);
               cdo_task_wait(task);
+              //  t = !t;
             }
           else
             {
@@ -566,9 +339,9 @@ void *Ensstat(void *argument)
   if ( lerror ) cdoAbort("Inconsistent ensemble, processed only the first %d timesteps!", tsID);
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
-    streamClose(ef[fileID].streamID);
+    pstreamClose(ef[fileID].streamID);
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
@@ -589,4 +362,3 @@ void *Ensstat(void *argument)
 
   return 0;
 }
-#endif
diff --git a/src/Ensstat3.c b/src/Ensstat3.cc
similarity index 95%
rename from src/Ensstat3.c
rename to src/Ensstat3.cc
index 69c4546..2afe886 100644
--- a/src/Ensstat3.c
+++ b/src/Ensstat3.cc
@@ -78,9 +78,11 @@ void *Ensstat3(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("ensroc",          func_roc,  0,          NULL);
   cdoOperatorAdd("ensrkhist_space", func_rank, space_data, NULL);
   cdoOperatorAdd("ensrkhist_time",  func_rank, time_data,  NULL);
+  // clang-format on
   
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -123,9 +125,9 @@ void *Ensstat3(void *argument)
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
-      streamID = streamOpenRead(cdoStreamName(fileID));
+      streamID = pstreamOpenRead(cdoStreamName(fileID));
 
-      vlistID = streamInqVlist(streamID);
+      vlistID = pstreamInqVlist(streamID);
 
       ef[fileID].streamID = streamID;
       ef[fileID].vlistID = vlistID;
@@ -186,9 +188,8 @@ void *Ensstat3(void *argument)
 
   if ( operfunc != func_roc )
     {
-      streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
-
-      streamDefVlist(streamID2, vlistID2);
+      streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+      pstreamDefVlist(streamID2, vlistID2);
     }
 
   int gridsize = vlistGridsizeMax(vlistID1);
@@ -231,11 +232,11 @@ void *Ensstat3(void *argument)
   int tsID = 0;
   do
     {
-      nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
+      nrecs0 = pstreamInqTimestep(ef[0].streamID, tsID);
       for ( int fileID = 1; fileID < nfiles; fileID++ )
 	{
 	  streamID = ef[fileID].streamID;
-	  nrecs = streamInqTimestep(streamID, tsID);
+	  nrecs = pstreamInqTimestep(streamID, tsID);
 	  if ( nrecs != nrecs0 )
 	    {
 	      if ( nrecs == 0 )
@@ -249,7 +250,7 @@ void *Ensstat3(void *argument)
       if ( operfunc == func_rank && ( datafunc == TIME || tsID == 0 ) )
 	{
 	  taxisCopyTimestep(taxisID2, taxisID1);
-	  if ( nrecs0 > 0 ) streamDefTimestep(streamID2, tsID);
+	  if ( nrecs0 > 0 ) pstreamDefTimestep(streamID2, tsID);
 	}
 
       //      fprintf(stderr,"TIMESTEP %i varID %i rec %i\n",tsID,varID,recID);
@@ -264,8 +265,8 @@ void *Ensstat3(void *argument)
 	  for ( int fileID = 0; fileID < nfiles; fileID++ )
 	    {
 	      streamID = ef[fileID].streamID;
-	      streamInqRecord(streamID, &varID, &levelID);
-	      streamReadRecord(streamID, ef[fileID].array, &nmiss);
+	      pstreamInqRecord(streamID, &varID, &levelID);
+	      pstreamReadRecord(streamID, ef[fileID].array, &nmiss);
 	    }
 
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
@@ -383,8 +384,8 @@ void *Ensstat3(void *argument)
 	      for ( binID=0; binID<nfiles; binID++ ) {
 		val = (double)array2[binID][0];
 		//		fprintf(stderr,"%i ",(int)val);
-		streamDefRecord(streamID2, varID2[varID], binID);
-		streamWriteRecord(streamID2,&val, nmiss);
+		pstreamDefRecord(streamID2, varID2[varID], binID);
+		pstreamWriteRecord(streamID2,&val, nmiss);
 	      }
 	      //fprintf(stderr,"\n");
 	    }
@@ -433,8 +434,8 @@ void *Ensstat3(void *argument)
 	  for ( i = 0; i < osize; i++ )
 	    tmpdoub[i] = (double) array2[binID][i];
 
-	  streamDefRecord(streamID2, varID2[varID], binID);
-	  streamWriteRecord(streamID2, tmpdoub, nmiss);
+	  pstreamDefRecord(streamID2, varID2[varID], binID);
+	  pstreamWriteRecord(streamID2, tmpdoub, nmiss);
 	}
 
       Free(tmpdoub);
@@ -467,11 +468,11 @@ void *Ensstat3(void *argument)
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
       streamID = ef[fileID].streamID;
-      streamClose(streamID);
+      pstreamClose(streamID);
     }
 
   if ( operfunc != func_roc ) 
-    streamClose(streamID2);
+    pstreamClose(streamID2);
 
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     if ( ef[fileID].array ) Free(ef[fileID].array);
diff --git a/src/Ensval.c b/src/Ensval.cc
similarity index 94%
rename from src/Ensval.c
rename to src/Ensval.cc
index c368557..7615a38 100644
--- a/src/Ensval.c
+++ b/src/Ensval.cc
@@ -133,8 +133,8 @@ void *Ensval(void *argument)
   
   for ( fileID = 0; fileID < nfiles; fileID++ )
     {
-      streamID = streamOpenRead(cdoStreamName(fileID));
-      vlistID = streamInqVlist(streamID);
+      streamID = pstreamOpenRead(cdoStreamName(fileID));
+      vlistID = pstreamInqVlist(streamID);
       
       ef[fileID].streamID = streamID;
       ef[fileID].vlistID  = vlistID;
@@ -168,7 +168,7 @@ void *Ensval(void *argument)
 
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   memset(file_suffix, 0, sizeof(file_suffix) );
-  cdoGenFileSuffix(file_suffix, sizeof(file_suffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(file_suffix, sizeof(file_suffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   for ( stream = 0; stream < nostreams; stream++ ) {
     int namelen = strlen(ofilebase) 
@@ -199,7 +199,7 @@ void *Ensval(void *argument)
       cdoAbort("Outputfile %s already exists!", ofilename);
 
     argument_t *fileargument = file_argument_new(ofilename);
-    streamID2[stream] = streamOpenWrite(fileargument, cdoFiletype());    
+    streamID2[stream] = pstreamOpenWrite(fileargument, cdoFiletype());    
     file_argument_free(fileargument);
 
     Free(ofilename);
@@ -214,9 +214,9 @@ void *Ensval(void *argument)
       vlistChangeGridIndex(vlistID2[stream], i, gridID2);
 
     vlistDefTaxis(vlistID2[stream], taxisID2[stream]);
-    streamDefVlist(streamID2[stream], vlistID2[stream]);
+    pstreamDefVlist(streamID2[stream], vlistID2[stream]);
 
-    // vlistCheck = streamInqVlist(streamID2[stream]);
+    // vlistCheck = pstreamInqVlist(streamID2[stream]);
     // gridsizeCheck = vlistGridsizeMax(vlistCheck);
 
     //fprintf(stderr,"stream %i vlist %3i gridsize %4i\n",stream,vlistCheck,gridsizeCheck);
@@ -228,25 +228,25 @@ void *Ensval(void *argument)
   int tsID = 0;
   do
     {
-      nrecs0 = streamInqTimestep(ef[0].streamID, tsID);
+      nrecs0 = pstreamInqTimestep(ef[0].streamID, tsID);
       for ( fileID = 1; fileID < nfiles; fileID++ )
 	{
 	  streamID = ef[fileID].streamID;
-	  nrecs = streamInqTimestep(streamID, tsID);
+	  nrecs = pstreamInqTimestep(streamID, tsID);
 	  if ( nrecs != nrecs0 )
 	    cdoAbort("Number of records at time step %d of %s and %s differ!", tsID+1, cdoStreamName(0)->args, cdoStreamName(fileID)->args);
 	}
       
       for ( stream = 0; stream < nostreams; stream++ ) {
 	taxisCopyTimestep(taxisID2[stream], taxisID1);
-	if ( nrecs0 > 0 ) streamDefTimestep(streamID2[stream], tsID);
+	if ( nrecs0 > 0 ) pstreamDefTimestep(streamID2[stream], tsID);
       }
       
       for ( int recID = 0; recID < nrecs0; recID++ )
 	{
 	  for ( fileID = 0; fileID < nfiles; fileID++ ) 
 	    {
-	      streamInqRecord(fileID, &varID, &levelID);
+	      pstreamInqRecord(fileID, &varID, &levelID);
 	      
 	      if ( fileID == 0 )
 		{
@@ -262,7 +262,7 @@ void *Ensval(void *argument)
 	      ef[fileID].array = (double*) Malloc(gridsize*sizeof(double));
 
 	      streamID = ef[fileID].streamID;
-	      streamReadRecord(streamID, ef[fileID].array, &nmiss);
+	      pstreamReadRecord(streamID, ef[fileID].array, &nmiss);
 	    }
 
 	  // xsize = gridInqXsize(gridID);
@@ -460,12 +460,12 @@ void *Ensval(void *argument)
 		     crps,crps_reli,crps_pot, crps_reli+crps_pot);
 	  
 	  for ( stream =0; stream<nostreams; stream++ ) {
-	    streamDefRecord(streamID2[stream],varID,levelID);
+	    pstreamDefRecord(streamID2[stream],varID,levelID);
 	    if ( isnan ( r[stream] )  ) {
 	      r[stream] = missval; 
 	      have_miss = 1;
 	    }
-	    streamWriteRecord(streamID2[stream],&r[stream],have_miss);
+	    pstreamWriteRecord(streamID2[stream],&r[stream],have_miss);
 	  }
 	  
 	  switch ( operfunc ) {
@@ -487,11 +487,11 @@ void *Ensval(void *argument)
   for ( fileID = 0; fileID < nfiles; fileID++ )
     {
       streamID = ef[fileID].streamID;
-      streamClose(streamID);
+      pstreamClose(streamID);
     }
   
   for ( stream = 0; stream < nostreams; stream++ )
-    streamClose(streamID2[stream]);
+    pstreamClose(streamID2[stream]);
   
   for ( fileID = 0; fileID < nfiles; fileID++ )
     if ( ef[fileID].array ) Free(ef[fileID].array);
diff --git a/src/Eof3d.c b/src/Eof3d.cc
similarity index 90%
rename from src/Eof3d.c
rename to src/Eof3d.cc
index 70b4bde..c8f90cf 100644
--- a/src/Eof3d.c
+++ b/src/Eof3d.cc
@@ -51,7 +51,7 @@ void *EOF3d(void * argument)
   enum {EOF3D_, EOF3D_TIME, EOF3D_SPATIAL};
 
   size_t temp_size = 0, npack = 0;
-  int i, varID, levelID;
+  int varID, levelID;
   int missval_warning = 0;
   int nmiss, ngrids, n = 0, nlevs = 0;
   int offset;
@@ -72,9 +72,12 @@ void *EOF3d(void * argument)
     }
 
   cdoInitialize(argument);
+
+  // clang-format off
   cdoOperatorAdd("eof3d",        EOF3D_,        0, NULL);
   cdoOperatorAdd("eof3dtime",    EOF3D_TIME,    0, NULL);
   cdoOperatorAdd("eof3dspatial", EOF3D_SPATIAL, 0, NULL);
+  // clang-format on
 
   int operatorID  = cdoOperatorID();
   int operfunc    = cdoOperatorF1(operatorID);
@@ -85,8 +88,8 @@ void *EOF3d(void * argument)
   enum T_EIGEN_MODE eigen_mode = get_eigenmode();
   enum T_WEIGHT_MODE weight_mode = get_weightmode();
 
-  int streamID1  = streamOpenRead(cdoStreamName(0));
-  int vlistID1   = streamInqVlist(streamID1);
+  int streamID1  = pstreamOpenRead(cdoStreamName(0));
+  int vlistID1   = pstreamInqVlist(streamID1);
   int gridID1    = vlistInqVarGrid(vlistID1, 0);
   long gridsize  = vlistGridsizeMax(vlistID1);
   int nvars      = vlistNvars(vlistID1);
@@ -115,17 +118,17 @@ void *EOF3d(void * argument)
   if ( nts == -1 )
     {
       nts = 0;
-      while ( streamInqTimestep(streamID1, nts) ) nts++;
+      while ( pstreamInqTimestep(streamID1, nts) ) nts++;
 
       if ( cdoVerbose ) cdoPrint("Counted %i timeSteps", nts);
     }
   else
     if ( cdoVerbose ) cdoPrint("Found %i timeSteps", nts);
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
 
-  streamID1 = streamOpenRead(cdoStreamName(0));
-  vlistID1  = streamInqVlist(streamID1);
+  streamID1 = pstreamOpenRead(cdoStreamName(0));
+  vlistID1  = pstreamInqVlist(streamID1);
   int taxisID1  = vlistInqTaxis(vlistID1);
 
   /* reset the requested number of eigen-function to the maximum if neccessary */
@@ -169,7 +172,7 @@ void *EOF3d(void * argument)
       eigenvectors[varID] = (double **) Malloc(n_eig*sizeof(double *));
       eigenvalues[varID]  = (double **) Malloc(nts*sizeof(double *));
 
-      for ( i = 0; i < n; i++ )
+      for ( int i = 0; i < n; i++ )
 	{
 	  if ( i < n_eig )
 	    {
@@ -192,20 +195,20 @@ void *EOF3d(void * argument)
   /* read the data and create covariance matrices for each var & level */
   while ( TRUE )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
 
           gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 
           missval = vlistInqVarMissval(vlistID1, varID);
-          streamReadRecord(streamID1, in, &nmiss);
+          pstreamReadRecord(streamID1, in, &nmiss);
 
 	  offset = gridsize * levelID;
-	  for ( i = 0; i < gridsize; ++i )
+	  for ( int i = 0; i < gridsize; ++i )
 	    {
 	      if ( ! DBL_IS_EQUAL(in[i], missval ) )
 		{
@@ -374,14 +377,14 @@ void *EOF3d(void * argument)
 	}     /* for ( eofID = 0; eofID < n_eig; eofID++ )     */
 
       if ( eigv ) Free(eigv);
-      for ( i = 0; i < n; i++ )
+      for ( int i = 0; i < n; i++ )
 	if ( cov[i] ) Free(cov[i]);
     }         /* for ( varID = 0; varID < nvars; varID++ )    */
 
   /* write files with eigenvalues (ID3) and eigenvectors (ID2) */
 
   /*  eigenvalues */
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   int taxisID2 = taxisDuplicate(taxisID1);
 
@@ -407,10 +410,10 @@ void *EOF3d(void * argument)
   for ( varID=0; varID<nvars; varID++ )
     varID2[varID] = vlistDefVar(vlistID2, gridID2, zaxisID2, TSTEP_INSTANT);
   ngrids = vlistNgrids(vlistID2);
-  for ( i = 0; i < ngrids; i++ )
+  for ( int i = 0; i < ngrids; i++ )
     vlistChangeGridIndex(vlistID2, i, gridID2);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
   int vlistID3 = vlistDuplicate(vlistID1);
   int taxisID3 = taxisDuplicate(taxisID1);
@@ -418,8 +421,8 @@ void *EOF3d(void * argument)
   taxisDefRtime(taxisID3, 0);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  streamDefVlist(streamID2, vlistID2);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int vdate = 10101;
   int vtime = 0;
@@ -431,13 +434,13 @@ void *EOF3d(void * argument)
 
       taxisDefVdate(taxisID2, vdate);
       taxisDefVtime(taxisID2, vtime);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       if ( tsID < n_eig )
         {
           taxisDefVdate(taxisID3, vdate);
           taxisDefVtime(taxisID3, vtime);
-          streamDefTimestep(streamID3, tsID);
+          pstreamDefTimestep(streamID3, tsID);
         }
 
       for ( varID = 0; varID < nvars; varID++ )
@@ -449,23 +452,23 @@ void *EOF3d(void * argument)
               if ( tsID < n_eig )
                 {
                   nmiss = 0;
-                  for ( i = 0; i < gridsize; i++ )
+                  for ( int i = 0; i < gridsize; i++ )
                     if ( DBL_IS_EQUAL(eigenvectors[varID][tsID][offset + i], missval) ) nmiss++;
 
-                  streamDefRecord(streamID3, varID, levelID);
-                  streamWriteRecord(streamID3, &eigenvectors[varID][tsID][offset], nmiss);
+                  pstreamDefRecord(streamID3, varID, levelID);
+                  pstreamWriteRecord(streamID3, &eigenvectors[varID][tsID][offset], nmiss);
                 }
 	    }
-	  if ( DBL_IS_EQUAL(eigenvalues[varID][tsID][i], missval) ) nmiss = 1;
+	  if ( DBL_IS_EQUAL(eigenvalues[varID][tsID][0], missval) ) nmiss = 1;
 	  else nmiss = 0;
-	  streamDefRecord(streamID2, varID, 0);
-	  streamWriteRecord(streamID2, eigenvalues[varID][tsID],nmiss);
+	  pstreamDefRecord(streamID2, varID, 0);
+	  pstreamWriteRecord(streamID2, eigenvalues[varID][tsID],nmiss);
         } // for ( varID = 0; ... )
     } // for ( tsID = 0; ... )
 
   for ( varID = 0; varID < nvars; varID++)
     {
-      for ( i = 0; i < nts; i++)
+      for ( int i = 0; i < nts; i++)
 	{
 	  Free(datafields[varID][i]);
 	  if ( i < n_eig )
@@ -489,9 +492,9 @@ void *EOF3d(void * argument)
   Free(pack);
   Free(weight);
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   
   cdoFinish();
  
diff --git a/src/Eofcoeff.c b/src/Eofcoeff.cc
similarity index 85%
rename from src/Eofcoeff.c
rename to src/Eofcoeff.cc
index b4e259e..6cd8b3b 100644
--- a/src/Eofcoeff.c
+++ b/src/Eofcoeff.cc
@@ -45,11 +45,11 @@ void *Eofcoeff(void * argument)
 
   cdoOperatorAdd("eofcoeff",  0,  0, NULL);
      
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
   
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID2);   
   
   //taxisID1 = vlistInqTaxis(vlistID1);  
@@ -76,7 +76,7 @@ void *Eofcoeff(void * argument)
   
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
   
   field_type ***eof = (field_type***) Malloc(nvars * sizeof(field_type**));
   for ( varID=0; varID<nvars; varID++ )
@@ -85,12 +85,12 @@ void *Eofcoeff(void * argument)
   int eofID = 0;
   while ( 1 )       
    {     
-     nrecs = streamInqTimestep(streamID1, eofID);
+     nrecs = pstreamInqTimestep(streamID1, eofID);
      if ( nrecs == 0) break;
 
      for ( int recID = 0; recID < nrecs; recID++ )
        {         
-         streamInqRecord(streamID1, &varID, &levelID);
+         pstreamInqRecord(streamID1, &varID, &levelID);
          missval1 = vlistInqVarMissval(vlistID1, varID);
          if ( eofID == 0 )
            eof[varID][levelID] = (field_type*) Malloc(1*sizeof(field_type));
@@ -106,7 +106,7 @@ void *Eofcoeff(void * argument)
          if ( levelID >= nlevs )
            cdoAbort("Internal error - too high levelID");
          
-         streamReadRecord(streamID1, eof[varID][levelID][eofID].ptr, &nmiss);
+         pstreamReadRecord(streamID1, eof[varID][levelID][eofID].ptr, &nmiss);
          eof[varID][levelID][eofID].nmiss = (size_t) nmiss;
        }
      eofID++;
@@ -148,13 +148,13 @@ void *Eofcoeff(void * argument)
         strcat(oname, filesuffix);
       
       argument_t *fileargument = file_argument_new(oname);
-      streamIDs[eofID] = streamOpenWrite(fileargument, cdoFiletype());
+      streamIDs[eofID] = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
       if (cdoVerbose) 
         cdoPrint("opened %s ('w')  as stream%i for %i. eof", oname, streamIDs[eofID], eofID+1);
       
-      streamDefVlist(streamIDs[eofID], vlistID3);
+      pstreamDefVlist(streamIDs[eofID], vlistID3);
     }
   
   // ALLOCATE temporary fields for data read and write
@@ -167,26 +167,26 @@ void *Eofcoeff(void * argument)
   int tsID = 0;
   while ( 1 )
     {      
-      nrecs = streamInqTimestep(streamID2, tsID);
+      nrecs = pstreamInqTimestep(streamID2, tsID);
       if ( nrecs == 0 ) break;
       
       taxisCopyTimestep(taxisID3, taxisID2);
       /*for ( eofID=0; eofID<neof; eofID++)
         {
           fprintf(stderr, "defining ts %i\n", tsID);
-          streamDefTimestep(streamIDs[eofID],tsID);
+          pstreamDefTimestep(streamIDs[eofID],tsID);
         }
       */
       for ( int recID = 0; recID< nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
+          pstreamInqRecord(streamID2, &varID, &levelID);
           missval2 = vlistInqVarMissval(vlistID2, varID);
-          streamReadRecord(streamID2, in.ptr, &nmiss);  
+          pstreamReadRecord(streamID2, in.ptr, &nmiss);  
           in.nmiss = (size_t) nmiss;
           
           for ( eofID = 0; eofID < neof; eofID++ )
             {
-              if ( recID == 0 ) streamDefTimestep(streamIDs[eofID],tsID);
+              if ( recID == 0 ) pstreamDefTimestep(streamIDs[eofID],tsID);
               //if ( recID == 0 ) fprintf(stderr, "ts%i rec%i eof%i\n", tsID, recID, eofID);
               out.ptr[0]  = 0;
               out.grid    = gridID3;
@@ -204,9 +204,9 @@ void *Eofcoeff(void * argument)
               if ( ! DBL_IS_EQUAL(out.ptr[0],0.) ) nmiss=0;
               else { nmiss=1; out.ptr[0]=missval2; }
                       
-              streamDefRecord(streamIDs[eofID], varID, levelID);
+              pstreamDefRecord(streamIDs[eofID], varID, levelID);
               //fprintf(stderr, "%d %d %d %d %d %g\n", streamIDs[eofID],tsID, recID, varID, levelID,*out.ptr);
-              streamWriteRecord(streamIDs[eofID],out.ptr,nmiss);
+              pstreamWriteRecord(streamIDs[eofID],out.ptr,nmiss);
             }
           if ( varID >= nvars )
             cdoAbort("Internal error - too high varID");
@@ -217,10 +217,10 @@ void *Eofcoeff(void * argument)
       tsID++;
     }
   
-  for ( eofID = 0; eofID < neof; eofID++) streamClose(streamIDs[eofID]);
+  for ( eofID = 0; eofID < neof; eofID++ ) pstreamClose(streamIDs[eofID]);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   
   cdoFinish();
 
diff --git a/src/Eofcoeff3d.c b/src/Eofcoeff3d.cc
similarity index 86%
rename from src/Eofcoeff3d.c
rename to src/Eofcoeff3d.cc
index 02b7d55..ddfa901 100644
--- a/src/Eofcoeff3d.c
+++ b/src/Eofcoeff3d.cc
@@ -44,11 +44,11 @@ void *Eofcoeff3d(void * argument)
 
   cdoOperatorAdd("eofcoeff3d",  0,  0, NULL);
      
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
   
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   
   //taxisID1 = vlistInqTaxis(vlistID1);  
   int taxisID2 = vlistInqTaxis(vlistID2); 
@@ -74,7 +74,7 @@ void *Eofcoeff3d(void * argument)
   
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
  
   field_type ***eof = (field_type***) Malloc(nvars * sizeof(field_type**));
   for ( varID=0; varID<nvars; varID++ )
@@ -83,12 +83,12 @@ void *Eofcoeff3d(void * argument)
   int eofID = 0;
   while ( 1 )       
    {     
-     nrecs = streamInqTimestep(streamID1, eofID);
+     nrecs = pstreamInqTimestep(streamID1, eofID);
      if ( nrecs == 0) break;
 
      for ( int recID = 0; recID < nrecs; recID++ )
        {         
-         streamInqRecord(streamID1, &varID, &levelID);
+         pstreamInqRecord(streamID1, &varID, &levelID);
          missval1 = vlistInqVarMissval(vlistID1, varID);
          if ( eofID == 0 )
            eof[varID][levelID] = (field_type*) Malloc(1*sizeof(field_type));
@@ -105,7 +105,7 @@ void *Eofcoeff3d(void * argument)
          if ( levelID >= nlevs )
            cdoAbort("Internal error - too high levelID");
          
-         streamReadRecord(streamID1, eof[varID][levelID][eofID].ptr, &nmiss);
+         pstreamReadRecord(streamID1, eof[varID][levelID][eofID].ptr, &nmiss);
          eof[varID][levelID][eofID].nmiss = (size_t) nmiss;
        }
      eofID++;
@@ -149,13 +149,13 @@ void *Eofcoeff3d(void * argument)
         strcat(oname, filesuffix);
       
       argument_t *fileargument = file_argument_new(oname);
-      streamIDs[eofID] = streamOpenWrite(fileargument, cdoFiletype());
+      streamIDs[eofID] = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
       if (cdoVerbose) 
         cdoPrint("opened %s ('w')  as stream%i for %i. eof", oname, streamIDs[eofID], eofID+1);
       
-      streamDefVlist(streamIDs[eofID], vlistID3);
+      pstreamDefVlist(streamIDs[eofID], vlistID3);
     }
   
   // ALLOCATE temporary fields for data read and write
@@ -174,7 +174,7 @@ void *Eofcoeff3d(void * argument)
   int tsID = 0;
   while ( 1 )
     {      
-      nrecs = streamInqTimestep(streamID2, tsID);
+      nrecs = pstreamInqTimestep(streamID2, tsID);
       if ( nrecs == 0 ) break;
 
       for ( varID = 0; varID < nvars; varID++ )
@@ -188,14 +188,14 @@ void *Eofcoeff3d(void * argument)
 
       for ( int recID = 0; recID< nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+          pstreamReadRecord(streamID2, in.ptr, &nmiss);  
           missval2 = vlistInqVarMissval(vlistID2, varID);
-          streamReadRecord(streamID2, in.ptr, &nmiss);  
           in.nmiss = (size_t) nmiss;
           
           for ( eofID = 0; eofID < neof; eofID++ )
             {
-              if ( recID == 0 ) streamDefTimestep(streamIDs[eofID],tsID);
+              if ( recID == 0 ) pstreamDefTimestep(streamIDs[eofID],tsID);
 
 	      nmiss = 0;
               for( i=0; i<gridsize; i++ )
@@ -225,18 +225,18 @@ void *Eofcoeff3d(void * argument)
 
       for ( eofID = 0; eofID < neof; eofID++ ) {
 	for ( varID = 0; varID < nvars; varID++ ) {
-	  streamDefRecord(streamIDs[eofID], varID, 0);
-	  streamWriteRecord(streamIDs[eofID], out[varID][eofID].ptr, (int)out[varID][eofID].nmiss);
+	  pstreamDefRecord(streamIDs[eofID], varID, 0);
+	  pstreamWriteRecord(streamIDs[eofID], out[varID][eofID].ptr, (int)out[varID][eofID].nmiss);
 	}
       }
 
       tsID++;
     }
   
-  for ( eofID = 0; eofID < neof; eofID++ ) streamClose(streamIDs[eofID]);
+  for ( eofID = 0; eofID < neof; eofID++ ) pstreamClose(streamIDs[eofID]);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   
   cdoFinish();
 
diff --git a/src/Exprf.c b/src/Exprf.cc
similarity index 96%
rename from src/Exprf.c
rename to src/Exprf.cc
index 07f46e7..18f3c44 100644
--- a/src/Exprf.c
+++ b/src/Exprf.cc
@@ -255,10 +255,12 @@ void *Expr(void *argument)
 #define REPLACES_VARIABLES(id) cdoOperatorF1(id)
 #define READS_COMMAND_LINE(id) cdoOperatorF2(id)
 
+  // clang-format off
   cdoOperatorAdd("expr",   1, 1, "expressions");
   cdoOperatorAdd("exprf",  1, 0, "expr script filename");
   cdoOperatorAdd("aexpr",  0, 1, "expressions");
   cdoOperatorAdd("aexprf", 0, 0, "expr script filename");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -272,8 +274,8 @@ void *Expr(void *argument)
 
   if ( cdoVerbose ) cdoPrint(exprs);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int vlistID1 = streamInqVlist(streamID1);
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int vlistID1 = pstreamInqVlist(streamID1);
   int nvars1 = vlistNvars(vlistID1);
   int ngrids = vlistNgrids(vlistID1);
   int nzaxis = vlistNzaxis(vlistID1);
@@ -341,7 +343,7 @@ void *Expr(void *argument)
                 vlistDefFlag(vlistID1, varID, levID, TRUE);
             }
         }
-      vlistCopyFlag(vlistID2, vlistID1);
+      cdoVlistCopyFlag(vlistID2, vlistID1);
     }
 
   for ( int pidx = 0; pidx < parse_arg.nparams; pidx++ )
@@ -490,18 +492,17 @@ void *Expr(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nrecs;
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       params[vartsID].data[0] = tsID+1;
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int varID = 0; varID < nvars1; varID++ )
         if ( tsID == 0 || params[varID].steptype != TIME_CONSTANT )
@@ -510,13 +511,13 @@ void *Expr(void *argument)
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
           int varID, levelID;
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  if ( parse_arg.needed[varID] )
 	    {
 	      size_t offset = params[varID].ngp*levelID;
 	      double *vardata = params[varID].data + offset;
               int nmiss;
-	      streamReadRecord(streamID1, vardata, &nmiss);
+	      pstreamReadRecord(streamID1, vardata, &nmiss);
 	      params[varID].nmiss += nmiss;
 	    }
 	}
@@ -554,16 +555,16 @@ void *Expr(void *argument)
 	      for ( size_t i = 0; i < ngp; i++ )
 		if ( DBL_IS_EQUAL(vardata[i], missval) ) nmiss++;
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, vardata, nmiss);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, vardata, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/FC.c b/src/FC.cc
similarity index 89%
rename from src/FC.c
rename to src/FC.cc
index 2c4dfd3..1afcc03 100644
--- a/src/FC.c
+++ b/src/FC.cc
@@ -58,9 +58,9 @@ void *FC(void *argument)
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -232,9 +232,9 @@ void *FC(void *argument)
 
   if ( gridID1 != -1 ) vlistChangeGrid(vlistID2, gridID1, gridID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
@@ -246,19 +246,19 @@ void *FC(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( vars[varID] )
 	    {
-	      streamReadRecord(streamID1, array1, &nmiss);
+	      pstreamReadRecord(streamID1, array1, &nmiss);
 	      if ( nmiss ) cdoAbort("Missing values unsupported for spectral/fourier data!");
 
 	      gridID1 = vlistInqVarGrid(vlistID1, varID);
@@ -271,28 +271,29 @@ void *FC(void *argument)
 	      else if ( operatorID == GP2FC )
 		grid2four(sptrans, gridID1, array1, gridID2, array2);
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array2, nmiss);  
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array2, nmiss);  
 	    }   
 	  else
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array1, &nmiss);
-		  streamWriteRecord(streamID2, array1, nmiss);
+		  pstreamReadRecord(streamID1, array1, &nmiss);
+		  pstreamWriteRecord(streamID2, array1, nmiss);
 		}
 	    }    
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array2 ) Free(array2);
   if ( array1 ) Free(array1);
diff --git a/src/Filedes.c b/src/Filedes.cc
similarity index 96%
rename from src/Filedes.c
rename to src/Filedes.cc
index 706aa20..079cb3a 100644
--- a/src/Filedes.c
+++ b/src/Filedes.cc
@@ -28,7 +28,6 @@
 #include "cdo_int.h"
 #include "pstream.h"
 #include "grid.h"
-#include "util.h"
 
 
 void cdo_print_zaxis(int zaxisID);
@@ -121,7 +120,7 @@ void printSource(FILE *fp, int vlistID, int varID)
 static
 void partab(FILE *fp, int streamID, int option)
 {
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int varID, datatype = -1;
   char pstr[32];
   char paramstr[32];
@@ -194,7 +193,7 @@ void partab(FILE *fp, int streamID, int option)
       if ( param >= 0 )
 	{
 	  cdiParamToString(param, paramstr, sizeof(paramstr));
-	  fprintf(fp, "  param=%s", paramstr);
+	  fprintf(fp, "  param = %s", paramstr);
 	  if ( linebreak ) fprintf(fp, "\n");
 	}
       if ( strlen(varstdname) )
@@ -250,7 +249,7 @@ static
 void filedes(int streamID)
 {
   printf("\n");
-  int filetype = streamInqFiletype(streamID);
+  int filetype = pstreamInqFiletype(streamID);
   switch ( filetype )
     {
     case CDI_FILETYPE_GRB:  printf("  GRIB data\n"); break;
@@ -271,11 +270,12 @@ void filedes(int streamID)
     case CDI_FILETYPE_EXT:
     case CDI_FILETYPE_IEG:
       {
-        switch ( streamInqByteorder(streamID) )
+        int byteorder = pstreamInqByteorder(streamID);
+        switch ( byteorder )
           {
           case CDI_BIGENDIAN:    printf("  byteorder is BIGENDIAN\n"); break;
           case CDI_LITTLEENDIAN: printf("  byteorder is LITTLEENDIAN\n"); break;
-          default:  printf("  byteorder %d undefined\n", streamInqByteorder(streamID)); break;
+          default:  printf("  byteorder %d undefined\n", byteorder); break;
           }
        }
     }  
@@ -288,6 +288,7 @@ void *Filedes(void *argument)
 {
   cdoInitialize(argument);
 
+  // clang-format off
   int GRIDDES  = cdoOperatorAdd("griddes",   0, 0, NULL);
   int GRIDDES2 = cdoOperatorAdd("griddes2",  0, 0, NULL);
   int ZAXISDES = cdoOperatorAdd("zaxisdes",  0, 0, NULL);
@@ -299,12 +300,13 @@ void *Filedes(void *argument)
   int SPARTAB  = cdoOperatorAdd("spartab",   0, 0, NULL);
   int PARTAB   = cdoOperatorAdd("partab",    0, 0, NULL);
   int PARTAB2  = cdoOperatorAdd("partab2",   0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   int nvars  = vlistNvars(vlistID);
   int ngrids = vlistNgrids(vlistID);
@@ -411,7 +413,7 @@ void *Filedes(void *argument)
       filedes(streamID);
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   cdoFinish();
 
diff --git a/src/Fillmiss.c b/src/Fillmiss.cc
similarity index 95%
rename from src/Fillmiss.c
rename to src/Fillmiss.cc
index e355231..f7ee80a 100644
--- a/src/Fillmiss.c
+++ b/src/Fillmiss.cc
@@ -424,10 +424,12 @@ void *Fillmiss(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int FILLMISS        = cdoOperatorAdd("fillmiss"   ,   0, 0, "nfill");
   int FILLMISSONESTEP = cdoOperatorAdd("fillmiss2"  ,   0, 0, "nfill");
   int SETMISSTONN     = cdoOperatorAdd("setmisstonn" ,  0, 0, "");
   int SETMISSTODIS    = cdoOperatorAdd("setmisstodis" , 0, 0, "number of neighbors");
+  // clang-format on
 
   int operatorID      = cdoOperatorID();
 
@@ -467,18 +469,18 @@ void *Fillmiss(void *argument)
       cdoAbort("Too many arguments!");
   }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -489,23 +491,23 @@ void *Fillmiss(void *argument)
   field2.ptr = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
 
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 
           if ( field1.nmiss == 0 )
             {
-              streamWriteRecord(streamID2, field1.ptr, 0);
+              pstreamWriteRecord(streamID2, field1.ptr, 0);
             }
           else
             {
@@ -529,14 +531,14 @@ void *Fillmiss(void *argument)
               for ( int i = 0; i < gridsize; ++i )
                 if ( DBL_IS_EQUAL(field2.ptr[i], field2.missval) ) nmiss++;
               
-              streamWriteRecord(streamID2, field2.ptr, nmiss);
+              pstreamWriteRecord(streamID2, field2.ptr, nmiss);
             }
         }
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field2.ptr ) Free(field2.ptr);
   if ( field1.ptr ) Free(field1.ptr);
diff --git a/src/Filter.c b/src/Filter.cc
similarity index 94%
rename from src/Filter.c
rename to src/Filter.cc
index 71eec28..283c0f8 100644
--- a/src/Filter.c
+++ b/src/Filter.cc
@@ -24,7 +24,7 @@
 */
 
 #if defined(HAVE_CONFIG_H)
-#  include "config.h"
+#include "config.h"
 #endif
 
 
@@ -149,7 +149,7 @@ void *Filter(void *argument)
 
   cdoOperatorAdd("bandpass",  BANDPASS,  0, NULL);
   cdoOperatorAdd("highpass",  HIGHPASS,  0, NULL);
-  cdoOperatorAdd("lowpass" ,  LOWPASS,   0, NULL);
+  cdoOperatorAdd("lowpass",   LOWPASS,   0, NULL);
 
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
@@ -166,9 +166,9 @@ void *Filter(void *argument)
       
   if ( cdoVerbose && !use_fftw ) cdoPrint("Using intrinsic FFT function!");
   
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -180,7 +180,7 @@ void *Filter(void *argument)
   int nvars = vlistNvars(vlistID1);
   
   int tsID = 0;    
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
         {
@@ -194,11 +194,11 @@ void *Filter(void *argument)
            
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
           int gridID   = vlistInqVarGrid(vlistID1, varID);
           int gridsize = gridInqSize(gridID);
           vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-          streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+          pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
           vars[tsID][varID][levelID].nmiss = nmiss;
           if ( nmiss ) cdoAbort("Missing value support for operators in module Filter not added yet!");
         }
@@ -381,14 +381,14 @@ void *Filter(void *argument)
       Free(ompmem);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
   
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
  
   for ( int tsID = 0; tsID < nts; tsID++ )
     {
       dtlist_taxisDefTimestep(dtlist, taxisID2, tsID);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
     
       for ( int varID = 0; varID < nvars; varID++ )
         {
@@ -398,8 +398,8 @@ void *Filter(void *argument)
               if ( vars[tsID][varID][levelID].ptr )
                 {
                   int nmiss = vars[tsID][varID][levelID].nmiss;
-                  streamDefRecord(streamID2, varID, levelID);
-                  streamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
+                  pstreamDefRecord(streamID2, varID, levelID);
+                  pstreamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
 
                   Free(vars[tsID][varID][levelID].ptr);
                   vars[tsID][varID][levelID].ptr = NULL;
@@ -414,8 +414,8 @@ void *Filter(void *argument)
 
   dtlist_delete(dtlist);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
   
diff --git a/src/Fldrms.c b/src/Fldrms.cc
similarity index 81%
rename from src/Fldrms.c
rename to src/Fldrms.cc
index ab060e4..72f0130 100644
--- a/src/Fldrms.c
+++ b/src/Fldrms.cc
@@ -41,11 +41,11 @@ void *Fldrms(void *argument)
 
   bool needWeights = true;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -83,9 +83,8 @@ void *Fldrms(void *argument)
 
   if ( ndiffgrids > 0 ) cdoAbort("Too many different grids!");
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   field_type field1, field2, field3;
   field_init(&field1);
@@ -105,21 +104,21 @@ void *Fldrms(void *argument)
   field3.grid = gridID3;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
-      nrecs = streamInqTimestep(streamID2, tsID);
+      nrecs = pstreamInqTimestep(streamID2, tsID);
 
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
-	  streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, field2.ptr, &nmiss);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, field2.ptr, &nmiss);
           field2.nmiss = (size_t) nmiss;
 
 	  field1.grid    = vlistInqVarGrid(vlistID1, varID);
@@ -147,15 +146,15 @@ void *Fldrms(void *argument)
 
 	  fldrms(field1, field2, &field3);
 
-	  streamDefRecord(streamID3, varID,  levelID);
-	  streamWriteRecord(streamID3, &sglval, (int)field3.nmiss);
+	  pstreamDefRecord(streamID3, varID,  levelID);
+	  pstreamWriteRecord(streamID3, &sglval, (int)field3.nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field1.ptr )    Free(field1.ptr);
   if ( field1.weight ) Free(field1.weight);
diff --git a/src/Fldstat.c b/src/Fldstat.cc
similarity index 91%
rename from src/Fldstat.c
rename to src/Fldstat.cc
index 9053b12..46e11d4 100644
--- a/src/Fldstat.c
+++ b/src/Fldstat.cc
@@ -61,9 +61,8 @@ void print_location_LL(int operfunc, int vlistID, int varID, int levelID, int gr
           {
             if ( DBL_IS_EQUAL(fieldptr[j*nlon+i], sglval) )
               {
-                double xval, yval;
-                xval = gridInqXval(gridID,i);
-                yval = gridInqYval(gridID,j);
+                double xval = gridInqXval(gridID,i);
+                double yval = gridInqYval(gridID,j);
                 if ( showHeader )
                   {
                     if ( operfunc == func_min )
@@ -90,10 +89,10 @@ void *Fldstat(void *argument)
   int varID, levelID;
   int nmiss;
   double sglval;
-  field_type field;
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("fldrange", func_range,  0, NULL);
   cdoOperatorAdd("fldmin",   func_min,    0, NULL);
   cdoOperatorAdd("fldmax",   func_max,    0, NULL);
@@ -105,6 +104,7 @@ void *Fldstat(void *argument)
   cdoOperatorAdd("fldvar",   func_varw,   1, NULL);
   cdoOperatorAdd("fldvar1",  func_var1w,  1, NULL);
   cdoOperatorAdd("fldpctl",  func_pctl,   0, NULL);
+  // clang-format on
 
   int operatorID  = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -136,9 +136,9 @@ void *Fldstat(void *argument)
 	}
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -167,10 +167,11 @@ void *Fldstat(void *argument)
   for ( index = 0; index < ngrids; index++ )
     vlistChangeGridIndex(vlistID2, index, gridID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
+  field_type field;
   field_init(&field);
 
   int lim = vlistGridsizeMax(vlistID1);
@@ -187,10 +188,10 @@ void *Fldstat(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       /* Precompute date + time for later representation in verbose mode */
       int vdate = 0, vtime = 0;
@@ -205,8 +206,8 @@ void *Fldstat(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field.ptr, &nmiss);
 
           field.nmiss   = (size_t)nmiss;
           field.grid = vlistInqVarGrid(vlistID1, varID);
@@ -243,15 +244,15 @@ void *Fldstat(void *argument)
 	  else
 	    nmiss = 0;
 
-	  streamDefRecord(streamID2, varID,  levelID);
-	  streamWriteRecord(streamID2, &sglval, nmiss);
+	  pstreamDefRecord(streamID2, varID,  levelID);
+	  pstreamWriteRecord(streamID2, &sglval, nmiss);
 	}
       tsID++;
     }
 
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Fldstat2.c b/src/Fldstat2.cc
similarity index 80%
rename from src/Fldstat2.c
rename to src/Fldstat2.cc
index 4a16abe..0d40577 100644
--- a/src/Fldstat2.c
+++ b/src/Fldstat2.cc
@@ -92,29 +92,29 @@ void *Fldstat2(void *argument)
 {
   int gridID, lastgridID = -1;
   int gridID3;
-  int index;
   int nrecs, nrecs2;
   int varID, levelID;
-  int nmiss1, nmiss2, nmiss3;
+  int nmiss1, nmiss2;
   bool wstatus = false;
   bool needWeights = true;
-  double missval1, missval2;
   double sglval = 0;
   char varname[CDI_MAX_NAME];
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("fldcor",   func_cor,   0, NULL);
   cdoOperatorAdd("fldcovar", func_covar, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -142,25 +142,23 @@ void *Fldstat2(void *argument)
 
   int ngrids = vlistNgrids(vlistID1);
 
-  for ( index = 0; index < ngrids; index++ )
+  for ( int index = 0; index < ngrids; index++ )
     vlistChangeGridIndex(vlistID3, index, gridID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
-  double *weight = NULL;
-  if ( needWeights )
-    weight = (double*) Malloc(gridsize*sizeof(double));
+  double *weight = needWeights ? (double*) Malloc(gridsize*sizeof(double)) : NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
-      nrecs2 = streamInqTimestep(streamID2, tsID);
+      nrecs2 = pstreamInqTimestep(streamID2, tsID);
 
       if ( nrecs2 == 0 )
 	{
@@ -170,14 +168,14 @@ void *Fldstat2(void *argument)
 
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss1);
-	  streamReadRecord(streamID2, array2, &nmiss2);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss1);
+	  pstreamReadRecord(streamID2, array2, &nmiss2);
 
 	  gridID = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
@@ -192,8 +190,8 @@ void *Fldstat2(void *argument)
 	      cdoWarning("Using constant grid cell area weights for variable %s!", varname);
 	    }
 
-	  missval1 = vlistInqVarMissval(vlistID1, varID);
-	  missval2 = vlistInqVarMissval(vlistID2, varID);
+	  double missval1 = vlistInqVarMissval(vlistID1, varID);
+	  double missval2 = vlistInqVarMissval(vlistID2, varID);
 
 	  if ( operfunc == func_cor )
 	    {
@@ -204,20 +202,18 @@ void *Fldstat2(void *argument)
 	      sglval = covariance_s(array1, array2, weight, missval1, missval2, gridsize);
 	    }
 
-	  if ( DBL_IS_EQUAL(sglval, missval1) )
-	    nmiss3 = 1;
-	  else
-	    nmiss3 = 0;
+          int nmiss3 = DBL_IS_EQUAL(sglval, missval1) ? 1 : 0;
 
-	  streamDefRecord(streamID3, varID,  levelID);
-	  streamWriteRecord(streamID3, &sglval, nmiss3);
+	  pstreamDefRecord(streamID3, varID,  levelID);
+	  pstreamWriteRecord(streamID3, &sglval, nmiss3);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Fourier.c b/src/Fourier.cc
similarity index 89%
rename from src/Fourier.c
rename to src/Fourier.cc
index 69ceacb..8cab19f 100644
--- a/src/Fourier.c
+++ b/src/Fourier.cc
@@ -52,23 +52,23 @@ void *Fourier(void *argument)
   operatorInputArg("the sign of the exponent (-1 for normal or 1 for reverse transformation)!");
   int sign = parameter2int(operatorArgv()[0]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars = vlistNvars(vlistID1);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -85,11 +85,11 @@ void *Fourier(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(2*gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 	}
 
@@ -177,7 +177,7 @@ void *Fourier(void *argument)
     {
       taxisDefVdate(taxisID2, vdate[tsID]);
       taxisDefVtime(taxisID2, vtime[tsID]);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -187,8 +187,8 @@ void *Fourier(void *argument)
 	      if ( vars[tsID][varID][levelID].ptr )
 		{
 		  nmiss = vars[tsID][varID][levelID].nmiss;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
 		  Free(vars[tsID][varID][levelID].ptr);
 		  vars[tsID][varID][levelID].ptr = NULL;
 		}
@@ -202,8 +202,8 @@ void *Fourier(void *argument)
   if ( vdate ) Free(vdate);
   if ( vtime ) Free(vtime);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Gengrid.c b/src/Gengrid.cc
similarity index 83%
rename from src/Gengrid.c
rename to src/Gengrid.cc
index 16a74a9..682688a 100644
--- a/src/Gengrid.c
+++ b/src/Gengrid.cc
@@ -35,11 +35,11 @@ void *Gengrid(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   int gridID1 = vlistGrid(vlistID1, 0);
   int gridID2 = vlistGrid(vlistID2, 0);
@@ -55,15 +55,15 @@ void *Gengrid(void *argument)
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
   double *array3 = (double*) Malloc(gridsize*sizeof(double));
 
-  streamInqRecord(streamID1, &varID, &levelID);
-  streamReadRecord(streamID1, array1, &nmiss1);
-  streamInqRecord(streamID2, &varID, &levelID);
-  streamReadRecord(streamID2, array2, &nmiss2);
+  pstreamInqRecord(streamID1, &varID, &levelID);
+  pstreamReadRecord(streamID1, array1, &nmiss1);
+  pstreamInqRecord(streamID2, &varID, &levelID);
+  pstreamReadRecord(streamID2, array2, &nmiss2);
 
   int datatype = vlistInqVarDatatype(vlistID1, 0);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( nmiss1 || nmiss2 ) cdoAbort("Missing values unsupported!");
 
@@ -126,19 +126,19 @@ void *Gengrid(void *argument)
 
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int tsID = 0;
-  streamDefTimestep(streamID3, tsID);
+  pstreamDefTimestep(streamID3, tsID);
 
   for ( int i = 0; i < gridsize; ++i ) array3[i] = missval;
 
-  streamDefRecord(streamID3, 0, 0);
-  streamWriteRecord(streamID3, array3, gridsize);
+  pstreamDefRecord(streamID3, 0, 0);
+  pstreamWriteRecord(streamID3, array3, gridsize);
 
-  streamClose(streamID3);
+  pstreamClose(streamID3);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Gradsdes.c b/src/Gradsdes.cc
similarity index 98%
rename from src/Gradsdes.c
rename to src/Gradsdes.cc
index 8fde12d..cb0826b 100644
--- a/src/Gradsdes.c
+++ b/src/Gradsdes.cc
@@ -23,7 +23,7 @@
 
 
 #if defined(HAVE_CONFIG_H)
-#  include "config.h" /* VERSION */
+#include "config.h" /* VERSION */
 #endif
 
 #include <cdi.h>
@@ -946,7 +946,6 @@ void *Gradsdes(void *argument)
   int varID;
   int levelID;
   int nrecs;
-  int vdate, vtime;
   char *idxfile = NULL;
   char varname[CDI_MAX_NAME];
   bool yrev = false;
@@ -978,8 +977,10 @@ void *Gradsdes(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int GRADSDES = cdoOperatorAdd("gradsdes",  0, 0, NULL);
   int DUMPMAP  = cdoOperatorAdd("dumpmap",   0, 0, NULL);
+  // clang-format on
 
   UNUSED(GRADSDES);
 
@@ -1019,16 +1020,16 @@ void *Gradsdes(void *argument)
     cdoAbort("GrADS GRIB map version %d requires size of off_t to be 8! The size of off_t is %ld.",
              map_version, sizeof(off_t));
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   int nvars   = vlistNvars(vlistID);
   int ntsteps = vlistNtsteps(vlistID);
   int ngrids  = vlistNgrids(vlistID);
 
-  int filetype  = streamInqFiletype(streamID);
-  int byteorder = streamInqByteorder(streamID);
+  int filetype  = pstreamInqFiletype(streamID);
+  int byteorder = pstreamInqByteorder(streamID);
 
   if ( filetype == CDI_FILETYPE_NC2 || filetype == CDI_FILETYPE_NC4 ) filetype = CDI_FILETYPE_NC;
 
@@ -1202,10 +1203,10 @@ void *Gradsdes(void *argument)
   bool cal365day = (taxisInqCalendar(taxisID) == CALENDAR_365DAYS);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
     {
-      vdate = taxisInqVdate(taxisID);
-      vtime = taxisInqVtime(taxisID);
+      int vdate = taxisInqVdate(taxisID);
+      int vtime = taxisInqVtime(taxisID);
 
       if ( tsID == 0 )
         {
@@ -1308,14 +1309,14 @@ void *Gradsdes(void *argument)
 
           for ( int recID = 0; recID < nrecs; recID++ )
             {
-              streamInqRecord(streamID, &varID, &levelID);
+              pstreamInqRecord(streamID, &varID, &levelID);
               if ( vars[varID] == TRUE )
                 {
-                  streamReadRecord(streamID, array, &nmiss);
+                  pstreamReadRecord(streamID, array, &nmiss);
 
                   index = (tsID*nrecsout + recoffset[varID] + levelID);
 
-                  streamInqGRIBinfo(streamID, &intnum[index], &fltnum[index*3], &bignum[index*2]);
+                  pstreamInqGRIBinfo(streamID, &intnum[index], &fltnum[index*3], &bignum[index*2]);
 
                   if ( map_version != 4 )
                     {
@@ -1397,7 +1398,7 @@ void *Gradsdes(void *argument)
       // write_map_grib2(idxfile, map_version, nrecords, intnum, fltnum, bignum);
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   if ( ctlfile ) Free(ctlfile);
   if ( idxfile ) Free(idxfile);
diff --git a/src/Gridboxstat.c b/src/Gridboxstat.cc
similarity index 94%
rename from src/Gridboxstat.c
rename to src/Gridboxstat.cc
index c6d313d..c135b86 100644
--- a/src/Gridboxstat.c
+++ b/src/Gridboxstat.cc
@@ -18,6 +18,7 @@
 /*
    This module contains the following operators:
 
+      Gridboxstat    gridboxrange        Gridbox range
       Gridboxstat    gridboxmin          Gridbox minimum
       Gridboxstat    gridboxmax          Gridbox maximum
       Gridboxstat    gridboxsum          Gridbox sum
@@ -551,23 +552,26 @@ void *Gridboxstat(void *argument)
   int xinc = parameter2int(operatorArgv()[0]);
   int yinc = parameter2int(operatorArgv()[1]);
 
-  cdoOperatorAdd("gridboxmin",  func_min,   0, NULL);
-  cdoOperatorAdd("gridboxmax",  func_max,   0, NULL);
-  cdoOperatorAdd("gridboxsum",  func_sum,   0, NULL);
-  cdoOperatorAdd("gridboxmean", func_meanw, 1, NULL);
-  cdoOperatorAdd("gridboxavg",  func_avgw,  1, NULL);
-  cdoOperatorAdd("gridboxvar",  func_varw,  1, NULL);
-  cdoOperatorAdd("gridboxvar1", func_var1w, 1, NULL);
-  cdoOperatorAdd("gridboxstd",  func_stdw,  1, NULL);
-  cdoOperatorAdd("gridboxstd1", func_std1w, 1, NULL);
+  // clang-format off
+  cdoOperatorAdd("gridboxrange", func_range, 0, NULL);
+  cdoOperatorAdd("gridboxmin",   func_min,   0, NULL);
+  cdoOperatorAdd("gridboxmax",   func_max,   0, NULL);
+  cdoOperatorAdd("gridboxsum",   func_sum,   0, NULL);
+  cdoOperatorAdd("gridboxmean",  func_meanw, 1, NULL);
+  cdoOperatorAdd("gridboxavg",   func_avgw,  1, NULL);
+  cdoOperatorAdd("gridboxvar",   func_varw,  1, NULL);
+  cdoOperatorAdd("gridboxvar1",  func_var1w, 1, NULL);
+  cdoOperatorAdd("gridboxstd",   func_stdw,  1, NULL);
+  cdoOperatorAdd("gridboxstd1",  func_std1w, 1, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
   bool needWeights = cdoOperatorF2(operatorID) != 0;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -585,9 +589,8 @@ void *Gridboxstat(void *argument)
   for ( int index = 0; index < ngrids; index++ )
     vlistChangeGridIndex(vlistID2, index, gridID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   field_type field1, field2;
   field_init(&field1);
@@ -602,17 +605,17 @@ void *Gridboxstat(void *argument)
   field2.weight = NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
           int nmiss;
-          streamInqRecord(streamID1, &varID, &levelID);
-          streamReadRecord(streamID1, field1.ptr, &nmiss);
+          pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
 
           field1.grid = vlistInqVarGrid(vlistID1, varID);
@@ -636,14 +639,14 @@ void *Gridboxstat(void *argument)
           
           gridboxstat(&field1, &field2, xinc, yinc, operfunc);
           
-          streamDefRecord(streamID2, varID,  levelID);
-          streamWriteRecord(streamID2, field2.ptr, (int)field2.nmiss);
+          pstreamDefRecord(streamID2, varID,  levelID);
+          pstreamWriteRecord(streamID2, field2.ptr, (int)field2.nmiss);
         }
       tsID++;
     }
   
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   
   if ( field1.ptr )    Free(field1.ptr);
   if ( field1.weight ) Free(field1.weight);
diff --git a/src/Gridcell.c b/src/Gridcell.cc
similarity index 94%
rename from src/Gridcell.c
rename to src/Gridcell.cc
index a141a74..6e2e7c6 100644
--- a/src/Gridcell.c
+++ b/src/Gridcell.cc
@@ -81,17 +81,20 @@ void grid_cell_area(int gridID, double *array)
     }
 }
 
+
 void *Gridcell(void *argument)
 {
   int status;
 
   cdoInitialize(argument);
 
+  // clang-format off
   int GRIDAREA = cdoOperatorAdd("gridarea",     1,  0, NULL);
   int GRIDWGTS = cdoOperatorAdd("gridweights",  1,  0, NULL);
   int GRIDMASK = cdoOperatorAdd("gridmask",     0,  0, NULL);
   int GRIDDX   = cdoOperatorAdd("griddx",       1,  0, NULL);
   int GRIDDY   = cdoOperatorAdd("griddy",       1,  0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -108,9 +111,9 @@ void *Gridcell(void *argument)
 
   if ( cdoVerbose ) cdoPrint("PlanetRadius: %g", PlanetRadius);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int ngrids = vlistNgrids(vlistID1);
 
@@ -175,8 +178,7 @@ void *Gridcell(void *argument)
     }
   else if ( operatorID == GRIDMASK )
     {
-      int *mask;
-      mask = (int*) Malloc(gridsize*sizeof(int));
+      int *mask = (int*) Malloc(gridsize*sizeof(int));
       if ( gridInqMask(gridID, NULL) )
 	{
 	  gridInqMask(gridID, mask);
@@ -284,20 +286,20 @@ void *Gridcell(void *argument)
     }
 
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  streamDefTimestep(streamID2, tsID);
+  pstreamDefTimestep(streamID2, tsID);
 
   varID = 0;
   int levelID = 0;
-  streamDefRecord(streamID2, varID, levelID);
-  streamWriteRecord(streamID2, array, 0);
+  pstreamDefRecord(streamID2, varID, levelID);
+  pstreamWriteRecord(streamID2, array, 0);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
 
diff --git a/src/Gridsearch.c b/src/Gridsearch.cc
similarity index 99%
rename from src/Gridsearch.c
rename to src/Gridsearch.cc
index 737a9ee..9be9c78 100644
--- a/src/Gridsearch.c
+++ b/src/Gridsearch.cc
@@ -1,7 +1,6 @@
 #include <cdi.h>
 #include "cdo.h"
 #include "cdo_int.h"
-#include "pstream.h"
 #include "grid.h"
 
 void check_lon_range(long nlons, double *lons);
@@ -240,8 +239,10 @@ void *Gridsearch(void *argument)
 {
   cdoInitialize(argument);
 
+  // clang-format off
   int PSEARCH = cdoOperatorAdd("testpointsearch",  0,   0, NULL);
   int CSEARCH = cdoOperatorAdd("testcellsearch",   0,   0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
diff --git a/src/Harmonic.c b/src/Harmonic.cc
similarity index 88%
rename from src/Harmonic.c
rename to src/Harmonic.cc
index 42819d0..4b1e829 100644
--- a/src/Harmonic.c
+++ b/src/Harmonic.cc
@@ -56,9 +56,9 @@ void *Harmonic(void *argument)
     cdoAbort("The wave length must be positive and smaller than "
 	     "2 times the number of requested harmonics (=%d)!", n_out);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -67,7 +67,7 @@ void *Harmonic(void *argument)
 
   refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   int *streamIDs = (int*) Malloc(n_out*sizeof(int));
 
@@ -81,12 +81,12 @@ void *Harmonic(void *argument)
 	sprintf(filename+nchars+1, "%s", filesuffix);
 
       argument_t *fileargument = file_argument_new(filename);
-      int streamID2 = streamOpenWrite(fileargument, cdoFiletype());
+      int streamID2 = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
       streamIDs[j] = streamID2;
 
-      streamDefVlist(streamID2, vlistID2);
+      pstreamDefVlist(streamID2, vlistID2);
     }
 
   int nvars = vlistNvars(vlistID1);
@@ -122,7 +122,7 @@ void *Harmonic(void *argument)
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID == 0 )
 	{
@@ -132,18 +132,18 @@ void *Harmonic(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-	  offset   = gridsize*levelID;
-
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  if ( nmiss > 0 ) cdoAbort("Missing values are not allowed!");
 
+	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
+	  offset   = gridsize*levelID;
+
 	  for ( int j = 0; j < n_out; ++j )
 	    {
-	      double sine   = sin (2 * M_PI * (((j + 1) * (tsID+1)) % n) / n);
-	      double cosine = cos (2 * M_PI * (((j + 1) * (tsID+1)) % n) / n);
+	      double sine   = sin(2 * M_PI * (((j + 1) * (tsID+1)) % n) / n);
+	      double cosine = cos(2 * M_PI * (((j + 1) * (tsID+1)) % n) / n);
 	      for ( int i = 0; i < gridsize; i++ )
 		{
 		  work[j][varID][i+offset]         += array[i] * sine;
@@ -159,8 +159,7 @@ void *Harmonic(void *argument)
 
   if ( array ) Free(array);
 
-  streamClose(streamID1);
-
+  pstreamClose(streamID1);
 
   if ( nts%n )
     {
@@ -206,7 +205,7 @@ void *Harmonic(void *argument)
   for ( int j = 0; j < nout; j++ )
     {
       int streamID2 = streamIDs[j];
-      streamDefTimestep(streamID2, 0);
+      pstreamDefTimestep(streamID2, 0);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -215,8 +214,8 @@ void *Harmonic(void *argument)
 	  for ( levelID = 0; levelID < nlevel; levelID++ )
 	    {
 	      offset = gridsize*levelID;
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, out[j][varID]+offset, 0);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, out[j][varID]+offset, 0);
 	    }
 	}
     }
@@ -252,7 +251,7 @@ void *Harmonic(void *argument)
   for ( int j = 0; j < nout; j++ )
     {
       int streamID2 = streamIDs[j];
-      streamDefTimestep(streamID2, 1);
+      pstreamDefTimestep(streamID2, 1);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -262,11 +261,11 @@ void *Harmonic(void *argument)
 	  for ( levelID = 0; levelID < nlevel; levelID++ )
 	    {
 	      offset = gridsize*levelID;
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      nmiss = 0;
 	      for ( int i = 0; i < gridsize; i++ )
 		if ( DBL_IS_EQUAL(out[j][varID][i+offset], missval) ) nmiss++;
-	      streamWriteRecord(streamID2, out[j][varID]+offset, nmiss);
+	      pstreamWriteRecord(streamID2, out[j][varID]+offset, nmiss);
 	    }
 	}
     }
@@ -274,7 +273,7 @@ void *Harmonic(void *argument)
   for ( int j = 0; j < n_out; j++ )
     {
       int streamID2 = streamIDs[j];
-      streamClose(streamID2);
+      pstreamClose(streamID2);
     }
 
   Free(streamIDs);
diff --git a/src/Hi.c b/src/Hi.cc
similarity index 83%
rename from src/Hi.c
rename to src/Hi.cc
index b44d486..2b1d438 100644
--- a/src/Hi.c
+++ b/src/Hi.cc
@@ -96,13 +96,13 @@ void *Hi(void *argument)
   cdoInitialize(argument);
   cdoOperatorAdd("hi", 0, 0, NULL);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   //taxisID2 = vlistInqTaxis(vlistID2);
@@ -141,33 +141,33 @@ void *Hi(void *argument)
   vlistDefVarLongname(vlistID4, varID4, HI_LONGNAME);
   vlistDefVarUnits(vlistID4, varID4, HI_UNITS);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
 
-  streamDefVlist(streamID4, vlistID4);
+  pstreamDefVlist(streamID4, vlistID4);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
-      int nrecs2 = streamInqTimestep(streamID2, tsID);
-      int nrecs3 = streamInqTimestep(streamID3, tsID);
+      int nrecs2 = pstreamInqTimestep(streamID2, tsID);
+      int nrecs3 = pstreamInqTimestep(streamID3, tsID);
       if ( nrecs2 == 0 || nrecs3 == 0 )
         cdoAbort("Input streams have different number of timesteps!");
 
       taxisCopyTimestep(taxisID4, taxisID1);
-      streamDefTimestep(streamID4, tsID);
+      pstreamDefTimestep(streamID4, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID1, &levelID1);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID1, &levelID1);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
           
-	  streamInqRecord(streamID2, &varID2, &levelID2);
-	  streamReadRecord(streamID2, field2.ptr, &nmiss);
+	  pstreamInqRecord(streamID2, &varID2, &levelID2);
+	  pstreamReadRecord(streamID2, field2.ptr, &nmiss);
           field2.nmiss = (size_t) nmiss;
 	  
-	  streamInqRecord(streamID3, &varID3, &levelID3);
-	  streamReadRecord(streamID3, field3.ptr, &nmiss);
+	  pstreamInqRecord(streamID3, &varID3, &levelID3);
+	  pstreamReadRecord(streamID3, field3.ptr, &nmiss);
           field3.nmiss = (size_t) nmiss;
 	  
 	  if ( varID1 != varID2 || varID1 != varID3 || levelID1 != levelID2 || levelID1 != levelID3 )
@@ -186,17 +186,17 @@ void *Hi(void *argument)
 
 	  farexpr(&field1, field2, field3, humidityIndex);
 	  
-	  streamDefRecord(streamID4, varID4, levelID1);
-	  streamWriteRecord(streamID4, field1.ptr, (int)field1.nmiss);
+	  pstreamDefRecord(streamID4, varID4, levelID1);
+	  pstreamWriteRecord(streamID4, field1.ptr, (int)field1.nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field1.ptr ) Free(field1.ptr);
   if ( field2.ptr ) Free(field2.ptr);
diff --git a/src/Histogram.c b/src/Histogram.cc
similarity index 89%
rename from src/Histogram.c
rename to src/Histogram.cc
index 9d5c3f9..8440b2d 100644
--- a/src/Histogram.c
+++ b/src/Histogram.cc
@@ -37,10 +37,12 @@ void *Histogram(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int HISTCOUNT = cdoOperatorAdd("histcount", 0, 0, NULL);
   int HISTSUM   = cdoOperatorAdd("histsum",   0, 0, NULL);
   int HISTMEAN  = cdoOperatorAdd("histmean",  0, 0, NULL);
   int HISTFREQ  = cdoOperatorAdd("histfreq",  0, 0, NULL);
+  // clang-format on
 
   UNUSED(HISTSUM);
 
@@ -60,9 +62,9 @@ void *Histogram(void *argument)
 	printf("flt %d = %g\n", i+1, fltarr[i]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
 
   int vlistID2 = vlistDuplicate(vlistID1);
@@ -91,12 +93,12 @@ void *Histogram(void *argument)
       vlistChangeZaxisIndex(vlistID2, index, zaxisID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars = vlistNvars(vlistID2);
   double **vardata   = (double **) Malloc(nvars*sizeof(double *));
@@ -117,14 +119,14 @@ void *Histogram(void *argument)
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 	  missval = vlistInqVarMissval(vlistID1, varID);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
@@ -158,7 +160,7 @@ void *Histogram(void *argument)
     }
 
 
-  streamDefTimestep(streamID2, 0);
+  pstreamDefTimestep(streamID2, 0);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
@@ -195,17 +197,17 @@ void *Histogram(void *argument)
 		}
 	    }
 
-	  streamDefRecord(streamID2,  varID,  index);
+	  pstreamDefRecord(streamID2,  varID,  index);
 
 	  if ( operatorID == HISTCOUNT )
-	    streamWriteRecord(streamID2, varcount[varID]+offset, nmiss);
+	    pstreamWriteRecord(streamID2, varcount[varID]+offset, nmiss);
 	  else
-	    streamWriteRecord(streamID2, vardata[varID]+offset, nmiss);
+	    pstreamWriteRecord(streamID2, vardata[varID]+offset, nmiss);
 	}
     }
   
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( vardata )
     {
diff --git a/src/Importamsr.c b/src/Importamsr.cc
similarity index 95%
rename from src/Importamsr.c
rename to src/Importamsr.cc
index c83d972..2ed2fbf 100644
--- a/src/Importamsr.c
+++ b/src/Importamsr.cc
@@ -152,8 +152,8 @@ void write_data(int streamID, int nvars, double *data[], int *nmiss)
 {
   for ( int varID = 0; varID < nvars; ++varID )
     {
-      streamDefRecord(streamID, varID, 0);
-      streamWriteRecord(streamID, data[varID], nmiss[varID]);
+      pstreamDefRecord(streamID, varID, 0);
+      pstreamWriteRecord(streamID, data[varID], nmiss[varID]);
     }
 }
 
@@ -190,7 +190,7 @@ void *Importamsr(void *argument)
   int vdate = getDate(cdoStreamName(0)->args);
   if ( vdate <= 999999 ) vdate = vdate*100 + 1;
 
-  int streamID = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   /*
     Longitude  is 0.25*xdim-0.125    degrees east
@@ -219,7 +219,7 @@ void *Importamsr(void *argument)
 
       init_amsr_day(vlistID, gridID, zaxisID, nvars);
 
-      streamDefVlist(streamID, vlistID);
+      pstreamDefVlist(streamID, vlistID);
 
       vtime = 13000; /* 1:30:00 */
       for ( tsID = 0; tsID < 2; ++tsID )
@@ -227,7 +227,7 @@ void *Importamsr(void *argument)
 	  taxisDefVdate(taxisID, vdate);
 	  taxisDefVtime(taxisID, vtime);
 	  vtime += 120000;  /* 13:30:00 */
-	  streamDefTimestep(streamID, tsID);
+	  pstreamDefTimestep(streamID, tsID);
 	  processDefTimesteps(streamID);
 
 	  read_amsr(fp, vlistID, nvars, data, nmiss);
@@ -245,12 +245,12 @@ void *Importamsr(void *argument)
       init_amsr_averaged(vlistID, gridID, zaxisID, nvars);
 
       /* vlistDefNtsteps(vlistID, 0);*/
-      streamDefVlist(streamID, vlistID);
+      pstreamDefVlist(streamID, vlistID);
       
       taxisDefVdate(taxisID, vdate);
       taxisDefVtime(taxisID, vtime);
       tsID = 0;
-      streamDefTimestep(streamID, tsID);
+      pstreamDefTimestep(streamID, tsID);
       processDefTimesteps(streamID);
       
       read_amsr(fp, vlistID, nvars, data, nmiss);
@@ -264,7 +264,7 @@ void *Importamsr(void *argument)
 
   processDefVarNum(vlistNvars(vlistID), streamID);
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   fclose(fp);
 
diff --git a/src/Importbinary.c b/src/Importbinary.cc
similarity index 98%
rename from src/Importbinary.c
rename to src/Importbinary.cc
index dcaeee5..720818f 100644
--- a/src/Importbinary.c
+++ b/src/Importbinary.cc
@@ -338,9 +338,9 @@ void *Importbinary(void *argument)
 
   vlistDefTaxis(vlistID, taxisID);
 
-  int streamID = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID, vlistID);
+  pstreamDefVlist(streamID, vlistID);
 
 
   gridsize = pfi.dnum[0]*pfi.dnum[1];
@@ -459,7 +459,7 @@ void *Importbinary(void *argument)
 
 	  taxisDefVdate(taxisID, vdate);
 	  taxisDefVtime(taxisID, vtime);
-	  streamDefTimestep(streamID, tsID);
+	  pstreamDefTimestep(streamID, tsID);
 
 	  for ( int recID = 0; recID < nrecs; ++recID )
 	    {
@@ -544,8 +544,8 @@ void *Importbinary(void *argument)
 	      */
 	      varID   = recVarID[recID];
 	      levelID = recLevelID[recID];
-	      streamDefRecord(streamID,  varID,  levelID);
-              streamWriteRecord(streamID, array, nmiss);
+	      pstreamDefRecord(streamID,  varID,  levelID);
+              pstreamWriteRecord(streamID, array, nmiss);
  	    }
 	}
 
@@ -557,7 +557,7 @@ void *Importbinary(void *argument)
 
   processDefVarNum(vlistNvars(vlistID), streamID);
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   vlistDestroy(vlistID);
   gridDestroy(gridID);
diff --git a/src/Importcmsaf.c b/src/Importcmsaf.cc
similarity index 99%
rename from src/Importcmsaf.c
rename to src/Importcmsaf.cc
index c27b4f4..504cc97 100644
--- a/src/Importcmsaf.c
+++ b/src/Importcmsaf.cc
@@ -1549,9 +1549,9 @@ void *Importcmsaf(void *argument)
   vdate = get_vdate(vlistID);
   if ( vdate == 0 ) vdate = 10101;
 
-  streamID = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  streamID = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID, vlistID);
+  pstreamDefVlist(streamID, vlistID);
 
   for ( tsID = 0; tsID < nt; ++tsID )
     {
@@ -1559,7 +1559,7 @@ void *Importcmsaf(void *argument)
       vtime = 0;
       if ( vtimes ) vtime = vtimes[tsID];
       taxisDefVtime(taxisID, vtime);
-      streamDefTimestep(streamID, tsID);
+      pstreamDefTimestep(streamID, tsID);
 
       for ( ivar = 0; ivar < dsets.nsets; ++ivar )
 	{
@@ -1600,8 +1600,8 @@ void *Importcmsaf(void *argument)
 		cdoWarning(" Missval is inside of valid values! Name: %s  Range: %g - %g  Missval: %g\n",
 		dsets.obj[ivar].name, minval, maxval, missval);
 	      */
-	      streamDefRecord(streamID,  varID,  levelID);
-	      streamWriteRecord(streamID, array, nmiss);
+	      pstreamDefRecord(streamID,  varID,  levelID);
+	      pstreamWriteRecord(streamID, array, nmiss);
 	    }
 	}
     }
@@ -1612,7 +1612,7 @@ void *Importcmsaf(void *argument)
 
   processDefVarNum(vlistNvars(vlistID), streamID);
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   vlistDestroy(vlistID);
   gridDestroy(gridID);
diff --git a/src/Importobs.c b/src/Importobs.cc
similarity index 96%
rename from src/Importobs.c
rename to src/Importobs.cc
index 91605f5..f9fae80 100644
--- a/src/Importobs.c
+++ b/src/Importobs.cc
@@ -64,13 +64,13 @@ void write_data(int streamID, int vlistID, int nvars, double *data[])
       int gridsize = gridInqSize(vlistInqVarGrid(vlistID, varID));
       double missval  = vlistInqVarMissval(vlistID, varID);
       
-      streamDefRecord(streamID, varID, 0);
+      pstreamDefRecord(streamID, varID, 0);
 
       int nmiss = 0;
       for ( int i = 0; i < gridsize; ++i )
 	if ( DBL_IS_EQUAL(data[varID][i], missval) ) nmiss++;
       
-      streamWriteRecord(streamID, data[varID], nmiss);
+      pstreamWriteRecord(streamID, data[varID], nmiss);
     }
 }
 
@@ -142,7 +142,7 @@ void *Importobs(void *argument)
   int vdate = getDate(cdoStreamName(0)->args);
   if ( vdate <= 999999 ) vdate = vdate*100 + 1;
 
-  int streamID = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   int zaxisID = zaxisCreate(ZAXIS_SURFACE, 1);
 
@@ -155,7 +155,7 @@ void *Importobs(void *argument)
 
   init_vars(vlistID, gridID, zaxisID, nvars);
 
-  streamDefVlist(streamID, vlistID);
+  pstreamDefVlist(streamID, vlistID);
 
   int vdate0 = 0;
   int vtime0 = 0;
@@ -179,7 +179,7 @@ void *Importobs(void *argument)
           */
           taxisDefVdate(taxisID, vdate);
           taxisDefVtime(taxisID, vtime);
-          streamDefTimestep(streamID, tsID);
+          pstreamDefTimestep(streamID, tsID);
       
           init_data(vlistID, nvars, data);
 
@@ -233,7 +233,7 @@ void *Importobs(void *argument)
 
   processDefVarNum(vlistNvars(vlistID), streamID);
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   fclose(fp);
 
diff --git a/src/Info.c b/src/Info.cc
similarity index 97%
rename from src/Info.c
rename to src/Info.cc
index 7a0f488..99d83bf 100644
--- a/src/Info.c
+++ b/src/Info.cc
@@ -271,12 +271,14 @@ void *Info(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int INFO   = cdoOperatorAdd("info",   E_PARAM,  0, NULL);
   int INFOP  = cdoOperatorAdd("infop",  E_PARAM,  0, NULL);
   int INFON  = cdoOperatorAdd("infon",  E_NAME,   0, NULL);
   int INFOC  = cdoOperatorAdd("infoc",  E_CODE,   0, NULL);
   int XINFON = cdoOperatorAdd("xinfon", E_NAME,   0, NULL);
   int MAP    = cdoOperatorAdd("map",    E_PARAM,  0, NULL);
+  // clang-format on
 
   UNUSED(INFO);
   UNUSED(INFOP);
@@ -292,9 +294,9 @@ void *Info(void *argument)
 
   for ( int indf = 0; indf < cdoStreamCnt(); indf++ )
     {
-      int streamID = streamOpenRead(cdoStreamName(indf));
+      int streamID = pstreamOpenRead(cdoStreamName(indf));
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
       int taxisID = vlistInqTaxis(vlistID);
 
       int nvars = vlistNvars(vlistID);
@@ -309,7 +311,7 @@ void *Info(void *argument)
 
       int indg = 0;
       int tsID = 0;
-      while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
 	{
 	  dtlist_taxisInqTimestep(dtlist, taxisID, 0);
 	  int vdate = dtlist_get_vdate(dtlist, 0);
@@ -337,8 +339,8 @@ void *Info(void *argument)
 		  fprintf(stdout, "\n" );  
 		}
 
-	      streamInqRecord(streamID, &varID, &levelID);
-	      streamReadRecord(streamID, array, &nmiss);
+	      pstreamInqRecord(streamID, &varID, &levelID);
+	      pstreamReadRecord(streamID, array, &nmiss);
 
               infostat_type *infostatp = &infostat[varID];
               indg = (operatorID == XINFON) ? varID+1 : indg + 1;
@@ -525,7 +527,7 @@ void *Info(void *argument)
 	  tsID++;
 	}
 
-      streamClose(streamID);
+      pstreamClose(streamID);
 
       if ( array ) Free(array);
       if ( infostat ) Free(infostat);
diff --git a/src/Input.c b/src/Input.cc
similarity index 95%
rename from src/Input.c
rename to src/Input.cc
index d7714d4..2b5d645 100644
--- a/src/Input.c
+++ b/src/Input.cc
@@ -66,9 +66,11 @@ void *Input(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int INPUT    = cdoOperatorAdd("input",    0, 0, NULL);
   int INPUTSRV = cdoOperatorAdd("inputsrv", 0, 0, NULL);
   int INPUTEXT = cdoOperatorAdd("inputext", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -227,27 +229,27 @@ void *Input(void *argument)
 	  taxisID = taxisCreate(TAXIS_RELATIVE);
 	  vlistDefTaxis(vlistID, taxisID);
 
-	  streamID = streamOpenWrite(cdoStreamName(0), output_filetype);
+	  streamID = pstreamOpenWrite(cdoStreamName(0), output_filetype);
 
-	  streamDefVlist(streamID, vlistID);
+	  pstreamDefVlist(streamID, vlistID);
 	}
 
       int vdate = date;
       int vtime = time;
       taxisDefVdate(taxisID, vdate);
       taxisDefVtime(taxisID, vtime);
-      streamDefTimestep(streamID, tsID);
+      pstreamDefTimestep(streamID, tsID);
 
       for ( int levelID = 0; levelID < nlevs; levelID++ )
 	{
-	  streamDefRecord(streamID, varID, levelID);
+	  pstreamDefRecord(streamID, varID, levelID);
 
           int offset = gridsize*levelID;
 	  int nmiss = 0;
 	  for ( i = 0; i < gridsize; ++i )
 	    if ( DBL_IS_EQUAL(array[offset+i], missval) ) nmiss++;
 
-	  streamWriteRecord(streamID, array+offset, nmiss);
+	  pstreamWriteRecord(streamID, array+offset, nmiss);
 	}
 
       nrecs++;
@@ -256,7 +258,7 @@ void *Input(void *argument)
 
   if ( streamID >= 0 )
     {
-      streamClose(streamID);
+      pstreamClose(streamID);
       vlistDestroy(vlistID);
     }
 
diff --git a/src/Intgrid.c b/src/Intgrid.cc
similarity index 93%
rename from src/Intgrid.c
rename to src/Intgrid.cc
index 0d2a9e9..5d5a4ff 100644
--- a/src/Intgrid.c
+++ b/src/Intgrid.cc
@@ -294,15 +294,17 @@ void *Intgrid(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int INTGRIDBIL  = cdoOperatorAdd("intgridbil",  0, 0, NULL);
   int INTPOINT    = cdoOperatorAdd("intpoint",    0, 0, NULL);
   int INTERPOLATE = cdoOperatorAdd("interpolate", 0, 0, NULL);
   int BOXAVG      = cdoOperatorAdd("boxavg",      0, 0, NULL);
   int THINOUT     = cdoOperatorAdd("thinout",     0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   if ( operatorID == INTGRIDBIL || operatorID == INTERPOLATE )
     {
@@ -329,7 +331,7 @@ void *Intgrid(void *argument)
       yinc = parameter2int(operatorArgv()[1]);
     }
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -369,31 +371,30 @@ void *Intgrid(void *argument)
       vlistChangeGridIndex(vlistID2, index, gridID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
-  double *array1   = (double*) Malloc(gridsize*sizeof(double));
+  double *array1 = (double*) Malloc(gridsize*sizeof(double));
 
   gridsize = gridInqSize(gridID2);
-  double *array2   = (double*) Malloc(gridsize*sizeof(double));
+  double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
   field_type field1, field2;
   field_init(&field1);
   field_init(&field2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  gridID1 = vlistInqVarGrid(vlistID1, varID);
 	  missval = vlistInqVarMissval(vlistID1, varID);
@@ -417,14 +418,14 @@ void *Intgrid(void *argument)
 
 	  nmiss = field2.nmiss;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array2 ) Free(array2);
   if ( array1 ) Free(array1);
diff --git a/src/Intgridtraj.c b/src/Intgridtraj.cc
similarity index 90%
rename from src/Intgridtraj.c
rename to src/Intgridtraj.cc
index 36e4e34..9a383a5 100644
--- a/src/Intgridtraj.c
+++ b/src/Intgridtraj.cc
@@ -77,9 +77,9 @@ void *Intgridtraj(void *argument)
   juldate_t juldate;
   readnextpos(fp, calendar, &juldate, &xpos, &ypos);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   field_type field1, field2;
   field_init(&field1);
@@ -129,33 +129,32 @@ void *Intgridtraj(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  int nrecs = streamInqTimestep(streamID1, tsID++);
+  int nrecs = pstreamInqTimestep(streamID1, tsID++);
   juldate_t juldate1 = juldate_encode(calendar, taxisInqVdate(taxisID1), taxisInqVtime(taxisID1));
   for ( int recID = 0; recID < nrecs; recID++ )
     {
-      streamInqRecord(streamID1, &varID, &levelID);
+      pstreamInqRecord(streamID1, &varID, &levelID);
       gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
       offset   = gridsize*levelID;
       single1  = vardata1[varID] + offset;
-      streamReadRecord(streamID1, single1, &nmiss);
+      pstreamReadRecord(streamID1, single1, &nmiss);
       if ( nmiss ) cdoAbort("Missing values unsupported for this operator!");
     }
 
   int tsIDo = 0;
   while ( juldate_to_seconds(juldate1) <= juldate_to_seconds(juldate) )
     {
-      nrecs = streamInqTimestep(streamID1, tsID++);
+      nrecs = pstreamInqTimestep(streamID1, tsID++);
       if ( nrecs == 0 ) break;
       juldate_t juldate2 = juldate_encode(calendar, taxisInqVdate(taxisID1), taxisInqVtime(taxisID1));
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  recVarID[recID]   = varID;
 	  recLevelID[recID] = levelID;
@@ -163,7 +162,7 @@ void *Intgridtraj(void *argument)
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single2  = vardata2[varID] + offset;
-	  streamReadRecord(streamID1, single2, &nmiss);
+	  pstreamReadRecord(streamID1, single2, &nmiss);
 	  if ( nmiss ) cdoAbort("Missing values unsupported for this operator!");
 	}
 
@@ -175,7 +174,7 @@ void *Intgridtraj(void *argument)
 	      juldate_decode(calendar, juldate, &vdate, &vtime);
 	      taxisDefVdate(taxisID2, vdate);
 	      taxisDefVtime(taxisID2, vtime);
-	      streamDefTimestep(streamID2, tsIDo++);
+	      pstreamDefTimestep(streamID2, tsIDo++);
 
 	      double fac1 = juldate_to_seconds(juldate_sub(juldate2, juldate)) / 
 		            juldate_to_seconds(juldate_sub(juldate2, juldate1));
@@ -210,8 +209,8 @@ void *Intgridtraj(void *argument)
 
 		  intgridbil(&field1, &field2);
 
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, &point, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, &point, nmiss);
 		}
 	    }
 	  if ( readnextpos(fp, calendar, &juldate, &xpos, &ypos) == EOF ) break;
@@ -229,8 +228,8 @@ void *Intgridtraj(void *argument)
     }
 
   fclose(fp);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
diff --git a/src/Intlevel.c b/src/Intlevel.cc
similarity index 94%
rename from src/Intlevel.c
rename to src/Intlevel.cc
index 7aae25d..8f73436 100644
--- a/src/Intlevel.c
+++ b/src/Intlevel.cc
@@ -168,8 +168,10 @@ void *Intlevel(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int INTLEVEL   = cdoOperatorAdd("intlevel",  0, 0, NULL);
   int INTLEVELX  = cdoOperatorAdd("intlevelx", 0, 0, NULL);
+  // clang-format on
 
   UNUSED(INTLEVEL);
 
@@ -186,9 +188,9 @@ void *Intlevel(void *argument)
 
   if ( cdoVerbose ) for ( i = 0; i < nlev2; ++i ) printf("lev2 %d: %g\n", i, lev2[i]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -281,9 +283,8 @@ void *Intlevel(void *argument)
     if ( zaxisID1 == vlistZaxis(vlistID1, i) )
       vlistChangeZaxisIndex(vlistID2, i, zaxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars = vlistNvars(vlistID1);
 
@@ -321,22 +322,22 @@ void *Intlevel(void *argument)
 
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( varID = 0; varID < nvars; ++varID ) vars[varID] = false;
 
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single1  = vardata1[varID] + offset;
 	  
-	  streamReadRecord(streamID1, single1, &varnmiss[varID][levelID]);
+	  pstreamReadRecord(streamID1, single1, &varnmiss[varID][levelID]);
 	  vars[varID] = true;
 	}
 
@@ -374,8 +375,8 @@ void *Intlevel(void *argument)
 		  gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 		  offset   = gridsize*levelID;
 		  single2  = vardata2[varID] + offset;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, single2, varnmiss[varID][levelID]);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, single2, varnmiss[varID][levelID]);
 		}
 	    }
 	}
@@ -383,8 +384,8 @@ void *Intlevel(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
diff --git a/src/Intlevel3d.c b/src/Intlevel3d.cc
similarity index 90%
rename from src/Intlevel3d.c
rename to src/Intlevel3d.cc
index 9c038a7..1f70fb3 100644
--- a/src/Intlevel3d.c
+++ b/src/Intlevel3d.cc
@@ -58,8 +58,10 @@ void *Intlevel3d(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int INTLEVEL3D  = cdoOperatorAdd("intlevel3d",  0, 0, NULL);
   int INTLEVELX3D = cdoOperatorAdd("intlevelx3d", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -69,20 +71,20 @@ void *Intlevel3d(void *argument)
 
   operatorInputArg("icoordinate");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));                 /*  input data */
-  int streamID2 = streamOpenRead(cdoStreamName(1));                 /*  3d target vertical coordinate */
-  int streamID3 = streamOpenWrite(cdoStreamName(2),cdoFiletype());  /*  output stream */
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));                 /*  input data */
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));                 /*  3d target vertical coordinate */
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2),cdoFiletype());  /*  output stream */
 
   /*  Read filename from Parameter */
   operatorInputArg("filename for vertical source coordinates variable");
   operatorCheckArgc(1);
   argument_t *fileargument = file_argument_new(operatorArgv()[0]);
-  int streamID0 = streamOpenRead(fileargument);                     /*  3d vertical input coordinate */
+  int streamID0 = pstreamOpenRead(fileargument);                     /*  3d vertical input coordinate */
   file_argument_free(fileargument);
 
-  int vlistID0 = streamInqVlist(streamID0);
-  int vlistID1 = streamInqVlist(streamID1); taxisID1 = vlistInqTaxis(vlistID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID0 = pstreamInqVlist(streamID0);
+  int vlistID1 = pstreamInqVlist(streamID1); taxisID1 = vlistInqTaxis(vlistID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);  taxisID3 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID3, taxisID1);
 
@@ -110,16 +112,16 @@ void *Intlevel3d(void *argument)
     zlevels_in = (double*) Malloc(gridsize*(nlevel+2)*sizeof(double));
     nlevi      = nlevel;   /* number of input levels for later use */
     gridsizei  = gridsize; /* horizontal gridsize of input z coordinate */
-    nrecs      = streamInqTimestep(streamID0, 0);
+    nrecs      = pstreamInqTimestep(streamID0, 0);
     if (cdoVerbose) cdoPrint("%d records input 3d vertical height",nrecs);
 
     for ( int recID = 0; recID < nrecs; recID++ )
       {
-        streamInqRecord(streamID0, &varID, &levelID);
+        pstreamInqRecord(streamID0, &varID, &levelID);
         gridsize = gridInqSize(vlistInqVarGrid(vlistID0, varID));
         offset   = gridsize + gridsize*levelID;
         single1  = zlevels_in + offset;
-        streamReadRecord(streamID0, single1, &zlevels_in_miss);
+        pstreamReadRecord(streamID0, single1, &zlevels_in_miss);
       }
   }
 
@@ -146,16 +148,16 @@ void *Intlevel3d(void *argument)
     zlevels_out = (double*) Malloc(gridsize*nlevel*sizeof(double));
     nlevo       = nlevel;  /* number of output levels for later use */
     gridsizeo   = gridsize;/* horizontal gridsize of output z coordinate */
-    nrecs       = streamInqTimestep(streamID2, 0);
+    nrecs       = pstreamInqTimestep(streamID2, 0);
     if (cdoVerbose) cdoPrint("%d records target 3d vertical height and gridsize %d",nrecs,gridsize);
 
     for ( int recID = 0; recID < nrecs; recID++ )
       {
-	streamInqRecord(streamID2, &varID, &levelID);
+	pstreamInqRecord(streamID2, &varID, &levelID);
 	gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 	offset   = gridsize*levelID;
 	single1  = zlevels_out + offset;
-	streamReadRecord(streamID2, single1, &zlevels_out_miss);
+	pstreamReadRecord(streamID2, single1, &zlevels_out_miss);
       }
   }
 
@@ -311,7 +313,7 @@ void *Intlevel3d(void *argument)
     if ( str[0] ) vlistDefVarUnits(vlistID3,oz3dvarID, str);
   }
 
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID3, vlistID3);
 
   maxlev    = nlevi > nlevo ? nlevi : nlevo;
   nvars     = vlistNvars(vlistID1);
@@ -384,25 +386,25 @@ void *Intlevel3d(void *argument)
   if ( varID == nvars ) cdoAbort("No processable variable found!");
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( varID = 0; varID < nvars; ++varID ) vars[varID] = false;
 
       taxisCopyTimestep(taxisID3, taxisID1);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       /*
        * Read the whole 3d data field
        */
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
           vlistInqVarName(vlistID1, varID, varname); 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single1  = vardata1[varID] + offset;
-          streamReadRecord(streamID1, single1, &varnmiss[varID][levelID]);
+          pstreamReadRecord(streamID1, single1, &varnmiss[varID][levelID]);
 	  vars[varID] = true;
 	}
 
@@ -448,9 +450,8 @@ void *Intlevel3d(void *argument)
 		  offset   = gridsize*levelID;
 
 		  single2  = vardata2[varID] + offset;
-		  streamDefRecord(streamID3, varID, levelID);
-		  streamWriteRecord(streamID3, single2, varnmiss[varID][levelID]);
-
+		  pstreamDefRecord(streamID3, varID, levelID);
+		  pstreamWriteRecord(streamID3, single2, varnmiss[varID][levelID]);
 		}
 	    }
 	}
@@ -462,8 +463,8 @@ void *Intlevel3d(void *argument)
           gridsize = gridInqSize(vlistInqVarGrid(vlistID3, oz3dvarID));
           offset   = gridsize*levelID;
           single2  = zlevels_out + offset;
-          streamDefRecord(streamID3, oz3dvarID, levelID);
-          streamWriteRecord(streamID3, single2, 0);
+          pstreamDefRecord(streamID3, oz3dvarID, levelID);
+          pstreamWriteRecord(streamID3, single2, 0);
 
         }
       tsID++;
@@ -489,10 +490,10 @@ void *Intlevel3d(void *argument)
   Free(lev_wgt1);
   Free(lev_wgt2);
 
-  streamClose(streamID0);
-  streamClose(streamID1);
-  streamClose(streamID2);
-  streamClose(streamID3);
+  pstreamClose(streamID0);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID3);
 
   vlistDestroy(vlistID3);
 
diff --git a/src/Intntime.c b/src/Intntime.cc
similarity index 85%
rename from src/Intntime.c
rename to src/Intntime.cc
index 7886d11..9e7ac5f 100644
--- a/src/Intntime.c
+++ b/src/Intntime.cc
@@ -46,9 +46,9 @@ void *Intntime(void *argument)
   int numts = parameter2int(operatorArgv()[0]);
   if ( numts < 2 ) cdoAbort("parameter must be greater than 1!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars    = vlistNvars(vlistID1);
@@ -80,34 +80,34 @@ void *Intntime(void *argument)
   if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int calendar = taxisInqCalendar(taxisID1);
 
   int tsID = 0;
   int tsIDo = 0;
-  int nrecs = streamInqTimestep(streamID1, tsID++);
+  int nrecs = pstreamInqTimestep(streamID1, tsID++);
   int vdate1 = taxisInqVdate(taxisID1);
   int vtime1 = taxisInqVtime(taxisID1);
   juldate_t juldate1 = juldate_encode(calendar, vdate1, vtime1);
 
   taxisCopyTimestep(taxisID2, taxisID1);
-  streamDefTimestep(streamID2, tsIDo++);
+  pstreamDefTimestep(streamID2, tsIDo++);
   for ( int recID = 0; recID < nrecs; recID++ )
     {
-      streamInqRecord(streamID1, &varID, &levelID);
+      pstreamInqRecord(streamID1, &varID, &levelID);
       gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
       offset   = gridsize*levelID;
       single1  = vardata1[varID] + offset;
-      streamReadRecord(streamID1, single1, &nmiss1[varID][levelID]);
+      pstreamReadRecord(streamID1, single1, &nmiss1[varID][levelID]);
 
-      streamDefRecord(streamID2, varID, levelID);
-      streamWriteRecord(streamID2, single1, nmiss1[varID][levelID]);
+      pstreamDefRecord(streamID2, varID, levelID);
+      pstreamWriteRecord(streamID2, single1, nmiss1[varID][levelID]);
     }
 
-  while ( (nrecs = streamInqTimestep(streamID1, tsID++)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID++)) )
     {
       int vdate2 = taxisInqVdate(taxisID1);
       int vtime2 = taxisInqVtime(taxisID1);
@@ -115,7 +115,7 @@ void *Intntime(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  recVarID[recID]   = varID;
 	  recLevelID[recID] = levelID;
@@ -123,7 +123,7 @@ void *Intntime(void *argument)
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single2  = vardata2[varID] + offset;
-	  streamReadRecord(streamID1, single2, &nmiss2[varID][levelID]);
+	  pstreamReadRecord(streamID1, single2, &nmiss2[varID][levelID]);
 	}
 
       for ( int it = 1; it < numts; it++ )
@@ -148,7 +148,7 @@ void *Intntime(void *argument)
 
 	  taxisDefVdate(taxisID2, vdate);
 	  taxisDefVtime(taxisID2, vtime);
-	  streamDefTimestep(streamID2, tsIDo++);
+	  pstreamDefTimestep(streamID2, tsIDo++);
 
 	  double fac1 = juldate_to_seconds(juldate_sub(juldate2, juldate)) / 
 	                juldate_to_seconds(juldate_sub(juldate2, juldate1));
@@ -195,14 +195,14 @@ void *Intntime(void *argument)
 		    array[i] = single1[i]*fac1 + single2[i]*fac2;
 		}
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array, nmiss3);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array, nmiss3);
 	    }
 	}
 
       taxisDefVdate(taxisID2, vdate2);
       taxisDefVtime(taxisID2, vtime2);
-      streamDefTimestep(streamID2, tsIDo++);
+      pstreamDefTimestep(streamID2, tsIDo++);
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
 	  varID   = recVarID[recID];
@@ -212,8 +212,8 @@ void *Intntime(void *argument)
 	  offset   = gridsize*levelID;
 	  single2  = vardata2[varID] + offset;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, single2, nmiss2[varID][levelID]);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, single2, nmiss2[varID][levelID]);
 	}
 
       for ( varID = 0; varID < nvars; varID++ )
@@ -243,8 +243,8 @@ void *Intntime(void *argument)
 
   if ( array )  Free(array);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Inttime.c b/src/Inttime.cc
similarity index 92%
rename from src/Inttime.c
rename to src/Inttime.cc
index dcd9b27..bdb0d75 100644
--- a/src/Inttime.c
+++ b/src/Inttime.cc
@@ -89,9 +89,9 @@ void *Inttime(void *argument)
   /* increment in seconds */
   int ijulinc = incperiod * incunit;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   if ( ijulinc == 0 ) vlistDefNtsteps(vlistID2, 1);
@@ -137,15 +137,15 @@ void *Inttime(void *argument)
     }
 
   int tsID = 0;
-  int nrecs = streamInqTimestep(streamID1, tsID++);
+  int nrecs = pstreamInqTimestep(streamID1, tsID++);
   juldate_t juldate1 = juldate_encode(calendar, taxisInqVdate(taxisID1), taxisInqVtime(taxisID1));
   for ( int recID = 0; recID < nrecs; recID++ )
     {
-      streamInqRecord(streamID1, &varID, &levelID);
+      pstreamInqRecord(streamID1, &varID, &levelID);
       gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
       offset   = gridsize*levelID;
       single1  = vardata1[varID] + offset;
-      streamReadRecord(streamID1, single1, &nmiss1[varID][levelID]);
+      pstreamReadRecord(streamID1, single1, &nmiss1[varID][levelID]);
     }
 
   if ( cdoVerbose )
@@ -160,7 +160,7 @@ void *Inttime(void *argument)
   int tsIDo = 0;
   while ( juldate_to_seconds(juldate1) <= juldate_to_seconds(juldate) )
     {
-      nrecs = streamInqTimestep(streamID1, tsID++);
+      nrecs = pstreamInqTimestep(streamID1, tsID++);
       if ( nrecs == 0 ) break;
 
       juldate_t juldate2 = juldate_encode(calendar, taxisInqVdate(taxisID1), taxisInqVtime(taxisID1));
@@ -172,7 +172,7 @@ void *Inttime(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  recVarID[recID]   = varID;
 	  recLevelID[recID] = levelID;
@@ -180,7 +180,7 @@ void *Inttime(void *argument)
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single2  = vardata2[varID] + offset;
-	  streamReadRecord(streamID1, single2, &nmiss2[varID][levelID]);
+	  pstreamReadRecord(streamID1, single2, &nmiss2[varID][levelID]);
 	}
 
       while ( juldate_to_seconds(juldate) <= juldate_to_seconds(juldate2) )
@@ -205,13 +205,13 @@ void *Inttime(void *argument)
 
 	      if ( streamID2 == -1 )
 		{
-		  streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-		  streamDefVlist(streamID2, vlistID2);
+		  streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+		  pstreamDefVlist(streamID2, vlistID2);
 		}
 
 	      taxisDefVdate(taxisID2, vdate);
 	      taxisDefVtime(taxisID2, vtime);
-	      streamDefTimestep(streamID2, tsIDo++);
+	      pstreamDefTimestep(streamID2, tsIDo++);
 
 	      double fac1 = juldate_to_seconds(juldate_sub(juldate2, juldate)) / 
                             juldate_to_seconds(juldate_sub(juldate2, juldate1));
@@ -258,8 +258,8 @@ void *Inttime(void *argument)
 			array[i] = single1[i]*fac1 + single2[i]*fac2;
 		    }
 
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, array, nmiss3);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, array, nmiss3);
 		}
 	    }
 
@@ -310,8 +310,8 @@ void *Inttime(void *argument)
 
   if ( array )  Free(array);
 
-  if ( streamID2 != -1 ) streamClose(streamID2);
-  streamClose(streamID1);
+  if ( streamID2 != -1 ) pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( tsIDo == 0 ) cdoWarning("date/time out of time axis, no time step interpolated!");
 
diff --git a/src/Intyear.c b/src/Intyear.cc
similarity index 82%
rename from src/Intyear.c
rename to src/Intyear.cc
index bb5fa30..5a028fa 100644
--- a/src/Intyear.c
+++ b/src/Intyear.cc
@@ -49,11 +49,11 @@ void *Intyear(void *argument)
 
   int *streamIDs = (int*) Malloc(nyears*sizeof(int));
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -74,7 +74,7 @@ void *Intyear(void *argument)
 
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   for ( int iy = 0; iy < nyears; iy++ )
     {
@@ -83,18 +83,18 @@ void *Intyear(void *argument)
 	sprintf(filename+nchars+4, "%s", filesuffix);
 
       argument_t *fileargument = file_argument_new(filename);
-      streamIDs[iy] = streamOpenWrite(fileargument, cdoFiletype());
+      streamIDs[iy] = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
-      streamDefVlist(streamIDs[iy], vlistID3);
+      pstreamDefVlist(streamIDs[iy], vlistID3);
     }
 
   int tsID = 0;
   while ( TRUE )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
-      nrecs = streamInqTimestep(streamID2, tsID);
+      nrecs = pstreamInqTimestep(streamID2, tsID);
       if ( nrecs == 0 ) cdoAbort("Too few timesteps in second inputfile!");
 
       int vtime  = taxisInqVtime(taxisID1);
@@ -111,16 +111,16 @@ void *Intyear(void *argument)
 	  int vdate3 = vdate1 - year1*10000 + iyears[iy]*10000;
 	  taxisDefVdate(taxisID3, vdate3);
 	  taxisDefVtime(taxisID3, vtime);
-	  streamDefTimestep(streamIDs[iy], tsID);
+	  pstreamDefTimestep(streamIDs[iy], tsID);
 	}
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
-	  streamReadRecord(streamID1, array1, &nmiss1);
-	  streamReadRecord(streamID2, array2, &nmiss2);
+	  pstreamReadRecord(streamID1, array1, &nmiss1);
+	  pstreamReadRecord(streamID2, array2, &nmiss2);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 
@@ -162,8 +162,8 @@ void *Intyear(void *argument)
 		    array3[i] = array1[i]*fac1 + array2[i]*fac2;
 		}
 
-	      streamDefRecord(streamIDs[iy], varID, levelID);
-	      streamWriteRecord(streamIDs[iy], array3, nmiss3);
+	      pstreamDefRecord(streamIDs[iy], varID, levelID);
+	      pstreamWriteRecord(streamIDs[iy], array3, nmiss3);
 	    }
 	}
 
@@ -171,10 +171,10 @@ void *Intyear(void *argument)
     }
 
   for ( int iy = 0; iy < nyears; iy++ )
-    streamClose(streamIDs[iy]);
+    pstreamClose(streamIDs[iy]);
   
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array3 )  Free(array3);
   if ( array2 )  Free(array2);
diff --git a/src/Invert.c b/src/Invert.cc
similarity index 93%
rename from src/Invert.c
rename to src/Invert.cc
index ab3e165..a47d2ac 100644
--- a/src/Invert.c
+++ b/src/Invert.cc
@@ -287,20 +287,22 @@ void *Invert(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("invertlat",     func_all, func_lat, NULL);
   cdoOperatorAdd("invertlon",     func_all, func_lon, NULL);
   cdoOperatorAdd("invertlatdes",  func_hrd, func_lat, NULL);
   cdoOperatorAdd("invertlondes",  func_hrd, func_lon, NULL);
   cdoOperatorAdd("invertlatdata", func_fld, func_lat, NULL);
   cdoOperatorAdd("invertlondata", func_fld, func_lon, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc1 = cdoOperatorF1(operatorID);
   int operfunc2 = cdoOperatorF2(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -313,9 +315,9 @@ void *Invert(void *argument)
       else                         invertLonDes(vlistID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -323,18 +325,18 @@ void *Invert(void *argument)
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 
 	  if ( operfunc1 == func_all || operfunc1 == func_fld )
 	    {
@@ -345,18 +347,18 @@ void *Invert(void *argument)
 	      else
 		invertLonData(array1, array2, gridID1);
 
-	      streamWriteRecord(streamID2, array2, nmiss);     
+	      pstreamWriteRecord(streamID2, array2, nmiss);     
 	    }
 	  else
 	    {
-	      streamWriteRecord(streamID2, array1, nmiss);     
+	      pstreamWriteRecord(streamID2, array1, nmiss);     
 	    }
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Invertlev.c b/src/Invertlev.cc
similarity index 86%
rename from src/Invertlev.c
rename to src/Invertlev.cc
index 4a11ad7..2da2787 100644
--- a/src/Invertlev.c
+++ b/src/Invertlev.cc
@@ -99,9 +99,9 @@ void *Invertlev(void *argument)
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -110,9 +110,9 @@ void *Invertlev(void *argument)
 
   if ( operfunc == func_all || operfunc == func_hrd ) invertLevDes(vlistID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -146,15 +146,15 @@ void *Invertlev(void *argument)
   if ( linvert == false ) cdoWarning("No variables with invertable levels found!");
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( vardata[varID] )
 	    {    
@@ -162,20 +162,20 @@ void *Invertlev(void *argument)
 	      gridsize = gridInqSize(gridID);
 	      offset   = gridsize*levelID;
 
-	      streamReadRecord(streamID1, vardata[varID]+offset, &nmiss);
+	      pstreamReadRecord(streamID1, vardata[varID]+offset, &nmiss);
 	      varnmiss[varID][levelID] = nmiss;
 	    }
 	  else
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1); 
+		  pstreamCopyRecord(streamID2, streamID1); 
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	}
@@ -190,12 +190,12 @@ void *Invertlev(void *argument)
 	      nlevel   = zaxisInqSize(zaxisID);
 	      for ( levelID = 0; levelID < nlevel; levelID++ )
 		{
-		  streamDefRecord(streamID2, varID, levelID);
+		  pstreamDefRecord(streamID2, varID, levelID);
 
 		  offset = gridsize*(nlevel-levelID-1);
 		  nmiss = varnmiss[varID][nlevel-levelID-1];
 
-		  streamWriteRecord(streamID2, vardata[varID]+offset, nmiss);
+		  pstreamWriteRecord(streamID2, vardata[varID]+offset, nmiss);
 		}   
 	    }
 	}
@@ -203,8 +203,8 @@ void *Invertlev(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
 
diff --git a/src/Isosurface.c b/src/Isosurface.cc
similarity index 89%
rename from src/Isosurface.c
rename to src/Isosurface.cc
index 76c17d5..88d345e 100644
--- a/src/Isosurface.c
+++ b/src/Isosurface.cc
@@ -97,9 +97,9 @@ void *Isosurface(void *argument)
   if ( cdoVerbose ) cdoPrint("Isoval: %g", isoval);
 
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -130,9 +130,9 @@ void *Isosurface(void *argument)
     if ( zaxisID1 == vlistZaxis(vlistID1, i) )
       vlistChangeZaxisIndex(vlistID2, i, zaxisIDsfc);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -165,11 +165,11 @@ void *Isosurface(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -179,12 +179,12 @@ void *Isosurface(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single   = vars1[varID].ptr + offset;
 	  
-	  streamReadRecord(streamID1, single, &nmiss);
+	  pstreamReadRecord(streamID1, single, &nmiss);
 	  vars1[varID].nmiss += nmiss;
 	  vars[varID] = TRUE;
 	}
@@ -197,8 +197,8 @@ void *Isosurface(void *argument)
 		{
 		  isosurface(isoval, nlev1, lev1, &vars1[varID], &field);
 
-		  streamDefRecord(streamID2, varID, 0);
-		  streamWriteRecord(streamID2, field.ptr, field.nmiss);
+		  pstreamDefRecord(streamID2, varID, 0);
+		  pstreamWriteRecord(streamID2, field.ptr, field.nmiss);
 		}
 	      else
 		{
@@ -215,8 +215,8 @@ void *Isosurface(void *argument)
 		      for ( i = 0; i < gridsize; ++i )
 			if ( DBL_IS_EQUAL(single[i], missval) ) nmiss++;
 
-		      streamDefRecord(streamID2, varID, levelID);
-		      streamWriteRecord(streamID2, single, nmiss);
+		      pstreamDefRecord(streamID2, varID, levelID);
+		      pstreamWriteRecord(streamID2, single, nmiss);
 		    }
 		}
 	    }
@@ -234,8 +234,8 @@ void *Isosurface(void *argument)
 
   Free(field.ptr);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Log.c b/src/Log.cc
similarity index 98%
rename from src/Log.c
rename to src/Log.cc
index b6de15b..2c4bacd 100644
--- a/src/Log.c
+++ b/src/Log.cc
@@ -28,6 +28,7 @@ void *Log(void *argument)
 {
   cdoInitialize(argument);
 
+  // clang-format off
   int DUMPLOGS  = cdoOperatorAdd("dumplogs",   0, 0, NULL);
   int DAYLOGS   = cdoOperatorAdd("daylogs",    0, 0, NULL);
   int MONLOGS   = cdoOperatorAdd("monlogs",    0, 0, NULL);
@@ -37,6 +38,7 @@ void *Log(void *argument)
                   cdoOperatorAdd("smemlogo",   1, 3, NULL);
                   cdoOperatorAdd("stimelogo",  1, 4, NULL);
                   cdoOperatorAdd("sperclogo",  1, 5, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
diff --git a/src/Maggraph.c b/src/Maggraph.cc
similarity index 99%
rename from src/Maggraph.c
rename to src/Maggraph.cc
index 4110e7d..c63ae3e 100644
--- a/src/Maggraph.c
+++ b/src/Maggraph.cc
@@ -917,9 +917,9 @@ void *Maggraph(void *argument)
       if( DBG )
         fprintf( stderr," file %d is %s\n", fileID, cdoStreamName(fileID)->args );
       
-      int streamID = streamOpenRead(cdoStreamName(fileID));
+      int streamID = pstreamOpenRead(cdoStreamName(fileID));
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
       int taxisID = vlistInqTaxis(vlistID);
 
       vlistInqVarUnits(vlistID, 0, units);
@@ -946,7 +946,7 @@ void *Maggraph(void *argument)
 
       int tsID = 0;
       nts_alloc = 0;
-      while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
 	{
 	  if ( nrecs != 1 ) cdoAbort("Input stream has more than one point in time!");
 	  
@@ -969,8 +969,8 @@ void *Maggraph(void *argument)
 	    }
 
           double val;
-	  streamInqRecord( streamID, &varID, &levelID );
-	  streamReadRecord( streamID, &val, &nmiss );
+	  pstreamInqRecord( streamID, &varID, &levelID );
+	  pstreamReadRecord( streamID, &val, &nmiss );
 	  datatab[ fileID ][ tsID ] = val;
 	  vdate[ fileID ][ tsID ] = taxisInqVdate(taxisID);
 	  vtime[ fileID ][ tsID ] = taxisInqVtime(taxisID);
@@ -979,7 +979,7 @@ void *Maggraph(void *argument)
 	    fprintf(stderr, "%f %f\n", datatab[ fileID ][ tsID ],val ); 
 	  tsID++;
 	}
-      streamClose(streamID);
+      pstreamClose(streamID);
     }
   
   /* HARDCODED THE FILE NAME .. TO BE SENT AS COMMAND LINE ARGUMENT FOR THE MAGICS OPERATOR */
diff --git a/src/Magplot.c b/src/Magplot.cc
similarity index 99%
rename from src/Magplot.c
rename to src/Magplot.cc
index 54bdd55..c191e5f 100644
--- a/src/Magplot.c
+++ b/src/Magplot.cc
@@ -1127,9 +1127,9 @@ void *Magplot(void *argument)
       VerifyPlotParameters( nparam, pnames, operatorID );
     }
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int taxisID = vlistInqTaxis(vlistID);
 
   int varID = 0;
@@ -1174,7 +1174,7 @@ void *Magplot(void *argument)
 
   init_MAGICS( );
 
-  while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
     {
       if( ANIM_FLAG )
         {
@@ -1223,8 +1223,8 @@ void *Magplot(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID, &varID, &levelID);
-	  streamReadRecord(streamID, array, &nmiss);
+	  pstreamInqRecord(streamID, &varID, &levelID);
+	  pstreamReadRecord(streamID, array, &nmiss);
 
           if ( nmiss ) cdoSetNAN(vlistInqVarMissval(vlistID, varID), gridsize, array);
 	  
@@ -1280,7 +1280,7 @@ void *Magplot(void *argument)
     }
   quit_MAGICS( );
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   if ( array  ) Free(array);
   if ( grid_center_lon ) Free(grid_center_lon);
diff --git a/src/Magvector.c b/src/Magvector.cc
similarity index 97%
rename from src/Magvector.c
rename to src/Magvector.cc
index a122ae1..8999637 100644
--- a/src/Magvector.c
+++ b/src/Magvector.cc
@@ -340,9 +340,9 @@ void *Magvector(void *argument)
       VerifyVectorParameters( nparam, pnames, operatorID );
     }
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int taxisID = vlistInqTaxis(vlistID);
 
   int found = 0;
@@ -386,7 +386,7 @@ void *Magvector(void *argument)
 
   init_MAGICS( );
 
-  while( (nrecs = streamInqTimestep(streamID, tsID)) )
+  while( (nrecs = pstreamInqTimestep(streamID, tsID)) )
     {
       if( ANIM_FLAG )
         {
@@ -414,7 +414,7 @@ void *Magvector(void *argument)
 
       for( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID, &varID, &levelID);
+	  pstreamInqRecord(streamID, &varID, &levelID);
 
 	  vlistInqVarName(vlistID, varID, varname);
 
@@ -423,14 +423,14 @@ void *Magvector(void *argument)
 	       if( !strcmp( varname, "var131" ) || !strcmp( varname, "u" ) ) /* U Velocity as per GRIB is 'var131, as per NC 'u' */
 	  	 {
                    if( DBG ) fprintf( stderr,"Found U VEL in Varname %s\n",varname );
-                   streamReadRecord(streamID, uarray, &nmiss);
+                   pstreamReadRecord(streamID, uarray, &nmiss);
                    if ( nmiss ) cdoSetNAN(vlistInqVarMissval(vlistID, varID), gridsize, uarray);
                    found++;
 	  	 }
 	       if( !strcmp( varname, "var132" ) || !strcmp( varname, "v" ) ) /* V Velocity as per GRIB  is 'var132, as per NC 'v'*/
 	  	 {
                    if( DBG ) fprintf( stderr,"Found V VEL in Varname %s\n",varname );
-                   streamReadRecord(streamID, varray, &nmiss);
+                   pstreamReadRecord(streamID, varray, &nmiss);
                    if ( nmiss ) cdoSetNAN(vlistInqVarMissval(vlistID, varID), gridsize, varray);
                    found++;
 	  	 }	
@@ -478,7 +478,7 @@ void *Magvector(void *argument)
       */
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   if ( uarray  ) Free(uarray);
   if ( varray  ) Free(varray);
diff --git a/src/Makefile.am b/src/Makefile.am
index c1f0c13..e8c8089 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,179 +2,180 @@
 noinst_LTLIBRARIES = libcdo.la
 libcdo_la_SOURCES =            \
                array.h         \
-               array.c         \
+               array.cc         \
                cdo_int.h       \
                compare.h       \
-               cdo_pthread.c   \
-               cdo_vlist.c     \
-               cdo_getopt.c    \
+               cdo_pthread.cc   \
+               cdo_vlist.cc     \
+               cdo_getopt.cc    \
                cdo_getopt.h    \
-               cdo_task.c      \
+               cdo_task.cc      \
                cdo_task.h      \
-               cdo_history.c   \
-               cdo_read.c      \
+               cdo_history.cc   \
+               cdo_read.cc      \
                cdi_uuid.h      \
-               cmortable_parser.c   \
-               after_sptrans.c \
-               after_fctrans.c \
-               after_dvtrans.c \
-               after_vertint.c \
+               cmortable_parser.cc   \
+               after_sptrans.cc \
+               after_fctrans.cc \
+               after_dvtrans.cc \
+               after_vertint.cc \
                after_vertint.h \
-               after_namelist.c\
-               afterburnerlib.c\
+               after_namelist.cc\
+               afterburnerlib.cc\
                afterburner.h   \
                vct_l191.h      \
                calendar.h      \
                constants.h     \
-               constants.c     \
-               color.c         \
+               constants.cc     \
+               color.cc         \
                color.h         \
-               commandline.c   \
+               commandline.cc   \
                const.h         \
-               convert_units.c \
+               convert_units.cc \
                convert_units.h \
                counter.h       \
-               datetime.c      \
+               datetime.cc      \
                datetime.h      \
                dmemory.h       \
-               ecacore.c       \
+               ecacore.cc       \
                ecacore.h       \
-               ecautil.c       \
+               ecautil.cc       \
                ecautil.h       \
                error.h         \
                etopo.h         \
                temp.h          \
                mask.h          \
-               exception.c     \
-               expr.c          \
+               exception.cc     \
+               expr.cc          \
                expr.h          \
-               expr_fun.c      \
+               expr_fun.cc      \
                expr_fun.h      \
-               expr_lex.c      \
-               expr_yacc.c     \
+               expr_lex.cc      \
+               expr_yacc.cc     \
                expr_yacc.h     \
-               features.c      \
-               field.c         \
+               features.cc      \
+               field.cc         \
                field.h         \
-               field2.c        \
-               fieldc.c        \
-               fieldmem.c      \
-               fieldmer.c      \
-               fieldzon.c      \
+               field2.cc        \
+               fieldc.cc        \
+               fieldmem.cc      \
+               fieldmer.cc      \
+               fieldzon.cc      \
                functs.h        \
-               gradsdeslib.c   \
+               gradsdeslib.cc   \
                gradsdeslib.h   \
-               grid.c          \
+               grid.cc          \
                grid.h          \
-               grid_proj.c     \
+               grid_proj.cc     \
                grid_proj.h     \
-               grid_area.c     \
-               grid_define.c   \
-               grid_gme.c      \
-               grid_rot.c      \
-               grid_from_name.c   \
-               grid_read.c        \
-               grid_read_pingo.c  \
-               grid_print.c    \
-               gridreference.c \
-               griddes.c       \
+               grid_area.cc     \
+               grid_define.cc   \
+               grid_gme.cc      \
+               grid_rot.cc      \
+               grid_from_name.cc   \
+               grid_read.cc        \
+               grid_read_pingo.cc  \
+               grid_print.cc    \
+               gridreference.cc \
+               griddes.cc       \
                griddes.h       \
-               griddes_h5.c    \
-               griddes_nc.c    \
-               hetaeta.c       \
+               griddes_h5.cc    \
+               griddes_nc.cc    \
+               hetaeta.cc       \
                hetaeta.h       \
-               institution.c   \
-               interpol.c      \
+               institution.cc   \
+               interpol.cc      \
                interpol.h      \
-               job.c           \
-               juldate.c       \
-               grid_search.c   \
+               job.cc           \
+               juldate.cc       \
+               grid_search.cc   \
                grid_search.h   \
-               listarray.c     \
+               listarray.cc     \
                listarray.h     \
-               list.c          \
+               list.cc          \
                list.h          \
-               listbuf.c       \
+               listbuf.cc       \
                listbuf.h       \
-	       merge_sort2.c   \
+	       merge_sort2.cc   \
 	       merge_sort2.h   \
-               modules.c       \
+               modules.cc       \
                modules.h       \
-               namelist.c      \
+               namelist.cc      \
                namelist.h      \
-               namelist_parser.c     \
-               normal.c        \
-               nth_element.c   \
+               namelist_parser.cc     \
+               normal.cc        \
+               nth_element.cc   \
                nth_element.h   \
                operator_help.h \
-               par_io.c        \
+               par_io.cc        \
                par_io.h        \
-               parse_literal.c      \
-               percentiles_hist.c   \
+               parse_literal.cc      \
+               percentiles_hist.cc   \
                percentiles_hist.h   \
-               percentiles.c   \
+               percentiles.cc   \
                percentiles.h   \
-               pipe.c          \
+               pipe.cc          \
                pipe.h          \
-               pmlist.c        \
+               pmlist.cc        \
                pmlist.h        \
-               sellist.c       \
+               sellist.cc       \
                sellist.h       \
                pragma_omp_atomic_update.h \
                printinfo.h     \
-               process.c       \
+               process.cc       \
                process.h       \
-               pstream.c       \
+               pstream.cc       \
                pstream.h       \
                pstream_write.h \
                pstream_int.h   \
-               pthread_debug.c \
+               pthread_debug.cc \
                pthread_debug.h \
-               readline.c      \
-               realtime.c      \
+               readline.cc      \
+               realtime.cc      \
                remap.h         \
-               remaplib.c      \
-               remapsort.c     \
-               remap_scrip_io.c \
-               remap_search_reg2d.c \
-               remap_search_latbins.c \
-               remap_store_link.c \
+               remaplib.cc      \
+               remapsort.cc     \
+               remap_scrip_io.cc \
+               remap_search_reg2d.cc \
+               remap_search_latbins.cc \
+               remap_store_link.cc \
                remap_store_link.h \
-               remap_store_link_cnsrv.c \
+               remap_store_link_cnsrv.cc \
                remap_store_link_cnsrv.h \
-               remap_conserv.c \
-               remap_conserv_scrip.c \
-               remap_distwgt.c \
-               remap_bicubic_scrip.c \
-               remap_bilinear_scrip.c \
-               stdnametable.c  \
+               remap_conserv.cc \
+               remap_conserv_scrip.cc \
+               remap_distwgt.cc \
+               remap_bicubic_scrip.cc \
+               remap_bilinear_scrip.cc \
+               stdnametable.cc  \
                stdnametable.h  \
-               specspace.c     \
+               specspace.cc     \
                specspace.h     \
-               statistic.c     \
+               statistic.cc     \
                statistic.h     \
-               table.c         \
-               text.c          \
+               table.cc         \
+               text.cc          \
                text.h          \
                timebase.h      \
-               timer.c         \
-               userlog.c       \
+               timer.cc         \
+               userlog.cc       \
                uthash.h        \
-               util.c          \
+               util.cc          \
                util.h          \
-               zaxis_print.c   \
-               zaxis.c
+			   varlist.h		\
+               zaxis_print.cc   \
+               zaxis.cc
 libcdo_la_SOURCES +=           \
                json/jsmn.h     \
                json/jsmn.c
 libcdo_la_SOURCES +=           \
-               kdtreelib/kdtree.h            \
-               kdtreelib/kdtree_cartesian.c  \
-               kdtreelib/kdtree_common.c     \
-               kdtreelib/kdtree_spherical.c  \
-               kdtreelib/qsort.c             \
-               kdtreelib/pmergesort.c        \
-               kdtreelib/pqueue.c            \
+               kdtreelib/kdtree.h             \
+               kdtreelib/kdtree_cartesian.cc  \
+               kdtreelib/kdtree_common.cc     \
+               kdtreelib/kdtree_spherical.cc  \
+               kdtreelib/qsort.cc             \
+               kdtreelib/pmergesort.cc        \
+               kdtreelib/pqueue.cc            \
                kdtreelib/pqueue.h
 libcdo_la_SOURCES +=           \
                clipping/clipping.c           \
@@ -195,200 +196,200 @@ libcdo_la_SOURCES +=           \
 #
 bin_PROGRAMS = cdo
 #
-cdo_SOURCES  = cdo.c
-cdo_SOURCES += Adisit.c        \
-               Afterburner.c   \
-               Arith.c         \
-               Arithc.c        \
-               Arithdays.c     \
-               Arithlat.c      \
-               CDItest.c       \
-               CDIread.c       \
-               CDIwrite.c      \
-               Cat.c           \
-               Change.c        \
-               Change_e5slm.c  \
-               Cloudlayer.c    \
-               CMOR.c          \
-               CMOR_lite.c     \
-               CMOR_table.c    \
-               Collgrid.c      \
-               Command.c       \
-               Comp.c          \
-               Compc.c         \
-               Complextorect.c \
-               Cond.c          \
-               Cond2.c         \
-               Condc.c         \
-               Consecstat.c    \
-               Copy.c          \
-               Deltat.c        \
-               Deltime.c       \
-               Derivepar.c     \
-               Detrend.c       \
-               Diff.c          \
-               Distgrid.c      \
-               Duplicate.c     \
-               EOFs.c          \
-	       Eof3d.c         \
-               EcaIndices.c    \
-               Echam5ini.c     \
-               Enlarge.c       \
-               Enlargegrid.c   \
-               Ensstat.c       \
-               Ensstat3.c      \
-               Ensval.c        \
-               Eofcoeff.c      \
-	       Eofcoeff3d.c    \
-               Exprf.c         \
-               FC.c            \
-               Filedes.c       \
-               Fillmiss.c      \
-               Filter.c        \
-               Fldrms.c        \
-               Fldstat.c       \
-               Fldstat2.c      \
-               Fourier.c       \
-               Gengrid.c       \
-               Gradsdes.c      \
-               Gridboxstat.c   \
-               Gridcell.c      \
-               Gridsearch.c    \
-               Harmonic.c      \
-               Hi.c            \
-               Histogram.c     \
-               Importamsr.c    \
-               Importbinary.c  \
-               Importcmsaf.c   \
-               Importobs.c     \
-               Info.c          \
-               Input.c         \
-               Intgrid.c       \
-               Intgridtraj.c   \
-               Intlevel.c      \
-               Intlevel3d.c    \
-               Intntime.c      \
-               Inttime.c       \
-               Intyear.c       \
-               Invert.c        \
-               Invertlev.c     \
-               Isosurface.c    \
-               Log.c           \
-	       MapReduce.c     \
-               Maskbox.c       \
-               Mastrfu.c       \
-               Math.c          \
-               Merge.c         \
-               Mergegrid.c     \
-               Mergetime.c     \
-               Merstat.c       \
-               Monarith.c      \
-               Mrotuv.c        \
-               Mrotuvb.c       \
-               Ninfo.c         \
-               Nmldump.c       \
-               Output.c        \
-               Outputgmt.c     \
-               Pack.c          \
-               Pardup.c        \
-               Pinfo.c         \
-               Pressure.c      \
-               Regres.c        \
-               Remap.c         \
-               Remapeta.c      \
-               Replace.c       \
-               Replacevalues.c \
-               Rhopot.c        \
-               Rotuv.c         \
-               Runpctl.c       \
-               Runstat.c       \
-               Samplegrid.c    \
-               Samplegridicon.c \
-               Seascount.c     \
-               Seaspctl.c      \
-               Seasstat.c      \
-               Selbox.c        \
-               Selgridcell.c   \
-               Select.c        \
-               Selmulti.c      \
-               Seloperator.c   \
-               Selrec.c        \
-               Seltime.c       \
-               Selvar.c        \
-               Set.c           \
-               Setattribute.c  \
-               Setbox.c        \
-               Setgatt.c       \
-               Setgrid.c       \
-               Sethalo.c       \
-               Setmiss.c       \
-               Setpartab.c     \
-               Setrcaname.c    \
-               Settime.c       \
-               Setzaxis.c      \
-               Shiftxy.c       \
-               Showinfo.c      \
-               Sinfo.c         \
-               Smooth.c        \
-               Sort.c          \
-               Sorttimestamp.c \
-               Specinfo.c      \
-               Spectral.c      \
-               Spectrum.c      \
-               Split.c         \
-               Splitrec.c      \
-               Splitsel.c      \
-               Splittime.c     \
-               Splityear.c     \
-               Subtrend.c      \
-               Tee.c           \
-               Templates.c     \
-               Test.c          \
-               Tests.c         \
-               Timcount.c      \
-               Timcumsum.c     \
-               Timpctl.c       \
-               Timselpctl.c    \
-               Timselstat.c    \
-               Timsort.c       \
-               Timstat.c       \
-               Timstat2.c      \
-               Timstat3.c      \
-               Tinfo.c         \
-               Tocomplex.c     \
-               Transpose.c     \
-               Trend.c         \
-               Trms.c          \
-               Tstepcount.c    \
-               Vargen.c        \
-               Varrms.c        \
-               Vertintml.c     \
-               Vertintap.c     \
-               Vertstat.c      \
-               Vertcum.c       \
-               Vertwind.c      \
-               Verifygrid.c    \
-               Wct.c           \
-               Wind.c          \
-               WindTrans.c     \
-               Writegrid.c     \
-               Writerandom.c   \
-               XTimstat.c      \
-               YAR.c           \
-               Yearmonstat.c   \
-               Ydayarith.c     \
-               Ydaypctl.c      \
-               Ydaystat.c      \
-               Ydrunpctl.c     \
-               Ydrunstat.c     \
-               Yhourarith.c    \
-               Yhourstat.c     \
-               Ymonarith.c     \
-               Ymonpctl.c      \
-               Ymonstat.c      \
-               Yseaspctl.c     \
-               Yseasstat.c     \
-               Zonstat.c       \
+cdo_SOURCES  = cdo.cc
+cdo_SOURCES += Adisit.cc        \
+               Afterburner.cc   \
+               Arith.cc         \
+               Arithc.cc        \
+               Arithdays.cc     \
+               Arithlat.cc      \
+               CDItest.cc       \
+               CDIread.cc       \
+               CDIwrite.cc      \
+               Cat.cc           \
+               Change.cc        \
+               Change_e5slm.cc  \
+               Cloudlayer.cc    \
+               CMOR.cc          \
+               CMOR_lite.cc     \
+               CMOR_table.cc    \
+               Collgrid.cc      \
+               Command.cc       \
+               Comp.cc          \
+               Compc.cc         \
+               Complextorect.cc \
+               Cond.cc          \
+               Cond2.cc         \
+               Condc.cc         \
+               Consecstat.cc    \
+               Copy.cc          \
+               Deltat.cc        \
+               Deltime.cc       \
+               Derivepar.cc     \
+               Detrend.cc       \
+               Diff.cc          \
+               Distgrid.cc      \
+               Duplicate.cc     \
+               EOFs.cc          \
+	       Eof3d.cc         \
+               EcaIndices.cc    \
+               Echam5ini.cc     \
+               Enlarge.cc       \
+               Enlargegrid.cc   \
+               Ensstat.cc       \
+               Ensstat3.cc      \
+               Ensval.cc        \
+               Eofcoeff.cc      \
+	       Eofcoeff3d.cc    \
+               Exprf.cc         \
+               FC.cc            \
+               Filedes.cc       \
+               Fillmiss.cc      \
+               Filter.cc        \
+               Fldrms.cc        \
+               Fldstat.cc       \
+               Fldstat2.cc      \
+               Fourier.cc       \
+               Gengrid.cc       \
+               Gradsdes.cc      \
+               Gridboxstat.cc   \
+               Gridcell.cc      \
+               Gridsearch.cc    \
+               Harmonic.cc      \
+               Hi.cc            \
+               Histogram.cc     \
+               Importamsr.cc    \
+               Importbinary.cc  \
+               Importcmsaf.cc   \
+               Importobs.cc     \
+               Info.cc          \
+               Input.cc         \
+               Intgrid.cc       \
+               Intgridtraj.cc   \
+               Intlevel.cc      \
+               Intlevel3d.cc    \
+               Intntime.cc      \
+               Inttime.cc       \
+               Intyear.cc       \
+               Invert.cc        \
+               Invertlev.cc     \
+               Isosurface.cc    \
+               Log.cc           \
+	       MapReduce.cc     \
+               Maskbox.cc       \
+               Mastrfu.cc       \
+               Math.cc          \
+               Merge.cc         \
+               Mergegrid.cc     \
+               Mergetime.cc     \
+               Merstat.cc       \
+               Monarith.cc      \
+               Mrotuv.cc        \
+               Mrotuvb.cc       \
+               Ninfo.cc         \
+               Nmldump.cc       \
+               Output.cc        \
+               Outputgmt.cc     \
+               Pack.cc          \
+               Pardup.cc        \
+               Pinfo.cc         \
+               Pressure.cc      \
+               Regres.cc        \
+               Remap.cc         \
+               Remapeta.cc      \
+               Replace.cc       \
+               Replacevalues.cc \
+               Rhopot.cc        \
+               Rotuv.cc         \
+               Runpctl.cc       \
+               Runstat.cc       \
+               Samplegrid.cc    \
+               Samplegridicon.cc \
+               Seascount.cc     \
+               Seaspctl.cc      \
+               Seasstat.cc      \
+               Selbox.cc        \
+               Selgridcell.cc   \
+               Select.cc        \
+               Selmulti.cc      \
+               Seloperator.cc   \
+               Selrec.cc        \
+               Seltime.cc       \
+               Selvar.cc        \
+               Set.cc           \
+               Setattribute.cc  \
+               Setbox.cc        \
+               Setgatt.cc       \
+               Setgrid.cc       \
+               Sethalo.cc       \
+               Setmiss.cc       \
+               Setpartab.cc     \
+               Setrcaname.cc    \
+               Settime.cc       \
+               Setzaxis.cc      \
+               Shiftxy.cc       \
+               Showinfo.cc      \
+               Sinfo.cc         \
+               Smooth.cc        \
+               Sort.cc          \
+               Sorttimestamp.cc \
+               Specinfo.cc      \
+               Spectral.cc      \
+               Spectrum.cc      \
+               Split.cc         \
+               Splitrec.cc      \
+               Splitsel.cc      \
+               Splittime.cc     \
+               Splityear.cc     \
+               Subtrend.cc      \
+               Tee.cc           \
+               Templates.cc     \
+               Test.cc          \
+               Tests.cc         \
+               Timcount.cc      \
+               Timcumsum.cc     \
+               Timpctl.cc       \
+               Timselpctl.cc    \
+               Timselstat.cc    \
+               Timsort.cc       \
+               Timstat.cc       \
+               Timstat2.cc      \
+               Timstat3.cc      \
+               Tinfo.cc         \
+               Tocomplex.cc     \
+               Transpose.cc     \
+               Trend.cc         \
+               Trms.cc          \
+               Tstepcount.cc    \
+               Vargen.cc        \
+               Varrms.cc        \
+               Vertintml.cc     \
+               Vertintap.cc     \
+               Vertstat.cc      \
+               Vertcum.cc       \
+               Vertwind.cc      \
+               Verifygrid.cc    \
+               Wct.cc           \
+               Wind.cc          \
+               WindTrans.cc     \
+               Writegrid.cc     \
+               Writerandom.cc   \
+               XTimstat.cc      \
+               YAR.cc           \
+               Yearmonstat.cc   \
+               Ydayarith.cc     \
+               Ydaypctl.cc      \
+               Ydaystat.cc      \
+               Ydrunpctl.cc     \
+               Ydrunstat.cc     \
+               Yhourarith.cc    \
+               Yhourstat.cc     \
+               Ymonarith.cc     \
+               Ymonpctl.cc      \
+               Ymonstat.cc      \
+               Yseaspctl.cc     \
+               Yseasstat.cc     \
+               Zonstat.cc       \
                cdo.h
 
 cdo_SOURCES += nearpt3c.h
@@ -401,19 +402,19 @@ cdo_SOURCES += nearpt3c.h
 #endif
 
 #if ENABLE_MAGICS
-cdo_SOURCES += Magplot.c       \
-               Magvector.c     \
-               Maggraph.c      \
+cdo_SOURCES += Magplot.cc       \
+               Magvector.cc     \
+               Maggraph.cc      \
                template_parser.h   \
-               template_parser.c   \
+               template_parser.cc   \
                results_template_parser.h   \
-               results_template_parser.c   \
+               results_template_parser.cc   \
                magics_template_parser.h   \
-               magics_template_parser.c   \
+               magics_template_parser.cc   \
                StringUtilities.h   \
-               StringUtilities.c   \
+               StringUtilities.cc   \
                CdoMagicsMapper.h   \
-               CdoMagicsMapper.c
+               CdoMagicsMapper.cc
 #endif
 
 cdo_CPPFLAGS = -I$(top_srcdir)/libcdi/src
@@ -427,7 +428,7 @@ endif
 libcdo_la_CPPFLAGS = $(cdo_CPPFLAGS)
 noinst_PROGRAMS  = cdotest
 cdotest_SOURCES  = cdo_int.h	\
-	           cdotest.c
+	           cdotest.cc
 cdotest_LDADD    = $(cdo_LDADD)
 cdotest_CPPFLAGS = $(cdo_CPPFLAGS)
 cdotest_LDFLAGS  = $(cdo_LDFLAGS)
@@ -435,10 +436,10 @@ if ENABLE_ALL_STATIC
 cdotest_LDFLAGS  += -all-static
 endif
 
-#cdo-userlog.o: userlog.c config.h
-#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo-userlog.o `test -f 'userlog.c' || echo '$(srcdir)/'`userlog.c
-#cdo_static-userlog.o: userlog.c config.h
-#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo_static-userlog.o `test -f 'userlog.c' || echo '$(srcdir)/'`userlog.c
+#cdo-userlog.o: userlog.cc config.h
+#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo-userlog.o `test -f 'userlog.cc' || echo '$(srcdir)/'`userlog.cc
+#cdo_static-userlog.o: userlog.cc config.h
+#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo_static-userlog.o `test -f 'userlog.cc' || echo '$(srcdir)/'`userlog.cc
 #
 CLEANFILES  = `ls *~ 2> /dev/null`
 #
diff --git a/src/Makefile.in b/src/Makefile.in
index 71805d6..6368685 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -89,6 +89,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_options.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
@@ -265,15 +267,15 @@ am_cdo_OBJECTS = cdo-cdo.$(OBJEXT) cdo-Adisit.$(OBJEXT) \
 	cdo-StringUtilities.$(OBJEXT) cdo-CdoMagicsMapper.$(OBJEXT)
 cdo_OBJECTS = $(am_cdo_OBJECTS)
 cdo_DEPENDENCIES = libcdo.la $(top_builddir)/libcdi/src/libcdi.la
-cdo_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(cdo_LDFLAGS) $(LDFLAGS) -o $@
+cdo_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(cdo_LDFLAGS) $(LDFLAGS) -o $@
 am_cdotest_OBJECTS = cdotest-cdotest.$(OBJEXT)
 cdotest_OBJECTS = $(am_cdotest_OBJECTS)
 cdotest_DEPENDENCIES = $(cdo_LDADD)
-cdotest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(cdotest_LDFLAGS) $(LDFLAGS) -o $@
+cdotest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(cdotest_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -308,6 +310,24 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(libcdo_la_SOURCES) $(cdo_SOURCES) $(cdotest_SOURCES)
 DIST_SOURCES = $(libcdo_la_SOURCES) $(cdo_SOURCES) $(cdotest_SOURCES)
 am__can_run_installinfo = \
@@ -367,13 +387,14 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 ENABLE_CDI_LIB = @ENABLE_CDI_LIB@
 ENABLE_CGRIBEX = @ENABLE_CGRIBEX@
-ENABLE_CXX = @ENABLE_CXX@
 ENABLE_DATA = @ENABLE_DATA@
 ENABLE_EXTRA = @ENABLE_EXTRA@
 ENABLE_GRIB = @ENABLE_GRIB@
@@ -391,6 +412,7 @@ FGREP = @FGREP@
 GREP = @GREP@
 GRIB_API_INCLUDE = @GRIB_API_INCLUDE@
 GRIB_API_LIBS = @GRIB_API_LIBS@
+HAVE_CXX11 = @HAVE_CXX11@
 HDF5_INCLUDE = @HDF5_INCLUDE@
 HDF5_LIBS = @HDF5_LIBS@
 HDF5_ROOT = @HDF5_ROOT@
@@ -510,45 +532,48 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 noinst_LTLIBRARIES = libcdo.la
-libcdo_la_SOURCES = array.h array.c cdo_int.h compare.h cdo_pthread.c \
-	cdo_vlist.c cdo_getopt.c cdo_getopt.h cdo_task.c cdo_task.h \
-	cdo_history.c cdo_read.c cdi_uuid.h cmortable_parser.c \
-	after_sptrans.c after_fctrans.c after_dvtrans.c \
-	after_vertint.c after_vertint.h after_namelist.c \
-	afterburnerlib.c afterburner.h vct_l191.h calendar.h \
-	constants.h constants.c color.c color.h commandline.c const.h \
-	convert_units.c convert_units.h counter.h datetime.c \
-	datetime.h dmemory.h ecacore.c ecacore.h ecautil.c ecautil.h \
-	error.h etopo.h temp.h mask.h exception.c expr.c expr.h \
-	expr_fun.c expr_fun.h expr_lex.c expr_yacc.c expr_yacc.h \
-	features.c field.c field.h field2.c fieldc.c fieldmem.c \
-	fieldmer.c fieldzon.c functs.h gradsdeslib.c gradsdeslib.h \
-	grid.c grid.h grid_proj.c grid_proj.h grid_area.c \
-	grid_define.c grid_gme.c grid_rot.c grid_from_name.c \
-	grid_read.c grid_read_pingo.c grid_print.c gridreference.c \
-	griddes.c griddes.h griddes_h5.c griddes_nc.c hetaeta.c \
-	hetaeta.h institution.c interpol.c interpol.h job.c juldate.c \
-	grid_search.c grid_search.h listarray.c listarray.h list.c \
-	list.h listbuf.c listbuf.h merge_sort2.c merge_sort2.h \
-	modules.c modules.h namelist.c namelist.h namelist_parser.c \
-	normal.c nth_element.c nth_element.h operator_help.h par_io.c \
-	par_io.h parse_literal.c percentiles_hist.c percentiles_hist.h \
-	percentiles.c percentiles.h pipe.c pipe.h pmlist.c pmlist.h \
-	sellist.c sellist.h pragma_omp_atomic_update.h printinfo.h \
-	process.c process.h pstream.c pstream.h pstream_write.h \
-	pstream_int.h pthread_debug.c pthread_debug.h readline.c \
-	realtime.c remap.h remaplib.c remapsort.c remap_scrip_io.c \
-	remap_search_reg2d.c remap_search_latbins.c remap_store_link.c \
-	remap_store_link.h remap_store_link_cnsrv.c \
-	remap_store_link_cnsrv.h remap_conserv.c remap_conserv_scrip.c \
-	remap_distwgt.c remap_bicubic_scrip.c remap_bilinear_scrip.c \
-	stdnametable.c stdnametable.h specspace.c specspace.h \
-	statistic.c statistic.h table.c text.c text.h timebase.h \
-	timer.c userlog.c uthash.h util.c util.h zaxis_print.c zaxis.c \
-	json/jsmn.h json/jsmn.c kdtreelib/kdtree.h \
-	kdtreelib/kdtree_cartesian.c kdtreelib/kdtree_common.c \
-	kdtreelib/kdtree_spherical.c kdtreelib/qsort.c \
-	kdtreelib/pmergesort.c kdtreelib/pqueue.c kdtreelib/pqueue.h \
+libcdo_la_SOURCES = array.h array.cc cdo_int.h compare.h \
+	cdo_pthread.cc cdo_vlist.cc cdo_getopt.cc cdo_getopt.h \
+	cdo_task.cc cdo_task.h cdo_history.cc cdo_read.cc cdi_uuid.h \
+	cmortable_parser.cc after_sptrans.cc after_fctrans.cc \
+	after_dvtrans.cc after_vertint.cc after_vertint.h \
+	after_namelist.cc afterburnerlib.cc afterburner.h vct_l191.h \
+	calendar.h constants.h constants.cc color.cc color.h \
+	commandline.cc const.h convert_units.cc convert_units.h \
+	counter.h datetime.cc datetime.h dmemory.h ecacore.cc \
+	ecacore.h ecautil.cc ecautil.h error.h etopo.h temp.h mask.h \
+	exception.cc expr.cc expr.h expr_fun.cc expr_fun.h expr_lex.cc \
+	expr_yacc.cc expr_yacc.h features.cc field.cc field.h \
+	field2.cc fieldc.cc fieldmem.cc fieldmer.cc fieldzon.cc \
+	functs.h gradsdeslib.cc gradsdeslib.h grid.cc grid.h \
+	grid_proj.cc grid_proj.h grid_area.cc grid_define.cc \
+	grid_gme.cc grid_rot.cc grid_from_name.cc grid_read.cc \
+	grid_read_pingo.cc grid_print.cc gridreference.cc griddes.cc \
+	griddes.h griddes_h5.cc griddes_nc.cc hetaeta.cc hetaeta.h \
+	institution.cc interpol.cc interpol.h job.cc juldate.cc \
+	grid_search.cc grid_search.h listarray.cc listarray.h list.cc \
+	list.h listbuf.cc listbuf.h merge_sort2.cc merge_sort2.h \
+	modules.cc modules.h namelist.cc namelist.h namelist_parser.cc \
+	normal.cc nth_element.cc nth_element.h operator_help.h \
+	par_io.cc par_io.h parse_literal.cc percentiles_hist.cc \
+	percentiles_hist.h percentiles.cc percentiles.h pipe.cc pipe.h \
+	pmlist.cc pmlist.h sellist.cc sellist.h \
+	pragma_omp_atomic_update.h printinfo.h process.cc process.h \
+	pstream.cc pstream.h pstream_write.h pstream_int.h \
+	pthread_debug.cc pthread_debug.h readline.cc realtime.cc \
+	remap.h remaplib.cc remapsort.cc remap_scrip_io.cc \
+	remap_search_reg2d.cc remap_search_latbins.cc \
+	remap_store_link.cc remap_store_link.h \
+	remap_store_link_cnsrv.cc remap_store_link_cnsrv.h \
+	remap_conserv.cc remap_conserv_scrip.cc remap_distwgt.cc \
+	remap_bicubic_scrip.cc remap_bilinear_scrip.cc stdnametable.cc \
+	stdnametable.h specspace.cc specspace.h statistic.cc \
+	statistic.h table.cc text.cc text.h timebase.h timer.cc \
+	userlog.cc uthash.h util.cc util.h varlist.h zaxis_print.cc \
+	zaxis.cc json/jsmn.h json/jsmn.c kdtreelib/kdtree.h \
+	kdtreelib/kdtree_cartesian.cc kdtreelib/kdtree_common.cc \
+	kdtreelib/kdtree_spherical.cc kdtreelib/qsort.cc \
+	kdtreelib/pmergesort.cc kdtreelib/pqueue.cc kdtreelib/pqueue.h \
 	clipping/clipping.c clipping/clipping.h clipping/area.c \
 	clipping/area.h clipping/ensure_array_size.c \
 	clipping/ensure_array_size.h clipping/geometry.h \
@@ -565,70 +590,73 @@ libcdo_la_SOURCES = array.h array.c cdo_int.h compare.h cdo_pthread.c \
 #endif
 
 #if ENABLE_MAGICS
-cdo_SOURCES = cdo.c Adisit.c Afterburner.c Arith.c Arithc.c \
-	Arithdays.c Arithlat.c CDItest.c CDIread.c CDIwrite.c Cat.c \
-	Change.c Change_e5slm.c Cloudlayer.c CMOR.c CMOR_lite.c \
-	CMOR_table.c Collgrid.c Command.c Comp.c Compc.c \
-	Complextorect.c Cond.c Cond2.c Condc.c Consecstat.c Copy.c \
-	Deltat.c Deltime.c Derivepar.c Detrend.c Diff.c Distgrid.c \
-	Duplicate.c EOFs.c Eof3d.c EcaIndices.c Echam5ini.c Enlarge.c \
-	Enlargegrid.c Ensstat.c Ensstat3.c Ensval.c Eofcoeff.c \
-	Eofcoeff3d.c Exprf.c FC.c Filedes.c Fillmiss.c Filter.c \
-	Fldrms.c Fldstat.c Fldstat2.c Fourier.c Gengrid.c Gradsdes.c \
-	Gridboxstat.c Gridcell.c Gridsearch.c Harmonic.c Hi.c \
-	Histogram.c Importamsr.c Importbinary.c Importcmsaf.c \
-	Importobs.c Info.c Input.c Intgrid.c Intgridtraj.c Intlevel.c \
-	Intlevel3d.c Intntime.c Inttime.c Intyear.c Invert.c \
-	Invertlev.c Isosurface.c Log.c MapReduce.c Maskbox.c Mastrfu.c \
-	Math.c Merge.c Mergegrid.c Mergetime.c Merstat.c Monarith.c \
-	Mrotuv.c Mrotuvb.c Ninfo.c Nmldump.c Output.c Outputgmt.c \
-	Pack.c Pardup.c Pinfo.c Pressure.c Regres.c Remap.c Remapeta.c \
-	Replace.c Replacevalues.c Rhopot.c Rotuv.c Runpctl.c Runstat.c \
-	Samplegrid.c Samplegridicon.c Seascount.c Seaspctl.c \
-	Seasstat.c Selbox.c Selgridcell.c Select.c Selmulti.c \
-	Seloperator.c Selrec.c Seltime.c Selvar.c Set.c Setattribute.c \
-	Setbox.c Setgatt.c Setgrid.c Sethalo.c Setmiss.c Setpartab.c \
-	Setrcaname.c Settime.c Setzaxis.c Shiftxy.c Showinfo.c Sinfo.c \
-	Smooth.c Sort.c Sorttimestamp.c Specinfo.c Spectral.c \
-	Spectrum.c Split.c Splitrec.c Splitsel.c Splittime.c \
-	Splityear.c Subtrend.c Tee.c Templates.c Test.c Tests.c \
-	Timcount.c Timcumsum.c Timpctl.c Timselpctl.c Timselstat.c \
-	Timsort.c Timstat.c Timstat2.c Timstat3.c Tinfo.c Tocomplex.c \
-	Transpose.c Trend.c Trms.c Tstepcount.c Vargen.c Varrms.c \
-	Vertintml.c Vertintap.c Vertstat.c Vertcum.c Vertwind.c \
-	Verifygrid.c Wct.c Wind.c WindTrans.c Writegrid.c \
-	Writerandom.c XTimstat.c YAR.c Yearmonstat.c Ydayarith.c \
-	Ydaypctl.c Ydaystat.c Ydrunpctl.c Ydrunstat.c Yhourarith.c \
-	Yhourstat.c Ymonarith.c Ymonpctl.c Ymonstat.c Yseaspctl.c \
-	Yseasstat.c Zonstat.c cdo.h nearpt3c.h Magplot.c Magvector.c \
-	Maggraph.c template_parser.h template_parser.c \
-	results_template_parser.h results_template_parser.c \
-	magics_template_parser.h magics_template_parser.c \
-	StringUtilities.h StringUtilities.c CdoMagicsMapper.h \
-	CdoMagicsMapper.c
+cdo_SOURCES = cdo.cc Adisit.cc Afterburner.cc Arith.cc Arithc.cc \
+	Arithdays.cc Arithlat.cc CDItest.cc CDIread.cc CDIwrite.cc \
+	Cat.cc Change.cc Change_e5slm.cc Cloudlayer.cc CMOR.cc \
+	CMOR_lite.cc CMOR_table.cc Collgrid.cc Command.cc Comp.cc \
+	Compc.cc Complextorect.cc Cond.cc Cond2.cc Condc.cc \
+	Consecstat.cc Copy.cc Deltat.cc Deltime.cc Derivepar.cc \
+	Detrend.cc Diff.cc Distgrid.cc Duplicate.cc EOFs.cc Eof3d.cc \
+	EcaIndices.cc Echam5ini.cc Enlarge.cc Enlargegrid.cc \
+	Ensstat.cc Ensstat3.cc Ensval.cc Eofcoeff.cc Eofcoeff3d.cc \
+	Exprf.cc FC.cc Filedes.cc Fillmiss.cc Filter.cc Fldrms.cc \
+	Fldstat.cc Fldstat2.cc Fourier.cc Gengrid.cc Gradsdes.cc \
+	Gridboxstat.cc Gridcell.cc Gridsearch.cc Harmonic.cc Hi.cc \
+	Histogram.cc Importamsr.cc Importbinary.cc Importcmsaf.cc \
+	Importobs.cc Info.cc Input.cc Intgrid.cc Intgridtraj.cc \
+	Intlevel.cc Intlevel3d.cc Intntime.cc Inttime.cc Intyear.cc \
+	Invert.cc Invertlev.cc Isosurface.cc Log.cc MapReduce.cc \
+	Maskbox.cc Mastrfu.cc Math.cc Merge.cc Mergegrid.cc \
+	Mergetime.cc Merstat.cc Monarith.cc Mrotuv.cc Mrotuvb.cc \
+	Ninfo.cc Nmldump.cc Output.cc Outputgmt.cc Pack.cc Pardup.cc \
+	Pinfo.cc Pressure.cc Regres.cc Remap.cc Remapeta.cc Replace.cc \
+	Replacevalues.cc Rhopot.cc Rotuv.cc Runpctl.cc Runstat.cc \
+	Samplegrid.cc Samplegridicon.cc Seascount.cc Seaspctl.cc \
+	Seasstat.cc Selbox.cc Selgridcell.cc Select.cc Selmulti.cc \
+	Seloperator.cc Selrec.cc Seltime.cc Selvar.cc Set.cc \
+	Setattribute.cc Setbox.cc Setgatt.cc Setgrid.cc Sethalo.cc \
+	Setmiss.cc Setpartab.cc Setrcaname.cc Settime.cc Setzaxis.cc \
+	Shiftxy.cc Showinfo.cc Sinfo.cc Smooth.cc Sort.cc \
+	Sorttimestamp.cc Specinfo.cc Spectral.cc Spectrum.cc Split.cc \
+	Splitrec.cc Splitsel.cc Splittime.cc Splityear.cc Subtrend.cc \
+	Tee.cc Templates.cc Test.cc Tests.cc Timcount.cc Timcumsum.cc \
+	Timpctl.cc Timselpctl.cc Timselstat.cc Timsort.cc Timstat.cc \
+	Timstat2.cc Timstat3.cc Tinfo.cc Tocomplex.cc Transpose.cc \
+	Trend.cc Trms.cc Tstepcount.cc Vargen.cc Varrms.cc \
+	Vertintml.cc Vertintap.cc Vertstat.cc Vertcum.cc Vertwind.cc \
+	Verifygrid.cc Wct.cc Wind.cc WindTrans.cc Writegrid.cc \
+	Writerandom.cc XTimstat.cc YAR.cc Yearmonstat.cc Ydayarith.cc \
+	Ydaypctl.cc Ydaystat.cc Ydrunpctl.cc Ydrunstat.cc \
+	Yhourarith.cc Yhourstat.cc Ymonarith.cc Ymonpctl.cc \
+	Ymonstat.cc Yseaspctl.cc Yseasstat.cc Zonstat.cc cdo.h \
+	nearpt3c.h Magplot.cc Magvector.cc Maggraph.cc \
+	template_parser.h template_parser.cc results_template_parser.h \
+	results_template_parser.cc magics_template_parser.h \
+	magics_template_parser.cc StringUtilities.h StringUtilities.cc \
+	CdoMagicsMapper.h CdoMagicsMapper.cc
 #endif
 cdo_CPPFLAGS = -I$(top_srcdir)/libcdi/src
 cdo_LDADD = libcdo.la $(top_builddir)/libcdi/src/libcdi.la
 cdo_LDFLAGS = $(am__append_1)
 libcdo_la_CPPFLAGS = $(cdo_CPPFLAGS)
 cdotest_SOURCES = cdo_int.h	\
-	           cdotest.c
+	           cdotest.cc
 
 cdotest_LDADD = $(cdo_LDADD)
 cdotest_CPPFLAGS = $(cdo_CPPFLAGS)
 cdotest_LDFLAGS = $(cdo_LDFLAGS) $(am__append_2)
 
-#cdo-userlog.o: userlog.c config.h
-#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo-userlog.o `test -f 'userlog.c' || echo '$(srcdir)/'`userlog.c
-#cdo_static-userlog.o: userlog.c config.h
-#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo_static-userlog.o `test -f 'userlog.c' || echo '$(srcdir)/'`userlog.c
+#cdo-userlog.o: userlog.cc config.h
+#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo-userlog.o `test -f 'userlog.cc' || echo '$(srcdir)/'`userlog.cc
+#cdo_static-userlog.o: userlog.cc config.h
+#	$(COMPILE) -DLOGPATH=${exec_prefix}/log -c -o cdo_static-userlog.o `test -f 'userlog.cc' || echo '$(srcdir)/'`userlog.cc
 #
 CLEANFILES = `ls *~ 2> /dev/null`
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .cc .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -731,7 +759,7 @@ clipping/libcdo_la-utils.lo: clipping/$(am__dirstamp) \
 	clipping/$(DEPDIR)/$(am__dirstamp)
 
 libcdo.la: $(libcdo_la_OBJECTS) $(libcdo_la_DEPENDENCIES) $(EXTRA_libcdo_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(LINK)  $(libcdo_la_OBJECTS) $(libcdo_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK)  $(libcdo_la_OBJECTS) $(libcdo_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
@@ -793,11 +821,11 @@ clean-noinstPROGRAMS:
 
 cdo$(EXEEXT): $(cdo_OBJECTS) $(cdo_DEPENDENCIES) $(EXTRA_cdo_DEPENDENCIES) 
 	@rm -f cdo$(EXEEXT)
-	$(AM_V_CCLD)$(cdo_LINK) $(cdo_OBJECTS) $(cdo_LDADD) $(LIBS)
+	$(AM_V_CXXLD)$(cdo_LINK) $(cdo_OBJECTS) $(cdo_LDADD) $(LIBS)
 
 cdotest$(EXEEXT): $(cdotest_OBJECTS) $(cdotest_DEPENDENCIES) $(EXTRA_cdotest_DEPENDENCIES) 
 	@rm -f cdotest$(EXEEXT)
-	$(AM_V_CCLD)$(cdotest_LINK) $(cdotest_OBJECTS) $(cdotest_LDADD) $(LIBS)
+	$(AM_V_CXXLD)$(cdotest_LINK) $(cdotest_OBJECTS) $(cdotest_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -1149,685 +1177,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libcdo_la-array.lo: array.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-array.lo -MD -MP -MF $(DEPDIR)/libcdo_la-array.Tpo -c -o libcdo_la-array.lo `test -f 'array.c' || echo '$(srcdir)/'`array.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-array.Tpo $(DEPDIR)/libcdo_la-array.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='array.c' object='libcdo_la-array.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-array.lo `test -f 'array.c' || echo '$(srcdir)/'`array.c
-
-libcdo_la-cdo_pthread.lo: cdo_pthread.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cdo_pthread.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_pthread.Tpo -c -o libcdo_la-cdo_pthread.lo `test -f 'cdo_pthread.c' || echo '$(srcdir)/'`cdo_pthread.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_pthread.Tpo $(DEPDIR)/libcdo_la-cdo_pthread.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo_pthread.c' object='libcdo_la-cdo_pthread.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cdo_pthread.lo `test -f 'cdo_pthread.c' || echo '$(srcdir)/'`cdo_pthread.c
-
-libcdo_la-cdo_vlist.lo: cdo_vlist.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cdo_vlist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_vlist.Tpo -c -o libcdo_la-cdo_vlist.lo `test -f 'cdo_vlist.c' || echo '$(srcdir)/'`cdo_vlist.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_vlist.Tpo $(DEPDIR)/libcdo_la-cdo_vlist.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo_vlist.c' object='libcdo_la-cdo_vlist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cdo_vlist.lo `test -f 'cdo_vlist.c' || echo '$(srcdir)/'`cdo_vlist.c
-
-libcdo_la-cdo_getopt.lo: cdo_getopt.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cdo_getopt.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_getopt.Tpo -c -o libcdo_la-cdo_getopt.lo `test -f 'cdo_getopt.c' || echo '$(srcdir)/'`cdo_getopt.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_getopt.Tpo $(DEPDIR)/libcdo_la-cdo_getopt.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo_getopt.c' object='libcdo_la-cdo_getopt.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cdo_getopt.lo `test -f 'cdo_getopt.c' || echo '$(srcdir)/'`cdo_getopt.c
-
-libcdo_la-cdo_task.lo: cdo_task.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cdo_task.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_task.Tpo -c -o libcdo_la-cdo_task.lo `test -f 'cdo_task.c' || echo '$(srcdir)/'`cdo_task.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_task.Tpo $(DEPDIR)/libcdo_la-cdo_task.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo_task.c' object='libcdo_la-cdo_task.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cdo_task.lo `test -f 'cdo_task.c' || echo '$(srcdir)/'`cdo_task.c
-
-libcdo_la-cdo_history.lo: cdo_history.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cdo_history.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_history.Tpo -c -o libcdo_la-cdo_history.lo `test -f 'cdo_history.c' || echo '$(srcdir)/'`cdo_history.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_history.Tpo $(DEPDIR)/libcdo_la-cdo_history.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo_history.c' object='libcdo_la-cdo_history.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cdo_history.lo `test -f 'cdo_history.c' || echo '$(srcdir)/'`cdo_history.c
-
-libcdo_la-cdo_read.lo: cdo_read.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cdo_read.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_read.Tpo -c -o libcdo_la-cdo_read.lo `test -f 'cdo_read.c' || echo '$(srcdir)/'`cdo_read.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_read.Tpo $(DEPDIR)/libcdo_la-cdo_read.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo_read.c' object='libcdo_la-cdo_read.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cdo_read.lo `test -f 'cdo_read.c' || echo '$(srcdir)/'`cdo_read.c
-
-libcdo_la-cmortable_parser.lo: cmortable_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-cmortable_parser.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cmortable_parser.Tpo -c -o libcdo_la-cmortable_parser.lo `test -f 'cmortable_parser.c' || echo '$(srcdir)/'`cmortable_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cmortable_parser.Tpo $(DEPDIR)/libcdo_la-cmortable_parser.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cmortable_parser.c' object='libcdo_la-cmortable_parser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-cmortable_parser.lo `test -f 'cmortable_parser.c' || echo '$(srcdir)/'`cmortable_parser.c
-
-libcdo_la-after_sptrans.lo: after_sptrans.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-after_sptrans.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_sptrans.Tpo -c -o libcdo_la-after_sptrans.lo `test -f 'after_sptrans.c' || echo '$(srcdir)/'`after_sptrans.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_sptrans.Tpo $(DEPDIR)/libcdo_la-after_sptrans.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='after_sptrans.c' object='libcdo_la-after_sptrans.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-after_sptrans.lo `test -f 'after_sptrans.c' || echo '$(srcdir)/'`after_sptrans.c
-
-libcdo_la-after_fctrans.lo: after_fctrans.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-after_fctrans.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_fctrans.Tpo -c -o libcdo_la-after_fctrans.lo `test -f 'after_fctrans.c' || echo '$(srcdir)/'`after_fctrans.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_fctrans.Tpo $(DEPDIR)/libcdo_la-after_fctrans.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='after_fctrans.c' object='libcdo_la-after_fctrans.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-after_fctrans.lo `test -f 'after_fctrans.c' || echo '$(srcdir)/'`after_fctrans.c
-
-libcdo_la-after_dvtrans.lo: after_dvtrans.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-after_dvtrans.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_dvtrans.Tpo -c -o libcdo_la-after_dvtrans.lo `test -f 'after_dvtrans.c' || echo '$(srcdir)/'`after_dvtrans.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_dvtrans.Tpo $(DEPDIR)/libcdo_la-after_dvtrans.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='after_dvtrans.c' object='libcdo_la-after_dvtrans.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-after_dvtrans.lo `test -f 'after_dvtrans.c' || echo '$(srcdir)/'`after_dvtrans.c
-
-libcdo_la-after_vertint.lo: after_vertint.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-after_vertint.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_vertint.Tpo -c -o libcdo_la-after_vertint.lo `test -f 'after_vertint.c' || echo '$(srcdir)/'`after_vertint.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_vertint.Tpo $(DEPDIR)/libcdo_la-after_vertint.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='after_vertint.c' object='libcdo_la-after_vertint.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-after_vertint.lo `test -f 'after_vertint.c' || echo '$(srcdir)/'`after_vertint.c
-
-libcdo_la-after_namelist.lo: after_namelist.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-after_namelist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_namelist.Tpo -c -o libcdo_la-after_namelist.lo `test -f 'after_namelist.c' || echo '$(srcdir)/'`after_namelist.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_namelist.Tpo $(DEPDIR)/libcdo_la-after_namelist.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='after_namelist.c' object='libcdo_la-after_namelist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-after_namelist.lo `test -f 'after_namelist.c' || echo '$(srcdir)/'`after_namelist.c
-
-libcdo_la-afterburnerlib.lo: afterburnerlib.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-afterburnerlib.lo -MD -MP -MF $(DEPDIR)/libcdo_la-afterburnerlib.Tpo -c -o libcdo_la-afterburnerlib.lo `test -f 'afterburnerlib.c' || echo '$(srcdir)/'`afterburnerlib.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-afterburnerlib.Tpo $(DEPDIR)/libcdo_la-afterburnerlib.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='afterburnerlib.c' object='libcdo_la-afterburnerlib.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-afterburnerlib.lo `test -f 'afterburnerlib.c' || echo '$(srcdir)/'`afterburnerlib.c
-
-libcdo_la-constants.lo: constants.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-constants.lo -MD -MP -MF $(DEPDIR)/libcdo_la-constants.Tpo -c -o libcdo_la-constants.lo `test -f 'constants.c' || echo '$(srcdir)/'`constants.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-constants.Tpo $(DEPDIR)/libcdo_la-constants.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='constants.c' object='libcdo_la-constants.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-constants.lo `test -f 'constants.c' || echo '$(srcdir)/'`constants.c
-
-libcdo_la-color.lo: color.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-color.lo -MD -MP -MF $(DEPDIR)/libcdo_la-color.Tpo -c -o libcdo_la-color.lo `test -f 'color.c' || echo '$(srcdir)/'`color.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-color.Tpo $(DEPDIR)/libcdo_la-color.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='color.c' object='libcdo_la-color.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-color.lo `test -f 'color.c' || echo '$(srcdir)/'`color.c
-
-libcdo_la-commandline.lo: commandline.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-commandline.lo -MD -MP -MF $(DEPDIR)/libcdo_la-commandline.Tpo -c -o libcdo_la-commandline.lo `test -f 'commandline.c' || echo '$(srcdir)/'`commandline.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-commandline.Tpo $(DEPDIR)/libcdo_la-commandline.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='commandline.c' object='libcdo_la-commandline.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-commandline.lo `test -f 'commandline.c' || echo '$(srcdir)/'`commandline.c
-
-libcdo_la-convert_units.lo: convert_units.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-convert_units.lo -MD -MP -MF $(DEPDIR)/libcdo_la-convert_units.Tpo -c -o libcdo_la-convert_units.lo `test -f 'convert_units.c' || echo '$(srcdir)/'`convert_units.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-convert_units.Tpo $(DEPDIR)/libcdo_la-convert_units.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='convert_units.c' object='libcdo_la-convert_units.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-convert_units.lo `test -f 'convert_units.c' || echo '$(srcdir)/'`convert_units.c
-
-libcdo_la-datetime.lo: datetime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-datetime.lo -MD -MP -MF $(DEPDIR)/libcdo_la-datetime.Tpo -c -o libcdo_la-datetime.lo `test -f 'datetime.c' || echo '$(srcdir)/'`datetime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-datetime.Tpo $(DEPDIR)/libcdo_la-datetime.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='datetime.c' object='libcdo_la-datetime.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-datetime.lo `test -f 'datetime.c' || echo '$(srcdir)/'`datetime.c
-
-libcdo_la-ecacore.lo: ecacore.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-ecacore.lo -MD -MP -MF $(DEPDIR)/libcdo_la-ecacore.Tpo -c -o libcdo_la-ecacore.lo `test -f 'ecacore.c' || echo '$(srcdir)/'`ecacore.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-ecacore.Tpo $(DEPDIR)/libcdo_la-ecacore.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ecacore.c' object='libcdo_la-ecacore.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-ecacore.lo `test -f 'ecacore.c' || echo '$(srcdir)/'`ecacore.c
-
-libcdo_la-ecautil.lo: ecautil.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-ecautil.lo -MD -MP -MF $(DEPDIR)/libcdo_la-ecautil.Tpo -c -o libcdo_la-ecautil.lo `test -f 'ecautil.c' || echo '$(srcdir)/'`ecautil.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-ecautil.Tpo $(DEPDIR)/libcdo_la-ecautil.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ecautil.c' object='libcdo_la-ecautil.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-ecautil.lo `test -f 'ecautil.c' || echo '$(srcdir)/'`ecautil.c
-
-libcdo_la-exception.lo: exception.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-exception.lo -MD -MP -MF $(DEPDIR)/libcdo_la-exception.Tpo -c -o libcdo_la-exception.lo `test -f 'exception.c' || echo '$(srcdir)/'`exception.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-exception.Tpo $(DEPDIR)/libcdo_la-exception.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='exception.c' object='libcdo_la-exception.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-exception.lo `test -f 'exception.c' || echo '$(srcdir)/'`exception.c
-
-libcdo_la-expr.lo: expr.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-expr.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr.Tpo -c -o libcdo_la-expr.lo `test -f 'expr.c' || echo '$(srcdir)/'`expr.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr.Tpo $(DEPDIR)/libcdo_la-expr.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='expr.c' object='libcdo_la-expr.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-expr.lo `test -f 'expr.c' || echo '$(srcdir)/'`expr.c
-
-libcdo_la-expr_fun.lo: expr_fun.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-expr_fun.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr_fun.Tpo -c -o libcdo_la-expr_fun.lo `test -f 'expr_fun.c' || echo '$(srcdir)/'`expr_fun.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr_fun.Tpo $(DEPDIR)/libcdo_la-expr_fun.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='expr_fun.c' object='libcdo_la-expr_fun.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-expr_fun.lo `test -f 'expr_fun.c' || echo '$(srcdir)/'`expr_fun.c
-
-libcdo_la-expr_lex.lo: expr_lex.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-expr_lex.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr_lex.Tpo -c -o libcdo_la-expr_lex.lo `test -f 'expr_lex.c' || echo '$(srcdir)/'`expr_lex.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr_lex.Tpo $(DEPDIR)/libcdo_la-expr_lex.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='expr_lex.c' object='libcdo_la-expr_lex.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-expr_lex.lo `test -f 'expr_lex.c' || echo '$(srcdir)/'`expr_lex.c
-
-libcdo_la-expr_yacc.lo: expr_yacc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-expr_yacc.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr_yacc.Tpo -c -o libcdo_la-expr_yacc.lo `test -f 'expr_yacc.c' || echo '$(srcdir)/'`expr_yacc.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr_yacc.Tpo $(DEPDIR)/libcdo_la-expr_yacc.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='expr_yacc.c' object='libcdo_la-expr_yacc.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-expr_yacc.lo `test -f 'expr_yacc.c' || echo '$(srcdir)/'`expr_yacc.c
-
-libcdo_la-features.lo: features.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-features.lo -MD -MP -MF $(DEPDIR)/libcdo_la-features.Tpo -c -o libcdo_la-features.lo `test -f 'features.c' || echo '$(srcdir)/'`features.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-features.Tpo $(DEPDIR)/libcdo_la-features.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='features.c' object='libcdo_la-features.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-features.lo `test -f 'features.c' || echo '$(srcdir)/'`features.c
-
-libcdo_la-field.lo: field.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-field.lo -MD -MP -MF $(DEPDIR)/libcdo_la-field.Tpo -c -o libcdo_la-field.lo `test -f 'field.c' || echo '$(srcdir)/'`field.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-field.Tpo $(DEPDIR)/libcdo_la-field.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='field.c' object='libcdo_la-field.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-field.lo `test -f 'field.c' || echo '$(srcdir)/'`field.c
-
-libcdo_la-field2.lo: field2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-field2.lo -MD -MP -MF $(DEPDIR)/libcdo_la-field2.Tpo -c -o libcdo_la-field2.lo `test -f 'field2.c' || echo '$(srcdir)/'`field2.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-field2.Tpo $(DEPDIR)/libcdo_la-field2.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='field2.c' object='libcdo_la-field2.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-field2.lo `test -f 'field2.c' || echo '$(srcdir)/'`field2.c
-
-libcdo_la-fieldc.lo: fieldc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-fieldc.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldc.Tpo -c -o libcdo_la-fieldc.lo `test -f 'fieldc.c' || echo '$(srcdir)/'`fieldc.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldc.Tpo $(DEPDIR)/libcdo_la-fieldc.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fieldc.c' object='libcdo_la-fieldc.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-fieldc.lo `test -f 'fieldc.c' || echo '$(srcdir)/'`fieldc.c
-
-libcdo_la-fieldmem.lo: fieldmem.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-fieldmem.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldmem.Tpo -c -o libcdo_la-fieldmem.lo `test -f 'fieldmem.c' || echo '$(srcdir)/'`fieldmem.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldmem.Tpo $(DEPDIR)/libcdo_la-fieldmem.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fieldmem.c' object='libcdo_la-fieldmem.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-fieldmem.lo `test -f 'fieldmem.c' || echo '$(srcdir)/'`fieldmem.c
-
-libcdo_la-fieldmer.lo: fieldmer.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-fieldmer.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldmer.Tpo -c -o libcdo_la-fieldmer.lo `test -f 'fieldmer.c' || echo '$(srcdir)/'`fieldmer.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldmer.Tpo $(DEPDIR)/libcdo_la-fieldmer.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fieldmer.c' object='libcdo_la-fieldmer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-fieldmer.lo `test -f 'fieldmer.c' || echo '$(srcdir)/'`fieldmer.c
-
-libcdo_la-fieldzon.lo: fieldzon.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-fieldzon.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldzon.Tpo -c -o libcdo_la-fieldzon.lo `test -f 'fieldzon.c' || echo '$(srcdir)/'`fieldzon.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldzon.Tpo $(DEPDIR)/libcdo_la-fieldzon.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='fieldzon.c' object='libcdo_la-fieldzon.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-fieldzon.lo `test -f 'fieldzon.c' || echo '$(srcdir)/'`fieldzon.c
-
-libcdo_la-gradsdeslib.lo: gradsdeslib.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-gradsdeslib.lo -MD -MP -MF $(DEPDIR)/libcdo_la-gradsdeslib.Tpo -c -o libcdo_la-gradsdeslib.lo `test -f 'gradsdeslib.c' || echo '$(srcdir)/'`gradsdeslib.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-gradsdeslib.Tpo $(DEPDIR)/libcdo_la-gradsdeslib.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gradsdeslib.c' object='libcdo_la-gradsdeslib.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-gradsdeslib.lo `test -f 'gradsdeslib.c' || echo '$(srcdir)/'`gradsdeslib.c
-
-libcdo_la-grid.lo: grid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid.Tpo -c -o libcdo_la-grid.lo `test -f 'grid.c' || echo '$(srcdir)/'`grid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid.Tpo $(DEPDIR)/libcdo_la-grid.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid.c' object='libcdo_la-grid.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid.lo `test -f 'grid.c' || echo '$(srcdir)/'`grid.c
-
-libcdo_la-grid_proj.lo: grid_proj.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_proj.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_proj.Tpo -c -o libcdo_la-grid_proj.lo `test -f 'grid_proj.c' || echo '$(srcdir)/'`grid_proj.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_proj.Tpo $(DEPDIR)/libcdo_la-grid_proj.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_proj.c' object='libcdo_la-grid_proj.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_proj.lo `test -f 'grid_proj.c' || echo '$(srcdir)/'`grid_proj.c
-
-libcdo_la-grid_area.lo: grid_area.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_area.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_area.Tpo -c -o libcdo_la-grid_area.lo `test -f 'grid_area.c' || echo '$(srcdir)/'`grid_area.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_area.Tpo $(DEPDIR)/libcdo_la-grid_area.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_area.c' object='libcdo_la-grid_area.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_area.lo `test -f 'grid_area.c' || echo '$(srcdir)/'`grid_area.c
-
-libcdo_la-grid_define.lo: grid_define.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_define.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_define.Tpo -c -o libcdo_la-grid_define.lo `test -f 'grid_define.c' || echo '$(srcdir)/'`grid_define.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_define.Tpo $(DEPDIR)/libcdo_la-grid_define.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_define.c' object='libcdo_la-grid_define.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_define.lo `test -f 'grid_define.c' || echo '$(srcdir)/'`grid_define.c
-
-libcdo_la-grid_gme.lo: grid_gme.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_gme.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_gme.Tpo -c -o libcdo_la-grid_gme.lo `test -f 'grid_gme.c' || echo '$(srcdir)/'`grid_gme.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_gme.Tpo $(DEPDIR)/libcdo_la-grid_gme.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_gme.c' object='libcdo_la-grid_gme.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_gme.lo `test -f 'grid_gme.c' || echo '$(srcdir)/'`grid_gme.c
-
-libcdo_la-grid_rot.lo: grid_rot.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_rot.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_rot.Tpo -c -o libcdo_la-grid_rot.lo `test -f 'grid_rot.c' || echo '$(srcdir)/'`grid_rot.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_rot.Tpo $(DEPDIR)/libcdo_la-grid_rot.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_rot.c' object='libcdo_la-grid_rot.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_rot.lo `test -f 'grid_rot.c' || echo '$(srcdir)/'`grid_rot.c
-
-libcdo_la-grid_from_name.lo: grid_from_name.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_from_name.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_from_name.Tpo -c -o libcdo_la-grid_from_name.lo `test -f 'grid_from_name.c' || echo '$(srcdir)/'`grid_from_name.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_from_name.Tpo $(DEPDIR)/libcdo_la-grid_from_name.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_from_name.c' object='libcdo_la-grid_from_name.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_from_name.lo `test -f 'grid_from_name.c' || echo '$(srcdir)/'`grid_from_name.c
-
-libcdo_la-grid_read.lo: grid_read.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_read.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_read.Tpo -c -o libcdo_la-grid_read.lo `test -f 'grid_read.c' || echo '$(srcdir)/'`grid_read.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_read.Tpo $(DEPDIR)/libcdo_la-grid_read.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_read.c' object='libcdo_la-grid_read.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_read.lo `test -f 'grid_read.c' || echo '$(srcdir)/'`grid_read.c
-
-libcdo_la-grid_read_pingo.lo: grid_read_pingo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_read_pingo.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_read_pingo.Tpo -c -o libcdo_la-grid_read_pingo.lo `test -f 'grid_read_pingo.c' || echo '$(srcdir)/'`grid_read_pingo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_read_pingo.Tpo $(DEPDIR)/libcdo_la-grid_read_pingo.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_read_pingo.c' object='libcdo_la-grid_read_pingo.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_read_pingo.lo `test -f 'grid_read_pingo.c' || echo '$(srcdir)/'`grid_read_pingo.c
-
-libcdo_la-grid_print.lo: grid_print.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_print.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_print.Tpo -c -o libcdo_la-grid_print.lo `test -f 'grid_print.c' || echo '$(srcdir)/'`grid_print.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_print.Tpo $(DEPDIR)/libcdo_la-grid_print.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_print.c' object='libcdo_la-grid_print.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_print.lo `test -f 'grid_print.c' || echo '$(srcdir)/'`grid_print.c
-
-libcdo_la-gridreference.lo: gridreference.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-gridreference.lo -MD -MP -MF $(DEPDIR)/libcdo_la-gridreference.Tpo -c -o libcdo_la-gridreference.lo `test -f 'gridreference.c' || echo '$(srcdir)/'`gridreference.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-gridreference.Tpo $(DEPDIR)/libcdo_la-gridreference.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gridreference.c' object='libcdo_la-gridreference.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-gridreference.lo `test -f 'gridreference.c' || echo '$(srcdir)/'`gridreference.c
-
-libcdo_la-griddes.lo: griddes.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-griddes.lo -MD -MP -MF $(DEPDIR)/libcdo_la-griddes.Tpo -c -o libcdo_la-griddes.lo `test -f 'griddes.c' || echo '$(srcdir)/'`griddes.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-griddes.Tpo $(DEPDIR)/libcdo_la-griddes.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='griddes.c' object='libcdo_la-griddes.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-griddes.lo `test -f 'griddes.c' || echo '$(srcdir)/'`griddes.c
-
-libcdo_la-griddes_h5.lo: griddes_h5.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-griddes_h5.lo -MD -MP -MF $(DEPDIR)/libcdo_la-griddes_h5.Tpo -c -o libcdo_la-griddes_h5.lo `test -f 'griddes_h5.c' || echo '$(srcdir)/'`griddes_h5.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-griddes_h5.Tpo $(DEPDIR)/libcdo_la-griddes_h5.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='griddes_h5.c' object='libcdo_la-griddes_h5.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-griddes_h5.lo `test -f 'griddes_h5.c' || echo '$(srcdir)/'`griddes_h5.c
-
-libcdo_la-griddes_nc.lo: griddes_nc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-griddes_nc.lo -MD -MP -MF $(DEPDIR)/libcdo_la-griddes_nc.Tpo -c -o libcdo_la-griddes_nc.lo `test -f 'griddes_nc.c' || echo '$(srcdir)/'`griddes_nc.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-griddes_nc.Tpo $(DEPDIR)/libcdo_la-griddes_nc.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='griddes_nc.c' object='libcdo_la-griddes_nc.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-griddes_nc.lo `test -f 'griddes_nc.c' || echo '$(srcdir)/'`griddes_nc.c
-
-libcdo_la-hetaeta.lo: hetaeta.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-hetaeta.lo -MD -MP -MF $(DEPDIR)/libcdo_la-hetaeta.Tpo -c -o libcdo_la-hetaeta.lo `test -f 'hetaeta.c' || echo '$(srcdir)/'`hetaeta.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-hetaeta.Tpo $(DEPDIR)/libcdo_la-hetaeta.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='hetaeta.c' object='libcdo_la-hetaeta.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-hetaeta.lo `test -f 'hetaeta.c' || echo '$(srcdir)/'`hetaeta.c
-
-libcdo_la-institution.lo: institution.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-institution.lo -MD -MP -MF $(DEPDIR)/libcdo_la-institution.Tpo -c -o libcdo_la-institution.lo `test -f 'institution.c' || echo '$(srcdir)/'`institution.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-institution.Tpo $(DEPDIR)/libcdo_la-institution.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='institution.c' object='libcdo_la-institution.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-institution.lo `test -f 'institution.c' || echo '$(srcdir)/'`institution.c
-
-libcdo_la-interpol.lo: interpol.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-interpol.lo -MD -MP -MF $(DEPDIR)/libcdo_la-interpol.Tpo -c -o libcdo_la-interpol.lo `test -f 'interpol.c' || echo '$(srcdir)/'`interpol.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-interpol.Tpo $(DEPDIR)/libcdo_la-interpol.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='interpol.c' object='libcdo_la-interpol.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-interpol.lo `test -f 'interpol.c' || echo '$(srcdir)/'`interpol.c
-
-libcdo_la-job.lo: job.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-job.lo -MD -MP -MF $(DEPDIR)/libcdo_la-job.Tpo -c -o libcdo_la-job.lo `test -f 'job.c' || echo '$(srcdir)/'`job.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-job.Tpo $(DEPDIR)/libcdo_la-job.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='job.c' object='libcdo_la-job.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-job.lo `test -f 'job.c' || echo '$(srcdir)/'`job.c
-
-libcdo_la-juldate.lo: juldate.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-juldate.lo -MD -MP -MF $(DEPDIR)/libcdo_la-juldate.Tpo -c -o libcdo_la-juldate.lo `test -f 'juldate.c' || echo '$(srcdir)/'`juldate.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-juldate.Tpo $(DEPDIR)/libcdo_la-juldate.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='juldate.c' object='libcdo_la-juldate.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-juldate.lo `test -f 'juldate.c' || echo '$(srcdir)/'`juldate.c
-
-libcdo_la-grid_search.lo: grid_search.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-grid_search.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_search.Tpo -c -o libcdo_la-grid_search.lo `test -f 'grid_search.c' || echo '$(srcdir)/'`grid_search.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_search.Tpo $(DEPDIR)/libcdo_la-grid_search.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='grid_search.c' object='libcdo_la-grid_search.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-grid_search.lo `test -f 'grid_search.c' || echo '$(srcdir)/'`grid_search.c
-
-libcdo_la-listarray.lo: listarray.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-listarray.lo -MD -MP -MF $(DEPDIR)/libcdo_la-listarray.Tpo -c -o libcdo_la-listarray.lo `test -f 'listarray.c' || echo '$(srcdir)/'`listarray.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-listarray.Tpo $(DEPDIR)/libcdo_la-listarray.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='listarray.c' object='libcdo_la-listarray.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-listarray.lo `test -f 'listarray.c' || echo '$(srcdir)/'`listarray.c
-
-libcdo_la-list.lo: list.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-list.lo -MD -MP -MF $(DEPDIR)/libcdo_la-list.Tpo -c -o libcdo_la-list.lo `test -f 'list.c' || echo '$(srcdir)/'`list.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-list.Tpo $(DEPDIR)/libcdo_la-list.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='list.c' object='libcdo_la-list.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-list.lo `test -f 'list.c' || echo '$(srcdir)/'`list.c
-
-libcdo_la-listbuf.lo: listbuf.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-listbuf.lo -MD -MP -MF $(DEPDIR)/libcdo_la-listbuf.Tpo -c -o libcdo_la-listbuf.lo `test -f 'listbuf.c' || echo '$(srcdir)/'`listbuf.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-listbuf.Tpo $(DEPDIR)/libcdo_la-listbuf.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='listbuf.c' object='libcdo_la-listbuf.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-listbuf.lo `test -f 'listbuf.c' || echo '$(srcdir)/'`listbuf.c
-
-libcdo_la-merge_sort2.lo: merge_sort2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-merge_sort2.lo -MD -MP -MF $(DEPDIR)/libcdo_la-merge_sort2.Tpo -c -o libcdo_la-merge_sort2.lo `test -f 'merge_sort2.c' || echo '$(srcdir)/'`merge_sort2.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-merge_sort2.Tpo $(DEPDIR)/libcdo_la-merge_sort2.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='merge_sort2.c' object='libcdo_la-merge_sort2.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-merge_sort2.lo `test -f 'merge_sort2.c' || echo '$(srcdir)/'`merge_sort2.c
-
-libcdo_la-modules.lo: modules.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-modules.lo -MD -MP -MF $(DEPDIR)/libcdo_la-modules.Tpo -c -o libcdo_la-modules.lo `test -f 'modules.c' || echo '$(srcdir)/'`modules.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-modules.Tpo $(DEPDIR)/libcdo_la-modules.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='modules.c' object='libcdo_la-modules.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-modules.lo `test -f 'modules.c' || echo '$(srcdir)/'`modules.c
-
-libcdo_la-namelist.lo: namelist.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-namelist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-namelist.Tpo -c -o libcdo_la-namelist.lo `test -f 'namelist.c' || echo '$(srcdir)/'`namelist.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-namelist.Tpo $(DEPDIR)/libcdo_la-namelist.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='namelist.c' object='libcdo_la-namelist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-namelist.lo `test -f 'namelist.c' || echo '$(srcdir)/'`namelist.c
-
-libcdo_la-namelist_parser.lo: namelist_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-namelist_parser.lo -MD -MP -MF $(DEPDIR)/libcdo_la-namelist_parser.Tpo -c -o libcdo_la-namelist_parser.lo `test -f 'namelist_parser.c' || echo '$(srcdir)/'`namelist_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-namelist_parser.Tpo $(DEPDIR)/libcdo_la-namelist_parser.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='namelist_parser.c' object='libcdo_la-namelist_parser.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-namelist_parser.lo `test -f 'namelist_parser.c' || echo '$(srcdir)/'`namelist_parser.c
-
-libcdo_la-normal.lo: normal.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-normal.lo -MD -MP -MF $(DEPDIR)/libcdo_la-normal.Tpo -c -o libcdo_la-normal.lo `test -f 'normal.c' || echo '$(srcdir)/'`normal.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-normal.Tpo $(DEPDIR)/libcdo_la-normal.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='normal.c' object='libcdo_la-normal.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-normal.lo `test -f 'normal.c' || echo '$(srcdir)/'`normal.c
-
-libcdo_la-nth_element.lo: nth_element.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-nth_element.lo -MD -MP -MF $(DEPDIR)/libcdo_la-nth_element.Tpo -c -o libcdo_la-nth_element.lo `test -f 'nth_element.c' || echo '$(srcdir)/'`nth_element.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-nth_element.Tpo $(DEPDIR)/libcdo_la-nth_element.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='nth_element.c' object='libcdo_la-nth_element.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-nth_element.lo `test -f 'nth_element.c' || echo '$(srcdir)/'`nth_element.c
-
-libcdo_la-par_io.lo: par_io.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-par_io.lo -MD -MP -MF $(DEPDIR)/libcdo_la-par_io.Tpo -c -o libcdo_la-par_io.lo `test -f 'par_io.c' || echo '$(srcdir)/'`par_io.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-par_io.Tpo $(DEPDIR)/libcdo_la-par_io.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='par_io.c' object='libcdo_la-par_io.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-par_io.lo `test -f 'par_io.c' || echo '$(srcdir)/'`par_io.c
-
-libcdo_la-parse_literal.lo: parse_literal.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-parse_literal.lo -MD -MP -MF $(DEPDIR)/libcdo_la-parse_literal.Tpo -c -o libcdo_la-parse_literal.lo `test -f 'parse_literal.c' || echo '$(srcdir)/'`parse_literal.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-parse_literal.Tpo $(DEPDIR)/libcdo_la-parse_literal.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='parse_literal.c' object='libcdo_la-parse_literal.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-parse_literal.lo `test -f 'parse_literal.c' || echo '$(srcdir)/'`parse_literal.c
-
-libcdo_la-percentiles_hist.lo: percentiles_hist.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-percentiles_hist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-percentiles_hist.Tpo -c -o libcdo_la-percentiles_hist.lo `test -f 'percentiles_hist.c' || echo '$(srcdir)/'`percentiles_hist.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-percentiles_hist.Tpo $(DEPDIR)/libcdo_la-percentiles_hist.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='percentiles_hist.c' object='libcdo_la-percentiles_hist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-percentiles_hist.lo `test -f 'percentiles_hist.c' || echo '$(srcdir)/'`percentiles_hist.c
-
-libcdo_la-percentiles.lo: percentiles.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-percentiles.lo -MD -MP -MF $(DEPDIR)/libcdo_la-percentiles.Tpo -c -o libcdo_la-percentiles.lo `test -f 'percentiles.c' || echo '$(srcdir)/'`percentiles.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-percentiles.Tpo $(DEPDIR)/libcdo_la-percentiles.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='percentiles.c' object='libcdo_la-percentiles.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-percentiles.lo `test -f 'percentiles.c' || echo '$(srcdir)/'`percentiles.c
-
-libcdo_la-pipe.lo: pipe.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-pipe.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pipe.Tpo -c -o libcdo_la-pipe.lo `test -f 'pipe.c' || echo '$(srcdir)/'`pipe.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pipe.Tpo $(DEPDIR)/libcdo_la-pipe.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pipe.c' object='libcdo_la-pipe.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-pipe.lo `test -f 'pipe.c' || echo '$(srcdir)/'`pipe.c
-
-libcdo_la-pmlist.lo: pmlist.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-pmlist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pmlist.Tpo -c -o libcdo_la-pmlist.lo `test -f 'pmlist.c' || echo '$(srcdir)/'`pmlist.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pmlist.Tpo $(DEPDIR)/libcdo_la-pmlist.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pmlist.c' object='libcdo_la-pmlist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-pmlist.lo `test -f 'pmlist.c' || echo '$(srcdir)/'`pmlist.c
-
-libcdo_la-sellist.lo: sellist.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-sellist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-sellist.Tpo -c -o libcdo_la-sellist.lo `test -f 'sellist.c' || echo '$(srcdir)/'`sellist.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-sellist.Tpo $(DEPDIR)/libcdo_la-sellist.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='sellist.c' object='libcdo_la-sellist.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-sellist.lo `test -f 'sellist.c' || echo '$(srcdir)/'`sellist.c
-
-libcdo_la-process.lo: process.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-process.lo -MD -MP -MF $(DEPDIR)/libcdo_la-process.Tpo -c -o libcdo_la-process.lo `test -f 'process.c' || echo '$(srcdir)/'`process.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-process.Tpo $(DEPDIR)/libcdo_la-process.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='process.c' object='libcdo_la-process.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-process.lo `test -f 'process.c' || echo '$(srcdir)/'`process.c
-
-libcdo_la-pstream.lo: pstream.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-pstream.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pstream.Tpo -c -o libcdo_la-pstream.lo `test -f 'pstream.c' || echo '$(srcdir)/'`pstream.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pstream.Tpo $(DEPDIR)/libcdo_la-pstream.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pstream.c' object='libcdo_la-pstream.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-pstream.lo `test -f 'pstream.c' || echo '$(srcdir)/'`pstream.c
-
-libcdo_la-pthread_debug.lo: pthread_debug.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-pthread_debug.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pthread_debug.Tpo -c -o libcdo_la-pthread_debug.lo `test -f 'pthread_debug.c' || echo '$(srcdir)/'`pthread_debug.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pthread_debug.Tpo $(DEPDIR)/libcdo_la-pthread_debug.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pthread_debug.c' object='libcdo_la-pthread_debug.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-pthread_debug.lo `test -f 'pthread_debug.c' || echo '$(srcdir)/'`pthread_debug.c
-
-libcdo_la-readline.lo: readline.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-readline.lo -MD -MP -MF $(DEPDIR)/libcdo_la-readline.Tpo -c -o libcdo_la-readline.lo `test -f 'readline.c' || echo '$(srcdir)/'`readline.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-readline.Tpo $(DEPDIR)/libcdo_la-readline.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='readline.c' object='libcdo_la-readline.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-readline.lo `test -f 'readline.c' || echo '$(srcdir)/'`readline.c
-
-libcdo_la-realtime.lo: realtime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-realtime.lo -MD -MP -MF $(DEPDIR)/libcdo_la-realtime.Tpo -c -o libcdo_la-realtime.lo `test -f 'realtime.c' || echo '$(srcdir)/'`realtime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-realtime.Tpo $(DEPDIR)/libcdo_la-realtime.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='realtime.c' object='libcdo_la-realtime.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-realtime.lo `test -f 'realtime.c' || echo '$(srcdir)/'`realtime.c
-
-libcdo_la-remaplib.lo: remaplib.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remaplib.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remaplib.Tpo -c -o libcdo_la-remaplib.lo `test -f 'remaplib.c' || echo '$(srcdir)/'`remaplib.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remaplib.Tpo $(DEPDIR)/libcdo_la-remaplib.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remaplib.c' object='libcdo_la-remaplib.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remaplib.lo `test -f 'remaplib.c' || echo '$(srcdir)/'`remaplib.c
-
-libcdo_la-remapsort.lo: remapsort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remapsort.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remapsort.Tpo -c -o libcdo_la-remapsort.lo `test -f 'remapsort.c' || echo '$(srcdir)/'`remapsort.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remapsort.Tpo $(DEPDIR)/libcdo_la-remapsort.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remapsort.c' object='libcdo_la-remapsort.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remapsort.lo `test -f 'remapsort.c' || echo '$(srcdir)/'`remapsort.c
-
-libcdo_la-remap_scrip_io.lo: remap_scrip_io.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_scrip_io.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_scrip_io.Tpo -c -o libcdo_la-remap_scrip_io.lo `test -f 'remap_scrip_io.c' || echo '$(srcdir)/'`remap_scrip_io.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_scrip_io.Tpo $(DEPDIR)/libcdo_la-remap_scrip_io.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_scrip_io.c' object='libcdo_la-remap_scrip_io.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_scrip_io.lo `test -f 'remap_scrip_io.c' || echo '$(srcdir)/'`remap_scrip_io.c
-
-libcdo_la-remap_search_reg2d.lo: remap_search_reg2d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_search_reg2d.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_search_reg2d.Tpo -c -o libcdo_la-remap_search_reg2d.lo `test -f 'remap_search_reg2d.c' || echo '$(srcdir)/'`remap_search_reg2d.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_search_reg2d.Tpo $(DEPDIR)/libcdo_la-remap_search_reg2d.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_search_reg2d.c' object='libcdo_la-remap_search_reg2d.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_search_reg2d.lo `test -f 'remap_search_reg2d.c' || echo '$(srcdir)/'`remap_search_reg2d.c
-
-libcdo_la-remap_search_latbins.lo: remap_search_latbins.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_search_latbins.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_search_latbins.Tpo -c -o libcdo_la-remap_search_latbins.lo `test -f 'remap_search_latbins.c' || echo '$(srcdir)/'`remap_search_latbins.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_search_latbins.Tpo $(DEPDIR)/libcdo_la-remap_search_latbins.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_search_latbins.c' object='libcdo_la-remap_search_latbins.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_search_latbins.lo `test -f 'remap_search_latbins.c' || echo '$(srcdir)/'`remap_search_latbins.c
-
-libcdo_la-remap_store_link.lo: remap_store_link.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_store_link.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_store_link.Tpo -c -o libcdo_la-remap_store_link.lo `test -f 'remap_store_link.c' || echo '$(srcdir)/'`remap_store_link.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_store_link.Tpo $(DEPDIR)/libcdo_la-remap_store_link.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_store_link.c' object='libcdo_la-remap_store_link.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_store_link.lo `test -f 'remap_store_link.c' || echo '$(srcdir)/'`remap_store_link.c
-
-libcdo_la-remap_store_link_cnsrv.lo: remap_store_link_cnsrv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_store_link_cnsrv.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_store_link_cnsrv.Tpo -c -o libcdo_la-remap_store_link_cnsrv.lo `test -f 'remap_store_link_cnsrv.c' || echo '$(srcdir)/'`remap_store_link_cnsrv.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_store_link_cnsrv.Tpo $(DEPDIR)/libcdo_la-remap_store_link_cnsrv.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_store_link_cnsrv.c' object='libcdo_la-remap_store_link_cnsrv.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_store_link_cnsrv.lo `test -f 'remap_store_link_cnsrv.c' || echo '$(srcdir)/'`remap_store_link_cnsrv.c
-
-libcdo_la-remap_conserv.lo: remap_conserv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_conserv.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_conserv.Tpo -c -o libcdo_la-remap_conserv.lo `test -f 'remap_conserv.c' || echo '$(srcdir)/'`remap_conserv.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_conserv.Tpo $(DEPDIR)/libcdo_la-remap_conserv.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_conserv.c' object='libcdo_la-remap_conserv.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_conserv.lo `test -f 'remap_conserv.c' || echo '$(srcdir)/'`remap_conserv.c
-
-libcdo_la-remap_conserv_scrip.lo: remap_conserv_scrip.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_conserv_scrip.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_conserv_scrip.Tpo -c -o libcdo_la-remap_conserv_scrip.lo `test -f 'remap_conserv_scrip.c' || echo '$(srcdir)/'`remap_conserv_scrip.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_conserv_scrip.Tpo $(DEPDIR)/libcdo_la-remap_conserv_scrip.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_conserv_scrip.c' object='libcdo_la-remap_conserv_scrip.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_conserv_scrip.lo `test -f 'remap_conserv_scrip.c' || echo '$(srcdir)/'`remap_conserv_scrip.c
-
-libcdo_la-remap_distwgt.lo: remap_distwgt.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_distwgt.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_distwgt.Tpo -c -o libcdo_la-remap_distwgt.lo `test -f 'remap_distwgt.c' || echo '$(srcdir)/'`remap_distwgt.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_distwgt.Tpo $(DEPDIR)/libcdo_la-remap_distwgt.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_distwgt.c' object='libcdo_la-remap_distwgt.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_distwgt.lo `test -f 'remap_distwgt.c' || echo '$(srcdir)/'`remap_distwgt.c
-
-libcdo_la-remap_bicubic_scrip.lo: remap_bicubic_scrip.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_bicubic_scrip.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_bicubic_scrip.Tpo -c -o libcdo_la-remap_bicubic_scrip.lo `test -f 'remap_bicubic_scrip.c' || echo '$(srcdir)/'`remap_bicubic_scrip.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_bicubic_scrip.Tpo $(DEPDIR)/libcdo_la-remap_bicubic_scrip.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_bicubic_scrip.c' object='libcdo_la-remap_bicubic_scrip.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_bicubic_scrip.lo `test -f 'remap_bicubic_scrip.c' || echo '$(srcdir)/'`remap_bicubic_scrip.c
-
-libcdo_la-remap_bilinear_scrip.lo: remap_bilinear_scrip.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-remap_bilinear_scrip.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_bilinear_scrip.Tpo -c -o libcdo_la-remap_bilinear_scrip.lo `test -f 'remap_bilinear_scrip.c' || echo '$(srcdir)/'`remap_bilinear_scrip.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_bilinear_scrip.Tpo $(DEPDIR)/libcdo_la-remap_bilinear_scrip.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='remap_bilinear_scrip.c' object='libcdo_la-remap_bilinear_scrip.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-remap_bilinear_scrip.lo `test -f 'remap_bilinear_scrip.c' || echo '$(srcdir)/'`remap_bilinear_scrip.c
-
-libcdo_la-stdnametable.lo: stdnametable.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-stdnametable.lo -MD -MP -MF $(DEPDIR)/libcdo_la-stdnametable.Tpo -c -o libcdo_la-stdnametable.lo `test -f 'stdnametable.c' || echo '$(srcdir)/'`stdnametable.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-stdnametable.Tpo $(DEPDIR)/libcdo_la-stdnametable.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='stdnametable.c' object='libcdo_la-stdnametable.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-stdnametable.lo `test -f 'stdnametable.c' || echo '$(srcdir)/'`stdnametable.c
-
-libcdo_la-specspace.lo: specspace.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-specspace.lo -MD -MP -MF $(DEPDIR)/libcdo_la-specspace.Tpo -c -o libcdo_la-specspace.lo `test -f 'specspace.c' || echo '$(srcdir)/'`specspace.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-specspace.Tpo $(DEPDIR)/libcdo_la-specspace.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='specspace.c' object='libcdo_la-specspace.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-specspace.lo `test -f 'specspace.c' || echo '$(srcdir)/'`specspace.c
-
-libcdo_la-statistic.lo: statistic.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-statistic.lo -MD -MP -MF $(DEPDIR)/libcdo_la-statistic.Tpo -c -o libcdo_la-statistic.lo `test -f 'statistic.c' || echo '$(srcdir)/'`statistic.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-statistic.Tpo $(DEPDIR)/libcdo_la-statistic.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='statistic.c' object='libcdo_la-statistic.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-statistic.lo `test -f 'statistic.c' || echo '$(srcdir)/'`statistic.c
-
-libcdo_la-table.lo: table.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-table.lo -MD -MP -MF $(DEPDIR)/libcdo_la-table.Tpo -c -o libcdo_la-table.lo `test -f 'table.c' || echo '$(srcdir)/'`table.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-table.Tpo $(DEPDIR)/libcdo_la-table.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='table.c' object='libcdo_la-table.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-table.lo `test -f 'table.c' || echo '$(srcdir)/'`table.c
-
-libcdo_la-text.lo: text.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-text.lo -MD -MP -MF $(DEPDIR)/libcdo_la-text.Tpo -c -o libcdo_la-text.lo `test -f 'text.c' || echo '$(srcdir)/'`text.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-text.Tpo $(DEPDIR)/libcdo_la-text.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='text.c' object='libcdo_la-text.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-text.lo `test -f 'text.c' || echo '$(srcdir)/'`text.c
-
-libcdo_la-timer.lo: timer.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-timer.lo -MD -MP -MF $(DEPDIR)/libcdo_la-timer.Tpo -c -o libcdo_la-timer.lo `test -f 'timer.c' || echo '$(srcdir)/'`timer.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-timer.Tpo $(DEPDIR)/libcdo_la-timer.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='timer.c' object='libcdo_la-timer.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-timer.lo `test -f 'timer.c' || echo '$(srcdir)/'`timer.c
-
-libcdo_la-userlog.lo: userlog.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-userlog.lo -MD -MP -MF $(DEPDIR)/libcdo_la-userlog.Tpo -c -o libcdo_la-userlog.lo `test -f 'userlog.c' || echo '$(srcdir)/'`userlog.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-userlog.Tpo $(DEPDIR)/libcdo_la-userlog.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='userlog.c' object='libcdo_la-userlog.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-userlog.lo `test -f 'userlog.c' || echo '$(srcdir)/'`userlog.c
-
-libcdo_la-util.lo: util.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-util.lo -MD -MP -MF $(DEPDIR)/libcdo_la-util.Tpo -c -o libcdo_la-util.lo `test -f 'util.c' || echo '$(srcdir)/'`util.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-util.Tpo $(DEPDIR)/libcdo_la-util.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='util.c' object='libcdo_la-util.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-util.lo `test -f 'util.c' || echo '$(srcdir)/'`util.c
-
-libcdo_la-zaxis_print.lo: zaxis_print.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-zaxis_print.lo -MD -MP -MF $(DEPDIR)/libcdo_la-zaxis_print.Tpo -c -o libcdo_la-zaxis_print.lo `test -f 'zaxis_print.c' || echo '$(srcdir)/'`zaxis_print.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-zaxis_print.Tpo $(DEPDIR)/libcdo_la-zaxis_print.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='zaxis_print.c' object='libcdo_la-zaxis_print.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-zaxis_print.lo `test -f 'zaxis_print.c' || echo '$(srcdir)/'`zaxis_print.c
-
-libcdo_la-zaxis.lo: zaxis.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdo_la-zaxis.lo -MD -MP -MF $(DEPDIR)/libcdo_la-zaxis.Tpo -c -o libcdo_la-zaxis.lo `test -f 'zaxis.c' || echo '$(srcdir)/'`zaxis.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-zaxis.Tpo $(DEPDIR)/libcdo_la-zaxis.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='zaxis.c' object='libcdo_la-zaxis.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdo_la-zaxis.lo `test -f 'zaxis.c' || echo '$(srcdir)/'`zaxis.c
-
 json/libcdo_la-jsmn.lo: json/jsmn.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT json/libcdo_la-jsmn.lo -MD -MP -MF json/$(DEPDIR)/libcdo_la-jsmn.Tpo -c -o json/libcdo_la-jsmn.lo `test -f 'json/jsmn.c' || echo '$(srcdir)/'`json/jsmn.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) json/$(DEPDIR)/libcdo_la-jsmn.Tpo json/$(DEPDIR)/libcdo_la-jsmn.Plo
@@ -1835,48 +1184,6 @@ json/libcdo_la-jsmn.lo: json/jsmn.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o json/libcdo_la-jsmn.lo `test -f 'json/jsmn.c' || echo '$(srcdir)/'`json/jsmn.c
 
-kdtreelib/libcdo_la-kdtree_cartesian.lo: kdtreelib/kdtree_cartesian.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kdtreelib/libcdo_la-kdtree_cartesian.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-kdtree_cartesian.Tpo -c -o kdtreelib/libcdo_la-kdtree_cartesian.lo `test -f 'kdtreelib/kdtree_cartesian.c' || echo '$(srcdir)/'`kdtreelib/kdtree_cartesian.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-kdtree_cartesian.Tpo kdtreelib/$(DEPDIR)/libcdo_la-kdtree_cartesian.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kdtreelib/kdtree_cartesian.c' object='kdtreelib/libcdo_la-kdtree_cartesian.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kdtreelib/libcdo_la-kdtree_cartesian.lo `test -f 'kdtreelib/kdtree_cartesian.c' || echo '$(srcdir)/'`kdtreelib/kdtree_cartesian.c
-
-kdtreelib/libcdo_la-kdtree_common.lo: kdtreelib/kdtree_common.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kdtreelib/libcdo_la-kdtree_common.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-kdtree_common.Tpo -c -o kdtreelib/libcdo_la-kdtree_common.lo `test -f 'kdtreelib/kdtree_common.c' || echo '$(srcdir)/'`kdtreelib/kdtree_common.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-kdtree_common.Tpo kdtreelib/$(DEPDIR)/libcdo_la-kdtree_common.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kdtreelib/kdtree_common.c' object='kdtreelib/libcdo_la-kdtree_common.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kdtreelib/libcdo_la-kdtree_common.lo `test -f 'kdtreelib/kdtree_common.c' || echo '$(srcdir)/'`kdtreelib/kdtree_common.c
-
-kdtreelib/libcdo_la-kdtree_spherical.lo: kdtreelib/kdtree_spherical.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kdtreelib/libcdo_la-kdtree_spherical.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-kdtree_spherical.Tpo -c -o kdtreelib/libcdo_la-kdtree_spherical.lo `test -f 'kdtreelib/kdtree_spherical.c' || echo '$(srcdir)/'`kdtreelib/kdtree_spherical.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-kdtree_spherical.Tpo kdtreelib/$(DEPDIR)/libcdo_la-kdtree_spherical.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kdtreelib/kdtree_spherical.c' object='kdtreelib/libcdo_la-kdtree_spherical.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kdtreelib/libcdo_la-kdtree_spherical.lo `test -f 'kdtreelib/kdtree_spherical.c' || echo '$(srcdir)/'`kdtreelib/kdtree_spherical.c
-
-kdtreelib/libcdo_la-qsort.lo: kdtreelib/qsort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kdtreelib/libcdo_la-qsort.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-qsort.Tpo -c -o kdtreelib/libcdo_la-qsort.lo `test -f 'kdtreelib/qsort.c' || echo '$(srcdir)/'`kdtreelib/qsort.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-qsort.Tpo kdtreelib/$(DEPDIR)/libcdo_la-qsort.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kdtreelib/qsort.c' object='kdtreelib/libcdo_la-qsort.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kdtreelib/libcdo_la-qsort.lo `test -f 'kdtreelib/qsort.c' || echo '$(srcdir)/'`kdtreelib/qsort.c
-
-kdtreelib/libcdo_la-pmergesort.lo: kdtreelib/pmergesort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kdtreelib/libcdo_la-pmergesort.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-pmergesort.Tpo -c -o kdtreelib/libcdo_la-pmergesort.lo `test -f 'kdtreelib/pmergesort.c' || echo '$(srcdir)/'`kdtreelib/pmergesort.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-pmergesort.Tpo kdtreelib/$(DEPDIR)/libcdo_la-pmergesort.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kdtreelib/pmergesort.c' object='kdtreelib/libcdo_la-pmergesort.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kdtreelib/libcdo_la-pmergesort.lo `test -f 'kdtreelib/pmergesort.c' || echo '$(srcdir)/'`kdtreelib/pmergesort.c
-
-kdtreelib/libcdo_la-pqueue.lo: kdtreelib/pqueue.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kdtreelib/libcdo_la-pqueue.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-pqueue.Tpo -c -o kdtreelib/libcdo_la-pqueue.lo `test -f 'kdtreelib/pqueue.c' || echo '$(srcdir)/'`kdtreelib/pqueue.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-pqueue.Tpo kdtreelib/$(DEPDIR)/libcdo_la-pqueue.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='kdtreelib/pqueue.c' object='kdtreelib/libcdo_la-pqueue.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kdtreelib/libcdo_la-pqueue.lo `test -f 'kdtreelib/pqueue.c' || echo '$(srcdir)/'`kdtreelib/pqueue.c
-
 clipping/libcdo_la-clipping.lo: clipping/clipping.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT clipping/libcdo_la-clipping.lo -MD -MP -MF clipping/$(DEPDIR)/libcdo_la-clipping.Tpo -c -o clipping/libcdo_la-clipping.lo `test -f 'clipping/clipping.c' || echo '$(srcdir)/'`clipping/clipping.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) clipping/$(DEPDIR)/libcdo_la-clipping.Tpo clipping/$(DEPDIR)/libcdo_la-clipping.Plo
@@ -1919,2847 +1226,3592 @@ clipping/libcdo_la-utils.lo: clipping/utils.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o clipping/libcdo_la-utils.lo `test -f 'clipping/utils.c' || echo '$(srcdir)/'`clipping/utils.c
 
-cdo-cdo.o: cdo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-cdo.o -MD -MP -MF $(DEPDIR)/cdo-cdo.Tpo -c -o cdo-cdo.o `test -f 'cdo.c' || echo '$(srcdir)/'`cdo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-cdo.Tpo $(DEPDIR)/cdo-cdo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo.c' object='cdo-cdo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-cdo.o `test -f 'cdo.c' || echo '$(srcdir)/'`cdo.c
-
-cdo-cdo.obj: cdo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-cdo.obj -MD -MP -MF $(DEPDIR)/cdo-cdo.Tpo -c -o cdo-cdo.obj `if test -f 'cdo.c'; then $(CYGPATH_W) 'cdo.c'; else $(CYGPATH_W) '$(srcdir)/cdo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-cdo.Tpo $(DEPDIR)/cdo-cdo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdo.c' object='cdo-cdo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-cdo.obj `if test -f 'cdo.c'; then $(CYGPATH_W) 'cdo.c'; else $(CYGPATH_W) '$(srcdir)/cdo.c'; fi`
-
-cdo-Adisit.o: Adisit.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Adisit.o -MD -MP -MF $(DEPDIR)/cdo-Adisit.Tpo -c -o cdo-Adisit.o `test -f 'Adisit.c' || echo '$(srcdir)/'`Adisit.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Adisit.Tpo $(DEPDIR)/cdo-Adisit.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Adisit.c' object='cdo-Adisit.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Adisit.o `test -f 'Adisit.c' || echo '$(srcdir)/'`Adisit.c
-
-cdo-Adisit.obj: Adisit.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Adisit.obj -MD -MP -MF $(DEPDIR)/cdo-Adisit.Tpo -c -o cdo-Adisit.obj `if test -f 'Adisit.c'; then $(CYGPATH_W) 'Adisit.c'; else $(CYGPATH_W) '$(srcdir)/Adisit.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Adisit.Tpo $(DEPDIR)/cdo-Adisit.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Adisit.c' object='cdo-Adisit.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Adisit.obj `if test -f 'Adisit.c'; then $(CYGPATH_W) 'Adisit.c'; else $(CYGPATH_W) '$(srcdir)/Adisit.c'; fi`
-
-cdo-Afterburner.o: Afterburner.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Afterburner.o -MD -MP -MF $(DEPDIR)/cdo-Afterburner.Tpo -c -o cdo-Afterburner.o `test -f 'Afterburner.c' || echo '$(srcdir)/'`Afterburner.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Afterburner.Tpo $(DEPDIR)/cdo-Afterburner.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Afterburner.c' object='cdo-Afterburner.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Afterburner.o `test -f 'Afterburner.c' || echo '$(srcdir)/'`Afterburner.c
-
-cdo-Afterburner.obj: Afterburner.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Afterburner.obj -MD -MP -MF $(DEPDIR)/cdo-Afterburner.Tpo -c -o cdo-Afterburner.obj `if test -f 'Afterburner.c'; then $(CYGPATH_W) 'Afterburner.c'; else $(CYGPATH_W) '$(srcdir)/Afterburner.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Afterburner.Tpo $(DEPDIR)/cdo-Afterburner.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Afterburner.c' object='cdo-Afterburner.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Afterburner.obj `if test -f 'Afterburner.c'; then $(CYGPATH_W) 'Afterburner.c'; else $(CYGPATH_W) '$(srcdir)/Afterburner.c'; fi`
-
-cdo-Arith.o: Arith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arith.o -MD -MP -MF $(DEPDIR)/cdo-Arith.Tpo -c -o cdo-Arith.o `test -f 'Arith.c' || echo '$(srcdir)/'`Arith.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arith.Tpo $(DEPDIR)/cdo-Arith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arith.c' object='cdo-Arith.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arith.o `test -f 'Arith.c' || echo '$(srcdir)/'`Arith.c
-
-cdo-Arith.obj: Arith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arith.obj -MD -MP -MF $(DEPDIR)/cdo-Arith.Tpo -c -o cdo-Arith.obj `if test -f 'Arith.c'; then $(CYGPATH_W) 'Arith.c'; else $(CYGPATH_W) '$(srcdir)/Arith.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arith.Tpo $(DEPDIR)/cdo-Arith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arith.c' object='cdo-Arith.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arith.obj `if test -f 'Arith.c'; then $(CYGPATH_W) 'Arith.c'; else $(CYGPATH_W) '$(srcdir)/Arith.c'; fi`
-
-cdo-Arithc.o: Arithc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arithc.o -MD -MP -MF $(DEPDIR)/cdo-Arithc.Tpo -c -o cdo-Arithc.o `test -f 'Arithc.c' || echo '$(srcdir)/'`Arithc.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithc.Tpo $(DEPDIR)/cdo-Arithc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arithc.c' object='cdo-Arithc.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arithc.o `test -f 'Arithc.c' || echo '$(srcdir)/'`Arithc.c
-
-cdo-Arithc.obj: Arithc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arithc.obj -MD -MP -MF $(DEPDIR)/cdo-Arithc.Tpo -c -o cdo-Arithc.obj `if test -f 'Arithc.c'; then $(CYGPATH_W) 'Arithc.c'; else $(CYGPATH_W) '$(srcdir)/Arithc.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithc.Tpo $(DEPDIR)/cdo-Arithc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arithc.c' object='cdo-Arithc.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arithc.obj `if test -f 'Arithc.c'; then $(CYGPATH_W) 'Arithc.c'; else $(CYGPATH_W) '$(srcdir)/Arithc.c'; fi`
-
-cdo-Arithdays.o: Arithdays.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arithdays.o -MD -MP -MF $(DEPDIR)/cdo-Arithdays.Tpo -c -o cdo-Arithdays.o `test -f 'Arithdays.c' || echo '$(srcdir)/'`Arithdays.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithdays.Tpo $(DEPDIR)/cdo-Arithdays.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arithdays.c' object='cdo-Arithdays.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arithdays.o `test -f 'Arithdays.c' || echo '$(srcdir)/'`Arithdays.c
-
-cdo-Arithdays.obj: Arithdays.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arithdays.obj -MD -MP -MF $(DEPDIR)/cdo-Arithdays.Tpo -c -o cdo-Arithdays.obj `if test -f 'Arithdays.c'; then $(CYGPATH_W) 'Arithdays.c'; else $(CYGPATH_W) '$(srcdir)/Arithdays.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithdays.Tpo $(DEPDIR)/cdo-Arithdays.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arithdays.c' object='cdo-Arithdays.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arithdays.obj `if test -f 'Arithdays.c'; then $(CYGPATH_W) 'Arithdays.c'; else $(CYGPATH_W) '$(srcdir)/Arithdays.c'; fi`
-
-cdo-Arithlat.o: Arithlat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arithlat.o -MD -MP -MF $(DEPDIR)/cdo-Arithlat.Tpo -c -o cdo-Arithlat.o `test -f 'Arithlat.c' || echo '$(srcdir)/'`Arithlat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithlat.Tpo $(DEPDIR)/cdo-Arithlat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arithlat.c' object='cdo-Arithlat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arithlat.o `test -f 'Arithlat.c' || echo '$(srcdir)/'`Arithlat.c
-
-cdo-Arithlat.obj: Arithlat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Arithlat.obj -MD -MP -MF $(DEPDIR)/cdo-Arithlat.Tpo -c -o cdo-Arithlat.obj `if test -f 'Arithlat.c'; then $(CYGPATH_W) 'Arithlat.c'; else $(CYGPATH_W) '$(srcdir)/Arithlat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithlat.Tpo $(DEPDIR)/cdo-Arithlat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Arithlat.c' object='cdo-Arithlat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Arithlat.obj `if test -f 'Arithlat.c'; then $(CYGPATH_W) 'Arithlat.c'; else $(CYGPATH_W) '$(srcdir)/Arithlat.c'; fi`
-
-cdo-CDItest.o: CDItest.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CDItest.o -MD -MP -MF $(DEPDIR)/cdo-CDItest.Tpo -c -o cdo-CDItest.o `test -f 'CDItest.c' || echo '$(srcdir)/'`CDItest.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDItest.Tpo $(DEPDIR)/cdo-CDItest.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CDItest.c' object='cdo-CDItest.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CDItest.o `test -f 'CDItest.c' || echo '$(srcdir)/'`CDItest.c
-
-cdo-CDItest.obj: CDItest.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CDItest.obj -MD -MP -MF $(DEPDIR)/cdo-CDItest.Tpo -c -o cdo-CDItest.obj `if test -f 'CDItest.c'; then $(CYGPATH_W) 'CDItest.c'; else $(CYGPATH_W) '$(srcdir)/CDItest.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDItest.Tpo $(DEPDIR)/cdo-CDItest.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CDItest.c' object='cdo-CDItest.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CDItest.obj `if test -f 'CDItest.c'; then $(CYGPATH_W) 'CDItest.c'; else $(CYGPATH_W) '$(srcdir)/CDItest.c'; fi`
-
-cdo-CDIread.o: CDIread.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CDIread.o -MD -MP -MF $(DEPDIR)/cdo-CDIread.Tpo -c -o cdo-CDIread.o `test -f 'CDIread.c' || echo '$(srcdir)/'`CDIread.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIread.Tpo $(DEPDIR)/cdo-CDIread.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CDIread.c' object='cdo-CDIread.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CDIread.o `test -f 'CDIread.c' || echo '$(srcdir)/'`CDIread.c
-
-cdo-CDIread.obj: CDIread.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CDIread.obj -MD -MP -MF $(DEPDIR)/cdo-CDIread.Tpo -c -o cdo-CDIread.obj `if test -f 'CDIread.c'; then $(CYGPATH_W) 'CDIread.c'; else $(CYGPATH_W) '$(srcdir)/CDIread.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIread.Tpo $(DEPDIR)/cdo-CDIread.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CDIread.c' object='cdo-CDIread.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CDIread.obj `if test -f 'CDIread.c'; then $(CYGPATH_W) 'CDIread.c'; else $(CYGPATH_W) '$(srcdir)/CDIread.c'; fi`
-
-cdo-CDIwrite.o: CDIwrite.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CDIwrite.o -MD -MP -MF $(DEPDIR)/cdo-CDIwrite.Tpo -c -o cdo-CDIwrite.o `test -f 'CDIwrite.c' || echo '$(srcdir)/'`CDIwrite.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIwrite.Tpo $(DEPDIR)/cdo-CDIwrite.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CDIwrite.c' object='cdo-CDIwrite.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CDIwrite.o `test -f 'CDIwrite.c' || echo '$(srcdir)/'`CDIwrite.c
-
-cdo-CDIwrite.obj: CDIwrite.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CDIwrite.obj -MD -MP -MF $(DEPDIR)/cdo-CDIwrite.Tpo -c -o cdo-CDIwrite.obj `if test -f 'CDIwrite.c'; then $(CYGPATH_W) 'CDIwrite.c'; else $(CYGPATH_W) '$(srcdir)/CDIwrite.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIwrite.Tpo $(DEPDIR)/cdo-CDIwrite.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CDIwrite.c' object='cdo-CDIwrite.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CDIwrite.obj `if test -f 'CDIwrite.c'; then $(CYGPATH_W) 'CDIwrite.c'; else $(CYGPATH_W) '$(srcdir)/CDIwrite.c'; fi`
-
-cdo-Cat.o: Cat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cat.o -MD -MP -MF $(DEPDIR)/cdo-Cat.Tpo -c -o cdo-Cat.o `test -f 'Cat.c' || echo '$(srcdir)/'`Cat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cat.Tpo $(DEPDIR)/cdo-Cat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cat.c' object='cdo-Cat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cat.o `test -f 'Cat.c' || echo '$(srcdir)/'`Cat.c
-
-cdo-Cat.obj: Cat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cat.obj -MD -MP -MF $(DEPDIR)/cdo-Cat.Tpo -c -o cdo-Cat.obj `if test -f 'Cat.c'; then $(CYGPATH_W) 'Cat.c'; else $(CYGPATH_W) '$(srcdir)/Cat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cat.Tpo $(DEPDIR)/cdo-Cat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cat.c' object='cdo-Cat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cat.obj `if test -f 'Cat.c'; then $(CYGPATH_W) 'Cat.c'; else $(CYGPATH_W) '$(srcdir)/Cat.c'; fi`
-
-cdo-Change.o: Change.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Change.o -MD -MP -MF $(DEPDIR)/cdo-Change.Tpo -c -o cdo-Change.o `test -f 'Change.c' || echo '$(srcdir)/'`Change.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change.Tpo $(DEPDIR)/cdo-Change.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Change.c' object='cdo-Change.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Change.o `test -f 'Change.c' || echo '$(srcdir)/'`Change.c
-
-cdo-Change.obj: Change.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Change.obj -MD -MP -MF $(DEPDIR)/cdo-Change.Tpo -c -o cdo-Change.obj `if test -f 'Change.c'; then $(CYGPATH_W) 'Change.c'; else $(CYGPATH_W) '$(srcdir)/Change.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change.Tpo $(DEPDIR)/cdo-Change.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Change.c' object='cdo-Change.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Change.obj `if test -f 'Change.c'; then $(CYGPATH_W) 'Change.c'; else $(CYGPATH_W) '$(srcdir)/Change.c'; fi`
-
-cdo-Change_e5slm.o: Change_e5slm.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Change_e5slm.o -MD -MP -MF $(DEPDIR)/cdo-Change_e5slm.Tpo -c -o cdo-Change_e5slm.o `test -f 'Change_e5slm.c' || echo '$(srcdir)/'`Change_e5slm.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change_e5slm.Tpo $(DEPDIR)/cdo-Change_e5slm.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Change_e5slm.c' object='cdo-Change_e5slm.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Change_e5slm.o `test -f 'Change_e5slm.c' || echo '$(srcdir)/'`Change_e5slm.c
-
-cdo-Change_e5slm.obj: Change_e5slm.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Change_e5slm.obj -MD -MP -MF $(DEPDIR)/cdo-Change_e5slm.Tpo -c -o cdo-Change_e5slm.obj `if test -f 'Change_e5slm.c'; then $(CYGPATH_W) 'Change_e5slm.c'; else $(CYGPATH_W) '$(srcdir)/Change_e5slm.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change_e5slm.Tpo $(DEPDIR)/cdo-Change_e5slm.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Change_e5slm.c' object='cdo-Change_e5slm.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Change_e5slm.obj `if test -f 'Change_e5slm.c'; then $(CYGPATH_W) 'Change_e5slm.c'; else $(CYGPATH_W) '$(srcdir)/Change_e5slm.c'; fi`
-
-cdo-Cloudlayer.o: Cloudlayer.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cloudlayer.o -MD -MP -MF $(DEPDIR)/cdo-Cloudlayer.Tpo -c -o cdo-Cloudlayer.o `test -f 'Cloudlayer.c' || echo '$(srcdir)/'`Cloudlayer.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cloudlayer.Tpo $(DEPDIR)/cdo-Cloudlayer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cloudlayer.c' object='cdo-Cloudlayer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cloudlayer.o `test -f 'Cloudlayer.c' || echo '$(srcdir)/'`Cloudlayer.c
-
-cdo-Cloudlayer.obj: Cloudlayer.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cloudlayer.obj -MD -MP -MF $(DEPDIR)/cdo-Cloudlayer.Tpo -c -o cdo-Cloudlayer.obj `if test -f 'Cloudlayer.c'; then $(CYGPATH_W) 'Cloudlayer.c'; else $(CYGPATH_W) '$(srcdir)/Cloudlayer.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cloudlayer.Tpo $(DEPDIR)/cdo-Cloudlayer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cloudlayer.c' object='cdo-Cloudlayer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cloudlayer.obj `if test -f 'Cloudlayer.c'; then $(CYGPATH_W) 'Cloudlayer.c'; else $(CYGPATH_W) '$(srcdir)/Cloudlayer.c'; fi`
-
-cdo-CMOR.o: CMOR.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CMOR.o -MD -MP -MF $(DEPDIR)/cdo-CMOR.Tpo -c -o cdo-CMOR.o `test -f 'CMOR.c' || echo '$(srcdir)/'`CMOR.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR.Tpo $(DEPDIR)/cdo-CMOR.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CMOR.c' object='cdo-CMOR.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CMOR.o `test -f 'CMOR.c' || echo '$(srcdir)/'`CMOR.c
-
-cdo-CMOR.obj: CMOR.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CMOR.obj -MD -MP -MF $(DEPDIR)/cdo-CMOR.Tpo -c -o cdo-CMOR.obj `if test -f 'CMOR.c'; then $(CYGPATH_W) 'CMOR.c'; else $(CYGPATH_W) '$(srcdir)/CMOR.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR.Tpo $(DEPDIR)/cdo-CMOR.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CMOR.c' object='cdo-CMOR.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CMOR.obj `if test -f 'CMOR.c'; then $(CYGPATH_W) 'CMOR.c'; else $(CYGPATH_W) '$(srcdir)/CMOR.c'; fi`
-
-cdo-CMOR_lite.o: CMOR_lite.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CMOR_lite.o -MD -MP -MF $(DEPDIR)/cdo-CMOR_lite.Tpo -c -o cdo-CMOR_lite.o `test -f 'CMOR_lite.c' || echo '$(srcdir)/'`CMOR_lite.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_lite.Tpo $(DEPDIR)/cdo-CMOR_lite.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CMOR_lite.c' object='cdo-CMOR_lite.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CMOR_lite.o `test -f 'CMOR_lite.c' || echo '$(srcdir)/'`CMOR_lite.c
-
-cdo-CMOR_lite.obj: CMOR_lite.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CMOR_lite.obj -MD -MP -MF $(DEPDIR)/cdo-CMOR_lite.Tpo -c -o cdo-CMOR_lite.obj `if test -f 'CMOR_lite.c'; then $(CYGPATH_W) 'CMOR_lite.c'; else $(CYGPATH_W) '$(srcdir)/CMOR_lite.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_lite.Tpo $(DEPDIR)/cdo-CMOR_lite.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CMOR_lite.c' object='cdo-CMOR_lite.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CMOR_lite.obj `if test -f 'CMOR_lite.c'; then $(CYGPATH_W) 'CMOR_lite.c'; else $(CYGPATH_W) '$(srcdir)/CMOR_lite.c'; fi`
-
-cdo-CMOR_table.o: CMOR_table.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CMOR_table.o -MD -MP -MF $(DEPDIR)/cdo-CMOR_table.Tpo -c -o cdo-CMOR_table.o `test -f 'CMOR_table.c' || echo '$(srcdir)/'`CMOR_table.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_table.Tpo $(DEPDIR)/cdo-CMOR_table.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CMOR_table.c' object='cdo-CMOR_table.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CMOR_table.o `test -f 'CMOR_table.c' || echo '$(srcdir)/'`CMOR_table.c
-
-cdo-CMOR_table.obj: CMOR_table.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CMOR_table.obj -MD -MP -MF $(DEPDIR)/cdo-CMOR_table.Tpo -c -o cdo-CMOR_table.obj `if test -f 'CMOR_table.c'; then $(CYGPATH_W) 'CMOR_table.c'; else $(CYGPATH_W) '$(srcdir)/CMOR_table.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_table.Tpo $(DEPDIR)/cdo-CMOR_table.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CMOR_table.c' object='cdo-CMOR_table.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CMOR_table.obj `if test -f 'CMOR_table.c'; then $(CYGPATH_W) 'CMOR_table.c'; else $(CYGPATH_W) '$(srcdir)/CMOR_table.c'; fi`
-
-cdo-Collgrid.o: Collgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Collgrid.o -MD -MP -MF $(DEPDIR)/cdo-Collgrid.Tpo -c -o cdo-Collgrid.o `test -f 'Collgrid.c' || echo '$(srcdir)/'`Collgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Collgrid.Tpo $(DEPDIR)/cdo-Collgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Collgrid.c' object='cdo-Collgrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Collgrid.o `test -f 'Collgrid.c' || echo '$(srcdir)/'`Collgrid.c
-
-cdo-Collgrid.obj: Collgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Collgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Collgrid.Tpo -c -o cdo-Collgrid.obj `if test -f 'Collgrid.c'; then $(CYGPATH_W) 'Collgrid.c'; else $(CYGPATH_W) '$(srcdir)/Collgrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Collgrid.Tpo $(DEPDIR)/cdo-Collgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Collgrid.c' object='cdo-Collgrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Collgrid.obj `if test -f 'Collgrid.c'; then $(CYGPATH_W) 'Collgrid.c'; else $(CYGPATH_W) '$(srcdir)/Collgrid.c'; fi`
-
-cdo-Command.o: Command.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Command.o -MD -MP -MF $(DEPDIR)/cdo-Command.Tpo -c -o cdo-Command.o `test -f 'Command.c' || echo '$(srcdir)/'`Command.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Command.Tpo $(DEPDIR)/cdo-Command.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Command.c' object='cdo-Command.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Command.o `test -f 'Command.c' || echo '$(srcdir)/'`Command.c
-
-cdo-Command.obj: Command.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Command.obj -MD -MP -MF $(DEPDIR)/cdo-Command.Tpo -c -o cdo-Command.obj `if test -f 'Command.c'; then $(CYGPATH_W) 'Command.c'; else $(CYGPATH_W) '$(srcdir)/Command.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Command.Tpo $(DEPDIR)/cdo-Command.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Command.c' object='cdo-Command.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Command.obj `if test -f 'Command.c'; then $(CYGPATH_W) 'Command.c'; else $(CYGPATH_W) '$(srcdir)/Command.c'; fi`
-
-cdo-Comp.o: Comp.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Comp.o -MD -MP -MF $(DEPDIR)/cdo-Comp.Tpo -c -o cdo-Comp.o `test -f 'Comp.c' || echo '$(srcdir)/'`Comp.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Comp.Tpo $(DEPDIR)/cdo-Comp.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Comp.c' object='cdo-Comp.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Comp.o `test -f 'Comp.c' || echo '$(srcdir)/'`Comp.c
-
-cdo-Comp.obj: Comp.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Comp.obj -MD -MP -MF $(DEPDIR)/cdo-Comp.Tpo -c -o cdo-Comp.obj `if test -f 'Comp.c'; then $(CYGPATH_W) 'Comp.c'; else $(CYGPATH_W) '$(srcdir)/Comp.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Comp.Tpo $(DEPDIR)/cdo-Comp.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Comp.c' object='cdo-Comp.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Comp.obj `if test -f 'Comp.c'; then $(CYGPATH_W) 'Comp.c'; else $(CYGPATH_W) '$(srcdir)/Comp.c'; fi`
-
-cdo-Compc.o: Compc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Compc.o -MD -MP -MF $(DEPDIR)/cdo-Compc.Tpo -c -o cdo-Compc.o `test -f 'Compc.c' || echo '$(srcdir)/'`Compc.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Compc.Tpo $(DEPDIR)/cdo-Compc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Compc.c' object='cdo-Compc.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Compc.o `test -f 'Compc.c' || echo '$(srcdir)/'`Compc.c
-
-cdo-Compc.obj: Compc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Compc.obj -MD -MP -MF $(DEPDIR)/cdo-Compc.Tpo -c -o cdo-Compc.obj `if test -f 'Compc.c'; then $(CYGPATH_W) 'Compc.c'; else $(CYGPATH_W) '$(srcdir)/Compc.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Compc.Tpo $(DEPDIR)/cdo-Compc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Compc.c' object='cdo-Compc.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Compc.obj `if test -f 'Compc.c'; then $(CYGPATH_W) 'Compc.c'; else $(CYGPATH_W) '$(srcdir)/Compc.c'; fi`
-
-cdo-Complextorect.o: Complextorect.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Complextorect.o -MD -MP -MF $(DEPDIR)/cdo-Complextorect.Tpo -c -o cdo-Complextorect.o `test -f 'Complextorect.c' || echo '$(srcdir)/'`Complextorect.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Complextorect.Tpo $(DEPDIR)/cdo-Complextorect.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Complextorect.c' object='cdo-Complextorect.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Complextorect.o `test -f 'Complextorect.c' || echo '$(srcdir)/'`Complextorect.c
-
-cdo-Complextorect.obj: Complextorect.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Complextorect.obj -MD -MP -MF $(DEPDIR)/cdo-Complextorect.Tpo -c -o cdo-Complextorect.obj `if test -f 'Complextorect.c'; then $(CYGPATH_W) 'Complextorect.c'; else $(CYGPATH_W) '$(srcdir)/Complextorect.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Complextorect.Tpo $(DEPDIR)/cdo-Complextorect.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Complextorect.c' object='cdo-Complextorect.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Complextorect.obj `if test -f 'Complextorect.c'; then $(CYGPATH_W) 'Complextorect.c'; else $(CYGPATH_W) '$(srcdir)/Complextorect.c'; fi`
-
-cdo-Cond.o: Cond.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cond.o -MD -MP -MF $(DEPDIR)/cdo-Cond.Tpo -c -o cdo-Cond.o `test -f 'Cond.c' || echo '$(srcdir)/'`Cond.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond.Tpo $(DEPDIR)/cdo-Cond.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cond.c' object='cdo-Cond.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cond.o `test -f 'Cond.c' || echo '$(srcdir)/'`Cond.c
-
-cdo-Cond.obj: Cond.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cond.obj -MD -MP -MF $(DEPDIR)/cdo-Cond.Tpo -c -o cdo-Cond.obj `if test -f 'Cond.c'; then $(CYGPATH_W) 'Cond.c'; else $(CYGPATH_W) '$(srcdir)/Cond.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond.Tpo $(DEPDIR)/cdo-Cond.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cond.c' object='cdo-Cond.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cond.obj `if test -f 'Cond.c'; then $(CYGPATH_W) 'Cond.c'; else $(CYGPATH_W) '$(srcdir)/Cond.c'; fi`
-
-cdo-Cond2.o: Cond2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cond2.o -MD -MP -MF $(DEPDIR)/cdo-Cond2.Tpo -c -o cdo-Cond2.o `test -f 'Cond2.c' || echo '$(srcdir)/'`Cond2.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond2.Tpo $(DEPDIR)/cdo-Cond2.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cond2.c' object='cdo-Cond2.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cond2.o `test -f 'Cond2.c' || echo '$(srcdir)/'`Cond2.c
-
-cdo-Cond2.obj: Cond2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Cond2.obj -MD -MP -MF $(DEPDIR)/cdo-Cond2.Tpo -c -o cdo-Cond2.obj `if test -f 'Cond2.c'; then $(CYGPATH_W) 'Cond2.c'; else $(CYGPATH_W) '$(srcdir)/Cond2.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond2.Tpo $(DEPDIR)/cdo-Cond2.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Cond2.c' object='cdo-Cond2.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Cond2.obj `if test -f 'Cond2.c'; then $(CYGPATH_W) 'Cond2.c'; else $(CYGPATH_W) '$(srcdir)/Cond2.c'; fi`
-
-cdo-Condc.o: Condc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Condc.o -MD -MP -MF $(DEPDIR)/cdo-Condc.Tpo -c -o cdo-Condc.o `test -f 'Condc.c' || echo '$(srcdir)/'`Condc.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Condc.Tpo $(DEPDIR)/cdo-Condc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Condc.c' object='cdo-Condc.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Condc.o `test -f 'Condc.c' || echo '$(srcdir)/'`Condc.c
-
-cdo-Condc.obj: Condc.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Condc.obj -MD -MP -MF $(DEPDIR)/cdo-Condc.Tpo -c -o cdo-Condc.obj `if test -f 'Condc.c'; then $(CYGPATH_W) 'Condc.c'; else $(CYGPATH_W) '$(srcdir)/Condc.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Condc.Tpo $(DEPDIR)/cdo-Condc.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Condc.c' object='cdo-Condc.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Condc.obj `if test -f 'Condc.c'; then $(CYGPATH_W) 'Condc.c'; else $(CYGPATH_W) '$(srcdir)/Condc.c'; fi`
-
-cdo-Consecstat.o: Consecstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Consecstat.o -MD -MP -MF $(DEPDIR)/cdo-Consecstat.Tpo -c -o cdo-Consecstat.o `test -f 'Consecstat.c' || echo '$(srcdir)/'`Consecstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Consecstat.Tpo $(DEPDIR)/cdo-Consecstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Consecstat.c' object='cdo-Consecstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Consecstat.o `test -f 'Consecstat.c' || echo '$(srcdir)/'`Consecstat.c
-
-cdo-Consecstat.obj: Consecstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Consecstat.obj -MD -MP -MF $(DEPDIR)/cdo-Consecstat.Tpo -c -o cdo-Consecstat.obj `if test -f 'Consecstat.c'; then $(CYGPATH_W) 'Consecstat.c'; else $(CYGPATH_W) '$(srcdir)/Consecstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Consecstat.Tpo $(DEPDIR)/cdo-Consecstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Consecstat.c' object='cdo-Consecstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Consecstat.obj `if test -f 'Consecstat.c'; then $(CYGPATH_W) 'Consecstat.c'; else $(CYGPATH_W) '$(srcdir)/Consecstat.c'; fi`
-
-cdo-Copy.o: Copy.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Copy.o -MD -MP -MF $(DEPDIR)/cdo-Copy.Tpo -c -o cdo-Copy.o `test -f 'Copy.c' || echo '$(srcdir)/'`Copy.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Copy.Tpo $(DEPDIR)/cdo-Copy.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Copy.c' object='cdo-Copy.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Copy.o `test -f 'Copy.c' || echo '$(srcdir)/'`Copy.c
-
-cdo-Copy.obj: Copy.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Copy.obj -MD -MP -MF $(DEPDIR)/cdo-Copy.Tpo -c -o cdo-Copy.obj `if test -f 'Copy.c'; then $(CYGPATH_W) 'Copy.c'; else $(CYGPATH_W) '$(srcdir)/Copy.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Copy.Tpo $(DEPDIR)/cdo-Copy.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Copy.c' object='cdo-Copy.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Copy.obj `if test -f 'Copy.c'; then $(CYGPATH_W) 'Copy.c'; else $(CYGPATH_W) '$(srcdir)/Copy.c'; fi`
-
-cdo-Deltat.o: Deltat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Deltat.o -MD -MP -MF $(DEPDIR)/cdo-Deltat.Tpo -c -o cdo-Deltat.o `test -f 'Deltat.c' || echo '$(srcdir)/'`Deltat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltat.Tpo $(DEPDIR)/cdo-Deltat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Deltat.c' object='cdo-Deltat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Deltat.o `test -f 'Deltat.c' || echo '$(srcdir)/'`Deltat.c
-
-cdo-Deltat.obj: Deltat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Deltat.obj -MD -MP -MF $(DEPDIR)/cdo-Deltat.Tpo -c -o cdo-Deltat.obj `if test -f 'Deltat.c'; then $(CYGPATH_W) 'Deltat.c'; else $(CYGPATH_W) '$(srcdir)/Deltat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltat.Tpo $(DEPDIR)/cdo-Deltat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Deltat.c' object='cdo-Deltat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Deltat.obj `if test -f 'Deltat.c'; then $(CYGPATH_W) 'Deltat.c'; else $(CYGPATH_W) '$(srcdir)/Deltat.c'; fi`
-
-cdo-Deltime.o: Deltime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Deltime.o -MD -MP -MF $(DEPDIR)/cdo-Deltime.Tpo -c -o cdo-Deltime.o `test -f 'Deltime.c' || echo '$(srcdir)/'`Deltime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltime.Tpo $(DEPDIR)/cdo-Deltime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Deltime.c' object='cdo-Deltime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Deltime.o `test -f 'Deltime.c' || echo '$(srcdir)/'`Deltime.c
-
-cdo-Deltime.obj: Deltime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Deltime.obj -MD -MP -MF $(DEPDIR)/cdo-Deltime.Tpo -c -o cdo-Deltime.obj `if test -f 'Deltime.c'; then $(CYGPATH_W) 'Deltime.c'; else $(CYGPATH_W) '$(srcdir)/Deltime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltime.Tpo $(DEPDIR)/cdo-Deltime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Deltime.c' object='cdo-Deltime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Deltime.obj `if test -f 'Deltime.c'; then $(CYGPATH_W) 'Deltime.c'; else $(CYGPATH_W) '$(srcdir)/Deltime.c'; fi`
-
-cdo-Derivepar.o: Derivepar.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Derivepar.o -MD -MP -MF $(DEPDIR)/cdo-Derivepar.Tpo -c -o cdo-Derivepar.o `test -f 'Derivepar.c' || echo '$(srcdir)/'`Derivepar.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Derivepar.Tpo $(DEPDIR)/cdo-Derivepar.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Derivepar.c' object='cdo-Derivepar.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Derivepar.o `test -f 'Derivepar.c' || echo '$(srcdir)/'`Derivepar.c
-
-cdo-Derivepar.obj: Derivepar.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Derivepar.obj -MD -MP -MF $(DEPDIR)/cdo-Derivepar.Tpo -c -o cdo-Derivepar.obj `if test -f 'Derivepar.c'; then $(CYGPATH_W) 'Derivepar.c'; else $(CYGPATH_W) '$(srcdir)/Derivepar.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Derivepar.Tpo $(DEPDIR)/cdo-Derivepar.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Derivepar.c' object='cdo-Derivepar.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Derivepar.obj `if test -f 'Derivepar.c'; then $(CYGPATH_W) 'Derivepar.c'; else $(CYGPATH_W) '$(srcdir)/Derivepar.c'; fi`
-
-cdo-Detrend.o: Detrend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Detrend.o -MD -MP -MF $(DEPDIR)/cdo-Detrend.Tpo -c -o cdo-Detrend.o `test -f 'Detrend.c' || echo '$(srcdir)/'`Detrend.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Detrend.Tpo $(DEPDIR)/cdo-Detrend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Detrend.c' object='cdo-Detrend.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Detrend.o `test -f 'Detrend.c' || echo '$(srcdir)/'`Detrend.c
-
-cdo-Detrend.obj: Detrend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Detrend.obj -MD -MP -MF $(DEPDIR)/cdo-Detrend.Tpo -c -o cdo-Detrend.obj `if test -f 'Detrend.c'; then $(CYGPATH_W) 'Detrend.c'; else $(CYGPATH_W) '$(srcdir)/Detrend.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Detrend.Tpo $(DEPDIR)/cdo-Detrend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Detrend.c' object='cdo-Detrend.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Detrend.obj `if test -f 'Detrend.c'; then $(CYGPATH_W) 'Detrend.c'; else $(CYGPATH_W) '$(srcdir)/Detrend.c'; fi`
-
-cdo-Diff.o: Diff.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Diff.o -MD -MP -MF $(DEPDIR)/cdo-Diff.Tpo -c -o cdo-Diff.o `test -f 'Diff.c' || echo '$(srcdir)/'`Diff.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Diff.Tpo $(DEPDIR)/cdo-Diff.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Diff.c' object='cdo-Diff.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Diff.o `test -f 'Diff.c' || echo '$(srcdir)/'`Diff.c
-
-cdo-Diff.obj: Diff.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Diff.obj -MD -MP -MF $(DEPDIR)/cdo-Diff.Tpo -c -o cdo-Diff.obj `if test -f 'Diff.c'; then $(CYGPATH_W) 'Diff.c'; else $(CYGPATH_W) '$(srcdir)/Diff.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Diff.Tpo $(DEPDIR)/cdo-Diff.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Diff.c' object='cdo-Diff.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Diff.obj `if test -f 'Diff.c'; then $(CYGPATH_W) 'Diff.c'; else $(CYGPATH_W) '$(srcdir)/Diff.c'; fi`
-
-cdo-Distgrid.o: Distgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Distgrid.o -MD -MP -MF $(DEPDIR)/cdo-Distgrid.Tpo -c -o cdo-Distgrid.o `test -f 'Distgrid.c' || echo '$(srcdir)/'`Distgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Distgrid.Tpo $(DEPDIR)/cdo-Distgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Distgrid.c' object='cdo-Distgrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Distgrid.o `test -f 'Distgrid.c' || echo '$(srcdir)/'`Distgrid.c
-
-cdo-Distgrid.obj: Distgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Distgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Distgrid.Tpo -c -o cdo-Distgrid.obj `if test -f 'Distgrid.c'; then $(CYGPATH_W) 'Distgrid.c'; else $(CYGPATH_W) '$(srcdir)/Distgrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Distgrid.Tpo $(DEPDIR)/cdo-Distgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Distgrid.c' object='cdo-Distgrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Distgrid.obj `if test -f 'Distgrid.c'; then $(CYGPATH_W) 'Distgrid.c'; else $(CYGPATH_W) '$(srcdir)/Distgrid.c'; fi`
-
-cdo-Duplicate.o: Duplicate.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Duplicate.o -MD -MP -MF $(DEPDIR)/cdo-Duplicate.Tpo -c -o cdo-Duplicate.o `test -f 'Duplicate.c' || echo '$(srcdir)/'`Duplicate.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Duplicate.Tpo $(DEPDIR)/cdo-Duplicate.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Duplicate.c' object='cdo-Duplicate.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Duplicate.o `test -f 'Duplicate.c' || echo '$(srcdir)/'`Duplicate.c
-
-cdo-Duplicate.obj: Duplicate.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Duplicate.obj -MD -MP -MF $(DEPDIR)/cdo-Duplicate.Tpo -c -o cdo-Duplicate.obj `if test -f 'Duplicate.c'; then $(CYGPATH_W) 'Duplicate.c'; else $(CYGPATH_W) '$(srcdir)/Duplicate.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Duplicate.Tpo $(DEPDIR)/cdo-Duplicate.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Duplicate.c' object='cdo-Duplicate.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Duplicate.obj `if test -f 'Duplicate.c'; then $(CYGPATH_W) 'Duplicate.c'; else $(CYGPATH_W) '$(srcdir)/Duplicate.c'; fi`
-
-cdo-EOFs.o: EOFs.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-EOFs.o -MD -MP -MF $(DEPDIR)/cdo-EOFs.Tpo -c -o cdo-EOFs.o `test -f 'EOFs.c' || echo '$(srcdir)/'`EOFs.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EOFs.Tpo $(DEPDIR)/cdo-EOFs.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='EOFs.c' object='cdo-EOFs.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-EOFs.o `test -f 'EOFs.c' || echo '$(srcdir)/'`EOFs.c
-
-cdo-EOFs.obj: EOFs.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-EOFs.obj -MD -MP -MF $(DEPDIR)/cdo-EOFs.Tpo -c -o cdo-EOFs.obj `if test -f 'EOFs.c'; then $(CYGPATH_W) 'EOFs.c'; else $(CYGPATH_W) '$(srcdir)/EOFs.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EOFs.Tpo $(DEPDIR)/cdo-EOFs.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='EOFs.c' object='cdo-EOFs.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-EOFs.obj `if test -f 'EOFs.c'; then $(CYGPATH_W) 'EOFs.c'; else $(CYGPATH_W) '$(srcdir)/EOFs.c'; fi`
-
-cdo-Eof3d.o: Eof3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Eof3d.o -MD -MP -MF $(DEPDIR)/cdo-Eof3d.Tpo -c -o cdo-Eof3d.o `test -f 'Eof3d.c' || echo '$(srcdir)/'`Eof3d.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eof3d.Tpo $(DEPDIR)/cdo-Eof3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Eof3d.c' object='cdo-Eof3d.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Eof3d.o `test -f 'Eof3d.c' || echo '$(srcdir)/'`Eof3d.c
-
-cdo-Eof3d.obj: Eof3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Eof3d.obj -MD -MP -MF $(DEPDIR)/cdo-Eof3d.Tpo -c -o cdo-Eof3d.obj `if test -f 'Eof3d.c'; then $(CYGPATH_W) 'Eof3d.c'; else $(CYGPATH_W) '$(srcdir)/Eof3d.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eof3d.Tpo $(DEPDIR)/cdo-Eof3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Eof3d.c' object='cdo-Eof3d.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Eof3d.obj `if test -f 'Eof3d.c'; then $(CYGPATH_W) 'Eof3d.c'; else $(CYGPATH_W) '$(srcdir)/Eof3d.c'; fi`
-
-cdo-EcaIndices.o: EcaIndices.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-EcaIndices.o -MD -MP -MF $(DEPDIR)/cdo-EcaIndices.Tpo -c -o cdo-EcaIndices.o `test -f 'EcaIndices.c' || echo '$(srcdir)/'`EcaIndices.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EcaIndices.Tpo $(DEPDIR)/cdo-EcaIndices.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='EcaIndices.c' object='cdo-EcaIndices.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-EcaIndices.o `test -f 'EcaIndices.c' || echo '$(srcdir)/'`EcaIndices.c
-
-cdo-EcaIndices.obj: EcaIndices.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-EcaIndices.obj -MD -MP -MF $(DEPDIR)/cdo-EcaIndices.Tpo -c -o cdo-EcaIndices.obj `if test -f 'EcaIndices.c'; then $(CYGPATH_W) 'EcaIndices.c'; else $(CYGPATH_W) '$(srcdir)/EcaIndices.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EcaIndices.Tpo $(DEPDIR)/cdo-EcaIndices.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='EcaIndices.c' object='cdo-EcaIndices.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-EcaIndices.obj `if test -f 'EcaIndices.c'; then $(CYGPATH_W) 'EcaIndices.c'; else $(CYGPATH_W) '$(srcdir)/EcaIndices.c'; fi`
-
-cdo-Echam5ini.o: Echam5ini.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Echam5ini.o -MD -MP -MF $(DEPDIR)/cdo-Echam5ini.Tpo -c -o cdo-Echam5ini.o `test -f 'Echam5ini.c' || echo '$(srcdir)/'`Echam5ini.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Echam5ini.Tpo $(DEPDIR)/cdo-Echam5ini.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Echam5ini.c' object='cdo-Echam5ini.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Echam5ini.o `test -f 'Echam5ini.c' || echo '$(srcdir)/'`Echam5ini.c
-
-cdo-Echam5ini.obj: Echam5ini.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Echam5ini.obj -MD -MP -MF $(DEPDIR)/cdo-Echam5ini.Tpo -c -o cdo-Echam5ini.obj `if test -f 'Echam5ini.c'; then $(CYGPATH_W) 'Echam5ini.c'; else $(CYGPATH_W) '$(srcdir)/Echam5ini.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Echam5ini.Tpo $(DEPDIR)/cdo-Echam5ini.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Echam5ini.c' object='cdo-Echam5ini.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Echam5ini.obj `if test -f 'Echam5ini.c'; then $(CYGPATH_W) 'Echam5ini.c'; else $(CYGPATH_W) '$(srcdir)/Echam5ini.c'; fi`
-
-cdo-Enlarge.o: Enlarge.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Enlarge.o -MD -MP -MF $(DEPDIR)/cdo-Enlarge.Tpo -c -o cdo-Enlarge.o `test -f 'Enlarge.c' || echo '$(srcdir)/'`Enlarge.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlarge.Tpo $(DEPDIR)/cdo-Enlarge.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Enlarge.c' object='cdo-Enlarge.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Enlarge.o `test -f 'Enlarge.c' || echo '$(srcdir)/'`Enlarge.c
-
-cdo-Enlarge.obj: Enlarge.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Enlarge.obj -MD -MP -MF $(DEPDIR)/cdo-Enlarge.Tpo -c -o cdo-Enlarge.obj `if test -f 'Enlarge.c'; then $(CYGPATH_W) 'Enlarge.c'; else $(CYGPATH_W) '$(srcdir)/Enlarge.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlarge.Tpo $(DEPDIR)/cdo-Enlarge.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Enlarge.c' object='cdo-Enlarge.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Enlarge.obj `if test -f 'Enlarge.c'; then $(CYGPATH_W) 'Enlarge.c'; else $(CYGPATH_W) '$(srcdir)/Enlarge.c'; fi`
-
-cdo-Enlargegrid.o: Enlargegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Enlargegrid.o -MD -MP -MF $(DEPDIR)/cdo-Enlargegrid.Tpo -c -o cdo-Enlargegrid.o `test -f 'Enlargegrid.c' || echo '$(srcdir)/'`Enlargegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlargegrid.Tpo $(DEPDIR)/cdo-Enlargegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Enlargegrid.c' object='cdo-Enlargegrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Enlargegrid.o `test -f 'Enlargegrid.c' || echo '$(srcdir)/'`Enlargegrid.c
-
-cdo-Enlargegrid.obj: Enlargegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Enlargegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Enlargegrid.Tpo -c -o cdo-Enlargegrid.obj `if test -f 'Enlargegrid.c'; then $(CYGPATH_W) 'Enlargegrid.c'; else $(CYGPATH_W) '$(srcdir)/Enlargegrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlargegrid.Tpo $(DEPDIR)/cdo-Enlargegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Enlargegrid.c' object='cdo-Enlargegrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Enlargegrid.obj `if test -f 'Enlargegrid.c'; then $(CYGPATH_W) 'Enlargegrid.c'; else $(CYGPATH_W) '$(srcdir)/Enlargegrid.c'; fi`
-
-cdo-Ensstat.o: Ensstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ensstat.o -MD -MP -MF $(DEPDIR)/cdo-Ensstat.Tpo -c -o cdo-Ensstat.o `test -f 'Ensstat.c' || echo '$(srcdir)/'`Ensstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat.Tpo $(DEPDIR)/cdo-Ensstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ensstat.c' object='cdo-Ensstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ensstat.o `test -f 'Ensstat.c' || echo '$(srcdir)/'`Ensstat.c
-
-cdo-Ensstat.obj: Ensstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ensstat.obj -MD -MP -MF $(DEPDIR)/cdo-Ensstat.Tpo -c -o cdo-Ensstat.obj `if test -f 'Ensstat.c'; then $(CYGPATH_W) 'Ensstat.c'; else $(CYGPATH_W) '$(srcdir)/Ensstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat.Tpo $(DEPDIR)/cdo-Ensstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ensstat.c' object='cdo-Ensstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ensstat.obj `if test -f 'Ensstat.c'; then $(CYGPATH_W) 'Ensstat.c'; else $(CYGPATH_W) '$(srcdir)/Ensstat.c'; fi`
-
-cdo-Ensstat3.o: Ensstat3.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ensstat3.o -MD -MP -MF $(DEPDIR)/cdo-Ensstat3.Tpo -c -o cdo-Ensstat3.o `test -f 'Ensstat3.c' || echo '$(srcdir)/'`Ensstat3.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat3.Tpo $(DEPDIR)/cdo-Ensstat3.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ensstat3.c' object='cdo-Ensstat3.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ensstat3.o `test -f 'Ensstat3.c' || echo '$(srcdir)/'`Ensstat3.c
-
-cdo-Ensstat3.obj: Ensstat3.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ensstat3.obj -MD -MP -MF $(DEPDIR)/cdo-Ensstat3.Tpo -c -o cdo-Ensstat3.obj `if test -f 'Ensstat3.c'; then $(CYGPATH_W) 'Ensstat3.c'; else $(CYGPATH_W) '$(srcdir)/Ensstat3.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat3.Tpo $(DEPDIR)/cdo-Ensstat3.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ensstat3.c' object='cdo-Ensstat3.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ensstat3.obj `if test -f 'Ensstat3.c'; then $(CYGPATH_W) 'Ensstat3.c'; else $(CYGPATH_W) '$(srcdir)/Ensstat3.c'; fi`
-
-cdo-Ensval.o: Ensval.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ensval.o -MD -MP -MF $(DEPDIR)/cdo-Ensval.Tpo -c -o cdo-Ensval.o `test -f 'Ensval.c' || echo '$(srcdir)/'`Ensval.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensval.Tpo $(DEPDIR)/cdo-Ensval.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ensval.c' object='cdo-Ensval.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ensval.o `test -f 'Ensval.c' || echo '$(srcdir)/'`Ensval.c
-
-cdo-Ensval.obj: Ensval.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ensval.obj -MD -MP -MF $(DEPDIR)/cdo-Ensval.Tpo -c -o cdo-Ensval.obj `if test -f 'Ensval.c'; then $(CYGPATH_W) 'Ensval.c'; else $(CYGPATH_W) '$(srcdir)/Ensval.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensval.Tpo $(DEPDIR)/cdo-Ensval.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ensval.c' object='cdo-Ensval.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ensval.obj `if test -f 'Ensval.c'; then $(CYGPATH_W) 'Ensval.c'; else $(CYGPATH_W) '$(srcdir)/Ensval.c'; fi`
-
-cdo-Eofcoeff.o: Eofcoeff.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Eofcoeff.o -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff.Tpo -c -o cdo-Eofcoeff.o `test -f 'Eofcoeff.c' || echo '$(srcdir)/'`Eofcoeff.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff.Tpo $(DEPDIR)/cdo-Eofcoeff.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Eofcoeff.c' object='cdo-Eofcoeff.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Eofcoeff.o `test -f 'Eofcoeff.c' || echo '$(srcdir)/'`Eofcoeff.c
-
-cdo-Eofcoeff.obj: Eofcoeff.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Eofcoeff.obj -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff.Tpo -c -o cdo-Eofcoeff.obj `if test -f 'Eofcoeff.c'; then $(CYGPATH_W) 'Eofcoeff.c'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff.Tpo $(DEPDIR)/cdo-Eofcoeff.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Eofcoeff.c' object='cdo-Eofcoeff.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Eofcoeff.obj `if test -f 'Eofcoeff.c'; then $(CYGPATH_W) 'Eofcoeff.c'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff.c'; fi`
-
-cdo-Eofcoeff3d.o: Eofcoeff3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Eofcoeff3d.o -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff3d.Tpo -c -o cdo-Eofcoeff3d.o `test -f 'Eofcoeff3d.c' || echo '$(srcdir)/'`Eofcoeff3d.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff3d.Tpo $(DEPDIR)/cdo-Eofcoeff3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Eofcoeff3d.c' object='cdo-Eofcoeff3d.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Eofcoeff3d.o `test -f 'Eofcoeff3d.c' || echo '$(srcdir)/'`Eofcoeff3d.c
-
-cdo-Eofcoeff3d.obj: Eofcoeff3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Eofcoeff3d.obj -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff3d.Tpo -c -o cdo-Eofcoeff3d.obj `if test -f 'Eofcoeff3d.c'; then $(CYGPATH_W) 'Eofcoeff3d.c'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff3d.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff3d.Tpo $(DEPDIR)/cdo-Eofcoeff3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Eofcoeff3d.c' object='cdo-Eofcoeff3d.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Eofcoeff3d.obj `if test -f 'Eofcoeff3d.c'; then $(CYGPATH_W) 'Eofcoeff3d.c'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff3d.c'; fi`
-
-cdo-Exprf.o: Exprf.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Exprf.o -MD -MP -MF $(DEPDIR)/cdo-Exprf.Tpo -c -o cdo-Exprf.o `test -f 'Exprf.c' || echo '$(srcdir)/'`Exprf.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Exprf.Tpo $(DEPDIR)/cdo-Exprf.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Exprf.c' object='cdo-Exprf.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Exprf.o `test -f 'Exprf.c' || echo '$(srcdir)/'`Exprf.c
-
-cdo-Exprf.obj: Exprf.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Exprf.obj -MD -MP -MF $(DEPDIR)/cdo-Exprf.Tpo -c -o cdo-Exprf.obj `if test -f 'Exprf.c'; then $(CYGPATH_W) 'Exprf.c'; else $(CYGPATH_W) '$(srcdir)/Exprf.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Exprf.Tpo $(DEPDIR)/cdo-Exprf.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Exprf.c' object='cdo-Exprf.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Exprf.obj `if test -f 'Exprf.c'; then $(CYGPATH_W) 'Exprf.c'; else $(CYGPATH_W) '$(srcdir)/Exprf.c'; fi`
-
-cdo-FC.o: FC.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-FC.o -MD -MP -MF $(DEPDIR)/cdo-FC.Tpo -c -o cdo-FC.o `test -f 'FC.c' || echo '$(srcdir)/'`FC.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-FC.Tpo $(DEPDIR)/cdo-FC.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='FC.c' object='cdo-FC.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-FC.o `test -f 'FC.c' || echo '$(srcdir)/'`FC.c
-
-cdo-FC.obj: FC.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-FC.obj -MD -MP -MF $(DEPDIR)/cdo-FC.Tpo -c -o cdo-FC.obj `if test -f 'FC.c'; then $(CYGPATH_W) 'FC.c'; else $(CYGPATH_W) '$(srcdir)/FC.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-FC.Tpo $(DEPDIR)/cdo-FC.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='FC.c' object='cdo-FC.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-FC.obj `if test -f 'FC.c'; then $(CYGPATH_W) 'FC.c'; else $(CYGPATH_W) '$(srcdir)/FC.c'; fi`
-
-cdo-Filedes.o: Filedes.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Filedes.o -MD -MP -MF $(DEPDIR)/cdo-Filedes.Tpo -c -o cdo-Filedes.o `test -f 'Filedes.c' || echo '$(srcdir)/'`Filedes.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filedes.Tpo $(DEPDIR)/cdo-Filedes.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Filedes.c' object='cdo-Filedes.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Filedes.o `test -f 'Filedes.c' || echo '$(srcdir)/'`Filedes.c
-
-cdo-Filedes.obj: Filedes.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Filedes.obj -MD -MP -MF $(DEPDIR)/cdo-Filedes.Tpo -c -o cdo-Filedes.obj `if test -f 'Filedes.c'; then $(CYGPATH_W) 'Filedes.c'; else $(CYGPATH_W) '$(srcdir)/Filedes.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filedes.Tpo $(DEPDIR)/cdo-Filedes.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Filedes.c' object='cdo-Filedes.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Filedes.obj `if test -f 'Filedes.c'; then $(CYGPATH_W) 'Filedes.c'; else $(CYGPATH_W) '$(srcdir)/Filedes.c'; fi`
-
-cdo-Fillmiss.o: Fillmiss.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fillmiss.o -MD -MP -MF $(DEPDIR)/cdo-Fillmiss.Tpo -c -o cdo-Fillmiss.o `test -f 'Fillmiss.c' || echo '$(srcdir)/'`Fillmiss.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fillmiss.Tpo $(DEPDIR)/cdo-Fillmiss.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fillmiss.c' object='cdo-Fillmiss.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fillmiss.o `test -f 'Fillmiss.c' || echo '$(srcdir)/'`Fillmiss.c
-
-cdo-Fillmiss.obj: Fillmiss.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fillmiss.obj -MD -MP -MF $(DEPDIR)/cdo-Fillmiss.Tpo -c -o cdo-Fillmiss.obj `if test -f 'Fillmiss.c'; then $(CYGPATH_W) 'Fillmiss.c'; else $(CYGPATH_W) '$(srcdir)/Fillmiss.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fillmiss.Tpo $(DEPDIR)/cdo-Fillmiss.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fillmiss.c' object='cdo-Fillmiss.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fillmiss.obj `if test -f 'Fillmiss.c'; then $(CYGPATH_W) 'Fillmiss.c'; else $(CYGPATH_W) '$(srcdir)/Fillmiss.c'; fi`
-
-cdo-Filter.o: Filter.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Filter.o -MD -MP -MF $(DEPDIR)/cdo-Filter.Tpo -c -o cdo-Filter.o `test -f 'Filter.c' || echo '$(srcdir)/'`Filter.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filter.Tpo $(DEPDIR)/cdo-Filter.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Filter.c' object='cdo-Filter.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Filter.o `test -f 'Filter.c' || echo '$(srcdir)/'`Filter.c
-
-cdo-Filter.obj: Filter.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Filter.obj -MD -MP -MF $(DEPDIR)/cdo-Filter.Tpo -c -o cdo-Filter.obj `if test -f 'Filter.c'; then $(CYGPATH_W) 'Filter.c'; else $(CYGPATH_W) '$(srcdir)/Filter.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filter.Tpo $(DEPDIR)/cdo-Filter.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Filter.c' object='cdo-Filter.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Filter.obj `if test -f 'Filter.c'; then $(CYGPATH_W) 'Filter.c'; else $(CYGPATH_W) '$(srcdir)/Filter.c'; fi`
-
-cdo-Fldrms.o: Fldrms.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fldrms.o -MD -MP -MF $(DEPDIR)/cdo-Fldrms.Tpo -c -o cdo-Fldrms.o `test -f 'Fldrms.c' || echo '$(srcdir)/'`Fldrms.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldrms.Tpo $(DEPDIR)/cdo-Fldrms.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fldrms.c' object='cdo-Fldrms.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fldrms.o `test -f 'Fldrms.c' || echo '$(srcdir)/'`Fldrms.c
-
-cdo-Fldrms.obj: Fldrms.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fldrms.obj -MD -MP -MF $(DEPDIR)/cdo-Fldrms.Tpo -c -o cdo-Fldrms.obj `if test -f 'Fldrms.c'; then $(CYGPATH_W) 'Fldrms.c'; else $(CYGPATH_W) '$(srcdir)/Fldrms.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldrms.Tpo $(DEPDIR)/cdo-Fldrms.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fldrms.c' object='cdo-Fldrms.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fldrms.obj `if test -f 'Fldrms.c'; then $(CYGPATH_W) 'Fldrms.c'; else $(CYGPATH_W) '$(srcdir)/Fldrms.c'; fi`
-
-cdo-Fldstat.o: Fldstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fldstat.o -MD -MP -MF $(DEPDIR)/cdo-Fldstat.Tpo -c -o cdo-Fldstat.o `test -f 'Fldstat.c' || echo '$(srcdir)/'`Fldstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat.Tpo $(DEPDIR)/cdo-Fldstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fldstat.c' object='cdo-Fldstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fldstat.o `test -f 'Fldstat.c' || echo '$(srcdir)/'`Fldstat.c
-
-cdo-Fldstat.obj: Fldstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fldstat.obj -MD -MP -MF $(DEPDIR)/cdo-Fldstat.Tpo -c -o cdo-Fldstat.obj `if test -f 'Fldstat.c'; then $(CYGPATH_W) 'Fldstat.c'; else $(CYGPATH_W) '$(srcdir)/Fldstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat.Tpo $(DEPDIR)/cdo-Fldstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fldstat.c' object='cdo-Fldstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fldstat.obj `if test -f 'Fldstat.c'; then $(CYGPATH_W) 'Fldstat.c'; else $(CYGPATH_W) '$(srcdir)/Fldstat.c'; fi`
-
-cdo-Fldstat2.o: Fldstat2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fldstat2.o -MD -MP -MF $(DEPDIR)/cdo-Fldstat2.Tpo -c -o cdo-Fldstat2.o `test -f 'Fldstat2.c' || echo '$(srcdir)/'`Fldstat2.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat2.Tpo $(DEPDIR)/cdo-Fldstat2.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fldstat2.c' object='cdo-Fldstat2.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fldstat2.o `test -f 'Fldstat2.c' || echo '$(srcdir)/'`Fldstat2.c
-
-cdo-Fldstat2.obj: Fldstat2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fldstat2.obj -MD -MP -MF $(DEPDIR)/cdo-Fldstat2.Tpo -c -o cdo-Fldstat2.obj `if test -f 'Fldstat2.c'; then $(CYGPATH_W) 'Fldstat2.c'; else $(CYGPATH_W) '$(srcdir)/Fldstat2.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat2.Tpo $(DEPDIR)/cdo-Fldstat2.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fldstat2.c' object='cdo-Fldstat2.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fldstat2.obj `if test -f 'Fldstat2.c'; then $(CYGPATH_W) 'Fldstat2.c'; else $(CYGPATH_W) '$(srcdir)/Fldstat2.c'; fi`
-
-cdo-Fourier.o: Fourier.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fourier.o -MD -MP -MF $(DEPDIR)/cdo-Fourier.Tpo -c -o cdo-Fourier.o `test -f 'Fourier.c' || echo '$(srcdir)/'`Fourier.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fourier.Tpo $(DEPDIR)/cdo-Fourier.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fourier.c' object='cdo-Fourier.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fourier.o `test -f 'Fourier.c' || echo '$(srcdir)/'`Fourier.c
-
-cdo-Fourier.obj: Fourier.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Fourier.obj -MD -MP -MF $(DEPDIR)/cdo-Fourier.Tpo -c -o cdo-Fourier.obj `if test -f 'Fourier.c'; then $(CYGPATH_W) 'Fourier.c'; else $(CYGPATH_W) '$(srcdir)/Fourier.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fourier.Tpo $(DEPDIR)/cdo-Fourier.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Fourier.c' object='cdo-Fourier.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Fourier.obj `if test -f 'Fourier.c'; then $(CYGPATH_W) 'Fourier.c'; else $(CYGPATH_W) '$(srcdir)/Fourier.c'; fi`
-
-cdo-Gengrid.o: Gengrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gengrid.o -MD -MP -MF $(DEPDIR)/cdo-Gengrid.Tpo -c -o cdo-Gengrid.o `test -f 'Gengrid.c' || echo '$(srcdir)/'`Gengrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gengrid.Tpo $(DEPDIR)/cdo-Gengrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gengrid.c' object='cdo-Gengrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gengrid.o `test -f 'Gengrid.c' || echo '$(srcdir)/'`Gengrid.c
-
-cdo-Gengrid.obj: Gengrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gengrid.obj -MD -MP -MF $(DEPDIR)/cdo-Gengrid.Tpo -c -o cdo-Gengrid.obj `if test -f 'Gengrid.c'; then $(CYGPATH_W) 'Gengrid.c'; else $(CYGPATH_W) '$(srcdir)/Gengrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gengrid.Tpo $(DEPDIR)/cdo-Gengrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gengrid.c' object='cdo-Gengrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gengrid.obj `if test -f 'Gengrid.c'; then $(CYGPATH_W) 'Gengrid.c'; else $(CYGPATH_W) '$(srcdir)/Gengrid.c'; fi`
-
-cdo-Gradsdes.o: Gradsdes.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gradsdes.o -MD -MP -MF $(DEPDIR)/cdo-Gradsdes.Tpo -c -o cdo-Gradsdes.o `test -f 'Gradsdes.c' || echo '$(srcdir)/'`Gradsdes.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gradsdes.Tpo $(DEPDIR)/cdo-Gradsdes.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gradsdes.c' object='cdo-Gradsdes.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gradsdes.o `test -f 'Gradsdes.c' || echo '$(srcdir)/'`Gradsdes.c
-
-cdo-Gradsdes.obj: Gradsdes.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gradsdes.obj -MD -MP -MF $(DEPDIR)/cdo-Gradsdes.Tpo -c -o cdo-Gradsdes.obj `if test -f 'Gradsdes.c'; then $(CYGPATH_W) 'Gradsdes.c'; else $(CYGPATH_W) '$(srcdir)/Gradsdes.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gradsdes.Tpo $(DEPDIR)/cdo-Gradsdes.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gradsdes.c' object='cdo-Gradsdes.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gradsdes.obj `if test -f 'Gradsdes.c'; then $(CYGPATH_W) 'Gradsdes.c'; else $(CYGPATH_W) '$(srcdir)/Gradsdes.c'; fi`
-
-cdo-Gridboxstat.o: Gridboxstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gridboxstat.o -MD -MP -MF $(DEPDIR)/cdo-Gridboxstat.Tpo -c -o cdo-Gridboxstat.o `test -f 'Gridboxstat.c' || echo '$(srcdir)/'`Gridboxstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridboxstat.Tpo $(DEPDIR)/cdo-Gridboxstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gridboxstat.c' object='cdo-Gridboxstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gridboxstat.o `test -f 'Gridboxstat.c' || echo '$(srcdir)/'`Gridboxstat.c
-
-cdo-Gridboxstat.obj: Gridboxstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gridboxstat.obj -MD -MP -MF $(DEPDIR)/cdo-Gridboxstat.Tpo -c -o cdo-Gridboxstat.obj `if test -f 'Gridboxstat.c'; then $(CYGPATH_W) 'Gridboxstat.c'; else $(CYGPATH_W) '$(srcdir)/Gridboxstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridboxstat.Tpo $(DEPDIR)/cdo-Gridboxstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gridboxstat.c' object='cdo-Gridboxstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gridboxstat.obj `if test -f 'Gridboxstat.c'; then $(CYGPATH_W) 'Gridboxstat.c'; else $(CYGPATH_W) '$(srcdir)/Gridboxstat.c'; fi`
-
-cdo-Gridcell.o: Gridcell.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gridcell.o -MD -MP -MF $(DEPDIR)/cdo-Gridcell.Tpo -c -o cdo-Gridcell.o `test -f 'Gridcell.c' || echo '$(srcdir)/'`Gridcell.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridcell.Tpo $(DEPDIR)/cdo-Gridcell.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gridcell.c' object='cdo-Gridcell.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gridcell.o `test -f 'Gridcell.c' || echo '$(srcdir)/'`Gridcell.c
-
-cdo-Gridcell.obj: Gridcell.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gridcell.obj -MD -MP -MF $(DEPDIR)/cdo-Gridcell.Tpo -c -o cdo-Gridcell.obj `if test -f 'Gridcell.c'; then $(CYGPATH_W) 'Gridcell.c'; else $(CYGPATH_W) '$(srcdir)/Gridcell.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridcell.Tpo $(DEPDIR)/cdo-Gridcell.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gridcell.c' object='cdo-Gridcell.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gridcell.obj `if test -f 'Gridcell.c'; then $(CYGPATH_W) 'Gridcell.c'; else $(CYGPATH_W) '$(srcdir)/Gridcell.c'; fi`
-
-cdo-Gridsearch.o: Gridsearch.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gridsearch.o -MD -MP -MF $(DEPDIR)/cdo-Gridsearch.Tpo -c -o cdo-Gridsearch.o `test -f 'Gridsearch.c' || echo '$(srcdir)/'`Gridsearch.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridsearch.Tpo $(DEPDIR)/cdo-Gridsearch.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gridsearch.c' object='cdo-Gridsearch.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gridsearch.o `test -f 'Gridsearch.c' || echo '$(srcdir)/'`Gridsearch.c
-
-cdo-Gridsearch.obj: Gridsearch.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Gridsearch.obj -MD -MP -MF $(DEPDIR)/cdo-Gridsearch.Tpo -c -o cdo-Gridsearch.obj `if test -f 'Gridsearch.c'; then $(CYGPATH_W) 'Gridsearch.c'; else $(CYGPATH_W) '$(srcdir)/Gridsearch.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridsearch.Tpo $(DEPDIR)/cdo-Gridsearch.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Gridsearch.c' object='cdo-Gridsearch.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Gridsearch.obj `if test -f 'Gridsearch.c'; then $(CYGPATH_W) 'Gridsearch.c'; else $(CYGPATH_W) '$(srcdir)/Gridsearch.c'; fi`
-
-cdo-Harmonic.o: Harmonic.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Harmonic.o -MD -MP -MF $(DEPDIR)/cdo-Harmonic.Tpo -c -o cdo-Harmonic.o `test -f 'Harmonic.c' || echo '$(srcdir)/'`Harmonic.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Harmonic.Tpo $(DEPDIR)/cdo-Harmonic.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Harmonic.c' object='cdo-Harmonic.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Harmonic.o `test -f 'Harmonic.c' || echo '$(srcdir)/'`Harmonic.c
-
-cdo-Harmonic.obj: Harmonic.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Harmonic.obj -MD -MP -MF $(DEPDIR)/cdo-Harmonic.Tpo -c -o cdo-Harmonic.obj `if test -f 'Harmonic.c'; then $(CYGPATH_W) 'Harmonic.c'; else $(CYGPATH_W) '$(srcdir)/Harmonic.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Harmonic.Tpo $(DEPDIR)/cdo-Harmonic.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Harmonic.c' object='cdo-Harmonic.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Harmonic.obj `if test -f 'Harmonic.c'; then $(CYGPATH_W) 'Harmonic.c'; else $(CYGPATH_W) '$(srcdir)/Harmonic.c'; fi`
-
-cdo-Hi.o: Hi.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Hi.o -MD -MP -MF $(DEPDIR)/cdo-Hi.Tpo -c -o cdo-Hi.o `test -f 'Hi.c' || echo '$(srcdir)/'`Hi.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Hi.Tpo $(DEPDIR)/cdo-Hi.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Hi.c' object='cdo-Hi.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Hi.o `test -f 'Hi.c' || echo '$(srcdir)/'`Hi.c
-
-cdo-Hi.obj: Hi.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Hi.obj -MD -MP -MF $(DEPDIR)/cdo-Hi.Tpo -c -o cdo-Hi.obj `if test -f 'Hi.c'; then $(CYGPATH_W) 'Hi.c'; else $(CYGPATH_W) '$(srcdir)/Hi.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Hi.Tpo $(DEPDIR)/cdo-Hi.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Hi.c' object='cdo-Hi.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Hi.obj `if test -f 'Hi.c'; then $(CYGPATH_W) 'Hi.c'; else $(CYGPATH_W) '$(srcdir)/Hi.c'; fi`
-
-cdo-Histogram.o: Histogram.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Histogram.o -MD -MP -MF $(DEPDIR)/cdo-Histogram.Tpo -c -o cdo-Histogram.o `test -f 'Histogram.c' || echo '$(srcdir)/'`Histogram.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Histogram.Tpo $(DEPDIR)/cdo-Histogram.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Histogram.c' object='cdo-Histogram.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Histogram.o `test -f 'Histogram.c' || echo '$(srcdir)/'`Histogram.c
-
-cdo-Histogram.obj: Histogram.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Histogram.obj -MD -MP -MF $(DEPDIR)/cdo-Histogram.Tpo -c -o cdo-Histogram.obj `if test -f 'Histogram.c'; then $(CYGPATH_W) 'Histogram.c'; else $(CYGPATH_W) '$(srcdir)/Histogram.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Histogram.Tpo $(DEPDIR)/cdo-Histogram.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Histogram.c' object='cdo-Histogram.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Histogram.obj `if test -f 'Histogram.c'; then $(CYGPATH_W) 'Histogram.c'; else $(CYGPATH_W) '$(srcdir)/Histogram.c'; fi`
-
-cdo-Importamsr.o: Importamsr.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importamsr.o -MD -MP -MF $(DEPDIR)/cdo-Importamsr.Tpo -c -o cdo-Importamsr.o `test -f 'Importamsr.c' || echo '$(srcdir)/'`Importamsr.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importamsr.Tpo $(DEPDIR)/cdo-Importamsr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importamsr.c' object='cdo-Importamsr.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importamsr.o `test -f 'Importamsr.c' || echo '$(srcdir)/'`Importamsr.c
-
-cdo-Importamsr.obj: Importamsr.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importamsr.obj -MD -MP -MF $(DEPDIR)/cdo-Importamsr.Tpo -c -o cdo-Importamsr.obj `if test -f 'Importamsr.c'; then $(CYGPATH_W) 'Importamsr.c'; else $(CYGPATH_W) '$(srcdir)/Importamsr.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importamsr.Tpo $(DEPDIR)/cdo-Importamsr.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importamsr.c' object='cdo-Importamsr.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importamsr.obj `if test -f 'Importamsr.c'; then $(CYGPATH_W) 'Importamsr.c'; else $(CYGPATH_W) '$(srcdir)/Importamsr.c'; fi`
-
-cdo-Importbinary.o: Importbinary.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importbinary.o -MD -MP -MF $(DEPDIR)/cdo-Importbinary.Tpo -c -o cdo-Importbinary.o `test -f 'Importbinary.c' || echo '$(srcdir)/'`Importbinary.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importbinary.Tpo $(DEPDIR)/cdo-Importbinary.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importbinary.c' object='cdo-Importbinary.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importbinary.o `test -f 'Importbinary.c' || echo '$(srcdir)/'`Importbinary.c
-
-cdo-Importbinary.obj: Importbinary.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importbinary.obj -MD -MP -MF $(DEPDIR)/cdo-Importbinary.Tpo -c -o cdo-Importbinary.obj `if test -f 'Importbinary.c'; then $(CYGPATH_W) 'Importbinary.c'; else $(CYGPATH_W) '$(srcdir)/Importbinary.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importbinary.Tpo $(DEPDIR)/cdo-Importbinary.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importbinary.c' object='cdo-Importbinary.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importbinary.obj `if test -f 'Importbinary.c'; then $(CYGPATH_W) 'Importbinary.c'; else $(CYGPATH_W) '$(srcdir)/Importbinary.c'; fi`
-
-cdo-Importcmsaf.o: Importcmsaf.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importcmsaf.o -MD -MP -MF $(DEPDIR)/cdo-Importcmsaf.Tpo -c -o cdo-Importcmsaf.o `test -f 'Importcmsaf.c' || echo '$(srcdir)/'`Importcmsaf.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importcmsaf.Tpo $(DEPDIR)/cdo-Importcmsaf.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importcmsaf.c' object='cdo-Importcmsaf.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importcmsaf.o `test -f 'Importcmsaf.c' || echo '$(srcdir)/'`Importcmsaf.c
-
-cdo-Importcmsaf.obj: Importcmsaf.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importcmsaf.obj -MD -MP -MF $(DEPDIR)/cdo-Importcmsaf.Tpo -c -o cdo-Importcmsaf.obj `if test -f 'Importcmsaf.c'; then $(CYGPATH_W) 'Importcmsaf.c'; else $(CYGPATH_W) '$(srcdir)/Importcmsaf.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importcmsaf.Tpo $(DEPDIR)/cdo-Importcmsaf.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importcmsaf.c' object='cdo-Importcmsaf.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importcmsaf.obj `if test -f 'Importcmsaf.c'; then $(CYGPATH_W) 'Importcmsaf.c'; else $(CYGPATH_W) '$(srcdir)/Importcmsaf.c'; fi`
-
-cdo-Importobs.o: Importobs.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importobs.o -MD -MP -MF $(DEPDIR)/cdo-Importobs.Tpo -c -o cdo-Importobs.o `test -f 'Importobs.c' || echo '$(srcdir)/'`Importobs.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importobs.Tpo $(DEPDIR)/cdo-Importobs.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importobs.c' object='cdo-Importobs.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importobs.o `test -f 'Importobs.c' || echo '$(srcdir)/'`Importobs.c
-
-cdo-Importobs.obj: Importobs.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Importobs.obj -MD -MP -MF $(DEPDIR)/cdo-Importobs.Tpo -c -o cdo-Importobs.obj `if test -f 'Importobs.c'; then $(CYGPATH_W) 'Importobs.c'; else $(CYGPATH_W) '$(srcdir)/Importobs.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importobs.Tpo $(DEPDIR)/cdo-Importobs.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Importobs.c' object='cdo-Importobs.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Importobs.obj `if test -f 'Importobs.c'; then $(CYGPATH_W) 'Importobs.c'; else $(CYGPATH_W) '$(srcdir)/Importobs.c'; fi`
-
-cdo-Info.o: Info.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Info.o -MD -MP -MF $(DEPDIR)/cdo-Info.Tpo -c -o cdo-Info.o `test -f 'Info.c' || echo '$(srcdir)/'`Info.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Info.Tpo $(DEPDIR)/cdo-Info.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Info.c' object='cdo-Info.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Info.o `test -f 'Info.c' || echo '$(srcdir)/'`Info.c
-
-cdo-Info.obj: Info.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Info.obj -MD -MP -MF $(DEPDIR)/cdo-Info.Tpo -c -o cdo-Info.obj `if test -f 'Info.c'; then $(CYGPATH_W) 'Info.c'; else $(CYGPATH_W) '$(srcdir)/Info.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Info.Tpo $(DEPDIR)/cdo-Info.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Info.c' object='cdo-Info.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Info.obj `if test -f 'Info.c'; then $(CYGPATH_W) 'Info.c'; else $(CYGPATH_W) '$(srcdir)/Info.c'; fi`
-
-cdo-Input.o: Input.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Input.o -MD -MP -MF $(DEPDIR)/cdo-Input.Tpo -c -o cdo-Input.o `test -f 'Input.c' || echo '$(srcdir)/'`Input.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Input.Tpo $(DEPDIR)/cdo-Input.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Input.c' object='cdo-Input.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Input.o `test -f 'Input.c' || echo '$(srcdir)/'`Input.c
-
-cdo-Input.obj: Input.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Input.obj -MD -MP -MF $(DEPDIR)/cdo-Input.Tpo -c -o cdo-Input.obj `if test -f 'Input.c'; then $(CYGPATH_W) 'Input.c'; else $(CYGPATH_W) '$(srcdir)/Input.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Input.Tpo $(DEPDIR)/cdo-Input.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Input.c' object='cdo-Input.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Input.obj `if test -f 'Input.c'; then $(CYGPATH_W) 'Input.c'; else $(CYGPATH_W) '$(srcdir)/Input.c'; fi`
-
-cdo-Intgrid.o: Intgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intgrid.o -MD -MP -MF $(DEPDIR)/cdo-Intgrid.Tpo -c -o cdo-Intgrid.o `test -f 'Intgrid.c' || echo '$(srcdir)/'`Intgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgrid.Tpo $(DEPDIR)/cdo-Intgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intgrid.c' object='cdo-Intgrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intgrid.o `test -f 'Intgrid.c' || echo '$(srcdir)/'`Intgrid.c
-
-cdo-Intgrid.obj: Intgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Intgrid.Tpo -c -o cdo-Intgrid.obj `if test -f 'Intgrid.c'; then $(CYGPATH_W) 'Intgrid.c'; else $(CYGPATH_W) '$(srcdir)/Intgrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgrid.Tpo $(DEPDIR)/cdo-Intgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intgrid.c' object='cdo-Intgrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intgrid.obj `if test -f 'Intgrid.c'; then $(CYGPATH_W) 'Intgrid.c'; else $(CYGPATH_W) '$(srcdir)/Intgrid.c'; fi`
-
-cdo-Intgridtraj.o: Intgridtraj.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intgridtraj.o -MD -MP -MF $(DEPDIR)/cdo-Intgridtraj.Tpo -c -o cdo-Intgridtraj.o `test -f 'Intgridtraj.c' || echo '$(srcdir)/'`Intgridtraj.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgridtraj.Tpo $(DEPDIR)/cdo-Intgridtraj.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intgridtraj.c' object='cdo-Intgridtraj.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intgridtraj.o `test -f 'Intgridtraj.c' || echo '$(srcdir)/'`Intgridtraj.c
-
-cdo-Intgridtraj.obj: Intgridtraj.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intgridtraj.obj -MD -MP -MF $(DEPDIR)/cdo-Intgridtraj.Tpo -c -o cdo-Intgridtraj.obj `if test -f 'Intgridtraj.c'; then $(CYGPATH_W) 'Intgridtraj.c'; else $(CYGPATH_W) '$(srcdir)/Intgridtraj.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgridtraj.Tpo $(DEPDIR)/cdo-Intgridtraj.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intgridtraj.c' object='cdo-Intgridtraj.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intgridtraj.obj `if test -f 'Intgridtraj.c'; then $(CYGPATH_W) 'Intgridtraj.c'; else $(CYGPATH_W) '$(srcdir)/Intgridtraj.c'; fi`
-
-cdo-Intlevel.o: Intlevel.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intlevel.o -MD -MP -MF $(DEPDIR)/cdo-Intlevel.Tpo -c -o cdo-Intlevel.o `test -f 'Intlevel.c' || echo '$(srcdir)/'`Intlevel.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel.Tpo $(DEPDIR)/cdo-Intlevel.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intlevel.c' object='cdo-Intlevel.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intlevel.o `test -f 'Intlevel.c' || echo '$(srcdir)/'`Intlevel.c
-
-cdo-Intlevel.obj: Intlevel.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intlevel.obj -MD -MP -MF $(DEPDIR)/cdo-Intlevel.Tpo -c -o cdo-Intlevel.obj `if test -f 'Intlevel.c'; then $(CYGPATH_W) 'Intlevel.c'; else $(CYGPATH_W) '$(srcdir)/Intlevel.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel.Tpo $(DEPDIR)/cdo-Intlevel.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intlevel.c' object='cdo-Intlevel.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intlevel.obj `if test -f 'Intlevel.c'; then $(CYGPATH_W) 'Intlevel.c'; else $(CYGPATH_W) '$(srcdir)/Intlevel.c'; fi`
-
-cdo-Intlevel3d.o: Intlevel3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intlevel3d.o -MD -MP -MF $(DEPDIR)/cdo-Intlevel3d.Tpo -c -o cdo-Intlevel3d.o `test -f 'Intlevel3d.c' || echo '$(srcdir)/'`Intlevel3d.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel3d.Tpo $(DEPDIR)/cdo-Intlevel3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intlevel3d.c' object='cdo-Intlevel3d.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intlevel3d.o `test -f 'Intlevel3d.c' || echo '$(srcdir)/'`Intlevel3d.c
-
-cdo-Intlevel3d.obj: Intlevel3d.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intlevel3d.obj -MD -MP -MF $(DEPDIR)/cdo-Intlevel3d.Tpo -c -o cdo-Intlevel3d.obj `if test -f 'Intlevel3d.c'; then $(CYGPATH_W) 'Intlevel3d.c'; else $(CYGPATH_W) '$(srcdir)/Intlevel3d.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel3d.Tpo $(DEPDIR)/cdo-Intlevel3d.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intlevel3d.c' object='cdo-Intlevel3d.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intlevel3d.obj `if test -f 'Intlevel3d.c'; then $(CYGPATH_W) 'Intlevel3d.c'; else $(CYGPATH_W) '$(srcdir)/Intlevel3d.c'; fi`
-
-cdo-Intntime.o: Intntime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intntime.o -MD -MP -MF $(DEPDIR)/cdo-Intntime.Tpo -c -o cdo-Intntime.o `test -f 'Intntime.c' || echo '$(srcdir)/'`Intntime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intntime.Tpo $(DEPDIR)/cdo-Intntime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intntime.c' object='cdo-Intntime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intntime.o `test -f 'Intntime.c' || echo '$(srcdir)/'`Intntime.c
-
-cdo-Intntime.obj: Intntime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intntime.obj -MD -MP -MF $(DEPDIR)/cdo-Intntime.Tpo -c -o cdo-Intntime.obj `if test -f 'Intntime.c'; then $(CYGPATH_W) 'Intntime.c'; else $(CYGPATH_W) '$(srcdir)/Intntime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intntime.Tpo $(DEPDIR)/cdo-Intntime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intntime.c' object='cdo-Intntime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intntime.obj `if test -f 'Intntime.c'; then $(CYGPATH_W) 'Intntime.c'; else $(CYGPATH_W) '$(srcdir)/Intntime.c'; fi`
-
-cdo-Inttime.o: Inttime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Inttime.o -MD -MP -MF $(DEPDIR)/cdo-Inttime.Tpo -c -o cdo-Inttime.o `test -f 'Inttime.c' || echo '$(srcdir)/'`Inttime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Inttime.Tpo $(DEPDIR)/cdo-Inttime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Inttime.c' object='cdo-Inttime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Inttime.o `test -f 'Inttime.c' || echo '$(srcdir)/'`Inttime.c
-
-cdo-Inttime.obj: Inttime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Inttime.obj -MD -MP -MF $(DEPDIR)/cdo-Inttime.Tpo -c -o cdo-Inttime.obj `if test -f 'Inttime.c'; then $(CYGPATH_W) 'Inttime.c'; else $(CYGPATH_W) '$(srcdir)/Inttime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Inttime.Tpo $(DEPDIR)/cdo-Inttime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Inttime.c' object='cdo-Inttime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Inttime.obj `if test -f 'Inttime.c'; then $(CYGPATH_W) 'Inttime.c'; else $(CYGPATH_W) '$(srcdir)/Inttime.c'; fi`
-
-cdo-Intyear.o: Intyear.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intyear.o -MD -MP -MF $(DEPDIR)/cdo-Intyear.Tpo -c -o cdo-Intyear.o `test -f 'Intyear.c' || echo '$(srcdir)/'`Intyear.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intyear.Tpo $(DEPDIR)/cdo-Intyear.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intyear.c' object='cdo-Intyear.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intyear.o `test -f 'Intyear.c' || echo '$(srcdir)/'`Intyear.c
-
-cdo-Intyear.obj: Intyear.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Intyear.obj -MD -MP -MF $(DEPDIR)/cdo-Intyear.Tpo -c -o cdo-Intyear.obj `if test -f 'Intyear.c'; then $(CYGPATH_W) 'Intyear.c'; else $(CYGPATH_W) '$(srcdir)/Intyear.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intyear.Tpo $(DEPDIR)/cdo-Intyear.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Intyear.c' object='cdo-Intyear.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Intyear.obj `if test -f 'Intyear.c'; then $(CYGPATH_W) 'Intyear.c'; else $(CYGPATH_W) '$(srcdir)/Intyear.c'; fi`
-
-cdo-Invert.o: Invert.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Invert.o -MD -MP -MF $(DEPDIR)/cdo-Invert.Tpo -c -o cdo-Invert.o `test -f 'Invert.c' || echo '$(srcdir)/'`Invert.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invert.Tpo $(DEPDIR)/cdo-Invert.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Invert.c' object='cdo-Invert.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Invert.o `test -f 'Invert.c' || echo '$(srcdir)/'`Invert.c
-
-cdo-Invert.obj: Invert.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Invert.obj -MD -MP -MF $(DEPDIR)/cdo-Invert.Tpo -c -o cdo-Invert.obj `if test -f 'Invert.c'; then $(CYGPATH_W) 'Invert.c'; else $(CYGPATH_W) '$(srcdir)/Invert.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invert.Tpo $(DEPDIR)/cdo-Invert.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Invert.c' object='cdo-Invert.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Invert.obj `if test -f 'Invert.c'; then $(CYGPATH_W) 'Invert.c'; else $(CYGPATH_W) '$(srcdir)/Invert.c'; fi`
-
-cdo-Invertlev.o: Invertlev.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Invertlev.o -MD -MP -MF $(DEPDIR)/cdo-Invertlev.Tpo -c -o cdo-Invertlev.o `test -f 'Invertlev.c' || echo '$(srcdir)/'`Invertlev.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invertlev.Tpo $(DEPDIR)/cdo-Invertlev.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Invertlev.c' object='cdo-Invertlev.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Invertlev.o `test -f 'Invertlev.c' || echo '$(srcdir)/'`Invertlev.c
-
-cdo-Invertlev.obj: Invertlev.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Invertlev.obj -MD -MP -MF $(DEPDIR)/cdo-Invertlev.Tpo -c -o cdo-Invertlev.obj `if test -f 'Invertlev.c'; then $(CYGPATH_W) 'Invertlev.c'; else $(CYGPATH_W) '$(srcdir)/Invertlev.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invertlev.Tpo $(DEPDIR)/cdo-Invertlev.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Invertlev.c' object='cdo-Invertlev.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Invertlev.obj `if test -f 'Invertlev.c'; then $(CYGPATH_W) 'Invertlev.c'; else $(CYGPATH_W) '$(srcdir)/Invertlev.c'; fi`
-
-cdo-Isosurface.o: Isosurface.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Isosurface.o -MD -MP -MF $(DEPDIR)/cdo-Isosurface.Tpo -c -o cdo-Isosurface.o `test -f 'Isosurface.c' || echo '$(srcdir)/'`Isosurface.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Isosurface.Tpo $(DEPDIR)/cdo-Isosurface.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Isosurface.c' object='cdo-Isosurface.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Isosurface.o `test -f 'Isosurface.c' || echo '$(srcdir)/'`Isosurface.c
-
-cdo-Isosurface.obj: Isosurface.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Isosurface.obj -MD -MP -MF $(DEPDIR)/cdo-Isosurface.Tpo -c -o cdo-Isosurface.obj `if test -f 'Isosurface.c'; then $(CYGPATH_W) 'Isosurface.c'; else $(CYGPATH_W) '$(srcdir)/Isosurface.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Isosurface.Tpo $(DEPDIR)/cdo-Isosurface.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Isosurface.c' object='cdo-Isosurface.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Isosurface.obj `if test -f 'Isosurface.c'; then $(CYGPATH_W) 'Isosurface.c'; else $(CYGPATH_W) '$(srcdir)/Isosurface.c'; fi`
-
-cdo-Log.o: Log.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Log.o -MD -MP -MF $(DEPDIR)/cdo-Log.Tpo -c -o cdo-Log.o `test -f 'Log.c' || echo '$(srcdir)/'`Log.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Log.Tpo $(DEPDIR)/cdo-Log.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Log.c' object='cdo-Log.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Log.o `test -f 'Log.c' || echo '$(srcdir)/'`Log.c
-
-cdo-Log.obj: Log.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Log.obj -MD -MP -MF $(DEPDIR)/cdo-Log.Tpo -c -o cdo-Log.obj `if test -f 'Log.c'; then $(CYGPATH_W) 'Log.c'; else $(CYGPATH_W) '$(srcdir)/Log.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Log.Tpo $(DEPDIR)/cdo-Log.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Log.c' object='cdo-Log.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Log.obj `if test -f 'Log.c'; then $(CYGPATH_W) 'Log.c'; else $(CYGPATH_W) '$(srcdir)/Log.c'; fi`
-
-cdo-MapReduce.o: MapReduce.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-MapReduce.o -MD -MP -MF $(DEPDIR)/cdo-MapReduce.Tpo -c -o cdo-MapReduce.o `test -f 'MapReduce.c' || echo '$(srcdir)/'`MapReduce.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-MapReduce.Tpo $(DEPDIR)/cdo-MapReduce.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='MapReduce.c' object='cdo-MapReduce.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-MapReduce.o `test -f 'MapReduce.c' || echo '$(srcdir)/'`MapReduce.c
-
-cdo-MapReduce.obj: MapReduce.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-MapReduce.obj -MD -MP -MF $(DEPDIR)/cdo-MapReduce.Tpo -c -o cdo-MapReduce.obj `if test -f 'MapReduce.c'; then $(CYGPATH_W) 'MapReduce.c'; else $(CYGPATH_W) '$(srcdir)/MapReduce.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-MapReduce.Tpo $(DEPDIR)/cdo-MapReduce.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='MapReduce.c' object='cdo-MapReduce.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-MapReduce.obj `if test -f 'MapReduce.c'; then $(CYGPATH_W) 'MapReduce.c'; else $(CYGPATH_W) '$(srcdir)/MapReduce.c'; fi`
-
-cdo-Maskbox.o: Maskbox.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Maskbox.o -MD -MP -MF $(DEPDIR)/cdo-Maskbox.Tpo -c -o cdo-Maskbox.o `test -f 'Maskbox.c' || echo '$(srcdir)/'`Maskbox.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maskbox.Tpo $(DEPDIR)/cdo-Maskbox.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Maskbox.c' object='cdo-Maskbox.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Maskbox.o `test -f 'Maskbox.c' || echo '$(srcdir)/'`Maskbox.c
-
-cdo-Maskbox.obj: Maskbox.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Maskbox.obj -MD -MP -MF $(DEPDIR)/cdo-Maskbox.Tpo -c -o cdo-Maskbox.obj `if test -f 'Maskbox.c'; then $(CYGPATH_W) 'Maskbox.c'; else $(CYGPATH_W) '$(srcdir)/Maskbox.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maskbox.Tpo $(DEPDIR)/cdo-Maskbox.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Maskbox.c' object='cdo-Maskbox.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Maskbox.obj `if test -f 'Maskbox.c'; then $(CYGPATH_W) 'Maskbox.c'; else $(CYGPATH_W) '$(srcdir)/Maskbox.c'; fi`
-
-cdo-Mastrfu.o: Mastrfu.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mastrfu.o -MD -MP -MF $(DEPDIR)/cdo-Mastrfu.Tpo -c -o cdo-Mastrfu.o `test -f 'Mastrfu.c' || echo '$(srcdir)/'`Mastrfu.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mastrfu.Tpo $(DEPDIR)/cdo-Mastrfu.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mastrfu.c' object='cdo-Mastrfu.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mastrfu.o `test -f 'Mastrfu.c' || echo '$(srcdir)/'`Mastrfu.c
-
-cdo-Mastrfu.obj: Mastrfu.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mastrfu.obj -MD -MP -MF $(DEPDIR)/cdo-Mastrfu.Tpo -c -o cdo-Mastrfu.obj `if test -f 'Mastrfu.c'; then $(CYGPATH_W) 'Mastrfu.c'; else $(CYGPATH_W) '$(srcdir)/Mastrfu.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mastrfu.Tpo $(DEPDIR)/cdo-Mastrfu.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mastrfu.c' object='cdo-Mastrfu.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mastrfu.obj `if test -f 'Mastrfu.c'; then $(CYGPATH_W) 'Mastrfu.c'; else $(CYGPATH_W) '$(srcdir)/Mastrfu.c'; fi`
-
-cdo-Math.o: Math.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Math.o -MD -MP -MF $(DEPDIR)/cdo-Math.Tpo -c -o cdo-Math.o `test -f 'Math.c' || echo '$(srcdir)/'`Math.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Math.Tpo $(DEPDIR)/cdo-Math.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Math.c' object='cdo-Math.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Math.o `test -f 'Math.c' || echo '$(srcdir)/'`Math.c
-
-cdo-Math.obj: Math.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Math.obj -MD -MP -MF $(DEPDIR)/cdo-Math.Tpo -c -o cdo-Math.obj `if test -f 'Math.c'; then $(CYGPATH_W) 'Math.c'; else $(CYGPATH_W) '$(srcdir)/Math.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Math.Tpo $(DEPDIR)/cdo-Math.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Math.c' object='cdo-Math.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Math.obj `if test -f 'Math.c'; then $(CYGPATH_W) 'Math.c'; else $(CYGPATH_W) '$(srcdir)/Math.c'; fi`
-
-cdo-Merge.o: Merge.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Merge.o -MD -MP -MF $(DEPDIR)/cdo-Merge.Tpo -c -o cdo-Merge.o `test -f 'Merge.c' || echo '$(srcdir)/'`Merge.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merge.Tpo $(DEPDIR)/cdo-Merge.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Merge.c' object='cdo-Merge.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Merge.o `test -f 'Merge.c' || echo '$(srcdir)/'`Merge.c
-
-cdo-Merge.obj: Merge.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Merge.obj -MD -MP -MF $(DEPDIR)/cdo-Merge.Tpo -c -o cdo-Merge.obj `if test -f 'Merge.c'; then $(CYGPATH_W) 'Merge.c'; else $(CYGPATH_W) '$(srcdir)/Merge.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merge.Tpo $(DEPDIR)/cdo-Merge.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Merge.c' object='cdo-Merge.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Merge.obj `if test -f 'Merge.c'; then $(CYGPATH_W) 'Merge.c'; else $(CYGPATH_W) '$(srcdir)/Merge.c'; fi`
-
-cdo-Mergegrid.o: Mergegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mergegrid.o -MD -MP -MF $(DEPDIR)/cdo-Mergegrid.Tpo -c -o cdo-Mergegrid.o `test -f 'Mergegrid.c' || echo '$(srcdir)/'`Mergegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergegrid.Tpo $(DEPDIR)/cdo-Mergegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mergegrid.c' object='cdo-Mergegrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mergegrid.o `test -f 'Mergegrid.c' || echo '$(srcdir)/'`Mergegrid.c
-
-cdo-Mergegrid.obj: Mergegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mergegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Mergegrid.Tpo -c -o cdo-Mergegrid.obj `if test -f 'Mergegrid.c'; then $(CYGPATH_W) 'Mergegrid.c'; else $(CYGPATH_W) '$(srcdir)/Mergegrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergegrid.Tpo $(DEPDIR)/cdo-Mergegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mergegrid.c' object='cdo-Mergegrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mergegrid.obj `if test -f 'Mergegrid.c'; then $(CYGPATH_W) 'Mergegrid.c'; else $(CYGPATH_W) '$(srcdir)/Mergegrid.c'; fi`
-
-cdo-Mergetime.o: Mergetime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mergetime.o -MD -MP -MF $(DEPDIR)/cdo-Mergetime.Tpo -c -o cdo-Mergetime.o `test -f 'Mergetime.c' || echo '$(srcdir)/'`Mergetime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergetime.Tpo $(DEPDIR)/cdo-Mergetime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mergetime.c' object='cdo-Mergetime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mergetime.o `test -f 'Mergetime.c' || echo '$(srcdir)/'`Mergetime.c
-
-cdo-Mergetime.obj: Mergetime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mergetime.obj -MD -MP -MF $(DEPDIR)/cdo-Mergetime.Tpo -c -o cdo-Mergetime.obj `if test -f 'Mergetime.c'; then $(CYGPATH_W) 'Mergetime.c'; else $(CYGPATH_W) '$(srcdir)/Mergetime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergetime.Tpo $(DEPDIR)/cdo-Mergetime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mergetime.c' object='cdo-Mergetime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mergetime.obj `if test -f 'Mergetime.c'; then $(CYGPATH_W) 'Mergetime.c'; else $(CYGPATH_W) '$(srcdir)/Mergetime.c'; fi`
-
-cdo-Merstat.o: Merstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Merstat.o -MD -MP -MF $(DEPDIR)/cdo-Merstat.Tpo -c -o cdo-Merstat.o `test -f 'Merstat.c' || echo '$(srcdir)/'`Merstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merstat.Tpo $(DEPDIR)/cdo-Merstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Merstat.c' object='cdo-Merstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Merstat.o `test -f 'Merstat.c' || echo '$(srcdir)/'`Merstat.c
-
-cdo-Merstat.obj: Merstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Merstat.obj -MD -MP -MF $(DEPDIR)/cdo-Merstat.Tpo -c -o cdo-Merstat.obj `if test -f 'Merstat.c'; then $(CYGPATH_W) 'Merstat.c'; else $(CYGPATH_W) '$(srcdir)/Merstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merstat.Tpo $(DEPDIR)/cdo-Merstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Merstat.c' object='cdo-Merstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Merstat.obj `if test -f 'Merstat.c'; then $(CYGPATH_W) 'Merstat.c'; else $(CYGPATH_W) '$(srcdir)/Merstat.c'; fi`
-
-cdo-Monarith.o: Monarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Monarith.o -MD -MP -MF $(DEPDIR)/cdo-Monarith.Tpo -c -o cdo-Monarith.o `test -f 'Monarith.c' || echo '$(srcdir)/'`Monarith.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Monarith.Tpo $(DEPDIR)/cdo-Monarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Monarith.c' object='cdo-Monarith.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Monarith.o `test -f 'Monarith.c' || echo '$(srcdir)/'`Monarith.c
-
-cdo-Monarith.obj: Monarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Monarith.obj -MD -MP -MF $(DEPDIR)/cdo-Monarith.Tpo -c -o cdo-Monarith.obj `if test -f 'Monarith.c'; then $(CYGPATH_W) 'Monarith.c'; else $(CYGPATH_W) '$(srcdir)/Monarith.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Monarith.Tpo $(DEPDIR)/cdo-Monarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Monarith.c' object='cdo-Monarith.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Monarith.obj `if test -f 'Monarith.c'; then $(CYGPATH_W) 'Monarith.c'; else $(CYGPATH_W) '$(srcdir)/Monarith.c'; fi`
-
-cdo-Mrotuv.o: Mrotuv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mrotuv.o -MD -MP -MF $(DEPDIR)/cdo-Mrotuv.Tpo -c -o cdo-Mrotuv.o `test -f 'Mrotuv.c' || echo '$(srcdir)/'`Mrotuv.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuv.Tpo $(DEPDIR)/cdo-Mrotuv.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mrotuv.c' object='cdo-Mrotuv.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mrotuv.o `test -f 'Mrotuv.c' || echo '$(srcdir)/'`Mrotuv.c
-
-cdo-Mrotuv.obj: Mrotuv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mrotuv.obj -MD -MP -MF $(DEPDIR)/cdo-Mrotuv.Tpo -c -o cdo-Mrotuv.obj `if test -f 'Mrotuv.c'; then $(CYGPATH_W) 'Mrotuv.c'; else $(CYGPATH_W) '$(srcdir)/Mrotuv.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuv.Tpo $(DEPDIR)/cdo-Mrotuv.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mrotuv.c' object='cdo-Mrotuv.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mrotuv.obj `if test -f 'Mrotuv.c'; then $(CYGPATH_W) 'Mrotuv.c'; else $(CYGPATH_W) '$(srcdir)/Mrotuv.c'; fi`
-
-cdo-Mrotuvb.o: Mrotuvb.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mrotuvb.o -MD -MP -MF $(DEPDIR)/cdo-Mrotuvb.Tpo -c -o cdo-Mrotuvb.o `test -f 'Mrotuvb.c' || echo '$(srcdir)/'`Mrotuvb.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuvb.Tpo $(DEPDIR)/cdo-Mrotuvb.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mrotuvb.c' object='cdo-Mrotuvb.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mrotuvb.o `test -f 'Mrotuvb.c' || echo '$(srcdir)/'`Mrotuvb.c
-
-cdo-Mrotuvb.obj: Mrotuvb.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Mrotuvb.obj -MD -MP -MF $(DEPDIR)/cdo-Mrotuvb.Tpo -c -o cdo-Mrotuvb.obj `if test -f 'Mrotuvb.c'; then $(CYGPATH_W) 'Mrotuvb.c'; else $(CYGPATH_W) '$(srcdir)/Mrotuvb.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuvb.Tpo $(DEPDIR)/cdo-Mrotuvb.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Mrotuvb.c' object='cdo-Mrotuvb.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Mrotuvb.obj `if test -f 'Mrotuvb.c'; then $(CYGPATH_W) 'Mrotuvb.c'; else $(CYGPATH_W) '$(srcdir)/Mrotuvb.c'; fi`
-
-cdo-Ninfo.o: Ninfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ninfo.o -MD -MP -MF $(DEPDIR)/cdo-Ninfo.Tpo -c -o cdo-Ninfo.o `test -f 'Ninfo.c' || echo '$(srcdir)/'`Ninfo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ninfo.Tpo $(DEPDIR)/cdo-Ninfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ninfo.c' object='cdo-Ninfo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ninfo.o `test -f 'Ninfo.c' || echo '$(srcdir)/'`Ninfo.c
-
-cdo-Ninfo.obj: Ninfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ninfo.obj -MD -MP -MF $(DEPDIR)/cdo-Ninfo.Tpo -c -o cdo-Ninfo.obj `if test -f 'Ninfo.c'; then $(CYGPATH_W) 'Ninfo.c'; else $(CYGPATH_W) '$(srcdir)/Ninfo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ninfo.Tpo $(DEPDIR)/cdo-Ninfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ninfo.c' object='cdo-Ninfo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ninfo.obj `if test -f 'Ninfo.c'; then $(CYGPATH_W) 'Ninfo.c'; else $(CYGPATH_W) '$(srcdir)/Ninfo.c'; fi`
-
-cdo-Nmldump.o: Nmldump.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Nmldump.o -MD -MP -MF $(DEPDIR)/cdo-Nmldump.Tpo -c -o cdo-Nmldump.o `test -f 'Nmldump.c' || echo '$(srcdir)/'`Nmldump.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Nmldump.Tpo $(DEPDIR)/cdo-Nmldump.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Nmldump.c' object='cdo-Nmldump.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Nmldump.o `test -f 'Nmldump.c' || echo '$(srcdir)/'`Nmldump.c
-
-cdo-Nmldump.obj: Nmldump.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Nmldump.obj -MD -MP -MF $(DEPDIR)/cdo-Nmldump.Tpo -c -o cdo-Nmldump.obj `if test -f 'Nmldump.c'; then $(CYGPATH_W) 'Nmldump.c'; else $(CYGPATH_W) '$(srcdir)/Nmldump.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Nmldump.Tpo $(DEPDIR)/cdo-Nmldump.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Nmldump.c' object='cdo-Nmldump.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Nmldump.obj `if test -f 'Nmldump.c'; then $(CYGPATH_W) 'Nmldump.c'; else $(CYGPATH_W) '$(srcdir)/Nmldump.c'; fi`
-
-cdo-Output.o: Output.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Output.o -MD -MP -MF $(DEPDIR)/cdo-Output.Tpo -c -o cdo-Output.o `test -f 'Output.c' || echo '$(srcdir)/'`Output.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Output.Tpo $(DEPDIR)/cdo-Output.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Output.c' object='cdo-Output.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Output.o `test -f 'Output.c' || echo '$(srcdir)/'`Output.c
-
-cdo-Output.obj: Output.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Output.obj -MD -MP -MF $(DEPDIR)/cdo-Output.Tpo -c -o cdo-Output.obj `if test -f 'Output.c'; then $(CYGPATH_W) 'Output.c'; else $(CYGPATH_W) '$(srcdir)/Output.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Output.Tpo $(DEPDIR)/cdo-Output.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Output.c' object='cdo-Output.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Output.obj `if test -f 'Output.c'; then $(CYGPATH_W) 'Output.c'; else $(CYGPATH_W) '$(srcdir)/Output.c'; fi`
-
-cdo-Outputgmt.o: Outputgmt.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Outputgmt.o -MD -MP -MF $(DEPDIR)/cdo-Outputgmt.Tpo -c -o cdo-Outputgmt.o `test -f 'Outputgmt.c' || echo '$(srcdir)/'`Outputgmt.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Outputgmt.Tpo $(DEPDIR)/cdo-Outputgmt.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Outputgmt.c' object='cdo-Outputgmt.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Outputgmt.o `test -f 'Outputgmt.c' || echo '$(srcdir)/'`Outputgmt.c
-
-cdo-Outputgmt.obj: Outputgmt.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Outputgmt.obj -MD -MP -MF $(DEPDIR)/cdo-Outputgmt.Tpo -c -o cdo-Outputgmt.obj `if test -f 'Outputgmt.c'; then $(CYGPATH_W) 'Outputgmt.c'; else $(CYGPATH_W) '$(srcdir)/Outputgmt.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Outputgmt.Tpo $(DEPDIR)/cdo-Outputgmt.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Outputgmt.c' object='cdo-Outputgmt.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Outputgmt.obj `if test -f 'Outputgmt.c'; then $(CYGPATH_W) 'Outputgmt.c'; else $(CYGPATH_W) '$(srcdir)/Outputgmt.c'; fi`
-
-cdo-Pack.o: Pack.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pack.o -MD -MP -MF $(DEPDIR)/cdo-Pack.Tpo -c -o cdo-Pack.o `test -f 'Pack.c' || echo '$(srcdir)/'`Pack.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pack.Tpo $(DEPDIR)/cdo-Pack.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pack.c' object='cdo-Pack.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pack.o `test -f 'Pack.c' || echo '$(srcdir)/'`Pack.c
-
-cdo-Pack.obj: Pack.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pack.obj -MD -MP -MF $(DEPDIR)/cdo-Pack.Tpo -c -o cdo-Pack.obj `if test -f 'Pack.c'; then $(CYGPATH_W) 'Pack.c'; else $(CYGPATH_W) '$(srcdir)/Pack.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pack.Tpo $(DEPDIR)/cdo-Pack.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pack.c' object='cdo-Pack.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pack.obj `if test -f 'Pack.c'; then $(CYGPATH_W) 'Pack.c'; else $(CYGPATH_W) '$(srcdir)/Pack.c'; fi`
-
-cdo-Pardup.o: Pardup.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pardup.o -MD -MP -MF $(DEPDIR)/cdo-Pardup.Tpo -c -o cdo-Pardup.o `test -f 'Pardup.c' || echo '$(srcdir)/'`Pardup.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pardup.Tpo $(DEPDIR)/cdo-Pardup.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pardup.c' object='cdo-Pardup.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pardup.o `test -f 'Pardup.c' || echo '$(srcdir)/'`Pardup.c
-
-cdo-Pardup.obj: Pardup.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pardup.obj -MD -MP -MF $(DEPDIR)/cdo-Pardup.Tpo -c -o cdo-Pardup.obj `if test -f 'Pardup.c'; then $(CYGPATH_W) 'Pardup.c'; else $(CYGPATH_W) '$(srcdir)/Pardup.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pardup.Tpo $(DEPDIR)/cdo-Pardup.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pardup.c' object='cdo-Pardup.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pardup.obj `if test -f 'Pardup.c'; then $(CYGPATH_W) 'Pardup.c'; else $(CYGPATH_W) '$(srcdir)/Pardup.c'; fi`
-
-cdo-Pinfo.o: Pinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pinfo.o -MD -MP -MF $(DEPDIR)/cdo-Pinfo.Tpo -c -o cdo-Pinfo.o `test -f 'Pinfo.c' || echo '$(srcdir)/'`Pinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pinfo.Tpo $(DEPDIR)/cdo-Pinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pinfo.c' object='cdo-Pinfo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pinfo.o `test -f 'Pinfo.c' || echo '$(srcdir)/'`Pinfo.c
-
-cdo-Pinfo.obj: Pinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Pinfo.Tpo -c -o cdo-Pinfo.obj `if test -f 'Pinfo.c'; then $(CYGPATH_W) 'Pinfo.c'; else $(CYGPATH_W) '$(srcdir)/Pinfo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pinfo.Tpo $(DEPDIR)/cdo-Pinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pinfo.c' object='cdo-Pinfo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pinfo.obj `if test -f 'Pinfo.c'; then $(CYGPATH_W) 'Pinfo.c'; else $(CYGPATH_W) '$(srcdir)/Pinfo.c'; fi`
-
-cdo-Pressure.o: Pressure.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pressure.o -MD -MP -MF $(DEPDIR)/cdo-Pressure.Tpo -c -o cdo-Pressure.o `test -f 'Pressure.c' || echo '$(srcdir)/'`Pressure.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pressure.Tpo $(DEPDIR)/cdo-Pressure.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pressure.c' object='cdo-Pressure.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pressure.o `test -f 'Pressure.c' || echo '$(srcdir)/'`Pressure.c
-
-cdo-Pressure.obj: Pressure.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Pressure.obj -MD -MP -MF $(DEPDIR)/cdo-Pressure.Tpo -c -o cdo-Pressure.obj `if test -f 'Pressure.c'; then $(CYGPATH_W) 'Pressure.c'; else $(CYGPATH_W) '$(srcdir)/Pressure.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pressure.Tpo $(DEPDIR)/cdo-Pressure.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Pressure.c' object='cdo-Pressure.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Pressure.obj `if test -f 'Pressure.c'; then $(CYGPATH_W) 'Pressure.c'; else $(CYGPATH_W) '$(srcdir)/Pressure.c'; fi`
-
-cdo-Regres.o: Regres.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Regres.o -MD -MP -MF $(DEPDIR)/cdo-Regres.Tpo -c -o cdo-Regres.o `test -f 'Regres.c' || echo '$(srcdir)/'`Regres.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Regres.Tpo $(DEPDIR)/cdo-Regres.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Regres.c' object='cdo-Regres.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Regres.o `test -f 'Regres.c' || echo '$(srcdir)/'`Regres.c
-
-cdo-Regres.obj: Regres.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Regres.obj -MD -MP -MF $(DEPDIR)/cdo-Regres.Tpo -c -o cdo-Regres.obj `if test -f 'Regres.c'; then $(CYGPATH_W) 'Regres.c'; else $(CYGPATH_W) '$(srcdir)/Regres.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Regres.Tpo $(DEPDIR)/cdo-Regres.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Regres.c' object='cdo-Regres.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Regres.obj `if test -f 'Regres.c'; then $(CYGPATH_W) 'Regres.c'; else $(CYGPATH_W) '$(srcdir)/Regres.c'; fi`
-
-cdo-Remap.o: Remap.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Remap.o -MD -MP -MF $(DEPDIR)/cdo-Remap.Tpo -c -o cdo-Remap.o `test -f 'Remap.c' || echo '$(srcdir)/'`Remap.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remap.Tpo $(DEPDIR)/cdo-Remap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Remap.c' object='cdo-Remap.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Remap.o `test -f 'Remap.c' || echo '$(srcdir)/'`Remap.c
-
-cdo-Remap.obj: Remap.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Remap.obj -MD -MP -MF $(DEPDIR)/cdo-Remap.Tpo -c -o cdo-Remap.obj `if test -f 'Remap.c'; then $(CYGPATH_W) 'Remap.c'; else $(CYGPATH_W) '$(srcdir)/Remap.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remap.Tpo $(DEPDIR)/cdo-Remap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Remap.c' object='cdo-Remap.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Remap.obj `if test -f 'Remap.c'; then $(CYGPATH_W) 'Remap.c'; else $(CYGPATH_W) '$(srcdir)/Remap.c'; fi`
-
-cdo-Remapeta.o: Remapeta.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Remapeta.o -MD -MP -MF $(DEPDIR)/cdo-Remapeta.Tpo -c -o cdo-Remapeta.o `test -f 'Remapeta.c' || echo '$(srcdir)/'`Remapeta.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remapeta.Tpo $(DEPDIR)/cdo-Remapeta.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Remapeta.c' object='cdo-Remapeta.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Remapeta.o `test -f 'Remapeta.c' || echo '$(srcdir)/'`Remapeta.c
-
-cdo-Remapeta.obj: Remapeta.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Remapeta.obj -MD -MP -MF $(DEPDIR)/cdo-Remapeta.Tpo -c -o cdo-Remapeta.obj `if test -f 'Remapeta.c'; then $(CYGPATH_W) 'Remapeta.c'; else $(CYGPATH_W) '$(srcdir)/Remapeta.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remapeta.Tpo $(DEPDIR)/cdo-Remapeta.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Remapeta.c' object='cdo-Remapeta.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Remapeta.obj `if test -f 'Remapeta.c'; then $(CYGPATH_W) 'Remapeta.c'; else $(CYGPATH_W) '$(srcdir)/Remapeta.c'; fi`
-
-cdo-Replace.o: Replace.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Replace.o -MD -MP -MF $(DEPDIR)/cdo-Replace.Tpo -c -o cdo-Replace.o `test -f 'Replace.c' || echo '$(srcdir)/'`Replace.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replace.Tpo $(DEPDIR)/cdo-Replace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Replace.c' object='cdo-Replace.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Replace.o `test -f 'Replace.c' || echo '$(srcdir)/'`Replace.c
-
-cdo-Replace.obj: Replace.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Replace.obj -MD -MP -MF $(DEPDIR)/cdo-Replace.Tpo -c -o cdo-Replace.obj `if test -f 'Replace.c'; then $(CYGPATH_W) 'Replace.c'; else $(CYGPATH_W) '$(srcdir)/Replace.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replace.Tpo $(DEPDIR)/cdo-Replace.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Replace.c' object='cdo-Replace.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Replace.obj `if test -f 'Replace.c'; then $(CYGPATH_W) 'Replace.c'; else $(CYGPATH_W) '$(srcdir)/Replace.c'; fi`
-
-cdo-Replacevalues.o: Replacevalues.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Replacevalues.o -MD -MP -MF $(DEPDIR)/cdo-Replacevalues.Tpo -c -o cdo-Replacevalues.o `test -f 'Replacevalues.c' || echo '$(srcdir)/'`Replacevalues.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replacevalues.Tpo $(DEPDIR)/cdo-Replacevalues.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Replacevalues.c' object='cdo-Replacevalues.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Replacevalues.o `test -f 'Replacevalues.c' || echo '$(srcdir)/'`Replacevalues.c
-
-cdo-Replacevalues.obj: Replacevalues.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Replacevalues.obj -MD -MP -MF $(DEPDIR)/cdo-Replacevalues.Tpo -c -o cdo-Replacevalues.obj `if test -f 'Replacevalues.c'; then $(CYGPATH_W) 'Replacevalues.c'; else $(CYGPATH_W) '$(srcdir)/Replacevalues.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replacevalues.Tpo $(DEPDIR)/cdo-Replacevalues.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Replacevalues.c' object='cdo-Replacevalues.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Replacevalues.obj `if test -f 'Replacevalues.c'; then $(CYGPATH_W) 'Replacevalues.c'; else $(CYGPATH_W) '$(srcdir)/Replacevalues.c'; fi`
-
-cdo-Rhopot.o: Rhopot.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Rhopot.o -MD -MP -MF $(DEPDIR)/cdo-Rhopot.Tpo -c -o cdo-Rhopot.o `test -f 'Rhopot.c' || echo '$(srcdir)/'`Rhopot.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rhopot.Tpo $(DEPDIR)/cdo-Rhopot.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Rhopot.c' object='cdo-Rhopot.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Rhopot.o `test -f 'Rhopot.c' || echo '$(srcdir)/'`Rhopot.c
-
-cdo-Rhopot.obj: Rhopot.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Rhopot.obj -MD -MP -MF $(DEPDIR)/cdo-Rhopot.Tpo -c -o cdo-Rhopot.obj `if test -f 'Rhopot.c'; then $(CYGPATH_W) 'Rhopot.c'; else $(CYGPATH_W) '$(srcdir)/Rhopot.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rhopot.Tpo $(DEPDIR)/cdo-Rhopot.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Rhopot.c' object='cdo-Rhopot.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Rhopot.obj `if test -f 'Rhopot.c'; then $(CYGPATH_W) 'Rhopot.c'; else $(CYGPATH_W) '$(srcdir)/Rhopot.c'; fi`
-
-cdo-Rotuv.o: Rotuv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Rotuv.o -MD -MP -MF $(DEPDIR)/cdo-Rotuv.Tpo -c -o cdo-Rotuv.o `test -f 'Rotuv.c' || echo '$(srcdir)/'`Rotuv.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rotuv.Tpo $(DEPDIR)/cdo-Rotuv.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Rotuv.c' object='cdo-Rotuv.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Rotuv.o `test -f 'Rotuv.c' || echo '$(srcdir)/'`Rotuv.c
-
-cdo-Rotuv.obj: Rotuv.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Rotuv.obj -MD -MP -MF $(DEPDIR)/cdo-Rotuv.Tpo -c -o cdo-Rotuv.obj `if test -f 'Rotuv.c'; then $(CYGPATH_W) 'Rotuv.c'; else $(CYGPATH_W) '$(srcdir)/Rotuv.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rotuv.Tpo $(DEPDIR)/cdo-Rotuv.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Rotuv.c' object='cdo-Rotuv.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Rotuv.obj `if test -f 'Rotuv.c'; then $(CYGPATH_W) 'Rotuv.c'; else $(CYGPATH_W) '$(srcdir)/Rotuv.c'; fi`
-
-cdo-Runpctl.o: Runpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Runpctl.o -MD -MP -MF $(DEPDIR)/cdo-Runpctl.Tpo -c -o cdo-Runpctl.o `test -f 'Runpctl.c' || echo '$(srcdir)/'`Runpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runpctl.Tpo $(DEPDIR)/cdo-Runpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Runpctl.c' object='cdo-Runpctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Runpctl.o `test -f 'Runpctl.c' || echo '$(srcdir)/'`Runpctl.c
-
-cdo-Runpctl.obj: Runpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Runpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Runpctl.Tpo -c -o cdo-Runpctl.obj `if test -f 'Runpctl.c'; then $(CYGPATH_W) 'Runpctl.c'; else $(CYGPATH_W) '$(srcdir)/Runpctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runpctl.Tpo $(DEPDIR)/cdo-Runpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Runpctl.c' object='cdo-Runpctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Runpctl.obj `if test -f 'Runpctl.c'; then $(CYGPATH_W) 'Runpctl.c'; else $(CYGPATH_W) '$(srcdir)/Runpctl.c'; fi`
-
-cdo-Runstat.o: Runstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Runstat.o -MD -MP -MF $(DEPDIR)/cdo-Runstat.Tpo -c -o cdo-Runstat.o `test -f 'Runstat.c' || echo '$(srcdir)/'`Runstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runstat.Tpo $(DEPDIR)/cdo-Runstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Runstat.c' object='cdo-Runstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Runstat.o `test -f 'Runstat.c' || echo '$(srcdir)/'`Runstat.c
-
-cdo-Runstat.obj: Runstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Runstat.obj -MD -MP -MF $(DEPDIR)/cdo-Runstat.Tpo -c -o cdo-Runstat.obj `if test -f 'Runstat.c'; then $(CYGPATH_W) 'Runstat.c'; else $(CYGPATH_W) '$(srcdir)/Runstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runstat.Tpo $(DEPDIR)/cdo-Runstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Runstat.c' object='cdo-Runstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Runstat.obj `if test -f 'Runstat.c'; then $(CYGPATH_W) 'Runstat.c'; else $(CYGPATH_W) '$(srcdir)/Runstat.c'; fi`
-
-cdo-Samplegrid.o: Samplegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Samplegrid.o -MD -MP -MF $(DEPDIR)/cdo-Samplegrid.Tpo -c -o cdo-Samplegrid.o `test -f 'Samplegrid.c' || echo '$(srcdir)/'`Samplegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegrid.Tpo $(DEPDIR)/cdo-Samplegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Samplegrid.c' object='cdo-Samplegrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Samplegrid.o `test -f 'Samplegrid.c' || echo '$(srcdir)/'`Samplegrid.c
-
-cdo-Samplegrid.obj: Samplegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Samplegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Samplegrid.Tpo -c -o cdo-Samplegrid.obj `if test -f 'Samplegrid.c'; then $(CYGPATH_W) 'Samplegrid.c'; else $(CYGPATH_W) '$(srcdir)/Samplegrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegrid.Tpo $(DEPDIR)/cdo-Samplegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Samplegrid.c' object='cdo-Samplegrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Samplegrid.obj `if test -f 'Samplegrid.c'; then $(CYGPATH_W) 'Samplegrid.c'; else $(CYGPATH_W) '$(srcdir)/Samplegrid.c'; fi`
-
-cdo-Samplegridicon.o: Samplegridicon.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Samplegridicon.o -MD -MP -MF $(DEPDIR)/cdo-Samplegridicon.Tpo -c -o cdo-Samplegridicon.o `test -f 'Samplegridicon.c' || echo '$(srcdir)/'`Samplegridicon.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegridicon.Tpo $(DEPDIR)/cdo-Samplegridicon.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Samplegridicon.c' object='cdo-Samplegridicon.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Samplegridicon.o `test -f 'Samplegridicon.c' || echo '$(srcdir)/'`Samplegridicon.c
-
-cdo-Samplegridicon.obj: Samplegridicon.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Samplegridicon.obj -MD -MP -MF $(DEPDIR)/cdo-Samplegridicon.Tpo -c -o cdo-Samplegridicon.obj `if test -f 'Samplegridicon.c'; then $(CYGPATH_W) 'Samplegridicon.c'; else $(CYGPATH_W) '$(srcdir)/Samplegridicon.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegridicon.Tpo $(DEPDIR)/cdo-Samplegridicon.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Samplegridicon.c' object='cdo-Samplegridicon.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Samplegridicon.obj `if test -f 'Samplegridicon.c'; then $(CYGPATH_W) 'Samplegridicon.c'; else $(CYGPATH_W) '$(srcdir)/Samplegridicon.c'; fi`
-
-cdo-Seascount.o: Seascount.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seascount.o -MD -MP -MF $(DEPDIR)/cdo-Seascount.Tpo -c -o cdo-Seascount.o `test -f 'Seascount.c' || echo '$(srcdir)/'`Seascount.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seascount.Tpo $(DEPDIR)/cdo-Seascount.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seascount.c' object='cdo-Seascount.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seascount.o `test -f 'Seascount.c' || echo '$(srcdir)/'`Seascount.c
-
-cdo-Seascount.obj: Seascount.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seascount.obj -MD -MP -MF $(DEPDIR)/cdo-Seascount.Tpo -c -o cdo-Seascount.obj `if test -f 'Seascount.c'; then $(CYGPATH_W) 'Seascount.c'; else $(CYGPATH_W) '$(srcdir)/Seascount.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seascount.Tpo $(DEPDIR)/cdo-Seascount.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seascount.c' object='cdo-Seascount.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seascount.obj `if test -f 'Seascount.c'; then $(CYGPATH_W) 'Seascount.c'; else $(CYGPATH_W) '$(srcdir)/Seascount.c'; fi`
-
-cdo-Seaspctl.o: Seaspctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seaspctl.o -MD -MP -MF $(DEPDIR)/cdo-Seaspctl.Tpo -c -o cdo-Seaspctl.o `test -f 'Seaspctl.c' || echo '$(srcdir)/'`Seaspctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seaspctl.Tpo $(DEPDIR)/cdo-Seaspctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seaspctl.c' object='cdo-Seaspctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seaspctl.o `test -f 'Seaspctl.c' || echo '$(srcdir)/'`Seaspctl.c
-
-cdo-Seaspctl.obj: Seaspctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seaspctl.obj -MD -MP -MF $(DEPDIR)/cdo-Seaspctl.Tpo -c -o cdo-Seaspctl.obj `if test -f 'Seaspctl.c'; then $(CYGPATH_W) 'Seaspctl.c'; else $(CYGPATH_W) '$(srcdir)/Seaspctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seaspctl.Tpo $(DEPDIR)/cdo-Seaspctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seaspctl.c' object='cdo-Seaspctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seaspctl.obj `if test -f 'Seaspctl.c'; then $(CYGPATH_W) 'Seaspctl.c'; else $(CYGPATH_W) '$(srcdir)/Seaspctl.c'; fi`
-
-cdo-Seasstat.o: Seasstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seasstat.o -MD -MP -MF $(DEPDIR)/cdo-Seasstat.Tpo -c -o cdo-Seasstat.o `test -f 'Seasstat.c' || echo '$(srcdir)/'`Seasstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seasstat.Tpo $(DEPDIR)/cdo-Seasstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seasstat.c' object='cdo-Seasstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seasstat.o `test -f 'Seasstat.c' || echo '$(srcdir)/'`Seasstat.c
-
-cdo-Seasstat.obj: Seasstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seasstat.obj -MD -MP -MF $(DEPDIR)/cdo-Seasstat.Tpo -c -o cdo-Seasstat.obj `if test -f 'Seasstat.c'; then $(CYGPATH_W) 'Seasstat.c'; else $(CYGPATH_W) '$(srcdir)/Seasstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seasstat.Tpo $(DEPDIR)/cdo-Seasstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seasstat.c' object='cdo-Seasstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seasstat.obj `if test -f 'Seasstat.c'; then $(CYGPATH_W) 'Seasstat.c'; else $(CYGPATH_W) '$(srcdir)/Seasstat.c'; fi`
-
-cdo-Selbox.o: Selbox.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selbox.o -MD -MP -MF $(DEPDIR)/cdo-Selbox.Tpo -c -o cdo-Selbox.o `test -f 'Selbox.c' || echo '$(srcdir)/'`Selbox.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selbox.Tpo $(DEPDIR)/cdo-Selbox.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selbox.c' object='cdo-Selbox.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selbox.o `test -f 'Selbox.c' || echo '$(srcdir)/'`Selbox.c
-
-cdo-Selbox.obj: Selbox.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selbox.obj -MD -MP -MF $(DEPDIR)/cdo-Selbox.Tpo -c -o cdo-Selbox.obj `if test -f 'Selbox.c'; then $(CYGPATH_W) 'Selbox.c'; else $(CYGPATH_W) '$(srcdir)/Selbox.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selbox.Tpo $(DEPDIR)/cdo-Selbox.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selbox.c' object='cdo-Selbox.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selbox.obj `if test -f 'Selbox.c'; then $(CYGPATH_W) 'Selbox.c'; else $(CYGPATH_W) '$(srcdir)/Selbox.c'; fi`
-
-cdo-Selgridcell.o: Selgridcell.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selgridcell.o -MD -MP -MF $(DEPDIR)/cdo-Selgridcell.Tpo -c -o cdo-Selgridcell.o `test -f 'Selgridcell.c' || echo '$(srcdir)/'`Selgridcell.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selgridcell.Tpo $(DEPDIR)/cdo-Selgridcell.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selgridcell.c' object='cdo-Selgridcell.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selgridcell.o `test -f 'Selgridcell.c' || echo '$(srcdir)/'`Selgridcell.c
-
-cdo-Selgridcell.obj: Selgridcell.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selgridcell.obj -MD -MP -MF $(DEPDIR)/cdo-Selgridcell.Tpo -c -o cdo-Selgridcell.obj `if test -f 'Selgridcell.c'; then $(CYGPATH_W) 'Selgridcell.c'; else $(CYGPATH_W) '$(srcdir)/Selgridcell.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selgridcell.Tpo $(DEPDIR)/cdo-Selgridcell.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selgridcell.c' object='cdo-Selgridcell.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selgridcell.obj `if test -f 'Selgridcell.c'; then $(CYGPATH_W) 'Selgridcell.c'; else $(CYGPATH_W) '$(srcdir)/Selgridcell.c'; fi`
-
-cdo-Select.o: Select.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Select.o -MD -MP -MF $(DEPDIR)/cdo-Select.Tpo -c -o cdo-Select.o `test -f 'Select.c' || echo '$(srcdir)/'`Select.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Select.Tpo $(DEPDIR)/cdo-Select.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Select.c' object='cdo-Select.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Select.o `test -f 'Select.c' || echo '$(srcdir)/'`Select.c
-
-cdo-Select.obj: Select.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Select.obj -MD -MP -MF $(DEPDIR)/cdo-Select.Tpo -c -o cdo-Select.obj `if test -f 'Select.c'; then $(CYGPATH_W) 'Select.c'; else $(CYGPATH_W) '$(srcdir)/Select.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Select.Tpo $(DEPDIR)/cdo-Select.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Select.c' object='cdo-Select.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Select.obj `if test -f 'Select.c'; then $(CYGPATH_W) 'Select.c'; else $(CYGPATH_W) '$(srcdir)/Select.c'; fi`
-
-cdo-Selmulti.o: Selmulti.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selmulti.o -MD -MP -MF $(DEPDIR)/cdo-Selmulti.Tpo -c -o cdo-Selmulti.o `test -f 'Selmulti.c' || echo '$(srcdir)/'`Selmulti.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selmulti.Tpo $(DEPDIR)/cdo-Selmulti.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selmulti.c' object='cdo-Selmulti.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selmulti.o `test -f 'Selmulti.c' || echo '$(srcdir)/'`Selmulti.c
-
-cdo-Selmulti.obj: Selmulti.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selmulti.obj -MD -MP -MF $(DEPDIR)/cdo-Selmulti.Tpo -c -o cdo-Selmulti.obj `if test -f 'Selmulti.c'; then $(CYGPATH_W) 'Selmulti.c'; else $(CYGPATH_W) '$(srcdir)/Selmulti.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selmulti.Tpo $(DEPDIR)/cdo-Selmulti.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selmulti.c' object='cdo-Selmulti.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selmulti.obj `if test -f 'Selmulti.c'; then $(CYGPATH_W) 'Selmulti.c'; else $(CYGPATH_W) '$(srcdir)/Selmulti.c'; fi`
-
-cdo-Seloperator.o: Seloperator.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seloperator.o -MD -MP -MF $(DEPDIR)/cdo-Seloperator.Tpo -c -o cdo-Seloperator.o `test -f 'Seloperator.c' || echo '$(srcdir)/'`Seloperator.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seloperator.Tpo $(DEPDIR)/cdo-Seloperator.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seloperator.c' object='cdo-Seloperator.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seloperator.o `test -f 'Seloperator.c' || echo '$(srcdir)/'`Seloperator.c
-
-cdo-Seloperator.obj: Seloperator.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seloperator.obj -MD -MP -MF $(DEPDIR)/cdo-Seloperator.Tpo -c -o cdo-Seloperator.obj `if test -f 'Seloperator.c'; then $(CYGPATH_W) 'Seloperator.c'; else $(CYGPATH_W) '$(srcdir)/Seloperator.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seloperator.Tpo $(DEPDIR)/cdo-Seloperator.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seloperator.c' object='cdo-Seloperator.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seloperator.obj `if test -f 'Seloperator.c'; then $(CYGPATH_W) 'Seloperator.c'; else $(CYGPATH_W) '$(srcdir)/Seloperator.c'; fi`
-
-cdo-Selrec.o: Selrec.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selrec.o -MD -MP -MF $(DEPDIR)/cdo-Selrec.Tpo -c -o cdo-Selrec.o `test -f 'Selrec.c' || echo '$(srcdir)/'`Selrec.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selrec.Tpo $(DEPDIR)/cdo-Selrec.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selrec.c' object='cdo-Selrec.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selrec.o `test -f 'Selrec.c' || echo '$(srcdir)/'`Selrec.c
-
-cdo-Selrec.obj: Selrec.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selrec.obj -MD -MP -MF $(DEPDIR)/cdo-Selrec.Tpo -c -o cdo-Selrec.obj `if test -f 'Selrec.c'; then $(CYGPATH_W) 'Selrec.c'; else $(CYGPATH_W) '$(srcdir)/Selrec.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selrec.Tpo $(DEPDIR)/cdo-Selrec.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selrec.c' object='cdo-Selrec.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selrec.obj `if test -f 'Selrec.c'; then $(CYGPATH_W) 'Selrec.c'; else $(CYGPATH_W) '$(srcdir)/Selrec.c'; fi`
-
-cdo-Seltime.o: Seltime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seltime.o -MD -MP -MF $(DEPDIR)/cdo-Seltime.Tpo -c -o cdo-Seltime.o `test -f 'Seltime.c' || echo '$(srcdir)/'`Seltime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seltime.Tpo $(DEPDIR)/cdo-Seltime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seltime.c' object='cdo-Seltime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seltime.o `test -f 'Seltime.c' || echo '$(srcdir)/'`Seltime.c
-
-cdo-Seltime.obj: Seltime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Seltime.obj -MD -MP -MF $(DEPDIR)/cdo-Seltime.Tpo -c -o cdo-Seltime.obj `if test -f 'Seltime.c'; then $(CYGPATH_W) 'Seltime.c'; else $(CYGPATH_W) '$(srcdir)/Seltime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seltime.Tpo $(DEPDIR)/cdo-Seltime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Seltime.c' object='cdo-Seltime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Seltime.obj `if test -f 'Seltime.c'; then $(CYGPATH_W) 'Seltime.c'; else $(CYGPATH_W) '$(srcdir)/Seltime.c'; fi`
-
-cdo-Selvar.o: Selvar.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selvar.o -MD -MP -MF $(DEPDIR)/cdo-Selvar.Tpo -c -o cdo-Selvar.o `test -f 'Selvar.c' || echo '$(srcdir)/'`Selvar.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selvar.Tpo $(DEPDIR)/cdo-Selvar.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selvar.c' object='cdo-Selvar.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selvar.o `test -f 'Selvar.c' || echo '$(srcdir)/'`Selvar.c
-
-cdo-Selvar.obj: Selvar.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Selvar.obj -MD -MP -MF $(DEPDIR)/cdo-Selvar.Tpo -c -o cdo-Selvar.obj `if test -f 'Selvar.c'; then $(CYGPATH_W) 'Selvar.c'; else $(CYGPATH_W) '$(srcdir)/Selvar.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selvar.Tpo $(DEPDIR)/cdo-Selvar.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Selvar.c' object='cdo-Selvar.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Selvar.obj `if test -f 'Selvar.c'; then $(CYGPATH_W) 'Selvar.c'; else $(CYGPATH_W) '$(srcdir)/Selvar.c'; fi`
-
-cdo-Set.o: Set.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Set.o -MD -MP -MF $(DEPDIR)/cdo-Set.Tpo -c -o cdo-Set.o `test -f 'Set.c' || echo '$(srcdir)/'`Set.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Set.Tpo $(DEPDIR)/cdo-Set.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Set.c' object='cdo-Set.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Set.o `test -f 'Set.c' || echo '$(srcdir)/'`Set.c
-
-cdo-Set.obj: Set.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Set.obj -MD -MP -MF $(DEPDIR)/cdo-Set.Tpo -c -o cdo-Set.obj `if test -f 'Set.c'; then $(CYGPATH_W) 'Set.c'; else $(CYGPATH_W) '$(srcdir)/Set.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Set.Tpo $(DEPDIR)/cdo-Set.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Set.c' object='cdo-Set.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Set.obj `if test -f 'Set.c'; then $(CYGPATH_W) 'Set.c'; else $(CYGPATH_W) '$(srcdir)/Set.c'; fi`
-
-cdo-Setattribute.o: Setattribute.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setattribute.o -MD -MP -MF $(DEPDIR)/cdo-Setattribute.Tpo -c -o cdo-Setattribute.o `test -f 'Setattribute.c' || echo '$(srcdir)/'`Setattribute.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setattribute.Tpo $(DEPDIR)/cdo-Setattribute.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setattribute.c' object='cdo-Setattribute.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setattribute.o `test -f 'Setattribute.c' || echo '$(srcdir)/'`Setattribute.c
-
-cdo-Setattribute.obj: Setattribute.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setattribute.obj -MD -MP -MF $(DEPDIR)/cdo-Setattribute.Tpo -c -o cdo-Setattribute.obj `if test -f 'Setattribute.c'; then $(CYGPATH_W) 'Setattribute.c'; else $(CYGPATH_W) '$(srcdir)/Setattribute.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setattribute.Tpo $(DEPDIR)/cdo-Setattribute.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setattribute.c' object='cdo-Setattribute.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setattribute.obj `if test -f 'Setattribute.c'; then $(CYGPATH_W) 'Setattribute.c'; else $(CYGPATH_W) '$(srcdir)/Setattribute.c'; fi`
-
-cdo-Setbox.o: Setbox.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setbox.o -MD -MP -MF $(DEPDIR)/cdo-Setbox.Tpo -c -o cdo-Setbox.o `test -f 'Setbox.c' || echo '$(srcdir)/'`Setbox.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setbox.Tpo $(DEPDIR)/cdo-Setbox.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setbox.c' object='cdo-Setbox.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setbox.o `test -f 'Setbox.c' || echo '$(srcdir)/'`Setbox.c
-
-cdo-Setbox.obj: Setbox.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setbox.obj -MD -MP -MF $(DEPDIR)/cdo-Setbox.Tpo -c -o cdo-Setbox.obj `if test -f 'Setbox.c'; then $(CYGPATH_W) 'Setbox.c'; else $(CYGPATH_W) '$(srcdir)/Setbox.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setbox.Tpo $(DEPDIR)/cdo-Setbox.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setbox.c' object='cdo-Setbox.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setbox.obj `if test -f 'Setbox.c'; then $(CYGPATH_W) 'Setbox.c'; else $(CYGPATH_W) '$(srcdir)/Setbox.c'; fi`
-
-cdo-Setgatt.o: Setgatt.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setgatt.o -MD -MP -MF $(DEPDIR)/cdo-Setgatt.Tpo -c -o cdo-Setgatt.o `test -f 'Setgatt.c' || echo '$(srcdir)/'`Setgatt.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgatt.Tpo $(DEPDIR)/cdo-Setgatt.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setgatt.c' object='cdo-Setgatt.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setgatt.o `test -f 'Setgatt.c' || echo '$(srcdir)/'`Setgatt.c
-
-cdo-Setgatt.obj: Setgatt.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setgatt.obj -MD -MP -MF $(DEPDIR)/cdo-Setgatt.Tpo -c -o cdo-Setgatt.obj `if test -f 'Setgatt.c'; then $(CYGPATH_W) 'Setgatt.c'; else $(CYGPATH_W) '$(srcdir)/Setgatt.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgatt.Tpo $(DEPDIR)/cdo-Setgatt.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setgatt.c' object='cdo-Setgatt.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setgatt.obj `if test -f 'Setgatt.c'; then $(CYGPATH_W) 'Setgatt.c'; else $(CYGPATH_W) '$(srcdir)/Setgatt.c'; fi`
-
-cdo-Setgrid.o: Setgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setgrid.o -MD -MP -MF $(DEPDIR)/cdo-Setgrid.Tpo -c -o cdo-Setgrid.o `test -f 'Setgrid.c' || echo '$(srcdir)/'`Setgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgrid.Tpo $(DEPDIR)/cdo-Setgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setgrid.c' object='cdo-Setgrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setgrid.o `test -f 'Setgrid.c' || echo '$(srcdir)/'`Setgrid.c
-
-cdo-Setgrid.obj: Setgrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Setgrid.Tpo -c -o cdo-Setgrid.obj `if test -f 'Setgrid.c'; then $(CYGPATH_W) 'Setgrid.c'; else $(CYGPATH_W) '$(srcdir)/Setgrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgrid.Tpo $(DEPDIR)/cdo-Setgrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setgrid.c' object='cdo-Setgrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setgrid.obj `if test -f 'Setgrid.c'; then $(CYGPATH_W) 'Setgrid.c'; else $(CYGPATH_W) '$(srcdir)/Setgrid.c'; fi`
-
-cdo-Sethalo.o: Sethalo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sethalo.o -MD -MP -MF $(DEPDIR)/cdo-Sethalo.Tpo -c -o cdo-Sethalo.o `test -f 'Sethalo.c' || echo '$(srcdir)/'`Sethalo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sethalo.Tpo $(DEPDIR)/cdo-Sethalo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sethalo.c' object='cdo-Sethalo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sethalo.o `test -f 'Sethalo.c' || echo '$(srcdir)/'`Sethalo.c
-
-cdo-Sethalo.obj: Sethalo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sethalo.obj -MD -MP -MF $(DEPDIR)/cdo-Sethalo.Tpo -c -o cdo-Sethalo.obj `if test -f 'Sethalo.c'; then $(CYGPATH_W) 'Sethalo.c'; else $(CYGPATH_W) '$(srcdir)/Sethalo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sethalo.Tpo $(DEPDIR)/cdo-Sethalo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sethalo.c' object='cdo-Sethalo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sethalo.obj `if test -f 'Sethalo.c'; then $(CYGPATH_W) 'Sethalo.c'; else $(CYGPATH_W) '$(srcdir)/Sethalo.c'; fi`
-
-cdo-Setmiss.o: Setmiss.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setmiss.o -MD -MP -MF $(DEPDIR)/cdo-Setmiss.Tpo -c -o cdo-Setmiss.o `test -f 'Setmiss.c' || echo '$(srcdir)/'`Setmiss.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setmiss.Tpo $(DEPDIR)/cdo-Setmiss.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setmiss.c' object='cdo-Setmiss.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setmiss.o `test -f 'Setmiss.c' || echo '$(srcdir)/'`Setmiss.c
-
-cdo-Setmiss.obj: Setmiss.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setmiss.obj -MD -MP -MF $(DEPDIR)/cdo-Setmiss.Tpo -c -o cdo-Setmiss.obj `if test -f 'Setmiss.c'; then $(CYGPATH_W) 'Setmiss.c'; else $(CYGPATH_W) '$(srcdir)/Setmiss.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setmiss.Tpo $(DEPDIR)/cdo-Setmiss.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setmiss.c' object='cdo-Setmiss.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setmiss.obj `if test -f 'Setmiss.c'; then $(CYGPATH_W) 'Setmiss.c'; else $(CYGPATH_W) '$(srcdir)/Setmiss.c'; fi`
-
-cdo-Setpartab.o: Setpartab.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setpartab.o -MD -MP -MF $(DEPDIR)/cdo-Setpartab.Tpo -c -o cdo-Setpartab.o `test -f 'Setpartab.c' || echo '$(srcdir)/'`Setpartab.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setpartab.Tpo $(DEPDIR)/cdo-Setpartab.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setpartab.c' object='cdo-Setpartab.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setpartab.o `test -f 'Setpartab.c' || echo '$(srcdir)/'`Setpartab.c
-
-cdo-Setpartab.obj: Setpartab.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setpartab.obj -MD -MP -MF $(DEPDIR)/cdo-Setpartab.Tpo -c -o cdo-Setpartab.obj `if test -f 'Setpartab.c'; then $(CYGPATH_W) 'Setpartab.c'; else $(CYGPATH_W) '$(srcdir)/Setpartab.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setpartab.Tpo $(DEPDIR)/cdo-Setpartab.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setpartab.c' object='cdo-Setpartab.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setpartab.obj `if test -f 'Setpartab.c'; then $(CYGPATH_W) 'Setpartab.c'; else $(CYGPATH_W) '$(srcdir)/Setpartab.c'; fi`
-
-cdo-Setrcaname.o: Setrcaname.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setrcaname.o -MD -MP -MF $(DEPDIR)/cdo-Setrcaname.Tpo -c -o cdo-Setrcaname.o `test -f 'Setrcaname.c' || echo '$(srcdir)/'`Setrcaname.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setrcaname.Tpo $(DEPDIR)/cdo-Setrcaname.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setrcaname.c' object='cdo-Setrcaname.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setrcaname.o `test -f 'Setrcaname.c' || echo '$(srcdir)/'`Setrcaname.c
-
-cdo-Setrcaname.obj: Setrcaname.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setrcaname.obj -MD -MP -MF $(DEPDIR)/cdo-Setrcaname.Tpo -c -o cdo-Setrcaname.obj `if test -f 'Setrcaname.c'; then $(CYGPATH_W) 'Setrcaname.c'; else $(CYGPATH_W) '$(srcdir)/Setrcaname.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setrcaname.Tpo $(DEPDIR)/cdo-Setrcaname.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setrcaname.c' object='cdo-Setrcaname.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setrcaname.obj `if test -f 'Setrcaname.c'; then $(CYGPATH_W) 'Setrcaname.c'; else $(CYGPATH_W) '$(srcdir)/Setrcaname.c'; fi`
-
-cdo-Settime.o: Settime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Settime.o -MD -MP -MF $(DEPDIR)/cdo-Settime.Tpo -c -o cdo-Settime.o `test -f 'Settime.c' || echo '$(srcdir)/'`Settime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Settime.Tpo $(DEPDIR)/cdo-Settime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Settime.c' object='cdo-Settime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Settime.o `test -f 'Settime.c' || echo '$(srcdir)/'`Settime.c
-
-cdo-Settime.obj: Settime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Settime.obj -MD -MP -MF $(DEPDIR)/cdo-Settime.Tpo -c -o cdo-Settime.obj `if test -f 'Settime.c'; then $(CYGPATH_W) 'Settime.c'; else $(CYGPATH_W) '$(srcdir)/Settime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Settime.Tpo $(DEPDIR)/cdo-Settime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Settime.c' object='cdo-Settime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Settime.obj `if test -f 'Settime.c'; then $(CYGPATH_W) 'Settime.c'; else $(CYGPATH_W) '$(srcdir)/Settime.c'; fi`
-
-cdo-Setzaxis.o: Setzaxis.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setzaxis.o -MD -MP -MF $(DEPDIR)/cdo-Setzaxis.Tpo -c -o cdo-Setzaxis.o `test -f 'Setzaxis.c' || echo '$(srcdir)/'`Setzaxis.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setzaxis.Tpo $(DEPDIR)/cdo-Setzaxis.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setzaxis.c' object='cdo-Setzaxis.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setzaxis.o `test -f 'Setzaxis.c' || echo '$(srcdir)/'`Setzaxis.c
-
-cdo-Setzaxis.obj: Setzaxis.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Setzaxis.obj -MD -MP -MF $(DEPDIR)/cdo-Setzaxis.Tpo -c -o cdo-Setzaxis.obj `if test -f 'Setzaxis.c'; then $(CYGPATH_W) 'Setzaxis.c'; else $(CYGPATH_W) '$(srcdir)/Setzaxis.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setzaxis.Tpo $(DEPDIR)/cdo-Setzaxis.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Setzaxis.c' object='cdo-Setzaxis.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Setzaxis.obj `if test -f 'Setzaxis.c'; then $(CYGPATH_W) 'Setzaxis.c'; else $(CYGPATH_W) '$(srcdir)/Setzaxis.c'; fi`
-
-cdo-Shiftxy.o: Shiftxy.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Shiftxy.o -MD -MP -MF $(DEPDIR)/cdo-Shiftxy.Tpo -c -o cdo-Shiftxy.o `test -f 'Shiftxy.c' || echo '$(srcdir)/'`Shiftxy.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Shiftxy.Tpo $(DEPDIR)/cdo-Shiftxy.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Shiftxy.c' object='cdo-Shiftxy.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Shiftxy.o `test -f 'Shiftxy.c' || echo '$(srcdir)/'`Shiftxy.c
-
-cdo-Shiftxy.obj: Shiftxy.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Shiftxy.obj -MD -MP -MF $(DEPDIR)/cdo-Shiftxy.Tpo -c -o cdo-Shiftxy.obj `if test -f 'Shiftxy.c'; then $(CYGPATH_W) 'Shiftxy.c'; else $(CYGPATH_W) '$(srcdir)/Shiftxy.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Shiftxy.Tpo $(DEPDIR)/cdo-Shiftxy.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Shiftxy.c' object='cdo-Shiftxy.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Shiftxy.obj `if test -f 'Shiftxy.c'; then $(CYGPATH_W) 'Shiftxy.c'; else $(CYGPATH_W) '$(srcdir)/Shiftxy.c'; fi`
-
-cdo-Showinfo.o: Showinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Showinfo.o -MD -MP -MF $(DEPDIR)/cdo-Showinfo.Tpo -c -o cdo-Showinfo.o `test -f 'Showinfo.c' || echo '$(srcdir)/'`Showinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Showinfo.Tpo $(DEPDIR)/cdo-Showinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Showinfo.c' object='cdo-Showinfo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Showinfo.o `test -f 'Showinfo.c' || echo '$(srcdir)/'`Showinfo.c
-
-cdo-Showinfo.obj: Showinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Showinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Showinfo.Tpo -c -o cdo-Showinfo.obj `if test -f 'Showinfo.c'; then $(CYGPATH_W) 'Showinfo.c'; else $(CYGPATH_W) '$(srcdir)/Showinfo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Showinfo.Tpo $(DEPDIR)/cdo-Showinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Showinfo.c' object='cdo-Showinfo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Showinfo.obj `if test -f 'Showinfo.c'; then $(CYGPATH_W) 'Showinfo.c'; else $(CYGPATH_W) '$(srcdir)/Showinfo.c'; fi`
-
-cdo-Sinfo.o: Sinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sinfo.o -MD -MP -MF $(DEPDIR)/cdo-Sinfo.Tpo -c -o cdo-Sinfo.o `test -f 'Sinfo.c' || echo '$(srcdir)/'`Sinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sinfo.Tpo $(DEPDIR)/cdo-Sinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sinfo.c' object='cdo-Sinfo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sinfo.o `test -f 'Sinfo.c' || echo '$(srcdir)/'`Sinfo.c
-
-cdo-Sinfo.obj: Sinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Sinfo.Tpo -c -o cdo-Sinfo.obj `if test -f 'Sinfo.c'; then $(CYGPATH_W) 'Sinfo.c'; else $(CYGPATH_W) '$(srcdir)/Sinfo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sinfo.Tpo $(DEPDIR)/cdo-Sinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sinfo.c' object='cdo-Sinfo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sinfo.obj `if test -f 'Sinfo.c'; then $(CYGPATH_W) 'Sinfo.c'; else $(CYGPATH_W) '$(srcdir)/Sinfo.c'; fi`
-
-cdo-Smooth.o: Smooth.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Smooth.o -MD -MP -MF $(DEPDIR)/cdo-Smooth.Tpo -c -o cdo-Smooth.o `test -f 'Smooth.c' || echo '$(srcdir)/'`Smooth.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Smooth.Tpo $(DEPDIR)/cdo-Smooth.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Smooth.c' object='cdo-Smooth.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Smooth.o `test -f 'Smooth.c' || echo '$(srcdir)/'`Smooth.c
-
-cdo-Smooth.obj: Smooth.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Smooth.obj -MD -MP -MF $(DEPDIR)/cdo-Smooth.Tpo -c -o cdo-Smooth.obj `if test -f 'Smooth.c'; then $(CYGPATH_W) 'Smooth.c'; else $(CYGPATH_W) '$(srcdir)/Smooth.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Smooth.Tpo $(DEPDIR)/cdo-Smooth.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Smooth.c' object='cdo-Smooth.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Smooth.obj `if test -f 'Smooth.c'; then $(CYGPATH_W) 'Smooth.c'; else $(CYGPATH_W) '$(srcdir)/Smooth.c'; fi`
-
-cdo-Sort.o: Sort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sort.o -MD -MP -MF $(DEPDIR)/cdo-Sort.Tpo -c -o cdo-Sort.o `test -f 'Sort.c' || echo '$(srcdir)/'`Sort.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sort.Tpo $(DEPDIR)/cdo-Sort.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sort.c' object='cdo-Sort.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sort.o `test -f 'Sort.c' || echo '$(srcdir)/'`Sort.c
-
-cdo-Sort.obj: Sort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sort.obj -MD -MP -MF $(DEPDIR)/cdo-Sort.Tpo -c -o cdo-Sort.obj `if test -f 'Sort.c'; then $(CYGPATH_W) 'Sort.c'; else $(CYGPATH_W) '$(srcdir)/Sort.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sort.Tpo $(DEPDIR)/cdo-Sort.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sort.c' object='cdo-Sort.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sort.obj `if test -f 'Sort.c'; then $(CYGPATH_W) 'Sort.c'; else $(CYGPATH_W) '$(srcdir)/Sort.c'; fi`
-
-cdo-Sorttimestamp.o: Sorttimestamp.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sorttimestamp.o -MD -MP -MF $(DEPDIR)/cdo-Sorttimestamp.Tpo -c -o cdo-Sorttimestamp.o `test -f 'Sorttimestamp.c' || echo '$(srcdir)/'`Sorttimestamp.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sorttimestamp.Tpo $(DEPDIR)/cdo-Sorttimestamp.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sorttimestamp.c' object='cdo-Sorttimestamp.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sorttimestamp.o `test -f 'Sorttimestamp.c' || echo '$(srcdir)/'`Sorttimestamp.c
-
-cdo-Sorttimestamp.obj: Sorttimestamp.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Sorttimestamp.obj -MD -MP -MF $(DEPDIR)/cdo-Sorttimestamp.Tpo -c -o cdo-Sorttimestamp.obj `if test -f 'Sorttimestamp.c'; then $(CYGPATH_W) 'Sorttimestamp.c'; else $(CYGPATH_W) '$(srcdir)/Sorttimestamp.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sorttimestamp.Tpo $(DEPDIR)/cdo-Sorttimestamp.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Sorttimestamp.c' object='cdo-Sorttimestamp.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Sorttimestamp.obj `if test -f 'Sorttimestamp.c'; then $(CYGPATH_W) 'Sorttimestamp.c'; else $(CYGPATH_W) '$(srcdir)/Sorttimestamp.c'; fi`
-
-cdo-Specinfo.o: Specinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Specinfo.o -MD -MP -MF $(DEPDIR)/cdo-Specinfo.Tpo -c -o cdo-Specinfo.o `test -f 'Specinfo.c' || echo '$(srcdir)/'`Specinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Specinfo.Tpo $(DEPDIR)/cdo-Specinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Specinfo.c' object='cdo-Specinfo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Specinfo.o `test -f 'Specinfo.c' || echo '$(srcdir)/'`Specinfo.c
-
-cdo-Specinfo.obj: Specinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Specinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Specinfo.Tpo -c -o cdo-Specinfo.obj `if test -f 'Specinfo.c'; then $(CYGPATH_W) 'Specinfo.c'; else $(CYGPATH_W) '$(srcdir)/Specinfo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Specinfo.Tpo $(DEPDIR)/cdo-Specinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Specinfo.c' object='cdo-Specinfo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Specinfo.obj `if test -f 'Specinfo.c'; then $(CYGPATH_W) 'Specinfo.c'; else $(CYGPATH_W) '$(srcdir)/Specinfo.c'; fi`
-
-cdo-Spectral.o: Spectral.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Spectral.o -MD -MP -MF $(DEPDIR)/cdo-Spectral.Tpo -c -o cdo-Spectral.o `test -f 'Spectral.c' || echo '$(srcdir)/'`Spectral.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectral.Tpo $(DEPDIR)/cdo-Spectral.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Spectral.c' object='cdo-Spectral.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Spectral.o `test -f 'Spectral.c' || echo '$(srcdir)/'`Spectral.c
-
-cdo-Spectral.obj: Spectral.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Spectral.obj -MD -MP -MF $(DEPDIR)/cdo-Spectral.Tpo -c -o cdo-Spectral.obj `if test -f 'Spectral.c'; then $(CYGPATH_W) 'Spectral.c'; else $(CYGPATH_W) '$(srcdir)/Spectral.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectral.Tpo $(DEPDIR)/cdo-Spectral.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Spectral.c' object='cdo-Spectral.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Spectral.obj `if test -f 'Spectral.c'; then $(CYGPATH_W) 'Spectral.c'; else $(CYGPATH_W) '$(srcdir)/Spectral.c'; fi`
-
-cdo-Spectrum.o: Spectrum.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Spectrum.o -MD -MP -MF $(DEPDIR)/cdo-Spectrum.Tpo -c -o cdo-Spectrum.o `test -f 'Spectrum.c' || echo '$(srcdir)/'`Spectrum.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectrum.Tpo $(DEPDIR)/cdo-Spectrum.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Spectrum.c' object='cdo-Spectrum.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Spectrum.o `test -f 'Spectrum.c' || echo '$(srcdir)/'`Spectrum.c
-
-cdo-Spectrum.obj: Spectrum.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Spectrum.obj -MD -MP -MF $(DEPDIR)/cdo-Spectrum.Tpo -c -o cdo-Spectrum.obj `if test -f 'Spectrum.c'; then $(CYGPATH_W) 'Spectrum.c'; else $(CYGPATH_W) '$(srcdir)/Spectrum.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectrum.Tpo $(DEPDIR)/cdo-Spectrum.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Spectrum.c' object='cdo-Spectrum.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Spectrum.obj `if test -f 'Spectrum.c'; then $(CYGPATH_W) 'Spectrum.c'; else $(CYGPATH_W) '$(srcdir)/Spectrum.c'; fi`
-
-cdo-Split.o: Split.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Split.o -MD -MP -MF $(DEPDIR)/cdo-Split.Tpo -c -o cdo-Split.o `test -f 'Split.c' || echo '$(srcdir)/'`Split.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Split.Tpo $(DEPDIR)/cdo-Split.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Split.c' object='cdo-Split.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Split.o `test -f 'Split.c' || echo '$(srcdir)/'`Split.c
-
-cdo-Split.obj: Split.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Split.obj -MD -MP -MF $(DEPDIR)/cdo-Split.Tpo -c -o cdo-Split.obj `if test -f 'Split.c'; then $(CYGPATH_W) 'Split.c'; else $(CYGPATH_W) '$(srcdir)/Split.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Split.Tpo $(DEPDIR)/cdo-Split.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Split.c' object='cdo-Split.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Split.obj `if test -f 'Split.c'; then $(CYGPATH_W) 'Split.c'; else $(CYGPATH_W) '$(srcdir)/Split.c'; fi`
-
-cdo-Splitrec.o: Splitrec.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splitrec.o -MD -MP -MF $(DEPDIR)/cdo-Splitrec.Tpo -c -o cdo-Splitrec.o `test -f 'Splitrec.c' || echo '$(srcdir)/'`Splitrec.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitrec.Tpo $(DEPDIR)/cdo-Splitrec.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splitrec.c' object='cdo-Splitrec.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splitrec.o `test -f 'Splitrec.c' || echo '$(srcdir)/'`Splitrec.c
-
-cdo-Splitrec.obj: Splitrec.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splitrec.obj -MD -MP -MF $(DEPDIR)/cdo-Splitrec.Tpo -c -o cdo-Splitrec.obj `if test -f 'Splitrec.c'; then $(CYGPATH_W) 'Splitrec.c'; else $(CYGPATH_W) '$(srcdir)/Splitrec.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitrec.Tpo $(DEPDIR)/cdo-Splitrec.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splitrec.c' object='cdo-Splitrec.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splitrec.obj `if test -f 'Splitrec.c'; then $(CYGPATH_W) 'Splitrec.c'; else $(CYGPATH_W) '$(srcdir)/Splitrec.c'; fi`
-
-cdo-Splitsel.o: Splitsel.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splitsel.o -MD -MP -MF $(DEPDIR)/cdo-Splitsel.Tpo -c -o cdo-Splitsel.o `test -f 'Splitsel.c' || echo '$(srcdir)/'`Splitsel.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitsel.Tpo $(DEPDIR)/cdo-Splitsel.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splitsel.c' object='cdo-Splitsel.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splitsel.o `test -f 'Splitsel.c' || echo '$(srcdir)/'`Splitsel.c
-
-cdo-Splitsel.obj: Splitsel.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splitsel.obj -MD -MP -MF $(DEPDIR)/cdo-Splitsel.Tpo -c -o cdo-Splitsel.obj `if test -f 'Splitsel.c'; then $(CYGPATH_W) 'Splitsel.c'; else $(CYGPATH_W) '$(srcdir)/Splitsel.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitsel.Tpo $(DEPDIR)/cdo-Splitsel.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splitsel.c' object='cdo-Splitsel.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splitsel.obj `if test -f 'Splitsel.c'; then $(CYGPATH_W) 'Splitsel.c'; else $(CYGPATH_W) '$(srcdir)/Splitsel.c'; fi`
-
-cdo-Splittime.o: Splittime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splittime.o -MD -MP -MF $(DEPDIR)/cdo-Splittime.Tpo -c -o cdo-Splittime.o `test -f 'Splittime.c' || echo '$(srcdir)/'`Splittime.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splittime.Tpo $(DEPDIR)/cdo-Splittime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splittime.c' object='cdo-Splittime.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splittime.o `test -f 'Splittime.c' || echo '$(srcdir)/'`Splittime.c
-
-cdo-Splittime.obj: Splittime.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splittime.obj -MD -MP -MF $(DEPDIR)/cdo-Splittime.Tpo -c -o cdo-Splittime.obj `if test -f 'Splittime.c'; then $(CYGPATH_W) 'Splittime.c'; else $(CYGPATH_W) '$(srcdir)/Splittime.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splittime.Tpo $(DEPDIR)/cdo-Splittime.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splittime.c' object='cdo-Splittime.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splittime.obj `if test -f 'Splittime.c'; then $(CYGPATH_W) 'Splittime.c'; else $(CYGPATH_W) '$(srcdir)/Splittime.c'; fi`
-
-cdo-Splityear.o: Splityear.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splityear.o -MD -MP -MF $(DEPDIR)/cdo-Splityear.Tpo -c -o cdo-Splityear.o `test -f 'Splityear.c' || echo '$(srcdir)/'`Splityear.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splityear.Tpo $(DEPDIR)/cdo-Splityear.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splityear.c' object='cdo-Splityear.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splityear.o `test -f 'Splityear.c' || echo '$(srcdir)/'`Splityear.c
-
-cdo-Splityear.obj: Splityear.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Splityear.obj -MD -MP -MF $(DEPDIR)/cdo-Splityear.Tpo -c -o cdo-Splityear.obj `if test -f 'Splityear.c'; then $(CYGPATH_W) 'Splityear.c'; else $(CYGPATH_W) '$(srcdir)/Splityear.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splityear.Tpo $(DEPDIR)/cdo-Splityear.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Splityear.c' object='cdo-Splityear.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Splityear.obj `if test -f 'Splityear.c'; then $(CYGPATH_W) 'Splityear.c'; else $(CYGPATH_W) '$(srcdir)/Splityear.c'; fi`
-
-cdo-Subtrend.o: Subtrend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Subtrend.o -MD -MP -MF $(DEPDIR)/cdo-Subtrend.Tpo -c -o cdo-Subtrend.o `test -f 'Subtrend.c' || echo '$(srcdir)/'`Subtrend.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Subtrend.Tpo $(DEPDIR)/cdo-Subtrend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Subtrend.c' object='cdo-Subtrend.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Subtrend.o `test -f 'Subtrend.c' || echo '$(srcdir)/'`Subtrend.c
-
-cdo-Subtrend.obj: Subtrend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Subtrend.obj -MD -MP -MF $(DEPDIR)/cdo-Subtrend.Tpo -c -o cdo-Subtrend.obj `if test -f 'Subtrend.c'; then $(CYGPATH_W) 'Subtrend.c'; else $(CYGPATH_W) '$(srcdir)/Subtrend.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Subtrend.Tpo $(DEPDIR)/cdo-Subtrend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Subtrend.c' object='cdo-Subtrend.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Subtrend.obj `if test -f 'Subtrend.c'; then $(CYGPATH_W) 'Subtrend.c'; else $(CYGPATH_W) '$(srcdir)/Subtrend.c'; fi`
-
-cdo-Tee.o: Tee.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tee.o -MD -MP -MF $(DEPDIR)/cdo-Tee.Tpo -c -o cdo-Tee.o `test -f 'Tee.c' || echo '$(srcdir)/'`Tee.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tee.Tpo $(DEPDIR)/cdo-Tee.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tee.c' object='cdo-Tee.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tee.o `test -f 'Tee.c' || echo '$(srcdir)/'`Tee.c
-
-cdo-Tee.obj: Tee.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tee.obj -MD -MP -MF $(DEPDIR)/cdo-Tee.Tpo -c -o cdo-Tee.obj `if test -f 'Tee.c'; then $(CYGPATH_W) 'Tee.c'; else $(CYGPATH_W) '$(srcdir)/Tee.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tee.Tpo $(DEPDIR)/cdo-Tee.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tee.c' object='cdo-Tee.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tee.obj `if test -f 'Tee.c'; then $(CYGPATH_W) 'Tee.c'; else $(CYGPATH_W) '$(srcdir)/Tee.c'; fi`
-
-cdo-Templates.o: Templates.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Templates.o -MD -MP -MF $(DEPDIR)/cdo-Templates.Tpo -c -o cdo-Templates.o `test -f 'Templates.c' || echo '$(srcdir)/'`Templates.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Templates.Tpo $(DEPDIR)/cdo-Templates.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Templates.c' object='cdo-Templates.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Templates.o `test -f 'Templates.c' || echo '$(srcdir)/'`Templates.c
-
-cdo-Templates.obj: Templates.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Templates.obj -MD -MP -MF $(DEPDIR)/cdo-Templates.Tpo -c -o cdo-Templates.obj `if test -f 'Templates.c'; then $(CYGPATH_W) 'Templates.c'; else $(CYGPATH_W) '$(srcdir)/Templates.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Templates.Tpo $(DEPDIR)/cdo-Templates.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Templates.c' object='cdo-Templates.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Templates.obj `if test -f 'Templates.c'; then $(CYGPATH_W) 'Templates.c'; else $(CYGPATH_W) '$(srcdir)/Templates.c'; fi`
-
-cdo-Test.o: Test.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Test.o -MD -MP -MF $(DEPDIR)/cdo-Test.Tpo -c -o cdo-Test.o `test -f 'Test.c' || echo '$(srcdir)/'`Test.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Test.Tpo $(DEPDIR)/cdo-Test.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Test.c' object='cdo-Test.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Test.o `test -f 'Test.c' || echo '$(srcdir)/'`Test.c
-
-cdo-Test.obj: Test.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Test.obj -MD -MP -MF $(DEPDIR)/cdo-Test.Tpo -c -o cdo-Test.obj `if test -f 'Test.c'; then $(CYGPATH_W) 'Test.c'; else $(CYGPATH_W) '$(srcdir)/Test.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Test.Tpo $(DEPDIR)/cdo-Test.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Test.c' object='cdo-Test.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Test.obj `if test -f 'Test.c'; then $(CYGPATH_W) 'Test.c'; else $(CYGPATH_W) '$(srcdir)/Test.c'; fi`
-
-cdo-Tests.o: Tests.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tests.o -MD -MP -MF $(DEPDIR)/cdo-Tests.Tpo -c -o cdo-Tests.o `test -f 'Tests.c' || echo '$(srcdir)/'`Tests.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tests.Tpo $(DEPDIR)/cdo-Tests.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tests.c' object='cdo-Tests.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tests.o `test -f 'Tests.c' || echo '$(srcdir)/'`Tests.c
-
-cdo-Tests.obj: Tests.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tests.obj -MD -MP -MF $(DEPDIR)/cdo-Tests.Tpo -c -o cdo-Tests.obj `if test -f 'Tests.c'; then $(CYGPATH_W) 'Tests.c'; else $(CYGPATH_W) '$(srcdir)/Tests.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tests.Tpo $(DEPDIR)/cdo-Tests.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tests.c' object='cdo-Tests.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tests.obj `if test -f 'Tests.c'; then $(CYGPATH_W) 'Tests.c'; else $(CYGPATH_W) '$(srcdir)/Tests.c'; fi`
-
-cdo-Timcount.o: Timcount.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timcount.o -MD -MP -MF $(DEPDIR)/cdo-Timcount.Tpo -c -o cdo-Timcount.o `test -f 'Timcount.c' || echo '$(srcdir)/'`Timcount.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcount.Tpo $(DEPDIR)/cdo-Timcount.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timcount.c' object='cdo-Timcount.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timcount.o `test -f 'Timcount.c' || echo '$(srcdir)/'`Timcount.c
-
-cdo-Timcount.obj: Timcount.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timcount.obj -MD -MP -MF $(DEPDIR)/cdo-Timcount.Tpo -c -o cdo-Timcount.obj `if test -f 'Timcount.c'; then $(CYGPATH_W) 'Timcount.c'; else $(CYGPATH_W) '$(srcdir)/Timcount.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcount.Tpo $(DEPDIR)/cdo-Timcount.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timcount.c' object='cdo-Timcount.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timcount.obj `if test -f 'Timcount.c'; then $(CYGPATH_W) 'Timcount.c'; else $(CYGPATH_W) '$(srcdir)/Timcount.c'; fi`
-
-cdo-Timcumsum.o: Timcumsum.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timcumsum.o -MD -MP -MF $(DEPDIR)/cdo-Timcumsum.Tpo -c -o cdo-Timcumsum.o `test -f 'Timcumsum.c' || echo '$(srcdir)/'`Timcumsum.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcumsum.Tpo $(DEPDIR)/cdo-Timcumsum.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timcumsum.c' object='cdo-Timcumsum.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timcumsum.o `test -f 'Timcumsum.c' || echo '$(srcdir)/'`Timcumsum.c
-
-cdo-Timcumsum.obj: Timcumsum.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timcumsum.obj -MD -MP -MF $(DEPDIR)/cdo-Timcumsum.Tpo -c -o cdo-Timcumsum.obj `if test -f 'Timcumsum.c'; then $(CYGPATH_W) 'Timcumsum.c'; else $(CYGPATH_W) '$(srcdir)/Timcumsum.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcumsum.Tpo $(DEPDIR)/cdo-Timcumsum.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timcumsum.c' object='cdo-Timcumsum.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timcumsum.obj `if test -f 'Timcumsum.c'; then $(CYGPATH_W) 'Timcumsum.c'; else $(CYGPATH_W) '$(srcdir)/Timcumsum.c'; fi`
-
-cdo-Timpctl.o: Timpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timpctl.o -MD -MP -MF $(DEPDIR)/cdo-Timpctl.Tpo -c -o cdo-Timpctl.o `test -f 'Timpctl.c' || echo '$(srcdir)/'`Timpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timpctl.Tpo $(DEPDIR)/cdo-Timpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timpctl.c' object='cdo-Timpctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timpctl.o `test -f 'Timpctl.c' || echo '$(srcdir)/'`Timpctl.c
-
-cdo-Timpctl.obj: Timpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Timpctl.Tpo -c -o cdo-Timpctl.obj `if test -f 'Timpctl.c'; then $(CYGPATH_W) 'Timpctl.c'; else $(CYGPATH_W) '$(srcdir)/Timpctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timpctl.Tpo $(DEPDIR)/cdo-Timpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timpctl.c' object='cdo-Timpctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timpctl.obj `if test -f 'Timpctl.c'; then $(CYGPATH_W) 'Timpctl.c'; else $(CYGPATH_W) '$(srcdir)/Timpctl.c'; fi`
-
-cdo-Timselpctl.o: Timselpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timselpctl.o -MD -MP -MF $(DEPDIR)/cdo-Timselpctl.Tpo -c -o cdo-Timselpctl.o `test -f 'Timselpctl.c' || echo '$(srcdir)/'`Timselpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselpctl.Tpo $(DEPDIR)/cdo-Timselpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timselpctl.c' object='cdo-Timselpctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timselpctl.o `test -f 'Timselpctl.c' || echo '$(srcdir)/'`Timselpctl.c
-
-cdo-Timselpctl.obj: Timselpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timselpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Timselpctl.Tpo -c -o cdo-Timselpctl.obj `if test -f 'Timselpctl.c'; then $(CYGPATH_W) 'Timselpctl.c'; else $(CYGPATH_W) '$(srcdir)/Timselpctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselpctl.Tpo $(DEPDIR)/cdo-Timselpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timselpctl.c' object='cdo-Timselpctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timselpctl.obj `if test -f 'Timselpctl.c'; then $(CYGPATH_W) 'Timselpctl.c'; else $(CYGPATH_W) '$(srcdir)/Timselpctl.c'; fi`
-
-cdo-Timselstat.o: Timselstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timselstat.o -MD -MP -MF $(DEPDIR)/cdo-Timselstat.Tpo -c -o cdo-Timselstat.o `test -f 'Timselstat.c' || echo '$(srcdir)/'`Timselstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselstat.Tpo $(DEPDIR)/cdo-Timselstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timselstat.c' object='cdo-Timselstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timselstat.o `test -f 'Timselstat.c' || echo '$(srcdir)/'`Timselstat.c
-
-cdo-Timselstat.obj: Timselstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timselstat.obj -MD -MP -MF $(DEPDIR)/cdo-Timselstat.Tpo -c -o cdo-Timselstat.obj `if test -f 'Timselstat.c'; then $(CYGPATH_W) 'Timselstat.c'; else $(CYGPATH_W) '$(srcdir)/Timselstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselstat.Tpo $(DEPDIR)/cdo-Timselstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timselstat.c' object='cdo-Timselstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timselstat.obj `if test -f 'Timselstat.c'; then $(CYGPATH_W) 'Timselstat.c'; else $(CYGPATH_W) '$(srcdir)/Timselstat.c'; fi`
-
-cdo-Timsort.o: Timsort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timsort.o -MD -MP -MF $(DEPDIR)/cdo-Timsort.Tpo -c -o cdo-Timsort.o `test -f 'Timsort.c' || echo '$(srcdir)/'`Timsort.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timsort.Tpo $(DEPDIR)/cdo-Timsort.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timsort.c' object='cdo-Timsort.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timsort.o `test -f 'Timsort.c' || echo '$(srcdir)/'`Timsort.c
-
-cdo-Timsort.obj: Timsort.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timsort.obj -MD -MP -MF $(DEPDIR)/cdo-Timsort.Tpo -c -o cdo-Timsort.obj `if test -f 'Timsort.c'; then $(CYGPATH_W) 'Timsort.c'; else $(CYGPATH_W) '$(srcdir)/Timsort.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timsort.Tpo $(DEPDIR)/cdo-Timsort.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timsort.c' object='cdo-Timsort.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timsort.obj `if test -f 'Timsort.c'; then $(CYGPATH_W) 'Timsort.c'; else $(CYGPATH_W) '$(srcdir)/Timsort.c'; fi`
-
-cdo-Timstat.o: Timstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timstat.o -MD -MP -MF $(DEPDIR)/cdo-Timstat.Tpo -c -o cdo-Timstat.o `test -f 'Timstat.c' || echo '$(srcdir)/'`Timstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat.Tpo $(DEPDIR)/cdo-Timstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timstat.c' object='cdo-Timstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timstat.o `test -f 'Timstat.c' || echo '$(srcdir)/'`Timstat.c
-
-cdo-Timstat.obj: Timstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timstat.obj -MD -MP -MF $(DEPDIR)/cdo-Timstat.Tpo -c -o cdo-Timstat.obj `if test -f 'Timstat.c'; then $(CYGPATH_W) 'Timstat.c'; else $(CYGPATH_W) '$(srcdir)/Timstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat.Tpo $(DEPDIR)/cdo-Timstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timstat.c' object='cdo-Timstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timstat.obj `if test -f 'Timstat.c'; then $(CYGPATH_W) 'Timstat.c'; else $(CYGPATH_W) '$(srcdir)/Timstat.c'; fi`
-
-cdo-Timstat2.o: Timstat2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timstat2.o -MD -MP -MF $(DEPDIR)/cdo-Timstat2.Tpo -c -o cdo-Timstat2.o `test -f 'Timstat2.c' || echo '$(srcdir)/'`Timstat2.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat2.Tpo $(DEPDIR)/cdo-Timstat2.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timstat2.c' object='cdo-Timstat2.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timstat2.o `test -f 'Timstat2.c' || echo '$(srcdir)/'`Timstat2.c
-
-cdo-Timstat2.obj: Timstat2.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timstat2.obj -MD -MP -MF $(DEPDIR)/cdo-Timstat2.Tpo -c -o cdo-Timstat2.obj `if test -f 'Timstat2.c'; then $(CYGPATH_W) 'Timstat2.c'; else $(CYGPATH_W) '$(srcdir)/Timstat2.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat2.Tpo $(DEPDIR)/cdo-Timstat2.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timstat2.c' object='cdo-Timstat2.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timstat2.obj `if test -f 'Timstat2.c'; then $(CYGPATH_W) 'Timstat2.c'; else $(CYGPATH_W) '$(srcdir)/Timstat2.c'; fi`
-
-cdo-Timstat3.o: Timstat3.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timstat3.o -MD -MP -MF $(DEPDIR)/cdo-Timstat3.Tpo -c -o cdo-Timstat3.o `test -f 'Timstat3.c' || echo '$(srcdir)/'`Timstat3.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat3.Tpo $(DEPDIR)/cdo-Timstat3.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timstat3.c' object='cdo-Timstat3.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timstat3.o `test -f 'Timstat3.c' || echo '$(srcdir)/'`Timstat3.c
-
-cdo-Timstat3.obj: Timstat3.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Timstat3.obj -MD -MP -MF $(DEPDIR)/cdo-Timstat3.Tpo -c -o cdo-Timstat3.obj `if test -f 'Timstat3.c'; then $(CYGPATH_W) 'Timstat3.c'; else $(CYGPATH_W) '$(srcdir)/Timstat3.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat3.Tpo $(DEPDIR)/cdo-Timstat3.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Timstat3.c' object='cdo-Timstat3.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Timstat3.obj `if test -f 'Timstat3.c'; then $(CYGPATH_W) 'Timstat3.c'; else $(CYGPATH_W) '$(srcdir)/Timstat3.c'; fi`
-
-cdo-Tinfo.o: Tinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tinfo.o -MD -MP -MF $(DEPDIR)/cdo-Tinfo.Tpo -c -o cdo-Tinfo.o `test -f 'Tinfo.c' || echo '$(srcdir)/'`Tinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tinfo.Tpo $(DEPDIR)/cdo-Tinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tinfo.c' object='cdo-Tinfo.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tinfo.o `test -f 'Tinfo.c' || echo '$(srcdir)/'`Tinfo.c
-
-cdo-Tinfo.obj: Tinfo.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Tinfo.Tpo -c -o cdo-Tinfo.obj `if test -f 'Tinfo.c'; then $(CYGPATH_W) 'Tinfo.c'; else $(CYGPATH_W) '$(srcdir)/Tinfo.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tinfo.Tpo $(DEPDIR)/cdo-Tinfo.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tinfo.c' object='cdo-Tinfo.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tinfo.obj `if test -f 'Tinfo.c'; then $(CYGPATH_W) 'Tinfo.c'; else $(CYGPATH_W) '$(srcdir)/Tinfo.c'; fi`
-
-cdo-Tocomplex.o: Tocomplex.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tocomplex.o -MD -MP -MF $(DEPDIR)/cdo-Tocomplex.Tpo -c -o cdo-Tocomplex.o `test -f 'Tocomplex.c' || echo '$(srcdir)/'`Tocomplex.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tocomplex.Tpo $(DEPDIR)/cdo-Tocomplex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tocomplex.c' object='cdo-Tocomplex.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tocomplex.o `test -f 'Tocomplex.c' || echo '$(srcdir)/'`Tocomplex.c
-
-cdo-Tocomplex.obj: Tocomplex.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tocomplex.obj -MD -MP -MF $(DEPDIR)/cdo-Tocomplex.Tpo -c -o cdo-Tocomplex.obj `if test -f 'Tocomplex.c'; then $(CYGPATH_W) 'Tocomplex.c'; else $(CYGPATH_W) '$(srcdir)/Tocomplex.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tocomplex.Tpo $(DEPDIR)/cdo-Tocomplex.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tocomplex.c' object='cdo-Tocomplex.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tocomplex.obj `if test -f 'Tocomplex.c'; then $(CYGPATH_W) 'Tocomplex.c'; else $(CYGPATH_W) '$(srcdir)/Tocomplex.c'; fi`
-
-cdo-Transpose.o: Transpose.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Transpose.o -MD -MP -MF $(DEPDIR)/cdo-Transpose.Tpo -c -o cdo-Transpose.o `test -f 'Transpose.c' || echo '$(srcdir)/'`Transpose.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Transpose.Tpo $(DEPDIR)/cdo-Transpose.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Transpose.c' object='cdo-Transpose.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Transpose.o `test -f 'Transpose.c' || echo '$(srcdir)/'`Transpose.c
-
-cdo-Transpose.obj: Transpose.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Transpose.obj -MD -MP -MF $(DEPDIR)/cdo-Transpose.Tpo -c -o cdo-Transpose.obj `if test -f 'Transpose.c'; then $(CYGPATH_W) 'Transpose.c'; else $(CYGPATH_W) '$(srcdir)/Transpose.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Transpose.Tpo $(DEPDIR)/cdo-Transpose.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Transpose.c' object='cdo-Transpose.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Transpose.obj `if test -f 'Transpose.c'; then $(CYGPATH_W) 'Transpose.c'; else $(CYGPATH_W) '$(srcdir)/Transpose.c'; fi`
-
-cdo-Trend.o: Trend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Trend.o -MD -MP -MF $(DEPDIR)/cdo-Trend.Tpo -c -o cdo-Trend.o `test -f 'Trend.c' || echo '$(srcdir)/'`Trend.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trend.Tpo $(DEPDIR)/cdo-Trend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Trend.c' object='cdo-Trend.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Trend.o `test -f 'Trend.c' || echo '$(srcdir)/'`Trend.c
-
-cdo-Trend.obj: Trend.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Trend.obj -MD -MP -MF $(DEPDIR)/cdo-Trend.Tpo -c -o cdo-Trend.obj `if test -f 'Trend.c'; then $(CYGPATH_W) 'Trend.c'; else $(CYGPATH_W) '$(srcdir)/Trend.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trend.Tpo $(DEPDIR)/cdo-Trend.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Trend.c' object='cdo-Trend.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Trend.obj `if test -f 'Trend.c'; then $(CYGPATH_W) 'Trend.c'; else $(CYGPATH_W) '$(srcdir)/Trend.c'; fi`
-
-cdo-Trms.o: Trms.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Trms.o -MD -MP -MF $(DEPDIR)/cdo-Trms.Tpo -c -o cdo-Trms.o `test -f 'Trms.c' || echo '$(srcdir)/'`Trms.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trms.Tpo $(DEPDIR)/cdo-Trms.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Trms.c' object='cdo-Trms.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Trms.o `test -f 'Trms.c' || echo '$(srcdir)/'`Trms.c
-
-cdo-Trms.obj: Trms.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Trms.obj -MD -MP -MF $(DEPDIR)/cdo-Trms.Tpo -c -o cdo-Trms.obj `if test -f 'Trms.c'; then $(CYGPATH_W) 'Trms.c'; else $(CYGPATH_W) '$(srcdir)/Trms.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trms.Tpo $(DEPDIR)/cdo-Trms.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Trms.c' object='cdo-Trms.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Trms.obj `if test -f 'Trms.c'; then $(CYGPATH_W) 'Trms.c'; else $(CYGPATH_W) '$(srcdir)/Trms.c'; fi`
-
-cdo-Tstepcount.o: Tstepcount.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tstepcount.o -MD -MP -MF $(DEPDIR)/cdo-Tstepcount.Tpo -c -o cdo-Tstepcount.o `test -f 'Tstepcount.c' || echo '$(srcdir)/'`Tstepcount.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tstepcount.Tpo $(DEPDIR)/cdo-Tstepcount.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tstepcount.c' object='cdo-Tstepcount.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tstepcount.o `test -f 'Tstepcount.c' || echo '$(srcdir)/'`Tstepcount.c
-
-cdo-Tstepcount.obj: Tstepcount.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Tstepcount.obj -MD -MP -MF $(DEPDIR)/cdo-Tstepcount.Tpo -c -o cdo-Tstepcount.obj `if test -f 'Tstepcount.c'; then $(CYGPATH_W) 'Tstepcount.c'; else $(CYGPATH_W) '$(srcdir)/Tstepcount.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tstepcount.Tpo $(DEPDIR)/cdo-Tstepcount.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Tstepcount.c' object='cdo-Tstepcount.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Tstepcount.obj `if test -f 'Tstepcount.c'; then $(CYGPATH_W) 'Tstepcount.c'; else $(CYGPATH_W) '$(srcdir)/Tstepcount.c'; fi`
-
-cdo-Vargen.o: Vargen.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vargen.o -MD -MP -MF $(DEPDIR)/cdo-Vargen.Tpo -c -o cdo-Vargen.o `test -f 'Vargen.c' || echo '$(srcdir)/'`Vargen.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vargen.Tpo $(DEPDIR)/cdo-Vargen.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vargen.c' object='cdo-Vargen.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vargen.o `test -f 'Vargen.c' || echo '$(srcdir)/'`Vargen.c
-
-cdo-Vargen.obj: Vargen.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vargen.obj -MD -MP -MF $(DEPDIR)/cdo-Vargen.Tpo -c -o cdo-Vargen.obj `if test -f 'Vargen.c'; then $(CYGPATH_W) 'Vargen.c'; else $(CYGPATH_W) '$(srcdir)/Vargen.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vargen.Tpo $(DEPDIR)/cdo-Vargen.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vargen.c' object='cdo-Vargen.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vargen.obj `if test -f 'Vargen.c'; then $(CYGPATH_W) 'Vargen.c'; else $(CYGPATH_W) '$(srcdir)/Vargen.c'; fi`
-
-cdo-Varrms.o: Varrms.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Varrms.o -MD -MP -MF $(DEPDIR)/cdo-Varrms.Tpo -c -o cdo-Varrms.o `test -f 'Varrms.c' || echo '$(srcdir)/'`Varrms.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Varrms.Tpo $(DEPDIR)/cdo-Varrms.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Varrms.c' object='cdo-Varrms.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Varrms.o `test -f 'Varrms.c' || echo '$(srcdir)/'`Varrms.c
-
-cdo-Varrms.obj: Varrms.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Varrms.obj -MD -MP -MF $(DEPDIR)/cdo-Varrms.Tpo -c -o cdo-Varrms.obj `if test -f 'Varrms.c'; then $(CYGPATH_W) 'Varrms.c'; else $(CYGPATH_W) '$(srcdir)/Varrms.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Varrms.Tpo $(DEPDIR)/cdo-Varrms.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Varrms.c' object='cdo-Varrms.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Varrms.obj `if test -f 'Varrms.c'; then $(CYGPATH_W) 'Varrms.c'; else $(CYGPATH_W) '$(srcdir)/Varrms.c'; fi`
-
-cdo-Vertintml.o: Vertintml.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertintml.o -MD -MP -MF $(DEPDIR)/cdo-Vertintml.Tpo -c -o cdo-Vertintml.o `test -f 'Vertintml.c' || echo '$(srcdir)/'`Vertintml.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintml.Tpo $(DEPDIR)/cdo-Vertintml.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertintml.c' object='cdo-Vertintml.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertintml.o `test -f 'Vertintml.c' || echo '$(srcdir)/'`Vertintml.c
-
-cdo-Vertintml.obj: Vertintml.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertintml.obj -MD -MP -MF $(DEPDIR)/cdo-Vertintml.Tpo -c -o cdo-Vertintml.obj `if test -f 'Vertintml.c'; then $(CYGPATH_W) 'Vertintml.c'; else $(CYGPATH_W) '$(srcdir)/Vertintml.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintml.Tpo $(DEPDIR)/cdo-Vertintml.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertintml.c' object='cdo-Vertintml.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertintml.obj `if test -f 'Vertintml.c'; then $(CYGPATH_W) 'Vertintml.c'; else $(CYGPATH_W) '$(srcdir)/Vertintml.c'; fi`
-
-cdo-Vertintap.o: Vertintap.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertintap.o -MD -MP -MF $(DEPDIR)/cdo-Vertintap.Tpo -c -o cdo-Vertintap.o `test -f 'Vertintap.c' || echo '$(srcdir)/'`Vertintap.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintap.Tpo $(DEPDIR)/cdo-Vertintap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertintap.c' object='cdo-Vertintap.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertintap.o `test -f 'Vertintap.c' || echo '$(srcdir)/'`Vertintap.c
-
-cdo-Vertintap.obj: Vertintap.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertintap.obj -MD -MP -MF $(DEPDIR)/cdo-Vertintap.Tpo -c -o cdo-Vertintap.obj `if test -f 'Vertintap.c'; then $(CYGPATH_W) 'Vertintap.c'; else $(CYGPATH_W) '$(srcdir)/Vertintap.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintap.Tpo $(DEPDIR)/cdo-Vertintap.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertintap.c' object='cdo-Vertintap.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertintap.obj `if test -f 'Vertintap.c'; then $(CYGPATH_W) 'Vertintap.c'; else $(CYGPATH_W) '$(srcdir)/Vertintap.c'; fi`
-
-cdo-Vertstat.o: Vertstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertstat.o -MD -MP -MF $(DEPDIR)/cdo-Vertstat.Tpo -c -o cdo-Vertstat.o `test -f 'Vertstat.c' || echo '$(srcdir)/'`Vertstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertstat.Tpo $(DEPDIR)/cdo-Vertstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertstat.c' object='cdo-Vertstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertstat.o `test -f 'Vertstat.c' || echo '$(srcdir)/'`Vertstat.c
-
-cdo-Vertstat.obj: Vertstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertstat.obj -MD -MP -MF $(DEPDIR)/cdo-Vertstat.Tpo -c -o cdo-Vertstat.obj `if test -f 'Vertstat.c'; then $(CYGPATH_W) 'Vertstat.c'; else $(CYGPATH_W) '$(srcdir)/Vertstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertstat.Tpo $(DEPDIR)/cdo-Vertstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertstat.c' object='cdo-Vertstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertstat.obj `if test -f 'Vertstat.c'; then $(CYGPATH_W) 'Vertstat.c'; else $(CYGPATH_W) '$(srcdir)/Vertstat.c'; fi`
-
-cdo-Vertcum.o: Vertcum.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertcum.o -MD -MP -MF $(DEPDIR)/cdo-Vertcum.Tpo -c -o cdo-Vertcum.o `test -f 'Vertcum.c' || echo '$(srcdir)/'`Vertcum.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertcum.Tpo $(DEPDIR)/cdo-Vertcum.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertcum.c' object='cdo-Vertcum.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertcum.o `test -f 'Vertcum.c' || echo '$(srcdir)/'`Vertcum.c
-
-cdo-Vertcum.obj: Vertcum.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertcum.obj -MD -MP -MF $(DEPDIR)/cdo-Vertcum.Tpo -c -o cdo-Vertcum.obj `if test -f 'Vertcum.c'; then $(CYGPATH_W) 'Vertcum.c'; else $(CYGPATH_W) '$(srcdir)/Vertcum.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertcum.Tpo $(DEPDIR)/cdo-Vertcum.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertcum.c' object='cdo-Vertcum.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertcum.obj `if test -f 'Vertcum.c'; then $(CYGPATH_W) 'Vertcum.c'; else $(CYGPATH_W) '$(srcdir)/Vertcum.c'; fi`
-
-cdo-Vertwind.o: Vertwind.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertwind.o -MD -MP -MF $(DEPDIR)/cdo-Vertwind.Tpo -c -o cdo-Vertwind.o `test -f 'Vertwind.c' || echo '$(srcdir)/'`Vertwind.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertwind.Tpo $(DEPDIR)/cdo-Vertwind.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertwind.c' object='cdo-Vertwind.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertwind.o `test -f 'Vertwind.c' || echo '$(srcdir)/'`Vertwind.c
-
-cdo-Vertwind.obj: Vertwind.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Vertwind.obj -MD -MP -MF $(DEPDIR)/cdo-Vertwind.Tpo -c -o cdo-Vertwind.obj `if test -f 'Vertwind.c'; then $(CYGPATH_W) 'Vertwind.c'; else $(CYGPATH_W) '$(srcdir)/Vertwind.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertwind.Tpo $(DEPDIR)/cdo-Vertwind.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Vertwind.c' object='cdo-Vertwind.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Vertwind.obj `if test -f 'Vertwind.c'; then $(CYGPATH_W) 'Vertwind.c'; else $(CYGPATH_W) '$(srcdir)/Vertwind.c'; fi`
-
-cdo-Verifygrid.o: Verifygrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Verifygrid.o -MD -MP -MF $(DEPDIR)/cdo-Verifygrid.Tpo -c -o cdo-Verifygrid.o `test -f 'Verifygrid.c' || echo '$(srcdir)/'`Verifygrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Verifygrid.Tpo $(DEPDIR)/cdo-Verifygrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Verifygrid.c' object='cdo-Verifygrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Verifygrid.o `test -f 'Verifygrid.c' || echo '$(srcdir)/'`Verifygrid.c
-
-cdo-Verifygrid.obj: Verifygrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Verifygrid.obj -MD -MP -MF $(DEPDIR)/cdo-Verifygrid.Tpo -c -o cdo-Verifygrid.obj `if test -f 'Verifygrid.c'; then $(CYGPATH_W) 'Verifygrid.c'; else $(CYGPATH_W) '$(srcdir)/Verifygrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Verifygrid.Tpo $(DEPDIR)/cdo-Verifygrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Verifygrid.c' object='cdo-Verifygrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Verifygrid.obj `if test -f 'Verifygrid.c'; then $(CYGPATH_W) 'Verifygrid.c'; else $(CYGPATH_W) '$(srcdir)/Verifygrid.c'; fi`
-
-cdo-Wct.o: Wct.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Wct.o -MD -MP -MF $(DEPDIR)/cdo-Wct.Tpo -c -o cdo-Wct.o `test -f 'Wct.c' || echo '$(srcdir)/'`Wct.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wct.Tpo $(DEPDIR)/cdo-Wct.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Wct.c' object='cdo-Wct.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Wct.o `test -f 'Wct.c' || echo '$(srcdir)/'`Wct.c
-
-cdo-Wct.obj: Wct.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Wct.obj -MD -MP -MF $(DEPDIR)/cdo-Wct.Tpo -c -o cdo-Wct.obj `if test -f 'Wct.c'; then $(CYGPATH_W) 'Wct.c'; else $(CYGPATH_W) '$(srcdir)/Wct.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wct.Tpo $(DEPDIR)/cdo-Wct.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Wct.c' object='cdo-Wct.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Wct.obj `if test -f 'Wct.c'; then $(CYGPATH_W) 'Wct.c'; else $(CYGPATH_W) '$(srcdir)/Wct.c'; fi`
-
-cdo-Wind.o: Wind.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Wind.o -MD -MP -MF $(DEPDIR)/cdo-Wind.Tpo -c -o cdo-Wind.o `test -f 'Wind.c' || echo '$(srcdir)/'`Wind.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wind.Tpo $(DEPDIR)/cdo-Wind.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Wind.c' object='cdo-Wind.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Wind.o `test -f 'Wind.c' || echo '$(srcdir)/'`Wind.c
-
-cdo-Wind.obj: Wind.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Wind.obj -MD -MP -MF $(DEPDIR)/cdo-Wind.Tpo -c -o cdo-Wind.obj `if test -f 'Wind.c'; then $(CYGPATH_W) 'Wind.c'; else $(CYGPATH_W) '$(srcdir)/Wind.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wind.Tpo $(DEPDIR)/cdo-Wind.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Wind.c' object='cdo-Wind.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Wind.obj `if test -f 'Wind.c'; then $(CYGPATH_W) 'Wind.c'; else $(CYGPATH_W) '$(srcdir)/Wind.c'; fi`
-
-cdo-WindTrans.o: WindTrans.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-WindTrans.o -MD -MP -MF $(DEPDIR)/cdo-WindTrans.Tpo -c -o cdo-WindTrans.o `test -f 'WindTrans.c' || echo '$(srcdir)/'`WindTrans.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-WindTrans.Tpo $(DEPDIR)/cdo-WindTrans.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='WindTrans.c' object='cdo-WindTrans.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-WindTrans.o `test -f 'WindTrans.c' || echo '$(srcdir)/'`WindTrans.c
-
-cdo-WindTrans.obj: WindTrans.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-WindTrans.obj -MD -MP -MF $(DEPDIR)/cdo-WindTrans.Tpo -c -o cdo-WindTrans.obj `if test -f 'WindTrans.c'; then $(CYGPATH_W) 'WindTrans.c'; else $(CYGPATH_W) '$(srcdir)/WindTrans.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-WindTrans.Tpo $(DEPDIR)/cdo-WindTrans.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='WindTrans.c' object='cdo-WindTrans.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-WindTrans.obj `if test -f 'WindTrans.c'; then $(CYGPATH_W) 'WindTrans.c'; else $(CYGPATH_W) '$(srcdir)/WindTrans.c'; fi`
-
-cdo-Writegrid.o: Writegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Writegrid.o -MD -MP -MF $(DEPDIR)/cdo-Writegrid.Tpo -c -o cdo-Writegrid.o `test -f 'Writegrid.c' || echo '$(srcdir)/'`Writegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writegrid.Tpo $(DEPDIR)/cdo-Writegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Writegrid.c' object='cdo-Writegrid.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Writegrid.o `test -f 'Writegrid.c' || echo '$(srcdir)/'`Writegrid.c
-
-cdo-Writegrid.obj: Writegrid.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Writegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Writegrid.Tpo -c -o cdo-Writegrid.obj `if test -f 'Writegrid.c'; then $(CYGPATH_W) 'Writegrid.c'; else $(CYGPATH_W) '$(srcdir)/Writegrid.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writegrid.Tpo $(DEPDIR)/cdo-Writegrid.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Writegrid.c' object='cdo-Writegrid.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Writegrid.obj `if test -f 'Writegrid.c'; then $(CYGPATH_W) 'Writegrid.c'; else $(CYGPATH_W) '$(srcdir)/Writegrid.c'; fi`
-
-cdo-Writerandom.o: Writerandom.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Writerandom.o -MD -MP -MF $(DEPDIR)/cdo-Writerandom.Tpo -c -o cdo-Writerandom.o `test -f 'Writerandom.c' || echo '$(srcdir)/'`Writerandom.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writerandom.Tpo $(DEPDIR)/cdo-Writerandom.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Writerandom.c' object='cdo-Writerandom.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Writerandom.o `test -f 'Writerandom.c' || echo '$(srcdir)/'`Writerandom.c
-
-cdo-Writerandom.obj: Writerandom.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Writerandom.obj -MD -MP -MF $(DEPDIR)/cdo-Writerandom.Tpo -c -o cdo-Writerandom.obj `if test -f 'Writerandom.c'; then $(CYGPATH_W) 'Writerandom.c'; else $(CYGPATH_W) '$(srcdir)/Writerandom.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writerandom.Tpo $(DEPDIR)/cdo-Writerandom.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Writerandom.c' object='cdo-Writerandom.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Writerandom.obj `if test -f 'Writerandom.c'; then $(CYGPATH_W) 'Writerandom.c'; else $(CYGPATH_W) '$(srcdir)/Writerandom.c'; fi`
-
-cdo-XTimstat.o: XTimstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-XTimstat.o -MD -MP -MF $(DEPDIR)/cdo-XTimstat.Tpo -c -o cdo-XTimstat.o `test -f 'XTimstat.c' || echo '$(srcdir)/'`XTimstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-XTimstat.Tpo $(DEPDIR)/cdo-XTimstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='XTimstat.c' object='cdo-XTimstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-XTimstat.o `test -f 'XTimstat.c' || echo '$(srcdir)/'`XTimstat.c
-
-cdo-XTimstat.obj: XTimstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-XTimstat.obj -MD -MP -MF $(DEPDIR)/cdo-XTimstat.Tpo -c -o cdo-XTimstat.obj `if test -f 'XTimstat.c'; then $(CYGPATH_W) 'XTimstat.c'; else $(CYGPATH_W) '$(srcdir)/XTimstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-XTimstat.Tpo $(DEPDIR)/cdo-XTimstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='XTimstat.c' object='cdo-XTimstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-XTimstat.obj `if test -f 'XTimstat.c'; then $(CYGPATH_W) 'XTimstat.c'; else $(CYGPATH_W) '$(srcdir)/XTimstat.c'; fi`
-
-cdo-YAR.o: YAR.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-YAR.o -MD -MP -MF $(DEPDIR)/cdo-YAR.Tpo -c -o cdo-YAR.o `test -f 'YAR.c' || echo '$(srcdir)/'`YAR.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-YAR.Tpo $(DEPDIR)/cdo-YAR.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='YAR.c' object='cdo-YAR.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-YAR.o `test -f 'YAR.c' || echo '$(srcdir)/'`YAR.c
-
-cdo-YAR.obj: YAR.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-YAR.obj -MD -MP -MF $(DEPDIR)/cdo-YAR.Tpo -c -o cdo-YAR.obj `if test -f 'YAR.c'; then $(CYGPATH_W) 'YAR.c'; else $(CYGPATH_W) '$(srcdir)/YAR.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-YAR.Tpo $(DEPDIR)/cdo-YAR.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='YAR.c' object='cdo-YAR.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-YAR.obj `if test -f 'YAR.c'; then $(CYGPATH_W) 'YAR.c'; else $(CYGPATH_W) '$(srcdir)/YAR.c'; fi`
-
-cdo-Yearmonstat.o: Yearmonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yearmonstat.o -MD -MP -MF $(DEPDIR)/cdo-Yearmonstat.Tpo -c -o cdo-Yearmonstat.o `test -f 'Yearmonstat.c' || echo '$(srcdir)/'`Yearmonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yearmonstat.Tpo $(DEPDIR)/cdo-Yearmonstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yearmonstat.c' object='cdo-Yearmonstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yearmonstat.o `test -f 'Yearmonstat.c' || echo '$(srcdir)/'`Yearmonstat.c
-
-cdo-Yearmonstat.obj: Yearmonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yearmonstat.obj -MD -MP -MF $(DEPDIR)/cdo-Yearmonstat.Tpo -c -o cdo-Yearmonstat.obj `if test -f 'Yearmonstat.c'; then $(CYGPATH_W) 'Yearmonstat.c'; else $(CYGPATH_W) '$(srcdir)/Yearmonstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yearmonstat.Tpo $(DEPDIR)/cdo-Yearmonstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yearmonstat.c' object='cdo-Yearmonstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yearmonstat.obj `if test -f 'Yearmonstat.c'; then $(CYGPATH_W) 'Yearmonstat.c'; else $(CYGPATH_W) '$(srcdir)/Yearmonstat.c'; fi`
-
-cdo-Ydayarith.o: Ydayarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydayarith.o -MD -MP -MF $(DEPDIR)/cdo-Ydayarith.Tpo -c -o cdo-Ydayarith.o `test -f 'Ydayarith.c' || echo '$(srcdir)/'`Ydayarith.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydayarith.Tpo $(DEPDIR)/cdo-Ydayarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydayarith.c' object='cdo-Ydayarith.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydayarith.o `test -f 'Ydayarith.c' || echo '$(srcdir)/'`Ydayarith.c
-
-cdo-Ydayarith.obj: Ydayarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydayarith.obj -MD -MP -MF $(DEPDIR)/cdo-Ydayarith.Tpo -c -o cdo-Ydayarith.obj `if test -f 'Ydayarith.c'; then $(CYGPATH_W) 'Ydayarith.c'; else $(CYGPATH_W) '$(srcdir)/Ydayarith.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydayarith.Tpo $(DEPDIR)/cdo-Ydayarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydayarith.c' object='cdo-Ydayarith.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydayarith.obj `if test -f 'Ydayarith.c'; then $(CYGPATH_W) 'Ydayarith.c'; else $(CYGPATH_W) '$(srcdir)/Ydayarith.c'; fi`
-
-cdo-Ydaypctl.o: Ydaypctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydaypctl.o -MD -MP -MF $(DEPDIR)/cdo-Ydaypctl.Tpo -c -o cdo-Ydaypctl.o `test -f 'Ydaypctl.c' || echo '$(srcdir)/'`Ydaypctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaypctl.Tpo $(DEPDIR)/cdo-Ydaypctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydaypctl.c' object='cdo-Ydaypctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydaypctl.o `test -f 'Ydaypctl.c' || echo '$(srcdir)/'`Ydaypctl.c
-
-cdo-Ydaypctl.obj: Ydaypctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydaypctl.obj -MD -MP -MF $(DEPDIR)/cdo-Ydaypctl.Tpo -c -o cdo-Ydaypctl.obj `if test -f 'Ydaypctl.c'; then $(CYGPATH_W) 'Ydaypctl.c'; else $(CYGPATH_W) '$(srcdir)/Ydaypctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaypctl.Tpo $(DEPDIR)/cdo-Ydaypctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydaypctl.c' object='cdo-Ydaypctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydaypctl.obj `if test -f 'Ydaypctl.c'; then $(CYGPATH_W) 'Ydaypctl.c'; else $(CYGPATH_W) '$(srcdir)/Ydaypctl.c'; fi`
-
-cdo-Ydaystat.o: Ydaystat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydaystat.o -MD -MP -MF $(DEPDIR)/cdo-Ydaystat.Tpo -c -o cdo-Ydaystat.o `test -f 'Ydaystat.c' || echo '$(srcdir)/'`Ydaystat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaystat.Tpo $(DEPDIR)/cdo-Ydaystat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydaystat.c' object='cdo-Ydaystat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydaystat.o `test -f 'Ydaystat.c' || echo '$(srcdir)/'`Ydaystat.c
-
-cdo-Ydaystat.obj: Ydaystat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydaystat.obj -MD -MP -MF $(DEPDIR)/cdo-Ydaystat.Tpo -c -o cdo-Ydaystat.obj `if test -f 'Ydaystat.c'; then $(CYGPATH_W) 'Ydaystat.c'; else $(CYGPATH_W) '$(srcdir)/Ydaystat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaystat.Tpo $(DEPDIR)/cdo-Ydaystat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydaystat.c' object='cdo-Ydaystat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydaystat.obj `if test -f 'Ydaystat.c'; then $(CYGPATH_W) 'Ydaystat.c'; else $(CYGPATH_W) '$(srcdir)/Ydaystat.c'; fi`
-
-cdo-Ydrunpctl.o: Ydrunpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydrunpctl.o -MD -MP -MF $(DEPDIR)/cdo-Ydrunpctl.Tpo -c -o cdo-Ydrunpctl.o `test -f 'Ydrunpctl.c' || echo '$(srcdir)/'`Ydrunpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunpctl.Tpo $(DEPDIR)/cdo-Ydrunpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydrunpctl.c' object='cdo-Ydrunpctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydrunpctl.o `test -f 'Ydrunpctl.c' || echo '$(srcdir)/'`Ydrunpctl.c
-
-cdo-Ydrunpctl.obj: Ydrunpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydrunpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Ydrunpctl.Tpo -c -o cdo-Ydrunpctl.obj `if test -f 'Ydrunpctl.c'; then $(CYGPATH_W) 'Ydrunpctl.c'; else $(CYGPATH_W) '$(srcdir)/Ydrunpctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunpctl.Tpo $(DEPDIR)/cdo-Ydrunpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydrunpctl.c' object='cdo-Ydrunpctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydrunpctl.obj `if test -f 'Ydrunpctl.c'; then $(CYGPATH_W) 'Ydrunpctl.c'; else $(CYGPATH_W) '$(srcdir)/Ydrunpctl.c'; fi`
-
-cdo-Ydrunstat.o: Ydrunstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydrunstat.o -MD -MP -MF $(DEPDIR)/cdo-Ydrunstat.Tpo -c -o cdo-Ydrunstat.o `test -f 'Ydrunstat.c' || echo '$(srcdir)/'`Ydrunstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunstat.Tpo $(DEPDIR)/cdo-Ydrunstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydrunstat.c' object='cdo-Ydrunstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydrunstat.o `test -f 'Ydrunstat.c' || echo '$(srcdir)/'`Ydrunstat.c
-
-cdo-Ydrunstat.obj: Ydrunstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ydrunstat.obj -MD -MP -MF $(DEPDIR)/cdo-Ydrunstat.Tpo -c -o cdo-Ydrunstat.obj `if test -f 'Ydrunstat.c'; then $(CYGPATH_W) 'Ydrunstat.c'; else $(CYGPATH_W) '$(srcdir)/Ydrunstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunstat.Tpo $(DEPDIR)/cdo-Ydrunstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ydrunstat.c' object='cdo-Ydrunstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ydrunstat.obj `if test -f 'Ydrunstat.c'; then $(CYGPATH_W) 'Ydrunstat.c'; else $(CYGPATH_W) '$(srcdir)/Ydrunstat.c'; fi`
-
-cdo-Yhourarith.o: Yhourarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yhourarith.o -MD -MP -MF $(DEPDIR)/cdo-Yhourarith.Tpo -c -o cdo-Yhourarith.o `test -f 'Yhourarith.c' || echo '$(srcdir)/'`Yhourarith.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourarith.Tpo $(DEPDIR)/cdo-Yhourarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yhourarith.c' object='cdo-Yhourarith.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yhourarith.o `test -f 'Yhourarith.c' || echo '$(srcdir)/'`Yhourarith.c
-
-cdo-Yhourarith.obj: Yhourarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yhourarith.obj -MD -MP -MF $(DEPDIR)/cdo-Yhourarith.Tpo -c -o cdo-Yhourarith.obj `if test -f 'Yhourarith.c'; then $(CYGPATH_W) 'Yhourarith.c'; else $(CYGPATH_W) '$(srcdir)/Yhourarith.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourarith.Tpo $(DEPDIR)/cdo-Yhourarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yhourarith.c' object='cdo-Yhourarith.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yhourarith.obj `if test -f 'Yhourarith.c'; then $(CYGPATH_W) 'Yhourarith.c'; else $(CYGPATH_W) '$(srcdir)/Yhourarith.c'; fi`
-
-cdo-Yhourstat.o: Yhourstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yhourstat.o -MD -MP -MF $(DEPDIR)/cdo-Yhourstat.Tpo -c -o cdo-Yhourstat.o `test -f 'Yhourstat.c' || echo '$(srcdir)/'`Yhourstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourstat.Tpo $(DEPDIR)/cdo-Yhourstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yhourstat.c' object='cdo-Yhourstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yhourstat.o `test -f 'Yhourstat.c' || echo '$(srcdir)/'`Yhourstat.c
-
-cdo-Yhourstat.obj: Yhourstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yhourstat.obj -MD -MP -MF $(DEPDIR)/cdo-Yhourstat.Tpo -c -o cdo-Yhourstat.obj `if test -f 'Yhourstat.c'; then $(CYGPATH_W) 'Yhourstat.c'; else $(CYGPATH_W) '$(srcdir)/Yhourstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourstat.Tpo $(DEPDIR)/cdo-Yhourstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yhourstat.c' object='cdo-Yhourstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yhourstat.obj `if test -f 'Yhourstat.c'; then $(CYGPATH_W) 'Yhourstat.c'; else $(CYGPATH_W) '$(srcdir)/Yhourstat.c'; fi`
-
-cdo-Ymonarith.o: Ymonarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ymonarith.o -MD -MP -MF $(DEPDIR)/cdo-Ymonarith.Tpo -c -o cdo-Ymonarith.o `test -f 'Ymonarith.c' || echo '$(srcdir)/'`Ymonarith.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonarith.Tpo $(DEPDIR)/cdo-Ymonarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ymonarith.c' object='cdo-Ymonarith.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ymonarith.o `test -f 'Ymonarith.c' || echo '$(srcdir)/'`Ymonarith.c
-
-cdo-Ymonarith.obj: Ymonarith.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ymonarith.obj -MD -MP -MF $(DEPDIR)/cdo-Ymonarith.Tpo -c -o cdo-Ymonarith.obj `if test -f 'Ymonarith.c'; then $(CYGPATH_W) 'Ymonarith.c'; else $(CYGPATH_W) '$(srcdir)/Ymonarith.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonarith.Tpo $(DEPDIR)/cdo-Ymonarith.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ymonarith.c' object='cdo-Ymonarith.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ymonarith.obj `if test -f 'Ymonarith.c'; then $(CYGPATH_W) 'Ymonarith.c'; else $(CYGPATH_W) '$(srcdir)/Ymonarith.c'; fi`
-
-cdo-Ymonpctl.o: Ymonpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ymonpctl.o -MD -MP -MF $(DEPDIR)/cdo-Ymonpctl.Tpo -c -o cdo-Ymonpctl.o `test -f 'Ymonpctl.c' || echo '$(srcdir)/'`Ymonpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonpctl.Tpo $(DEPDIR)/cdo-Ymonpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ymonpctl.c' object='cdo-Ymonpctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ymonpctl.o `test -f 'Ymonpctl.c' || echo '$(srcdir)/'`Ymonpctl.c
-
-cdo-Ymonpctl.obj: Ymonpctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ymonpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Ymonpctl.Tpo -c -o cdo-Ymonpctl.obj `if test -f 'Ymonpctl.c'; then $(CYGPATH_W) 'Ymonpctl.c'; else $(CYGPATH_W) '$(srcdir)/Ymonpctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonpctl.Tpo $(DEPDIR)/cdo-Ymonpctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ymonpctl.c' object='cdo-Ymonpctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ymonpctl.obj `if test -f 'Ymonpctl.c'; then $(CYGPATH_W) 'Ymonpctl.c'; else $(CYGPATH_W) '$(srcdir)/Ymonpctl.c'; fi`
-
-cdo-Ymonstat.o: Ymonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ymonstat.o -MD -MP -MF $(DEPDIR)/cdo-Ymonstat.Tpo -c -o cdo-Ymonstat.o `test -f 'Ymonstat.c' || echo '$(srcdir)/'`Ymonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonstat.Tpo $(DEPDIR)/cdo-Ymonstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ymonstat.c' object='cdo-Ymonstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ymonstat.o `test -f 'Ymonstat.c' || echo '$(srcdir)/'`Ymonstat.c
-
-cdo-Ymonstat.obj: Ymonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Ymonstat.obj -MD -MP -MF $(DEPDIR)/cdo-Ymonstat.Tpo -c -o cdo-Ymonstat.obj `if test -f 'Ymonstat.c'; then $(CYGPATH_W) 'Ymonstat.c'; else $(CYGPATH_W) '$(srcdir)/Ymonstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonstat.Tpo $(DEPDIR)/cdo-Ymonstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Ymonstat.c' object='cdo-Ymonstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Ymonstat.obj `if test -f 'Ymonstat.c'; then $(CYGPATH_W) 'Ymonstat.c'; else $(CYGPATH_W) '$(srcdir)/Ymonstat.c'; fi`
-
-cdo-Yseaspctl.o: Yseaspctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yseaspctl.o -MD -MP -MF $(DEPDIR)/cdo-Yseaspctl.Tpo -c -o cdo-Yseaspctl.o `test -f 'Yseaspctl.c' || echo '$(srcdir)/'`Yseaspctl.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseaspctl.Tpo $(DEPDIR)/cdo-Yseaspctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yseaspctl.c' object='cdo-Yseaspctl.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yseaspctl.o `test -f 'Yseaspctl.c' || echo '$(srcdir)/'`Yseaspctl.c
-
-cdo-Yseaspctl.obj: Yseaspctl.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yseaspctl.obj -MD -MP -MF $(DEPDIR)/cdo-Yseaspctl.Tpo -c -o cdo-Yseaspctl.obj `if test -f 'Yseaspctl.c'; then $(CYGPATH_W) 'Yseaspctl.c'; else $(CYGPATH_W) '$(srcdir)/Yseaspctl.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseaspctl.Tpo $(DEPDIR)/cdo-Yseaspctl.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yseaspctl.c' object='cdo-Yseaspctl.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yseaspctl.obj `if test -f 'Yseaspctl.c'; then $(CYGPATH_W) 'Yseaspctl.c'; else $(CYGPATH_W) '$(srcdir)/Yseaspctl.c'; fi`
-
-cdo-Yseasstat.o: Yseasstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yseasstat.o -MD -MP -MF $(DEPDIR)/cdo-Yseasstat.Tpo -c -o cdo-Yseasstat.o `test -f 'Yseasstat.c' || echo '$(srcdir)/'`Yseasstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseasstat.Tpo $(DEPDIR)/cdo-Yseasstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yseasstat.c' object='cdo-Yseasstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yseasstat.o `test -f 'Yseasstat.c' || echo '$(srcdir)/'`Yseasstat.c
-
-cdo-Yseasstat.obj: Yseasstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Yseasstat.obj -MD -MP -MF $(DEPDIR)/cdo-Yseasstat.Tpo -c -o cdo-Yseasstat.obj `if test -f 'Yseasstat.c'; then $(CYGPATH_W) 'Yseasstat.c'; else $(CYGPATH_W) '$(srcdir)/Yseasstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseasstat.Tpo $(DEPDIR)/cdo-Yseasstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Yseasstat.c' object='cdo-Yseasstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Yseasstat.obj `if test -f 'Yseasstat.c'; then $(CYGPATH_W) 'Yseasstat.c'; else $(CYGPATH_W) '$(srcdir)/Yseasstat.c'; fi`
-
-cdo-Zonstat.o: Zonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Zonstat.o -MD -MP -MF $(DEPDIR)/cdo-Zonstat.Tpo -c -o cdo-Zonstat.o `test -f 'Zonstat.c' || echo '$(srcdir)/'`Zonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Zonstat.Tpo $(DEPDIR)/cdo-Zonstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Zonstat.c' object='cdo-Zonstat.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Zonstat.o `test -f 'Zonstat.c' || echo '$(srcdir)/'`Zonstat.c
-
-cdo-Zonstat.obj: Zonstat.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Zonstat.obj -MD -MP -MF $(DEPDIR)/cdo-Zonstat.Tpo -c -o cdo-Zonstat.obj `if test -f 'Zonstat.c'; then $(CYGPATH_W) 'Zonstat.c'; else $(CYGPATH_W) '$(srcdir)/Zonstat.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Zonstat.Tpo $(DEPDIR)/cdo-Zonstat.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Zonstat.c' object='cdo-Zonstat.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Zonstat.obj `if test -f 'Zonstat.c'; then $(CYGPATH_W) 'Zonstat.c'; else $(CYGPATH_W) '$(srcdir)/Zonstat.c'; fi`
-
-cdo-Magplot.o: Magplot.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Magplot.o -MD -MP -MF $(DEPDIR)/cdo-Magplot.Tpo -c -o cdo-Magplot.o `test -f 'Magplot.c' || echo '$(srcdir)/'`Magplot.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magplot.Tpo $(DEPDIR)/cdo-Magplot.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Magplot.c' object='cdo-Magplot.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Magplot.o `test -f 'Magplot.c' || echo '$(srcdir)/'`Magplot.c
-
-cdo-Magplot.obj: Magplot.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Magplot.obj -MD -MP -MF $(DEPDIR)/cdo-Magplot.Tpo -c -o cdo-Magplot.obj `if test -f 'Magplot.c'; then $(CYGPATH_W) 'Magplot.c'; else $(CYGPATH_W) '$(srcdir)/Magplot.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magplot.Tpo $(DEPDIR)/cdo-Magplot.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Magplot.c' object='cdo-Magplot.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Magplot.obj `if test -f 'Magplot.c'; then $(CYGPATH_W) 'Magplot.c'; else $(CYGPATH_W) '$(srcdir)/Magplot.c'; fi`
-
-cdo-Magvector.o: Magvector.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Magvector.o -MD -MP -MF $(DEPDIR)/cdo-Magvector.Tpo -c -o cdo-Magvector.o `test -f 'Magvector.c' || echo '$(srcdir)/'`Magvector.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magvector.Tpo $(DEPDIR)/cdo-Magvector.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Magvector.c' object='cdo-Magvector.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Magvector.o `test -f 'Magvector.c' || echo '$(srcdir)/'`Magvector.c
-
-cdo-Magvector.obj: Magvector.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Magvector.obj -MD -MP -MF $(DEPDIR)/cdo-Magvector.Tpo -c -o cdo-Magvector.obj `if test -f 'Magvector.c'; then $(CYGPATH_W) 'Magvector.c'; else $(CYGPATH_W) '$(srcdir)/Magvector.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magvector.Tpo $(DEPDIR)/cdo-Magvector.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Magvector.c' object='cdo-Magvector.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Magvector.obj `if test -f 'Magvector.c'; then $(CYGPATH_W) 'Magvector.c'; else $(CYGPATH_W) '$(srcdir)/Magvector.c'; fi`
-
-cdo-Maggraph.o: Maggraph.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Maggraph.o -MD -MP -MF $(DEPDIR)/cdo-Maggraph.Tpo -c -o cdo-Maggraph.o `test -f 'Maggraph.c' || echo '$(srcdir)/'`Maggraph.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maggraph.Tpo $(DEPDIR)/cdo-Maggraph.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Maggraph.c' object='cdo-Maggraph.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Maggraph.o `test -f 'Maggraph.c' || echo '$(srcdir)/'`Maggraph.c
-
-cdo-Maggraph.obj: Maggraph.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-Maggraph.obj -MD -MP -MF $(DEPDIR)/cdo-Maggraph.Tpo -c -o cdo-Maggraph.obj `if test -f 'Maggraph.c'; then $(CYGPATH_W) 'Maggraph.c'; else $(CYGPATH_W) '$(srcdir)/Maggraph.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maggraph.Tpo $(DEPDIR)/cdo-Maggraph.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='Maggraph.c' object='cdo-Maggraph.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-Maggraph.obj `if test -f 'Maggraph.c'; then $(CYGPATH_W) 'Maggraph.c'; else $(CYGPATH_W) '$(srcdir)/Maggraph.c'; fi`
-
-cdo-template_parser.o: template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-template_parser.o -MD -MP -MF $(DEPDIR)/cdo-template_parser.Tpo -c -o cdo-template_parser.o `test -f 'template_parser.c' || echo '$(srcdir)/'`template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-template_parser.Tpo $(DEPDIR)/cdo-template_parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='template_parser.c' object='cdo-template_parser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-template_parser.o `test -f 'template_parser.c' || echo '$(srcdir)/'`template_parser.c
-
-cdo-template_parser.obj: template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-template_parser.obj -MD -MP -MF $(DEPDIR)/cdo-template_parser.Tpo -c -o cdo-template_parser.obj `if test -f 'template_parser.c'; then $(CYGPATH_W) 'template_parser.c'; else $(CYGPATH_W) '$(srcdir)/template_parser.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-template_parser.Tpo $(DEPDIR)/cdo-template_parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='template_parser.c' object='cdo-template_parser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-template_parser.obj `if test -f 'template_parser.c'; then $(CYGPATH_W) 'template_parser.c'; else $(CYGPATH_W) '$(srcdir)/template_parser.c'; fi`
-
-cdo-results_template_parser.o: results_template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-results_template_parser.o -MD -MP -MF $(DEPDIR)/cdo-results_template_parser.Tpo -c -o cdo-results_template_parser.o `test -f 'results_template_parser.c' || echo '$(srcdir)/'`results_template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-results_template_parser.Tpo $(DEPDIR)/cdo-results_template_parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='results_template_parser.c' object='cdo-results_template_parser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-results_template_parser.o `test -f 'results_template_parser.c' || echo '$(srcdir)/'`results_template_parser.c
-
-cdo-results_template_parser.obj: results_template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-results_template_parser.obj -MD -MP -MF $(DEPDIR)/cdo-results_template_parser.Tpo -c -o cdo-results_template_parser.obj `if test -f 'results_template_parser.c'; then $(CYGPATH_W) 'results_template_parser.c'; else $(CYGPATH_W) '$(srcdir)/results_template_parser.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-results_template_parser.Tpo $(DEPDIR)/cdo-results_template_parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='results_template_parser.c' object='cdo-results_template_parser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-results_template_parser.obj `if test -f 'results_template_parser.c'; then $(CYGPATH_W) 'results_template_parser.c'; else $(CYGPATH_W) '$(srcdir)/results_template_parser.c'; fi`
-
-cdo-magics_template_parser.o: magics_template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-magics_template_parser.o -MD -MP -MF $(DEPDIR)/cdo-magics_template_parser.Tpo -c -o cdo-magics_template_parser.o `test -f 'magics_template_parser.c' || echo '$(srcdir)/'`magics_template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-magics_template_parser.Tpo $(DEPDIR)/cdo-magics_template_parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='magics_template_parser.c' object='cdo-magics_template_parser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-magics_template_parser.o `test -f 'magics_template_parser.c' || echo '$(srcdir)/'`magics_template_parser.c
-
-cdo-magics_template_parser.obj: magics_template_parser.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-magics_template_parser.obj -MD -MP -MF $(DEPDIR)/cdo-magics_template_parser.Tpo -c -o cdo-magics_template_parser.obj `if test -f 'magics_template_parser.c'; then $(CYGPATH_W) 'magics_template_parser.c'; else $(CYGPATH_W) '$(srcdir)/magics_template_parser.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-magics_template_parser.Tpo $(DEPDIR)/cdo-magics_template_parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='magics_template_parser.c' object='cdo-magics_template_parser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-magics_template_parser.obj `if test -f 'magics_template_parser.c'; then $(CYGPATH_W) 'magics_template_parser.c'; else $(CYGPATH_W) '$(srcdir)/magics_template_parser.c'; fi`
-
-cdo-StringUtilities.o: StringUtilities.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-StringUtilities.o -MD -MP -MF $(DEPDIR)/cdo-StringUtilities.Tpo -c -o cdo-StringUtilities.o `test -f 'StringUtilities.c' || echo '$(srcdir)/'`StringUtilities.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-StringUtilities.Tpo $(DEPDIR)/cdo-StringUtilities.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='StringUtilities.c' object='cdo-StringUtilities.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-StringUtilities.o `test -f 'StringUtilities.c' || echo '$(srcdir)/'`StringUtilities.c
-
-cdo-StringUtilities.obj: StringUtilities.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-StringUtilities.obj -MD -MP -MF $(DEPDIR)/cdo-StringUtilities.Tpo -c -o cdo-StringUtilities.obj `if test -f 'StringUtilities.c'; then $(CYGPATH_W) 'StringUtilities.c'; else $(CYGPATH_W) '$(srcdir)/StringUtilities.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-StringUtilities.Tpo $(DEPDIR)/cdo-StringUtilities.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='StringUtilities.c' object='cdo-StringUtilities.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-StringUtilities.obj `if test -f 'StringUtilities.c'; then $(CYGPATH_W) 'StringUtilities.c'; else $(CYGPATH_W) '$(srcdir)/StringUtilities.c'; fi`
-
-cdo-CdoMagicsMapper.o: CdoMagicsMapper.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CdoMagicsMapper.o -MD -MP -MF $(DEPDIR)/cdo-CdoMagicsMapper.Tpo -c -o cdo-CdoMagicsMapper.o `test -f 'CdoMagicsMapper.c' || echo '$(srcdir)/'`CdoMagicsMapper.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CdoMagicsMapper.Tpo $(DEPDIR)/cdo-CdoMagicsMapper.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CdoMagicsMapper.c' object='cdo-CdoMagicsMapper.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CdoMagicsMapper.o `test -f 'CdoMagicsMapper.c' || echo '$(srcdir)/'`CdoMagicsMapper.c
-
-cdo-CdoMagicsMapper.obj: CdoMagicsMapper.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdo-CdoMagicsMapper.obj -MD -MP -MF $(DEPDIR)/cdo-CdoMagicsMapper.Tpo -c -o cdo-CdoMagicsMapper.obj `if test -f 'CdoMagicsMapper.c'; then $(CYGPATH_W) 'CdoMagicsMapper.c'; else $(CYGPATH_W) '$(srcdir)/CdoMagicsMapper.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CdoMagicsMapper.Tpo $(DEPDIR)/cdo-CdoMagicsMapper.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='CdoMagicsMapper.c' object='cdo-CdoMagicsMapper.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdo-CdoMagicsMapper.obj `if test -f 'CdoMagicsMapper.c'; then $(CYGPATH_W) 'CdoMagicsMapper.c'; else $(CYGPATH_W) '$(srcdir)/CdoMagicsMapper.c'; fi`
-
-cdotest-cdotest.o: cdotest.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdotest-cdotest.o -MD -MP -MF $(DEPDIR)/cdotest-cdotest.Tpo -c -o cdotest-cdotest.o `test -f 'cdotest.c' || echo '$(srcdir)/'`cdotest.c
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdotest-cdotest.Tpo $(DEPDIR)/cdotest-cdotest.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdotest.c' object='cdotest-cdotest.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdotest-cdotest.o `test -f 'cdotest.c' || echo '$(srcdir)/'`cdotest.c
-
-cdotest-cdotest.obj: cdotest.c
- at am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cdotest-cdotest.obj -MD -MP -MF $(DEPDIR)/cdotest-cdotest.Tpo -c -o cdotest-cdotest.obj `if test -f 'cdotest.c'; then $(CYGPATH_W) 'cdotest.c'; else $(CYGPATH_W) '$(srcdir)/cdotest.c'; fi`
- at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdotest-cdotest.Tpo $(DEPDIR)/cdotest-cdotest.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cdotest.c' object='cdotest-cdotest.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cdotest-cdotest.obj `if test -f 'cdotest.c'; then $(CYGPATH_W) 'cdotest.c'; else $(CYGPATH_W) '$(srcdir)/cdotest.c'; fi`
+.cc.o:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+libcdo_la-array.lo: array.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-array.lo -MD -MP -MF $(DEPDIR)/libcdo_la-array.Tpo -c -o libcdo_la-array.lo `test -f 'array.cc' || echo '$(srcdir)/'`array.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-array.Tpo $(DEPDIR)/libcdo_la-array.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='array.cc' object='libcdo_la-array.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-array.lo `test -f 'array.cc' || echo '$(srcdir)/'`array.cc
+
+libcdo_la-cdo_pthread.lo: cdo_pthread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cdo_pthread.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_pthread.Tpo -c -o libcdo_la-cdo_pthread.lo `test -f 'cdo_pthread.cc' || echo '$(srcdir)/'`cdo_pthread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_pthread.Tpo $(DEPDIR)/libcdo_la-cdo_pthread.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo_pthread.cc' object='libcdo_la-cdo_pthread.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cdo_pthread.lo `test -f 'cdo_pthread.cc' || echo '$(srcdir)/'`cdo_pthread.cc
+
+libcdo_la-cdo_vlist.lo: cdo_vlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cdo_vlist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_vlist.Tpo -c -o libcdo_la-cdo_vlist.lo `test -f 'cdo_vlist.cc' || echo '$(srcdir)/'`cdo_vlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_vlist.Tpo $(DEPDIR)/libcdo_la-cdo_vlist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo_vlist.cc' object='libcdo_la-cdo_vlist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cdo_vlist.lo `test -f 'cdo_vlist.cc' || echo '$(srcdir)/'`cdo_vlist.cc
+
+libcdo_la-cdo_getopt.lo: cdo_getopt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cdo_getopt.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_getopt.Tpo -c -o libcdo_la-cdo_getopt.lo `test -f 'cdo_getopt.cc' || echo '$(srcdir)/'`cdo_getopt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_getopt.Tpo $(DEPDIR)/libcdo_la-cdo_getopt.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo_getopt.cc' object='libcdo_la-cdo_getopt.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cdo_getopt.lo `test -f 'cdo_getopt.cc' || echo '$(srcdir)/'`cdo_getopt.cc
+
+libcdo_la-cdo_task.lo: cdo_task.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cdo_task.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_task.Tpo -c -o libcdo_la-cdo_task.lo `test -f 'cdo_task.cc' || echo '$(srcdir)/'`cdo_task.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_task.Tpo $(DEPDIR)/libcdo_la-cdo_task.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo_task.cc' object='libcdo_la-cdo_task.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cdo_task.lo `test -f 'cdo_task.cc' || echo '$(srcdir)/'`cdo_task.cc
+
+libcdo_la-cdo_history.lo: cdo_history.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cdo_history.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_history.Tpo -c -o libcdo_la-cdo_history.lo `test -f 'cdo_history.cc' || echo '$(srcdir)/'`cdo_history.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_history.Tpo $(DEPDIR)/libcdo_la-cdo_history.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo_history.cc' object='libcdo_la-cdo_history.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cdo_history.lo `test -f 'cdo_history.cc' || echo '$(srcdir)/'`cdo_history.cc
+
+libcdo_la-cdo_read.lo: cdo_read.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cdo_read.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cdo_read.Tpo -c -o libcdo_la-cdo_read.lo `test -f 'cdo_read.cc' || echo '$(srcdir)/'`cdo_read.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cdo_read.Tpo $(DEPDIR)/libcdo_la-cdo_read.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo_read.cc' object='libcdo_la-cdo_read.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cdo_read.lo `test -f 'cdo_read.cc' || echo '$(srcdir)/'`cdo_read.cc
+
+libcdo_la-cmortable_parser.lo: cmortable_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-cmortable_parser.lo -MD -MP -MF $(DEPDIR)/libcdo_la-cmortable_parser.Tpo -c -o libcdo_la-cmortable_parser.lo `test -f 'cmortable_parser.cc' || echo '$(srcdir)/'`cmortable_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-cmortable_parser.Tpo $(DEPDIR)/libcdo_la-cmortable_parser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cmortable_parser.cc' object='libcdo_la-cmortable_parser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-cmortable_parser.lo `test -f 'cmortable_parser.cc' || echo '$(srcdir)/'`cmortable_parser.cc
+
+libcdo_la-after_sptrans.lo: after_sptrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-after_sptrans.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_sptrans.Tpo -c -o libcdo_la-after_sptrans.lo `test -f 'after_sptrans.cc' || echo '$(srcdir)/'`after_sptrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_sptrans.Tpo $(DEPDIR)/libcdo_la-after_sptrans.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='after_sptrans.cc' object='libcdo_la-after_sptrans.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-after_sptrans.lo `test -f 'after_sptrans.cc' || echo '$(srcdir)/'`after_sptrans.cc
+
+libcdo_la-after_fctrans.lo: after_fctrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-after_fctrans.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_fctrans.Tpo -c -o libcdo_la-after_fctrans.lo `test -f 'after_fctrans.cc' || echo '$(srcdir)/'`after_fctrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_fctrans.Tpo $(DEPDIR)/libcdo_la-after_fctrans.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='after_fctrans.cc' object='libcdo_la-after_fctrans.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-after_fctrans.lo `test -f 'after_fctrans.cc' || echo '$(srcdir)/'`after_fctrans.cc
+
+libcdo_la-after_dvtrans.lo: after_dvtrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-after_dvtrans.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_dvtrans.Tpo -c -o libcdo_la-after_dvtrans.lo `test -f 'after_dvtrans.cc' || echo '$(srcdir)/'`after_dvtrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_dvtrans.Tpo $(DEPDIR)/libcdo_la-after_dvtrans.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='after_dvtrans.cc' object='libcdo_la-after_dvtrans.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-after_dvtrans.lo `test -f 'after_dvtrans.cc' || echo '$(srcdir)/'`after_dvtrans.cc
+
+libcdo_la-after_vertint.lo: after_vertint.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-after_vertint.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_vertint.Tpo -c -o libcdo_la-after_vertint.lo `test -f 'after_vertint.cc' || echo '$(srcdir)/'`after_vertint.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_vertint.Tpo $(DEPDIR)/libcdo_la-after_vertint.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='after_vertint.cc' object='libcdo_la-after_vertint.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-after_vertint.lo `test -f 'after_vertint.cc' || echo '$(srcdir)/'`after_vertint.cc
+
+libcdo_la-after_namelist.lo: after_namelist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-after_namelist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-after_namelist.Tpo -c -o libcdo_la-after_namelist.lo `test -f 'after_namelist.cc' || echo '$(srcdir)/'`after_namelist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-after_namelist.Tpo $(DEPDIR)/libcdo_la-after_namelist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='after_namelist.cc' object='libcdo_la-after_namelist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-after_namelist.lo `test -f 'after_namelist.cc' || echo '$(srcdir)/'`after_namelist.cc
+
+libcdo_la-afterburnerlib.lo: afterburnerlib.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-afterburnerlib.lo -MD -MP -MF $(DEPDIR)/libcdo_la-afterburnerlib.Tpo -c -o libcdo_la-afterburnerlib.lo `test -f 'afterburnerlib.cc' || echo '$(srcdir)/'`afterburnerlib.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-afterburnerlib.Tpo $(DEPDIR)/libcdo_la-afterburnerlib.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='afterburnerlib.cc' object='libcdo_la-afterburnerlib.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-afterburnerlib.lo `test -f 'afterburnerlib.cc' || echo '$(srcdir)/'`afterburnerlib.cc
+
+libcdo_la-constants.lo: constants.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-constants.lo -MD -MP -MF $(DEPDIR)/libcdo_la-constants.Tpo -c -o libcdo_la-constants.lo `test -f 'constants.cc' || echo '$(srcdir)/'`constants.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-constants.Tpo $(DEPDIR)/libcdo_la-constants.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='constants.cc' object='libcdo_la-constants.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-constants.lo `test -f 'constants.cc' || echo '$(srcdir)/'`constants.cc
+
+libcdo_la-color.lo: color.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-color.lo -MD -MP -MF $(DEPDIR)/libcdo_la-color.Tpo -c -o libcdo_la-color.lo `test -f 'color.cc' || echo '$(srcdir)/'`color.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-color.Tpo $(DEPDIR)/libcdo_la-color.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='color.cc' object='libcdo_la-color.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-color.lo `test -f 'color.cc' || echo '$(srcdir)/'`color.cc
+
+libcdo_la-commandline.lo: commandline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-commandline.lo -MD -MP -MF $(DEPDIR)/libcdo_la-commandline.Tpo -c -o libcdo_la-commandline.lo `test -f 'commandline.cc' || echo '$(srcdir)/'`commandline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-commandline.Tpo $(DEPDIR)/libcdo_la-commandline.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='commandline.cc' object='libcdo_la-commandline.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-commandline.lo `test -f 'commandline.cc' || echo '$(srcdir)/'`commandline.cc
+
+libcdo_la-convert_units.lo: convert_units.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-convert_units.lo -MD -MP -MF $(DEPDIR)/libcdo_la-convert_units.Tpo -c -o libcdo_la-convert_units.lo `test -f 'convert_units.cc' || echo '$(srcdir)/'`convert_units.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-convert_units.Tpo $(DEPDIR)/libcdo_la-convert_units.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='convert_units.cc' object='libcdo_la-convert_units.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-convert_units.lo `test -f 'convert_units.cc' || echo '$(srcdir)/'`convert_units.cc
+
+libcdo_la-datetime.lo: datetime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-datetime.lo -MD -MP -MF $(DEPDIR)/libcdo_la-datetime.Tpo -c -o libcdo_la-datetime.lo `test -f 'datetime.cc' || echo '$(srcdir)/'`datetime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-datetime.Tpo $(DEPDIR)/libcdo_la-datetime.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='datetime.cc' object='libcdo_la-datetime.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-datetime.lo `test -f 'datetime.cc' || echo '$(srcdir)/'`datetime.cc
+
+libcdo_la-ecacore.lo: ecacore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-ecacore.lo -MD -MP -MF $(DEPDIR)/libcdo_la-ecacore.Tpo -c -o libcdo_la-ecacore.lo `test -f 'ecacore.cc' || echo '$(srcdir)/'`ecacore.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-ecacore.Tpo $(DEPDIR)/libcdo_la-ecacore.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ecacore.cc' object='libcdo_la-ecacore.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-ecacore.lo `test -f 'ecacore.cc' || echo '$(srcdir)/'`ecacore.cc
+
+libcdo_la-ecautil.lo: ecautil.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-ecautil.lo -MD -MP -MF $(DEPDIR)/libcdo_la-ecautil.Tpo -c -o libcdo_la-ecautil.lo `test -f 'ecautil.cc' || echo '$(srcdir)/'`ecautil.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-ecautil.Tpo $(DEPDIR)/libcdo_la-ecautil.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='ecautil.cc' object='libcdo_la-ecautil.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-ecautil.lo `test -f 'ecautil.cc' || echo '$(srcdir)/'`ecautil.cc
+
+libcdo_la-exception.lo: exception.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-exception.lo -MD -MP -MF $(DEPDIR)/libcdo_la-exception.Tpo -c -o libcdo_la-exception.lo `test -f 'exception.cc' || echo '$(srcdir)/'`exception.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-exception.Tpo $(DEPDIR)/libcdo_la-exception.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='exception.cc' object='libcdo_la-exception.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-exception.lo `test -f 'exception.cc' || echo '$(srcdir)/'`exception.cc
+
+libcdo_la-expr.lo: expr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-expr.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr.Tpo -c -o libcdo_la-expr.lo `test -f 'expr.cc' || echo '$(srcdir)/'`expr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr.Tpo $(DEPDIR)/libcdo_la-expr.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='expr.cc' object='libcdo_la-expr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-expr.lo `test -f 'expr.cc' || echo '$(srcdir)/'`expr.cc
+
+libcdo_la-expr_fun.lo: expr_fun.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-expr_fun.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr_fun.Tpo -c -o libcdo_la-expr_fun.lo `test -f 'expr_fun.cc' || echo '$(srcdir)/'`expr_fun.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr_fun.Tpo $(DEPDIR)/libcdo_la-expr_fun.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='expr_fun.cc' object='libcdo_la-expr_fun.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-expr_fun.lo `test -f 'expr_fun.cc' || echo '$(srcdir)/'`expr_fun.cc
+
+libcdo_la-expr_lex.lo: expr_lex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-expr_lex.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr_lex.Tpo -c -o libcdo_la-expr_lex.lo `test -f 'expr_lex.cc' || echo '$(srcdir)/'`expr_lex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr_lex.Tpo $(DEPDIR)/libcdo_la-expr_lex.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='expr_lex.cc' object='libcdo_la-expr_lex.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-expr_lex.lo `test -f 'expr_lex.cc' || echo '$(srcdir)/'`expr_lex.cc
+
+libcdo_la-expr_yacc.lo: expr_yacc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-expr_yacc.lo -MD -MP -MF $(DEPDIR)/libcdo_la-expr_yacc.Tpo -c -o libcdo_la-expr_yacc.lo `test -f 'expr_yacc.cc' || echo '$(srcdir)/'`expr_yacc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-expr_yacc.Tpo $(DEPDIR)/libcdo_la-expr_yacc.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='expr_yacc.cc' object='libcdo_la-expr_yacc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-expr_yacc.lo `test -f 'expr_yacc.cc' || echo '$(srcdir)/'`expr_yacc.cc
+
+libcdo_la-features.lo: features.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-features.lo -MD -MP -MF $(DEPDIR)/libcdo_la-features.Tpo -c -o libcdo_la-features.lo `test -f 'features.cc' || echo '$(srcdir)/'`features.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-features.Tpo $(DEPDIR)/libcdo_la-features.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='features.cc' object='libcdo_la-features.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-features.lo `test -f 'features.cc' || echo '$(srcdir)/'`features.cc
+
+libcdo_la-field.lo: field.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-field.lo -MD -MP -MF $(DEPDIR)/libcdo_la-field.Tpo -c -o libcdo_la-field.lo `test -f 'field.cc' || echo '$(srcdir)/'`field.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-field.Tpo $(DEPDIR)/libcdo_la-field.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='field.cc' object='libcdo_la-field.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-field.lo `test -f 'field.cc' || echo '$(srcdir)/'`field.cc
+
+libcdo_la-field2.lo: field2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-field2.lo -MD -MP -MF $(DEPDIR)/libcdo_la-field2.Tpo -c -o libcdo_la-field2.lo `test -f 'field2.cc' || echo '$(srcdir)/'`field2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-field2.Tpo $(DEPDIR)/libcdo_la-field2.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='field2.cc' object='libcdo_la-field2.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-field2.lo `test -f 'field2.cc' || echo '$(srcdir)/'`field2.cc
+
+libcdo_la-fieldc.lo: fieldc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-fieldc.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldc.Tpo -c -o libcdo_la-fieldc.lo `test -f 'fieldc.cc' || echo '$(srcdir)/'`fieldc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldc.Tpo $(DEPDIR)/libcdo_la-fieldc.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='fieldc.cc' object='libcdo_la-fieldc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-fieldc.lo `test -f 'fieldc.cc' || echo '$(srcdir)/'`fieldc.cc
+
+libcdo_la-fieldmem.lo: fieldmem.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-fieldmem.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldmem.Tpo -c -o libcdo_la-fieldmem.lo `test -f 'fieldmem.cc' || echo '$(srcdir)/'`fieldmem.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldmem.Tpo $(DEPDIR)/libcdo_la-fieldmem.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='fieldmem.cc' object='libcdo_la-fieldmem.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-fieldmem.lo `test -f 'fieldmem.cc' || echo '$(srcdir)/'`fieldmem.cc
+
+libcdo_la-fieldmer.lo: fieldmer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-fieldmer.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldmer.Tpo -c -o libcdo_la-fieldmer.lo `test -f 'fieldmer.cc' || echo '$(srcdir)/'`fieldmer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldmer.Tpo $(DEPDIR)/libcdo_la-fieldmer.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='fieldmer.cc' object='libcdo_la-fieldmer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-fieldmer.lo `test -f 'fieldmer.cc' || echo '$(srcdir)/'`fieldmer.cc
+
+libcdo_la-fieldzon.lo: fieldzon.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-fieldzon.lo -MD -MP -MF $(DEPDIR)/libcdo_la-fieldzon.Tpo -c -o libcdo_la-fieldzon.lo `test -f 'fieldzon.cc' || echo '$(srcdir)/'`fieldzon.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-fieldzon.Tpo $(DEPDIR)/libcdo_la-fieldzon.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='fieldzon.cc' object='libcdo_la-fieldzon.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-fieldzon.lo `test -f 'fieldzon.cc' || echo '$(srcdir)/'`fieldzon.cc
+
+libcdo_la-gradsdeslib.lo: gradsdeslib.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-gradsdeslib.lo -MD -MP -MF $(DEPDIR)/libcdo_la-gradsdeslib.Tpo -c -o libcdo_la-gradsdeslib.lo `test -f 'gradsdeslib.cc' || echo '$(srcdir)/'`gradsdeslib.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-gradsdeslib.Tpo $(DEPDIR)/libcdo_la-gradsdeslib.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gradsdeslib.cc' object='libcdo_la-gradsdeslib.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-gradsdeslib.lo `test -f 'gradsdeslib.cc' || echo '$(srcdir)/'`gradsdeslib.cc
+
+libcdo_la-grid.lo: grid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid.Tpo -c -o libcdo_la-grid.lo `test -f 'grid.cc' || echo '$(srcdir)/'`grid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid.Tpo $(DEPDIR)/libcdo_la-grid.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid.cc' object='libcdo_la-grid.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid.lo `test -f 'grid.cc' || echo '$(srcdir)/'`grid.cc
+
+libcdo_la-grid_proj.lo: grid_proj.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_proj.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_proj.Tpo -c -o libcdo_la-grid_proj.lo `test -f 'grid_proj.cc' || echo '$(srcdir)/'`grid_proj.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_proj.Tpo $(DEPDIR)/libcdo_la-grid_proj.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_proj.cc' object='libcdo_la-grid_proj.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_proj.lo `test -f 'grid_proj.cc' || echo '$(srcdir)/'`grid_proj.cc
+
+libcdo_la-grid_area.lo: grid_area.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_area.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_area.Tpo -c -o libcdo_la-grid_area.lo `test -f 'grid_area.cc' || echo '$(srcdir)/'`grid_area.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_area.Tpo $(DEPDIR)/libcdo_la-grid_area.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_area.cc' object='libcdo_la-grid_area.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_area.lo `test -f 'grid_area.cc' || echo '$(srcdir)/'`grid_area.cc
+
+libcdo_la-grid_define.lo: grid_define.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_define.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_define.Tpo -c -o libcdo_la-grid_define.lo `test -f 'grid_define.cc' || echo '$(srcdir)/'`grid_define.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_define.Tpo $(DEPDIR)/libcdo_la-grid_define.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_define.cc' object='libcdo_la-grid_define.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_define.lo `test -f 'grid_define.cc' || echo '$(srcdir)/'`grid_define.cc
+
+libcdo_la-grid_gme.lo: grid_gme.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_gme.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_gme.Tpo -c -o libcdo_la-grid_gme.lo `test -f 'grid_gme.cc' || echo '$(srcdir)/'`grid_gme.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_gme.Tpo $(DEPDIR)/libcdo_la-grid_gme.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_gme.cc' object='libcdo_la-grid_gme.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_gme.lo `test -f 'grid_gme.cc' || echo '$(srcdir)/'`grid_gme.cc
+
+libcdo_la-grid_rot.lo: grid_rot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_rot.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_rot.Tpo -c -o libcdo_la-grid_rot.lo `test -f 'grid_rot.cc' || echo '$(srcdir)/'`grid_rot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_rot.Tpo $(DEPDIR)/libcdo_la-grid_rot.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_rot.cc' object='libcdo_la-grid_rot.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_rot.lo `test -f 'grid_rot.cc' || echo '$(srcdir)/'`grid_rot.cc
+
+libcdo_la-grid_from_name.lo: grid_from_name.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_from_name.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_from_name.Tpo -c -o libcdo_la-grid_from_name.lo `test -f 'grid_from_name.cc' || echo '$(srcdir)/'`grid_from_name.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_from_name.Tpo $(DEPDIR)/libcdo_la-grid_from_name.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_from_name.cc' object='libcdo_la-grid_from_name.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_from_name.lo `test -f 'grid_from_name.cc' || echo '$(srcdir)/'`grid_from_name.cc
+
+libcdo_la-grid_read.lo: grid_read.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_read.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_read.Tpo -c -o libcdo_la-grid_read.lo `test -f 'grid_read.cc' || echo '$(srcdir)/'`grid_read.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_read.Tpo $(DEPDIR)/libcdo_la-grid_read.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_read.cc' object='libcdo_la-grid_read.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_read.lo `test -f 'grid_read.cc' || echo '$(srcdir)/'`grid_read.cc
+
+libcdo_la-grid_read_pingo.lo: grid_read_pingo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_read_pingo.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_read_pingo.Tpo -c -o libcdo_la-grid_read_pingo.lo `test -f 'grid_read_pingo.cc' || echo '$(srcdir)/'`grid_read_pingo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_read_pingo.Tpo $(DEPDIR)/libcdo_la-grid_read_pingo.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_read_pingo.cc' object='libcdo_la-grid_read_pingo.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_read_pingo.lo `test -f 'grid_read_pingo.cc' || echo '$(srcdir)/'`grid_read_pingo.cc
+
+libcdo_la-grid_print.lo: grid_print.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_print.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_print.Tpo -c -o libcdo_la-grid_print.lo `test -f 'grid_print.cc' || echo '$(srcdir)/'`grid_print.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_print.Tpo $(DEPDIR)/libcdo_la-grid_print.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_print.cc' object='libcdo_la-grid_print.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_print.lo `test -f 'grid_print.cc' || echo '$(srcdir)/'`grid_print.cc
+
+libcdo_la-gridreference.lo: gridreference.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-gridreference.lo -MD -MP -MF $(DEPDIR)/libcdo_la-gridreference.Tpo -c -o libcdo_la-gridreference.lo `test -f 'gridreference.cc' || echo '$(srcdir)/'`gridreference.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-gridreference.Tpo $(DEPDIR)/libcdo_la-gridreference.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gridreference.cc' object='libcdo_la-gridreference.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-gridreference.lo `test -f 'gridreference.cc' || echo '$(srcdir)/'`gridreference.cc
+
+libcdo_la-griddes.lo: griddes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-griddes.lo -MD -MP -MF $(DEPDIR)/libcdo_la-griddes.Tpo -c -o libcdo_la-griddes.lo `test -f 'griddes.cc' || echo '$(srcdir)/'`griddes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-griddes.Tpo $(DEPDIR)/libcdo_la-griddes.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='griddes.cc' object='libcdo_la-griddes.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-griddes.lo `test -f 'griddes.cc' || echo '$(srcdir)/'`griddes.cc
+
+libcdo_la-griddes_h5.lo: griddes_h5.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-griddes_h5.lo -MD -MP -MF $(DEPDIR)/libcdo_la-griddes_h5.Tpo -c -o libcdo_la-griddes_h5.lo `test -f 'griddes_h5.cc' || echo '$(srcdir)/'`griddes_h5.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-griddes_h5.Tpo $(DEPDIR)/libcdo_la-griddes_h5.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='griddes_h5.cc' object='libcdo_la-griddes_h5.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-griddes_h5.lo `test -f 'griddes_h5.cc' || echo '$(srcdir)/'`griddes_h5.cc
+
+libcdo_la-griddes_nc.lo: griddes_nc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-griddes_nc.lo -MD -MP -MF $(DEPDIR)/libcdo_la-griddes_nc.Tpo -c -o libcdo_la-griddes_nc.lo `test -f 'griddes_nc.cc' || echo '$(srcdir)/'`griddes_nc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-griddes_nc.Tpo $(DEPDIR)/libcdo_la-griddes_nc.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='griddes_nc.cc' object='libcdo_la-griddes_nc.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-griddes_nc.lo `test -f 'griddes_nc.cc' || echo '$(srcdir)/'`griddes_nc.cc
+
+libcdo_la-hetaeta.lo: hetaeta.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-hetaeta.lo -MD -MP -MF $(DEPDIR)/libcdo_la-hetaeta.Tpo -c -o libcdo_la-hetaeta.lo `test -f 'hetaeta.cc' || echo '$(srcdir)/'`hetaeta.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-hetaeta.Tpo $(DEPDIR)/libcdo_la-hetaeta.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='hetaeta.cc' object='libcdo_la-hetaeta.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-hetaeta.lo `test -f 'hetaeta.cc' || echo '$(srcdir)/'`hetaeta.cc
+
+libcdo_la-institution.lo: institution.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-institution.lo -MD -MP -MF $(DEPDIR)/libcdo_la-institution.Tpo -c -o libcdo_la-institution.lo `test -f 'institution.cc' || echo '$(srcdir)/'`institution.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-institution.Tpo $(DEPDIR)/libcdo_la-institution.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='institution.cc' object='libcdo_la-institution.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-institution.lo `test -f 'institution.cc' || echo '$(srcdir)/'`institution.cc
+
+libcdo_la-interpol.lo: interpol.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-interpol.lo -MD -MP -MF $(DEPDIR)/libcdo_la-interpol.Tpo -c -o libcdo_la-interpol.lo `test -f 'interpol.cc' || echo '$(srcdir)/'`interpol.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-interpol.Tpo $(DEPDIR)/libcdo_la-interpol.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='interpol.cc' object='libcdo_la-interpol.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-interpol.lo `test -f 'interpol.cc' || echo '$(srcdir)/'`interpol.cc
+
+libcdo_la-job.lo: job.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-job.lo -MD -MP -MF $(DEPDIR)/libcdo_la-job.Tpo -c -o libcdo_la-job.lo `test -f 'job.cc' || echo '$(srcdir)/'`job.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-job.Tpo $(DEPDIR)/libcdo_la-job.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='job.cc' object='libcdo_la-job.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-job.lo `test -f 'job.cc' || echo '$(srcdir)/'`job.cc
+
+libcdo_la-juldate.lo: juldate.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-juldate.lo -MD -MP -MF $(DEPDIR)/libcdo_la-juldate.Tpo -c -o libcdo_la-juldate.lo `test -f 'juldate.cc' || echo '$(srcdir)/'`juldate.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-juldate.Tpo $(DEPDIR)/libcdo_la-juldate.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='juldate.cc' object='libcdo_la-juldate.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-juldate.lo `test -f 'juldate.cc' || echo '$(srcdir)/'`juldate.cc
+
+libcdo_la-grid_search.lo: grid_search.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-grid_search.lo -MD -MP -MF $(DEPDIR)/libcdo_la-grid_search.Tpo -c -o libcdo_la-grid_search.lo `test -f 'grid_search.cc' || echo '$(srcdir)/'`grid_search.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-grid_search.Tpo $(DEPDIR)/libcdo_la-grid_search.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='grid_search.cc' object='libcdo_la-grid_search.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-grid_search.lo `test -f 'grid_search.cc' || echo '$(srcdir)/'`grid_search.cc
+
+libcdo_la-listarray.lo: listarray.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-listarray.lo -MD -MP -MF $(DEPDIR)/libcdo_la-listarray.Tpo -c -o libcdo_la-listarray.lo `test -f 'listarray.cc' || echo '$(srcdir)/'`listarray.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-listarray.Tpo $(DEPDIR)/libcdo_la-listarray.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='listarray.cc' object='libcdo_la-listarray.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-listarray.lo `test -f 'listarray.cc' || echo '$(srcdir)/'`listarray.cc
+
+libcdo_la-list.lo: list.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-list.lo -MD -MP -MF $(DEPDIR)/libcdo_la-list.Tpo -c -o libcdo_la-list.lo `test -f 'list.cc' || echo '$(srcdir)/'`list.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-list.Tpo $(DEPDIR)/libcdo_la-list.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='list.cc' object='libcdo_la-list.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-list.lo `test -f 'list.cc' || echo '$(srcdir)/'`list.cc
+
+libcdo_la-listbuf.lo: listbuf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-listbuf.lo -MD -MP -MF $(DEPDIR)/libcdo_la-listbuf.Tpo -c -o libcdo_la-listbuf.lo `test -f 'listbuf.cc' || echo '$(srcdir)/'`listbuf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-listbuf.Tpo $(DEPDIR)/libcdo_la-listbuf.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='listbuf.cc' object='libcdo_la-listbuf.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-listbuf.lo `test -f 'listbuf.cc' || echo '$(srcdir)/'`listbuf.cc
+
+libcdo_la-merge_sort2.lo: merge_sort2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-merge_sort2.lo -MD -MP -MF $(DEPDIR)/libcdo_la-merge_sort2.Tpo -c -o libcdo_la-merge_sort2.lo `test -f 'merge_sort2.cc' || echo '$(srcdir)/'`merge_sort2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-merge_sort2.Tpo $(DEPDIR)/libcdo_la-merge_sort2.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='merge_sort2.cc' object='libcdo_la-merge_sort2.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-merge_sort2.lo `test -f 'merge_sort2.cc' || echo '$(srcdir)/'`merge_sort2.cc
+
+libcdo_la-modules.lo: modules.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-modules.lo -MD -MP -MF $(DEPDIR)/libcdo_la-modules.Tpo -c -o libcdo_la-modules.lo `test -f 'modules.cc' || echo '$(srcdir)/'`modules.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-modules.Tpo $(DEPDIR)/libcdo_la-modules.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='modules.cc' object='libcdo_la-modules.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-modules.lo `test -f 'modules.cc' || echo '$(srcdir)/'`modules.cc
+
+libcdo_la-namelist.lo: namelist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-namelist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-namelist.Tpo -c -o libcdo_la-namelist.lo `test -f 'namelist.cc' || echo '$(srcdir)/'`namelist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-namelist.Tpo $(DEPDIR)/libcdo_la-namelist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='namelist.cc' object='libcdo_la-namelist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-namelist.lo `test -f 'namelist.cc' || echo '$(srcdir)/'`namelist.cc
+
+libcdo_la-namelist_parser.lo: namelist_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-namelist_parser.lo -MD -MP -MF $(DEPDIR)/libcdo_la-namelist_parser.Tpo -c -o libcdo_la-namelist_parser.lo `test -f 'namelist_parser.cc' || echo '$(srcdir)/'`namelist_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-namelist_parser.Tpo $(DEPDIR)/libcdo_la-namelist_parser.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='namelist_parser.cc' object='libcdo_la-namelist_parser.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-namelist_parser.lo `test -f 'namelist_parser.cc' || echo '$(srcdir)/'`namelist_parser.cc
+
+libcdo_la-normal.lo: normal.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-normal.lo -MD -MP -MF $(DEPDIR)/libcdo_la-normal.Tpo -c -o libcdo_la-normal.lo `test -f 'normal.cc' || echo '$(srcdir)/'`normal.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-normal.Tpo $(DEPDIR)/libcdo_la-normal.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='normal.cc' object='libcdo_la-normal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-normal.lo `test -f 'normal.cc' || echo '$(srcdir)/'`normal.cc
+
+libcdo_la-nth_element.lo: nth_element.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-nth_element.lo -MD -MP -MF $(DEPDIR)/libcdo_la-nth_element.Tpo -c -o libcdo_la-nth_element.lo `test -f 'nth_element.cc' || echo '$(srcdir)/'`nth_element.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-nth_element.Tpo $(DEPDIR)/libcdo_la-nth_element.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nth_element.cc' object='libcdo_la-nth_element.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-nth_element.lo `test -f 'nth_element.cc' || echo '$(srcdir)/'`nth_element.cc
+
+libcdo_la-par_io.lo: par_io.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-par_io.lo -MD -MP -MF $(DEPDIR)/libcdo_la-par_io.Tpo -c -o libcdo_la-par_io.lo `test -f 'par_io.cc' || echo '$(srcdir)/'`par_io.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-par_io.Tpo $(DEPDIR)/libcdo_la-par_io.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='par_io.cc' object='libcdo_la-par_io.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-par_io.lo `test -f 'par_io.cc' || echo '$(srcdir)/'`par_io.cc
+
+libcdo_la-parse_literal.lo: parse_literal.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-parse_literal.lo -MD -MP -MF $(DEPDIR)/libcdo_la-parse_literal.Tpo -c -o libcdo_la-parse_literal.lo `test -f 'parse_literal.cc' || echo '$(srcdir)/'`parse_literal.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-parse_literal.Tpo $(DEPDIR)/libcdo_la-parse_literal.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='parse_literal.cc' object='libcdo_la-parse_literal.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-parse_literal.lo `test -f 'parse_literal.cc' || echo '$(srcdir)/'`parse_literal.cc
+
+libcdo_la-percentiles_hist.lo: percentiles_hist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-percentiles_hist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-percentiles_hist.Tpo -c -o libcdo_la-percentiles_hist.lo `test -f 'percentiles_hist.cc' || echo '$(srcdir)/'`percentiles_hist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-percentiles_hist.Tpo $(DEPDIR)/libcdo_la-percentiles_hist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='percentiles_hist.cc' object='libcdo_la-percentiles_hist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-percentiles_hist.lo `test -f 'percentiles_hist.cc' || echo '$(srcdir)/'`percentiles_hist.cc
+
+libcdo_la-percentiles.lo: percentiles.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-percentiles.lo -MD -MP -MF $(DEPDIR)/libcdo_la-percentiles.Tpo -c -o libcdo_la-percentiles.lo `test -f 'percentiles.cc' || echo '$(srcdir)/'`percentiles.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-percentiles.Tpo $(DEPDIR)/libcdo_la-percentiles.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='percentiles.cc' object='libcdo_la-percentiles.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-percentiles.lo `test -f 'percentiles.cc' || echo '$(srcdir)/'`percentiles.cc
+
+libcdo_la-pipe.lo: pipe.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-pipe.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pipe.Tpo -c -o libcdo_la-pipe.lo `test -f 'pipe.cc' || echo '$(srcdir)/'`pipe.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pipe.Tpo $(DEPDIR)/libcdo_la-pipe.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pipe.cc' object='libcdo_la-pipe.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-pipe.lo `test -f 'pipe.cc' || echo '$(srcdir)/'`pipe.cc
+
+libcdo_la-pmlist.lo: pmlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-pmlist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pmlist.Tpo -c -o libcdo_la-pmlist.lo `test -f 'pmlist.cc' || echo '$(srcdir)/'`pmlist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pmlist.Tpo $(DEPDIR)/libcdo_la-pmlist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pmlist.cc' object='libcdo_la-pmlist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-pmlist.lo `test -f 'pmlist.cc' || echo '$(srcdir)/'`pmlist.cc
+
+libcdo_la-sellist.lo: sellist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-sellist.lo -MD -MP -MF $(DEPDIR)/libcdo_la-sellist.Tpo -c -o libcdo_la-sellist.lo `test -f 'sellist.cc' || echo '$(srcdir)/'`sellist.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-sellist.Tpo $(DEPDIR)/libcdo_la-sellist.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='sellist.cc' object='libcdo_la-sellist.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-sellist.lo `test -f 'sellist.cc' || echo '$(srcdir)/'`sellist.cc
+
+libcdo_la-process.lo: process.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-process.lo -MD -MP -MF $(DEPDIR)/libcdo_la-process.Tpo -c -o libcdo_la-process.lo `test -f 'process.cc' || echo '$(srcdir)/'`process.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-process.Tpo $(DEPDIR)/libcdo_la-process.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='process.cc' object='libcdo_la-process.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-process.lo `test -f 'process.cc' || echo '$(srcdir)/'`process.cc
+
+libcdo_la-pstream.lo: pstream.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-pstream.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pstream.Tpo -c -o libcdo_la-pstream.lo `test -f 'pstream.cc' || echo '$(srcdir)/'`pstream.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pstream.Tpo $(DEPDIR)/libcdo_la-pstream.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pstream.cc' object='libcdo_la-pstream.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-pstream.lo `test -f 'pstream.cc' || echo '$(srcdir)/'`pstream.cc
+
+libcdo_la-pthread_debug.lo: pthread_debug.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-pthread_debug.lo -MD -MP -MF $(DEPDIR)/libcdo_la-pthread_debug.Tpo -c -o libcdo_la-pthread_debug.lo `test -f 'pthread_debug.cc' || echo '$(srcdir)/'`pthread_debug.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-pthread_debug.Tpo $(DEPDIR)/libcdo_la-pthread_debug.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='pthread_debug.cc' object='libcdo_la-pthread_debug.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-pthread_debug.lo `test -f 'pthread_debug.cc' || echo '$(srcdir)/'`pthread_debug.cc
+
+libcdo_la-readline.lo: readline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-readline.lo -MD -MP -MF $(DEPDIR)/libcdo_la-readline.Tpo -c -o libcdo_la-readline.lo `test -f 'readline.cc' || echo '$(srcdir)/'`readline.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-readline.Tpo $(DEPDIR)/libcdo_la-readline.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='readline.cc' object='libcdo_la-readline.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-readline.lo `test -f 'readline.cc' || echo '$(srcdir)/'`readline.cc
+
+libcdo_la-realtime.lo: realtime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-realtime.lo -MD -MP -MF $(DEPDIR)/libcdo_la-realtime.Tpo -c -o libcdo_la-realtime.lo `test -f 'realtime.cc' || echo '$(srcdir)/'`realtime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-realtime.Tpo $(DEPDIR)/libcdo_la-realtime.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='realtime.cc' object='libcdo_la-realtime.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-realtime.lo `test -f 'realtime.cc' || echo '$(srcdir)/'`realtime.cc
+
+libcdo_la-remaplib.lo: remaplib.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remaplib.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remaplib.Tpo -c -o libcdo_la-remaplib.lo `test -f 'remaplib.cc' || echo '$(srcdir)/'`remaplib.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remaplib.Tpo $(DEPDIR)/libcdo_la-remaplib.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remaplib.cc' object='libcdo_la-remaplib.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remaplib.lo `test -f 'remaplib.cc' || echo '$(srcdir)/'`remaplib.cc
+
+libcdo_la-remapsort.lo: remapsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remapsort.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remapsort.Tpo -c -o libcdo_la-remapsort.lo `test -f 'remapsort.cc' || echo '$(srcdir)/'`remapsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remapsort.Tpo $(DEPDIR)/libcdo_la-remapsort.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remapsort.cc' object='libcdo_la-remapsort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remapsort.lo `test -f 'remapsort.cc' || echo '$(srcdir)/'`remapsort.cc
+
+libcdo_la-remap_scrip_io.lo: remap_scrip_io.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_scrip_io.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_scrip_io.Tpo -c -o libcdo_la-remap_scrip_io.lo `test -f 'remap_scrip_io.cc' || echo '$(srcdir)/'`remap_scrip_io.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_scrip_io.Tpo $(DEPDIR)/libcdo_la-remap_scrip_io.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_scrip_io.cc' object='libcdo_la-remap_scrip_io.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_scrip_io.lo `test -f 'remap_scrip_io.cc' || echo '$(srcdir)/'`remap_scrip_io.cc
+
+libcdo_la-remap_search_reg2d.lo: remap_search_reg2d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_search_reg2d.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_search_reg2d.Tpo -c -o libcdo_la-remap_search_reg2d.lo `test -f 'remap_search_reg2d.cc' || echo '$(srcdir)/'`remap_search_reg2d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_search_reg2d.Tpo $(DEPDIR)/libcdo_la-remap_search_reg2d.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_search_reg2d.cc' object='libcdo_la-remap_search_reg2d.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_search_reg2d.lo `test -f 'remap_search_reg2d.cc' || echo '$(srcdir)/'`remap_search_reg2d.cc
+
+libcdo_la-remap_search_latbins.lo: remap_search_latbins.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_search_latbins.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_search_latbins.Tpo -c -o libcdo_la-remap_search_latbins.lo `test -f 'remap_search_latbins.cc' || echo '$(srcdir)/'`remap_search_latbins.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_search_latbins.Tpo $(DEPDIR)/libcdo_la-remap_search_latbins.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_search_latbins.cc' object='libcdo_la-remap_search_latbins.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_search_latbins.lo `test -f 'remap_search_latbins.cc' || echo '$(srcdir)/'`remap_search_latbins.cc
+
+libcdo_la-remap_store_link.lo: remap_store_link.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_store_link.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_store_link.Tpo -c -o libcdo_la-remap_store_link.lo `test -f 'remap_store_link.cc' || echo '$(srcdir)/'`remap_store_link.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_store_link.Tpo $(DEPDIR)/libcdo_la-remap_store_link.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_store_link.cc' object='libcdo_la-remap_store_link.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_store_link.lo `test -f 'remap_store_link.cc' || echo '$(srcdir)/'`remap_store_link.cc
+
+libcdo_la-remap_store_link_cnsrv.lo: remap_store_link_cnsrv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_store_link_cnsrv.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_store_link_cnsrv.Tpo -c -o libcdo_la-remap_store_link_cnsrv.lo `test -f 'remap_store_link_cnsrv.cc' || echo '$(srcdir)/'`remap_store_link_cnsrv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_store_link_cnsrv.Tpo $(DEPDIR)/libcdo_la-remap_store_link_cnsrv.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_store_link_cnsrv.cc' object='libcdo_la-remap_store_link_cnsrv.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_store_link_cnsrv.lo `test -f 'remap_store_link_cnsrv.cc' || echo '$(srcdir)/'`remap_store_link_cnsrv.cc
+
+libcdo_la-remap_conserv.lo: remap_conserv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_conserv.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_conserv.Tpo -c -o libcdo_la-remap_conserv.lo `test -f 'remap_conserv.cc' || echo '$(srcdir)/'`remap_conserv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_conserv.Tpo $(DEPDIR)/libcdo_la-remap_conserv.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_conserv.cc' object='libcdo_la-remap_conserv.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_conserv.lo `test -f 'remap_conserv.cc' || echo '$(srcdir)/'`remap_conserv.cc
+
+libcdo_la-remap_conserv_scrip.lo: remap_conserv_scrip.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_conserv_scrip.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_conserv_scrip.Tpo -c -o libcdo_la-remap_conserv_scrip.lo `test -f 'remap_conserv_scrip.cc' || echo '$(srcdir)/'`remap_conserv_scrip.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_conserv_scrip.Tpo $(DEPDIR)/libcdo_la-remap_conserv_scrip.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_conserv_scrip.cc' object='libcdo_la-remap_conserv_scrip.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_conserv_scrip.lo `test -f 'remap_conserv_scrip.cc' || echo '$(srcdir)/'`remap_conserv_scrip.cc
+
+libcdo_la-remap_distwgt.lo: remap_distwgt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_distwgt.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_distwgt.Tpo -c -o libcdo_la-remap_distwgt.lo `test -f 'remap_distwgt.cc' || echo '$(srcdir)/'`remap_distwgt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_distwgt.Tpo $(DEPDIR)/libcdo_la-remap_distwgt.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_distwgt.cc' object='libcdo_la-remap_distwgt.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_distwgt.lo `test -f 'remap_distwgt.cc' || echo '$(srcdir)/'`remap_distwgt.cc
+
+libcdo_la-remap_bicubic_scrip.lo: remap_bicubic_scrip.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_bicubic_scrip.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_bicubic_scrip.Tpo -c -o libcdo_la-remap_bicubic_scrip.lo `test -f 'remap_bicubic_scrip.cc' || echo '$(srcdir)/'`remap_bicubic_scrip.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_bicubic_scrip.Tpo $(DEPDIR)/libcdo_la-remap_bicubic_scrip.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_bicubic_scrip.cc' object='libcdo_la-remap_bicubic_scrip.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_bicubic_scrip.lo `test -f 'remap_bicubic_scrip.cc' || echo '$(srcdir)/'`remap_bicubic_scrip.cc
+
+libcdo_la-remap_bilinear_scrip.lo: remap_bilinear_scrip.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-remap_bilinear_scrip.lo -MD -MP -MF $(DEPDIR)/libcdo_la-remap_bilinear_scrip.Tpo -c -o libcdo_la-remap_bilinear_scrip.lo `test -f 'remap_bilinear_scrip.cc' || echo '$(srcdir)/'`remap_bilinear_scrip.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-remap_bilinear_scrip.Tpo $(DEPDIR)/libcdo_la-remap_bilinear_scrip.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='remap_bilinear_scrip.cc' object='libcdo_la-remap_bilinear_scrip.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-remap_bilinear_scrip.lo `test -f 'remap_bilinear_scrip.cc' || echo '$(srcdir)/'`remap_bilinear_scrip.cc
+
+libcdo_la-stdnametable.lo: stdnametable.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-stdnametable.lo -MD -MP -MF $(DEPDIR)/libcdo_la-stdnametable.Tpo -c -o libcdo_la-stdnametable.lo `test -f 'stdnametable.cc' || echo '$(srcdir)/'`stdnametable.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-stdnametable.Tpo $(DEPDIR)/libcdo_la-stdnametable.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='stdnametable.cc' object='libcdo_la-stdnametable.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-stdnametable.lo `test -f 'stdnametable.cc' || echo '$(srcdir)/'`stdnametable.cc
+
+libcdo_la-specspace.lo: specspace.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-specspace.lo -MD -MP -MF $(DEPDIR)/libcdo_la-specspace.Tpo -c -o libcdo_la-specspace.lo `test -f 'specspace.cc' || echo '$(srcdir)/'`specspace.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-specspace.Tpo $(DEPDIR)/libcdo_la-specspace.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='specspace.cc' object='libcdo_la-specspace.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-specspace.lo `test -f 'specspace.cc' || echo '$(srcdir)/'`specspace.cc
+
+libcdo_la-statistic.lo: statistic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-statistic.lo -MD -MP -MF $(DEPDIR)/libcdo_la-statistic.Tpo -c -o libcdo_la-statistic.lo `test -f 'statistic.cc' || echo '$(srcdir)/'`statistic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-statistic.Tpo $(DEPDIR)/libcdo_la-statistic.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='statistic.cc' object='libcdo_la-statistic.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-statistic.lo `test -f 'statistic.cc' || echo '$(srcdir)/'`statistic.cc
+
+libcdo_la-table.lo: table.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-table.lo -MD -MP -MF $(DEPDIR)/libcdo_la-table.Tpo -c -o libcdo_la-table.lo `test -f 'table.cc' || echo '$(srcdir)/'`table.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-table.Tpo $(DEPDIR)/libcdo_la-table.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='table.cc' object='libcdo_la-table.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-table.lo `test -f 'table.cc' || echo '$(srcdir)/'`table.cc
+
+libcdo_la-text.lo: text.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-text.lo -MD -MP -MF $(DEPDIR)/libcdo_la-text.Tpo -c -o libcdo_la-text.lo `test -f 'text.cc' || echo '$(srcdir)/'`text.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-text.Tpo $(DEPDIR)/libcdo_la-text.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='text.cc' object='libcdo_la-text.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-text.lo `test -f 'text.cc' || echo '$(srcdir)/'`text.cc
+
+libcdo_la-timer.lo: timer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-timer.lo -MD -MP -MF $(DEPDIR)/libcdo_la-timer.Tpo -c -o libcdo_la-timer.lo `test -f 'timer.cc' || echo '$(srcdir)/'`timer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-timer.Tpo $(DEPDIR)/libcdo_la-timer.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='timer.cc' object='libcdo_la-timer.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-timer.lo `test -f 'timer.cc' || echo '$(srcdir)/'`timer.cc
+
+libcdo_la-userlog.lo: userlog.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-userlog.lo -MD -MP -MF $(DEPDIR)/libcdo_la-userlog.Tpo -c -o libcdo_la-userlog.lo `test -f 'userlog.cc' || echo '$(srcdir)/'`userlog.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-userlog.Tpo $(DEPDIR)/libcdo_la-userlog.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='userlog.cc' object='libcdo_la-userlog.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-userlog.lo `test -f 'userlog.cc' || echo '$(srcdir)/'`userlog.cc
+
+libcdo_la-util.lo: util.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-util.lo -MD -MP -MF $(DEPDIR)/libcdo_la-util.Tpo -c -o libcdo_la-util.lo `test -f 'util.cc' || echo '$(srcdir)/'`util.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-util.Tpo $(DEPDIR)/libcdo_la-util.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='util.cc' object='libcdo_la-util.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-util.lo `test -f 'util.cc' || echo '$(srcdir)/'`util.cc
+
+libcdo_la-zaxis_print.lo: zaxis_print.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-zaxis_print.lo -MD -MP -MF $(DEPDIR)/libcdo_la-zaxis_print.Tpo -c -o libcdo_la-zaxis_print.lo `test -f 'zaxis_print.cc' || echo '$(srcdir)/'`zaxis_print.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-zaxis_print.Tpo $(DEPDIR)/libcdo_la-zaxis_print.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='zaxis_print.cc' object='libcdo_la-zaxis_print.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-zaxis_print.lo `test -f 'zaxis_print.cc' || echo '$(srcdir)/'`zaxis_print.cc
+
+libcdo_la-zaxis.lo: zaxis.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libcdo_la-zaxis.lo -MD -MP -MF $(DEPDIR)/libcdo_la-zaxis.Tpo -c -o libcdo_la-zaxis.lo `test -f 'zaxis.cc' || echo '$(srcdir)/'`zaxis.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcdo_la-zaxis.Tpo $(DEPDIR)/libcdo_la-zaxis.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='zaxis.cc' object='libcdo_la-zaxis.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libcdo_la-zaxis.lo `test -f 'zaxis.cc' || echo '$(srcdir)/'`zaxis.cc
+
+kdtreelib/libcdo_la-kdtree_cartesian.lo: kdtreelib/kdtree_cartesian.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kdtreelib/libcdo_la-kdtree_cartesian.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-kdtree_cartesian.Tpo -c -o kdtreelib/libcdo_la-kdtree_cartesian.lo `test -f 'kdtreelib/kdtree_cartesian.cc' || echo '$(srcdir)/'`kdtreelib/kdtree_cartesian.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-kdtree_cartesian.Tpo kdtreelib/$(DEPDIR)/libcdo_la-kdtree_cartesian.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='kdtreelib/kdtree_cartesian.cc' object='kdtreelib/libcdo_la-kdtree_cartesian.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kdtreelib/libcdo_la-kdtree_cartesian.lo `test -f 'kdtreelib/kdtree_cartesian.cc' || echo '$(srcdir)/'`kdtreelib/kdtree_cartesian.cc
+
+kdtreelib/libcdo_la-kdtree_common.lo: kdtreelib/kdtree_common.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kdtreelib/libcdo_la-kdtree_common.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-kdtree_common.Tpo -c -o kdtreelib/libcdo_la-kdtree_common.lo `test -f 'kdtreelib/kdtree_common.cc' || echo '$(srcdir)/'`kdtreelib/kdtree_common.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-kdtree_common.Tpo kdtreelib/$(DEPDIR)/libcdo_la-kdtree_common.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='kdtreelib/kdtree_common.cc' object='kdtreelib/libcdo_la-kdtree_common.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kdtreelib/libcdo_la-kdtree_common.lo `test -f 'kdtreelib/kdtree_common.cc' || echo '$(srcdir)/'`kdtreelib/kdtree_common.cc
+
+kdtreelib/libcdo_la-kdtree_spherical.lo: kdtreelib/kdtree_spherical.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kdtreelib/libcdo_la-kdtree_spherical.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-kdtree_spherical.Tpo -c -o kdtreelib/libcdo_la-kdtree_spherical.lo `test -f 'kdtreelib/kdtree_spherical.cc' || echo '$(srcdir)/'`kdtreelib/kdtree_spherical.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-kdtree_spherical.Tpo kdtreelib/$(DEPDIR)/libcdo_la-kdtree_spherical.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='kdtreelib/kdtree_spherical.cc' object='kdtreelib/libcdo_la-kdtree_spherical.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kdtreelib/libcdo_la-kdtree_spherical.lo `test -f 'kdtreelib/kdtree_spherical.cc' || echo '$(srcdir)/'`kdtreelib/kdtree_spherical.cc
+
+kdtreelib/libcdo_la-qsort.lo: kdtreelib/qsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kdtreelib/libcdo_la-qsort.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-qsort.Tpo -c -o kdtreelib/libcdo_la-qsort.lo `test -f 'kdtreelib/qsort.cc' || echo '$(srcdir)/'`kdtreelib/qsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-qsort.Tpo kdtreelib/$(DEPDIR)/libcdo_la-qsort.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='kdtreelib/qsort.cc' object='kdtreelib/libcdo_la-qsort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kdtreelib/libcdo_la-qsort.lo `test -f 'kdtreelib/qsort.cc' || echo '$(srcdir)/'`kdtreelib/qsort.cc
+
+kdtreelib/libcdo_la-pmergesort.lo: kdtreelib/pmergesort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kdtreelib/libcdo_la-pmergesort.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-pmergesort.Tpo -c -o kdtreelib/libcdo_la-pmergesort.lo `test -f 'kdtreelib/pmergesort.cc' || echo '$(srcdir)/'`kdtreelib/pmergesort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-pmergesort.Tpo kdtreelib/$(DEPDIR)/libcdo_la-pmergesort.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='kdtreelib/pmergesort.cc' object='kdtreelib/libcdo_la-pmergesort.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kdtreelib/libcdo_la-pmergesort.lo `test -f 'kdtreelib/pmergesort.cc' || echo '$(srcdir)/'`kdtreelib/pmergesort.cc
+
+kdtreelib/libcdo_la-pqueue.lo: kdtreelib/pqueue.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT kdtreelib/libcdo_la-pqueue.lo -MD -MP -MF kdtreelib/$(DEPDIR)/libcdo_la-pqueue.Tpo -c -o kdtreelib/libcdo_la-pqueue.lo `test -f 'kdtreelib/pqueue.cc' || echo '$(srcdir)/'`kdtreelib/pqueue.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) kdtreelib/$(DEPDIR)/libcdo_la-pqueue.Tpo kdtreelib/$(DEPDIR)/libcdo_la-pqueue.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='kdtreelib/pqueue.cc' object='kdtreelib/libcdo_la-pqueue.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o kdtreelib/libcdo_la-pqueue.lo `test -f 'kdtreelib/pqueue.cc' || echo '$(srcdir)/'`kdtreelib/pqueue.cc
+
+cdo-cdo.o: cdo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-cdo.o -MD -MP -MF $(DEPDIR)/cdo-cdo.Tpo -c -o cdo-cdo.o `test -f 'cdo.cc' || echo '$(srcdir)/'`cdo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-cdo.Tpo $(DEPDIR)/cdo-cdo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo.cc' object='cdo-cdo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-cdo.o `test -f 'cdo.cc' || echo '$(srcdir)/'`cdo.cc
+
+cdo-cdo.obj: cdo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-cdo.obj -MD -MP -MF $(DEPDIR)/cdo-cdo.Tpo -c -o cdo-cdo.obj `if test -f 'cdo.cc'; then $(CYGPATH_W) 'cdo.cc'; else $(CYGPATH_W) '$(srcdir)/cdo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-cdo.Tpo $(DEPDIR)/cdo-cdo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdo.cc' object='cdo-cdo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-cdo.obj `if test -f 'cdo.cc'; then $(CYGPATH_W) 'cdo.cc'; else $(CYGPATH_W) '$(srcdir)/cdo.cc'; fi`
+
+cdo-Adisit.o: Adisit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Adisit.o -MD -MP -MF $(DEPDIR)/cdo-Adisit.Tpo -c -o cdo-Adisit.o `test -f 'Adisit.cc' || echo '$(srcdir)/'`Adisit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Adisit.Tpo $(DEPDIR)/cdo-Adisit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Adisit.cc' object='cdo-Adisit.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Adisit.o `test -f 'Adisit.cc' || echo '$(srcdir)/'`Adisit.cc
+
+cdo-Adisit.obj: Adisit.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Adisit.obj -MD -MP -MF $(DEPDIR)/cdo-Adisit.Tpo -c -o cdo-Adisit.obj `if test -f 'Adisit.cc'; then $(CYGPATH_W) 'Adisit.cc'; else $(CYGPATH_W) '$(srcdir)/Adisit.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Adisit.Tpo $(DEPDIR)/cdo-Adisit.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Adisit.cc' object='cdo-Adisit.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Adisit.obj `if test -f 'Adisit.cc'; then $(CYGPATH_W) 'Adisit.cc'; else $(CYGPATH_W) '$(srcdir)/Adisit.cc'; fi`
+
+cdo-Afterburner.o: Afterburner.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Afterburner.o -MD -MP -MF $(DEPDIR)/cdo-Afterburner.Tpo -c -o cdo-Afterburner.o `test -f 'Afterburner.cc' || echo '$(srcdir)/'`Afterburner.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Afterburner.Tpo $(DEPDIR)/cdo-Afterburner.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Afterburner.cc' object='cdo-Afterburner.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Afterburner.o `test -f 'Afterburner.cc' || echo '$(srcdir)/'`Afterburner.cc
+
+cdo-Afterburner.obj: Afterburner.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Afterburner.obj -MD -MP -MF $(DEPDIR)/cdo-Afterburner.Tpo -c -o cdo-Afterburner.obj `if test -f 'Afterburner.cc'; then $(CYGPATH_W) 'Afterburner.cc'; else $(CYGPATH_W) '$(srcdir)/Afterburner.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Afterburner.Tpo $(DEPDIR)/cdo-Afterburner.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Afterburner.cc' object='cdo-Afterburner.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Afterburner.obj `if test -f 'Afterburner.cc'; then $(CYGPATH_W) 'Afterburner.cc'; else $(CYGPATH_W) '$(srcdir)/Afterburner.cc'; fi`
+
+cdo-Arith.o: Arith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arith.o -MD -MP -MF $(DEPDIR)/cdo-Arith.Tpo -c -o cdo-Arith.o `test -f 'Arith.cc' || echo '$(srcdir)/'`Arith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arith.Tpo $(DEPDIR)/cdo-Arith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arith.cc' object='cdo-Arith.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arith.o `test -f 'Arith.cc' || echo '$(srcdir)/'`Arith.cc
+
+cdo-Arith.obj: Arith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arith.obj -MD -MP -MF $(DEPDIR)/cdo-Arith.Tpo -c -o cdo-Arith.obj `if test -f 'Arith.cc'; then $(CYGPATH_W) 'Arith.cc'; else $(CYGPATH_W) '$(srcdir)/Arith.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arith.Tpo $(DEPDIR)/cdo-Arith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arith.cc' object='cdo-Arith.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arith.obj `if test -f 'Arith.cc'; then $(CYGPATH_W) 'Arith.cc'; else $(CYGPATH_W) '$(srcdir)/Arith.cc'; fi`
+
+cdo-Arithc.o: Arithc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arithc.o -MD -MP -MF $(DEPDIR)/cdo-Arithc.Tpo -c -o cdo-Arithc.o `test -f 'Arithc.cc' || echo '$(srcdir)/'`Arithc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithc.Tpo $(DEPDIR)/cdo-Arithc.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arithc.cc' object='cdo-Arithc.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arithc.o `test -f 'Arithc.cc' || echo '$(srcdir)/'`Arithc.cc
+
+cdo-Arithc.obj: Arithc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arithc.obj -MD -MP -MF $(DEPDIR)/cdo-Arithc.Tpo -c -o cdo-Arithc.obj `if test -f 'Arithc.cc'; then $(CYGPATH_W) 'Arithc.cc'; else $(CYGPATH_W) '$(srcdir)/Arithc.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithc.Tpo $(DEPDIR)/cdo-Arithc.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arithc.cc' object='cdo-Arithc.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arithc.obj `if test -f 'Arithc.cc'; then $(CYGPATH_W) 'Arithc.cc'; else $(CYGPATH_W) '$(srcdir)/Arithc.cc'; fi`
+
+cdo-Arithdays.o: Arithdays.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arithdays.o -MD -MP -MF $(DEPDIR)/cdo-Arithdays.Tpo -c -o cdo-Arithdays.o `test -f 'Arithdays.cc' || echo '$(srcdir)/'`Arithdays.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithdays.Tpo $(DEPDIR)/cdo-Arithdays.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arithdays.cc' object='cdo-Arithdays.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arithdays.o `test -f 'Arithdays.cc' || echo '$(srcdir)/'`Arithdays.cc
+
+cdo-Arithdays.obj: Arithdays.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arithdays.obj -MD -MP -MF $(DEPDIR)/cdo-Arithdays.Tpo -c -o cdo-Arithdays.obj `if test -f 'Arithdays.cc'; then $(CYGPATH_W) 'Arithdays.cc'; else $(CYGPATH_W) '$(srcdir)/Arithdays.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithdays.Tpo $(DEPDIR)/cdo-Arithdays.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arithdays.cc' object='cdo-Arithdays.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arithdays.obj `if test -f 'Arithdays.cc'; then $(CYGPATH_W) 'Arithdays.cc'; else $(CYGPATH_W) '$(srcdir)/Arithdays.cc'; fi`
+
+cdo-Arithlat.o: Arithlat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arithlat.o -MD -MP -MF $(DEPDIR)/cdo-Arithlat.Tpo -c -o cdo-Arithlat.o `test -f 'Arithlat.cc' || echo '$(srcdir)/'`Arithlat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithlat.Tpo $(DEPDIR)/cdo-Arithlat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arithlat.cc' object='cdo-Arithlat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arithlat.o `test -f 'Arithlat.cc' || echo '$(srcdir)/'`Arithlat.cc
+
+cdo-Arithlat.obj: Arithlat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Arithlat.obj -MD -MP -MF $(DEPDIR)/cdo-Arithlat.Tpo -c -o cdo-Arithlat.obj `if test -f 'Arithlat.cc'; then $(CYGPATH_W) 'Arithlat.cc'; else $(CYGPATH_W) '$(srcdir)/Arithlat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Arithlat.Tpo $(DEPDIR)/cdo-Arithlat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Arithlat.cc' object='cdo-Arithlat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Arithlat.obj `if test -f 'Arithlat.cc'; then $(CYGPATH_W) 'Arithlat.cc'; else $(CYGPATH_W) '$(srcdir)/Arithlat.cc'; fi`
+
+cdo-CDItest.o: CDItest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CDItest.o -MD -MP -MF $(DEPDIR)/cdo-CDItest.Tpo -c -o cdo-CDItest.o `test -f 'CDItest.cc' || echo '$(srcdir)/'`CDItest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDItest.Tpo $(DEPDIR)/cdo-CDItest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CDItest.cc' object='cdo-CDItest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CDItest.o `test -f 'CDItest.cc' || echo '$(srcdir)/'`CDItest.cc
+
+cdo-CDItest.obj: CDItest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CDItest.obj -MD -MP -MF $(DEPDIR)/cdo-CDItest.Tpo -c -o cdo-CDItest.obj `if test -f 'CDItest.cc'; then $(CYGPATH_W) 'CDItest.cc'; else $(CYGPATH_W) '$(srcdir)/CDItest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDItest.Tpo $(DEPDIR)/cdo-CDItest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CDItest.cc' object='cdo-CDItest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CDItest.obj `if test -f 'CDItest.cc'; then $(CYGPATH_W) 'CDItest.cc'; else $(CYGPATH_W) '$(srcdir)/CDItest.cc'; fi`
+
+cdo-CDIread.o: CDIread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CDIread.o -MD -MP -MF $(DEPDIR)/cdo-CDIread.Tpo -c -o cdo-CDIread.o `test -f 'CDIread.cc' || echo '$(srcdir)/'`CDIread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIread.Tpo $(DEPDIR)/cdo-CDIread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CDIread.cc' object='cdo-CDIread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CDIread.o `test -f 'CDIread.cc' || echo '$(srcdir)/'`CDIread.cc
+
+cdo-CDIread.obj: CDIread.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CDIread.obj -MD -MP -MF $(DEPDIR)/cdo-CDIread.Tpo -c -o cdo-CDIread.obj `if test -f 'CDIread.cc'; then $(CYGPATH_W) 'CDIread.cc'; else $(CYGPATH_W) '$(srcdir)/CDIread.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIread.Tpo $(DEPDIR)/cdo-CDIread.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CDIread.cc' object='cdo-CDIread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CDIread.obj `if test -f 'CDIread.cc'; then $(CYGPATH_W) 'CDIread.cc'; else $(CYGPATH_W) '$(srcdir)/CDIread.cc'; fi`
+
+cdo-CDIwrite.o: CDIwrite.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CDIwrite.o -MD -MP -MF $(DEPDIR)/cdo-CDIwrite.Tpo -c -o cdo-CDIwrite.o `test -f 'CDIwrite.cc' || echo '$(srcdir)/'`CDIwrite.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIwrite.Tpo $(DEPDIR)/cdo-CDIwrite.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CDIwrite.cc' object='cdo-CDIwrite.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CDIwrite.o `test -f 'CDIwrite.cc' || echo '$(srcdir)/'`CDIwrite.cc
+
+cdo-CDIwrite.obj: CDIwrite.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CDIwrite.obj -MD -MP -MF $(DEPDIR)/cdo-CDIwrite.Tpo -c -o cdo-CDIwrite.obj `if test -f 'CDIwrite.cc'; then $(CYGPATH_W) 'CDIwrite.cc'; else $(CYGPATH_W) '$(srcdir)/CDIwrite.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CDIwrite.Tpo $(DEPDIR)/cdo-CDIwrite.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CDIwrite.cc' object='cdo-CDIwrite.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CDIwrite.obj `if test -f 'CDIwrite.cc'; then $(CYGPATH_W) 'CDIwrite.cc'; else $(CYGPATH_W) '$(srcdir)/CDIwrite.cc'; fi`
+
+cdo-Cat.o: Cat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cat.o -MD -MP -MF $(DEPDIR)/cdo-Cat.Tpo -c -o cdo-Cat.o `test -f 'Cat.cc' || echo '$(srcdir)/'`Cat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cat.Tpo $(DEPDIR)/cdo-Cat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cat.cc' object='cdo-Cat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cat.o `test -f 'Cat.cc' || echo '$(srcdir)/'`Cat.cc
+
+cdo-Cat.obj: Cat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cat.obj -MD -MP -MF $(DEPDIR)/cdo-Cat.Tpo -c -o cdo-Cat.obj `if test -f 'Cat.cc'; then $(CYGPATH_W) 'Cat.cc'; else $(CYGPATH_W) '$(srcdir)/Cat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cat.Tpo $(DEPDIR)/cdo-Cat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cat.cc' object='cdo-Cat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cat.obj `if test -f 'Cat.cc'; then $(CYGPATH_W) 'Cat.cc'; else $(CYGPATH_W) '$(srcdir)/Cat.cc'; fi`
+
+cdo-Change.o: Change.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Change.o -MD -MP -MF $(DEPDIR)/cdo-Change.Tpo -c -o cdo-Change.o `test -f 'Change.cc' || echo '$(srcdir)/'`Change.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change.Tpo $(DEPDIR)/cdo-Change.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Change.cc' object='cdo-Change.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Change.o `test -f 'Change.cc' || echo '$(srcdir)/'`Change.cc
+
+cdo-Change.obj: Change.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Change.obj -MD -MP -MF $(DEPDIR)/cdo-Change.Tpo -c -o cdo-Change.obj `if test -f 'Change.cc'; then $(CYGPATH_W) 'Change.cc'; else $(CYGPATH_W) '$(srcdir)/Change.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change.Tpo $(DEPDIR)/cdo-Change.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Change.cc' object='cdo-Change.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Change.obj `if test -f 'Change.cc'; then $(CYGPATH_W) 'Change.cc'; else $(CYGPATH_W) '$(srcdir)/Change.cc'; fi`
+
+cdo-Change_e5slm.o: Change_e5slm.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Change_e5slm.o -MD -MP -MF $(DEPDIR)/cdo-Change_e5slm.Tpo -c -o cdo-Change_e5slm.o `test -f 'Change_e5slm.cc' || echo '$(srcdir)/'`Change_e5slm.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change_e5slm.Tpo $(DEPDIR)/cdo-Change_e5slm.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Change_e5slm.cc' object='cdo-Change_e5slm.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Change_e5slm.o `test -f 'Change_e5slm.cc' || echo '$(srcdir)/'`Change_e5slm.cc
+
+cdo-Change_e5slm.obj: Change_e5slm.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Change_e5slm.obj -MD -MP -MF $(DEPDIR)/cdo-Change_e5slm.Tpo -c -o cdo-Change_e5slm.obj `if test -f 'Change_e5slm.cc'; then $(CYGPATH_W) 'Change_e5slm.cc'; else $(CYGPATH_W) '$(srcdir)/Change_e5slm.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Change_e5slm.Tpo $(DEPDIR)/cdo-Change_e5slm.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Change_e5slm.cc' object='cdo-Change_e5slm.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Change_e5slm.obj `if test -f 'Change_e5slm.cc'; then $(CYGPATH_W) 'Change_e5slm.cc'; else $(CYGPATH_W) '$(srcdir)/Change_e5slm.cc'; fi`
+
+cdo-Cloudlayer.o: Cloudlayer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cloudlayer.o -MD -MP -MF $(DEPDIR)/cdo-Cloudlayer.Tpo -c -o cdo-Cloudlayer.o `test -f 'Cloudlayer.cc' || echo '$(srcdir)/'`Cloudlayer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cloudlayer.Tpo $(DEPDIR)/cdo-Cloudlayer.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cloudlayer.cc' object='cdo-Cloudlayer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cloudlayer.o `test -f 'Cloudlayer.cc' || echo '$(srcdir)/'`Cloudlayer.cc
+
+cdo-Cloudlayer.obj: Cloudlayer.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cloudlayer.obj -MD -MP -MF $(DEPDIR)/cdo-Cloudlayer.Tpo -c -o cdo-Cloudlayer.obj `if test -f 'Cloudlayer.cc'; then $(CYGPATH_W) 'Cloudlayer.cc'; else $(CYGPATH_W) '$(srcdir)/Cloudlayer.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cloudlayer.Tpo $(DEPDIR)/cdo-Cloudlayer.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cloudlayer.cc' object='cdo-Cloudlayer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cloudlayer.obj `if test -f 'Cloudlayer.cc'; then $(CYGPATH_W) 'Cloudlayer.cc'; else $(CYGPATH_W) '$(srcdir)/Cloudlayer.cc'; fi`
+
+cdo-CMOR.o: CMOR.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CMOR.o -MD -MP -MF $(DEPDIR)/cdo-CMOR.Tpo -c -o cdo-CMOR.o `test -f 'CMOR.cc' || echo '$(srcdir)/'`CMOR.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR.Tpo $(DEPDIR)/cdo-CMOR.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CMOR.cc' object='cdo-CMOR.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CMOR.o `test -f 'CMOR.cc' || echo '$(srcdir)/'`CMOR.cc
+
+cdo-CMOR.obj: CMOR.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CMOR.obj -MD -MP -MF $(DEPDIR)/cdo-CMOR.Tpo -c -o cdo-CMOR.obj `if test -f 'CMOR.cc'; then $(CYGPATH_W) 'CMOR.cc'; else $(CYGPATH_W) '$(srcdir)/CMOR.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR.Tpo $(DEPDIR)/cdo-CMOR.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CMOR.cc' object='cdo-CMOR.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CMOR.obj `if test -f 'CMOR.cc'; then $(CYGPATH_W) 'CMOR.cc'; else $(CYGPATH_W) '$(srcdir)/CMOR.cc'; fi`
+
+cdo-CMOR_lite.o: CMOR_lite.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CMOR_lite.o -MD -MP -MF $(DEPDIR)/cdo-CMOR_lite.Tpo -c -o cdo-CMOR_lite.o `test -f 'CMOR_lite.cc' || echo '$(srcdir)/'`CMOR_lite.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_lite.Tpo $(DEPDIR)/cdo-CMOR_lite.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CMOR_lite.cc' object='cdo-CMOR_lite.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CMOR_lite.o `test -f 'CMOR_lite.cc' || echo '$(srcdir)/'`CMOR_lite.cc
+
+cdo-CMOR_lite.obj: CMOR_lite.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CMOR_lite.obj -MD -MP -MF $(DEPDIR)/cdo-CMOR_lite.Tpo -c -o cdo-CMOR_lite.obj `if test -f 'CMOR_lite.cc'; then $(CYGPATH_W) 'CMOR_lite.cc'; else $(CYGPATH_W) '$(srcdir)/CMOR_lite.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_lite.Tpo $(DEPDIR)/cdo-CMOR_lite.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CMOR_lite.cc' object='cdo-CMOR_lite.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CMOR_lite.obj `if test -f 'CMOR_lite.cc'; then $(CYGPATH_W) 'CMOR_lite.cc'; else $(CYGPATH_W) '$(srcdir)/CMOR_lite.cc'; fi`
+
+cdo-CMOR_table.o: CMOR_table.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CMOR_table.o -MD -MP -MF $(DEPDIR)/cdo-CMOR_table.Tpo -c -o cdo-CMOR_table.o `test -f 'CMOR_table.cc' || echo '$(srcdir)/'`CMOR_table.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_table.Tpo $(DEPDIR)/cdo-CMOR_table.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CMOR_table.cc' object='cdo-CMOR_table.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CMOR_table.o `test -f 'CMOR_table.cc' || echo '$(srcdir)/'`CMOR_table.cc
+
+cdo-CMOR_table.obj: CMOR_table.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CMOR_table.obj -MD -MP -MF $(DEPDIR)/cdo-CMOR_table.Tpo -c -o cdo-CMOR_table.obj `if test -f 'CMOR_table.cc'; then $(CYGPATH_W) 'CMOR_table.cc'; else $(CYGPATH_W) '$(srcdir)/CMOR_table.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CMOR_table.Tpo $(DEPDIR)/cdo-CMOR_table.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CMOR_table.cc' object='cdo-CMOR_table.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CMOR_table.obj `if test -f 'CMOR_table.cc'; then $(CYGPATH_W) 'CMOR_table.cc'; else $(CYGPATH_W) '$(srcdir)/CMOR_table.cc'; fi`
+
+cdo-Collgrid.o: Collgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Collgrid.o -MD -MP -MF $(DEPDIR)/cdo-Collgrid.Tpo -c -o cdo-Collgrid.o `test -f 'Collgrid.cc' || echo '$(srcdir)/'`Collgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Collgrid.Tpo $(DEPDIR)/cdo-Collgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Collgrid.cc' object='cdo-Collgrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Collgrid.o `test -f 'Collgrid.cc' || echo '$(srcdir)/'`Collgrid.cc
+
+cdo-Collgrid.obj: Collgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Collgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Collgrid.Tpo -c -o cdo-Collgrid.obj `if test -f 'Collgrid.cc'; then $(CYGPATH_W) 'Collgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Collgrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Collgrid.Tpo $(DEPDIR)/cdo-Collgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Collgrid.cc' object='cdo-Collgrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Collgrid.obj `if test -f 'Collgrid.cc'; then $(CYGPATH_W) 'Collgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Collgrid.cc'; fi`
+
+cdo-Command.o: Command.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Command.o -MD -MP -MF $(DEPDIR)/cdo-Command.Tpo -c -o cdo-Command.o `test -f 'Command.cc' || echo '$(srcdir)/'`Command.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Command.Tpo $(DEPDIR)/cdo-Command.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Command.cc' object='cdo-Command.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Command.o `test -f 'Command.cc' || echo '$(srcdir)/'`Command.cc
+
+cdo-Command.obj: Command.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Command.obj -MD -MP -MF $(DEPDIR)/cdo-Command.Tpo -c -o cdo-Command.obj `if test -f 'Command.cc'; then $(CYGPATH_W) 'Command.cc'; else $(CYGPATH_W) '$(srcdir)/Command.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Command.Tpo $(DEPDIR)/cdo-Command.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Command.cc' object='cdo-Command.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Command.obj `if test -f 'Command.cc'; then $(CYGPATH_W) 'Command.cc'; else $(CYGPATH_W) '$(srcdir)/Command.cc'; fi`
+
+cdo-Comp.o: Comp.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Comp.o -MD -MP -MF $(DEPDIR)/cdo-Comp.Tpo -c -o cdo-Comp.o `test -f 'Comp.cc' || echo '$(srcdir)/'`Comp.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Comp.Tpo $(DEPDIR)/cdo-Comp.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Comp.cc' object='cdo-Comp.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Comp.o `test -f 'Comp.cc' || echo '$(srcdir)/'`Comp.cc
+
+cdo-Comp.obj: Comp.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Comp.obj -MD -MP -MF $(DEPDIR)/cdo-Comp.Tpo -c -o cdo-Comp.obj `if test -f 'Comp.cc'; then $(CYGPATH_W) 'Comp.cc'; else $(CYGPATH_W) '$(srcdir)/Comp.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Comp.Tpo $(DEPDIR)/cdo-Comp.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Comp.cc' object='cdo-Comp.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Comp.obj `if test -f 'Comp.cc'; then $(CYGPATH_W) 'Comp.cc'; else $(CYGPATH_W) '$(srcdir)/Comp.cc'; fi`
+
+cdo-Compc.o: Compc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Compc.o -MD -MP -MF $(DEPDIR)/cdo-Compc.Tpo -c -o cdo-Compc.o `test -f 'Compc.cc' || echo '$(srcdir)/'`Compc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Compc.Tpo $(DEPDIR)/cdo-Compc.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Compc.cc' object='cdo-Compc.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Compc.o `test -f 'Compc.cc' || echo '$(srcdir)/'`Compc.cc
+
+cdo-Compc.obj: Compc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Compc.obj -MD -MP -MF $(DEPDIR)/cdo-Compc.Tpo -c -o cdo-Compc.obj `if test -f 'Compc.cc'; then $(CYGPATH_W) 'Compc.cc'; else $(CYGPATH_W) '$(srcdir)/Compc.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Compc.Tpo $(DEPDIR)/cdo-Compc.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Compc.cc' object='cdo-Compc.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Compc.obj `if test -f 'Compc.cc'; then $(CYGPATH_W) 'Compc.cc'; else $(CYGPATH_W) '$(srcdir)/Compc.cc'; fi`
+
+cdo-Complextorect.o: Complextorect.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Complextorect.o -MD -MP -MF $(DEPDIR)/cdo-Complextorect.Tpo -c -o cdo-Complextorect.o `test -f 'Complextorect.cc' || echo '$(srcdir)/'`Complextorect.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Complextorect.Tpo $(DEPDIR)/cdo-Complextorect.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Complextorect.cc' object='cdo-Complextorect.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Complextorect.o `test -f 'Complextorect.cc' || echo '$(srcdir)/'`Complextorect.cc
+
+cdo-Complextorect.obj: Complextorect.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Complextorect.obj -MD -MP -MF $(DEPDIR)/cdo-Complextorect.Tpo -c -o cdo-Complextorect.obj `if test -f 'Complextorect.cc'; then $(CYGPATH_W) 'Complextorect.cc'; else $(CYGPATH_W) '$(srcdir)/Complextorect.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Complextorect.Tpo $(DEPDIR)/cdo-Complextorect.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Complextorect.cc' object='cdo-Complextorect.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Complextorect.obj `if test -f 'Complextorect.cc'; then $(CYGPATH_W) 'Complextorect.cc'; else $(CYGPATH_W) '$(srcdir)/Complextorect.cc'; fi`
+
+cdo-Cond.o: Cond.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cond.o -MD -MP -MF $(DEPDIR)/cdo-Cond.Tpo -c -o cdo-Cond.o `test -f 'Cond.cc' || echo '$(srcdir)/'`Cond.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond.Tpo $(DEPDIR)/cdo-Cond.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cond.cc' object='cdo-Cond.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cond.o `test -f 'Cond.cc' || echo '$(srcdir)/'`Cond.cc
+
+cdo-Cond.obj: Cond.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cond.obj -MD -MP -MF $(DEPDIR)/cdo-Cond.Tpo -c -o cdo-Cond.obj `if test -f 'Cond.cc'; then $(CYGPATH_W) 'Cond.cc'; else $(CYGPATH_W) '$(srcdir)/Cond.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond.Tpo $(DEPDIR)/cdo-Cond.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cond.cc' object='cdo-Cond.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cond.obj `if test -f 'Cond.cc'; then $(CYGPATH_W) 'Cond.cc'; else $(CYGPATH_W) '$(srcdir)/Cond.cc'; fi`
+
+cdo-Cond2.o: Cond2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cond2.o -MD -MP -MF $(DEPDIR)/cdo-Cond2.Tpo -c -o cdo-Cond2.o `test -f 'Cond2.cc' || echo '$(srcdir)/'`Cond2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond2.Tpo $(DEPDIR)/cdo-Cond2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cond2.cc' object='cdo-Cond2.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cond2.o `test -f 'Cond2.cc' || echo '$(srcdir)/'`Cond2.cc
+
+cdo-Cond2.obj: Cond2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Cond2.obj -MD -MP -MF $(DEPDIR)/cdo-Cond2.Tpo -c -o cdo-Cond2.obj `if test -f 'Cond2.cc'; then $(CYGPATH_W) 'Cond2.cc'; else $(CYGPATH_W) '$(srcdir)/Cond2.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Cond2.Tpo $(DEPDIR)/cdo-Cond2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Cond2.cc' object='cdo-Cond2.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Cond2.obj `if test -f 'Cond2.cc'; then $(CYGPATH_W) 'Cond2.cc'; else $(CYGPATH_W) '$(srcdir)/Cond2.cc'; fi`
+
+cdo-Condc.o: Condc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Condc.o -MD -MP -MF $(DEPDIR)/cdo-Condc.Tpo -c -o cdo-Condc.o `test -f 'Condc.cc' || echo '$(srcdir)/'`Condc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Condc.Tpo $(DEPDIR)/cdo-Condc.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Condc.cc' object='cdo-Condc.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Condc.o `test -f 'Condc.cc' || echo '$(srcdir)/'`Condc.cc
+
+cdo-Condc.obj: Condc.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Condc.obj -MD -MP -MF $(DEPDIR)/cdo-Condc.Tpo -c -o cdo-Condc.obj `if test -f 'Condc.cc'; then $(CYGPATH_W) 'Condc.cc'; else $(CYGPATH_W) '$(srcdir)/Condc.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Condc.Tpo $(DEPDIR)/cdo-Condc.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Condc.cc' object='cdo-Condc.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Condc.obj `if test -f 'Condc.cc'; then $(CYGPATH_W) 'Condc.cc'; else $(CYGPATH_W) '$(srcdir)/Condc.cc'; fi`
+
+cdo-Consecstat.o: Consecstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Consecstat.o -MD -MP -MF $(DEPDIR)/cdo-Consecstat.Tpo -c -o cdo-Consecstat.o `test -f 'Consecstat.cc' || echo '$(srcdir)/'`Consecstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Consecstat.Tpo $(DEPDIR)/cdo-Consecstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Consecstat.cc' object='cdo-Consecstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Consecstat.o `test -f 'Consecstat.cc' || echo '$(srcdir)/'`Consecstat.cc
+
+cdo-Consecstat.obj: Consecstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Consecstat.obj -MD -MP -MF $(DEPDIR)/cdo-Consecstat.Tpo -c -o cdo-Consecstat.obj `if test -f 'Consecstat.cc'; then $(CYGPATH_W) 'Consecstat.cc'; else $(CYGPATH_W) '$(srcdir)/Consecstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Consecstat.Tpo $(DEPDIR)/cdo-Consecstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Consecstat.cc' object='cdo-Consecstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Consecstat.obj `if test -f 'Consecstat.cc'; then $(CYGPATH_W) 'Consecstat.cc'; else $(CYGPATH_W) '$(srcdir)/Consecstat.cc'; fi`
+
+cdo-Copy.o: Copy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Copy.o -MD -MP -MF $(DEPDIR)/cdo-Copy.Tpo -c -o cdo-Copy.o `test -f 'Copy.cc' || echo '$(srcdir)/'`Copy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Copy.Tpo $(DEPDIR)/cdo-Copy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Copy.cc' object='cdo-Copy.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Copy.o `test -f 'Copy.cc' || echo '$(srcdir)/'`Copy.cc
+
+cdo-Copy.obj: Copy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Copy.obj -MD -MP -MF $(DEPDIR)/cdo-Copy.Tpo -c -o cdo-Copy.obj `if test -f 'Copy.cc'; then $(CYGPATH_W) 'Copy.cc'; else $(CYGPATH_W) '$(srcdir)/Copy.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Copy.Tpo $(DEPDIR)/cdo-Copy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Copy.cc' object='cdo-Copy.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Copy.obj `if test -f 'Copy.cc'; then $(CYGPATH_W) 'Copy.cc'; else $(CYGPATH_W) '$(srcdir)/Copy.cc'; fi`
+
+cdo-Deltat.o: Deltat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Deltat.o -MD -MP -MF $(DEPDIR)/cdo-Deltat.Tpo -c -o cdo-Deltat.o `test -f 'Deltat.cc' || echo '$(srcdir)/'`Deltat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltat.Tpo $(DEPDIR)/cdo-Deltat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Deltat.cc' object='cdo-Deltat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Deltat.o `test -f 'Deltat.cc' || echo '$(srcdir)/'`Deltat.cc
+
+cdo-Deltat.obj: Deltat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Deltat.obj -MD -MP -MF $(DEPDIR)/cdo-Deltat.Tpo -c -o cdo-Deltat.obj `if test -f 'Deltat.cc'; then $(CYGPATH_W) 'Deltat.cc'; else $(CYGPATH_W) '$(srcdir)/Deltat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltat.Tpo $(DEPDIR)/cdo-Deltat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Deltat.cc' object='cdo-Deltat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Deltat.obj `if test -f 'Deltat.cc'; then $(CYGPATH_W) 'Deltat.cc'; else $(CYGPATH_W) '$(srcdir)/Deltat.cc'; fi`
+
+cdo-Deltime.o: Deltime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Deltime.o -MD -MP -MF $(DEPDIR)/cdo-Deltime.Tpo -c -o cdo-Deltime.o `test -f 'Deltime.cc' || echo '$(srcdir)/'`Deltime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltime.Tpo $(DEPDIR)/cdo-Deltime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Deltime.cc' object='cdo-Deltime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Deltime.o `test -f 'Deltime.cc' || echo '$(srcdir)/'`Deltime.cc
+
+cdo-Deltime.obj: Deltime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Deltime.obj -MD -MP -MF $(DEPDIR)/cdo-Deltime.Tpo -c -o cdo-Deltime.obj `if test -f 'Deltime.cc'; then $(CYGPATH_W) 'Deltime.cc'; else $(CYGPATH_W) '$(srcdir)/Deltime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Deltime.Tpo $(DEPDIR)/cdo-Deltime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Deltime.cc' object='cdo-Deltime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Deltime.obj `if test -f 'Deltime.cc'; then $(CYGPATH_W) 'Deltime.cc'; else $(CYGPATH_W) '$(srcdir)/Deltime.cc'; fi`
+
+cdo-Derivepar.o: Derivepar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Derivepar.o -MD -MP -MF $(DEPDIR)/cdo-Derivepar.Tpo -c -o cdo-Derivepar.o `test -f 'Derivepar.cc' || echo '$(srcdir)/'`Derivepar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Derivepar.Tpo $(DEPDIR)/cdo-Derivepar.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Derivepar.cc' object='cdo-Derivepar.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Derivepar.o `test -f 'Derivepar.cc' || echo '$(srcdir)/'`Derivepar.cc
+
+cdo-Derivepar.obj: Derivepar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Derivepar.obj -MD -MP -MF $(DEPDIR)/cdo-Derivepar.Tpo -c -o cdo-Derivepar.obj `if test -f 'Derivepar.cc'; then $(CYGPATH_W) 'Derivepar.cc'; else $(CYGPATH_W) '$(srcdir)/Derivepar.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Derivepar.Tpo $(DEPDIR)/cdo-Derivepar.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Derivepar.cc' object='cdo-Derivepar.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Derivepar.obj `if test -f 'Derivepar.cc'; then $(CYGPATH_W) 'Derivepar.cc'; else $(CYGPATH_W) '$(srcdir)/Derivepar.cc'; fi`
+
+cdo-Detrend.o: Detrend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Detrend.o -MD -MP -MF $(DEPDIR)/cdo-Detrend.Tpo -c -o cdo-Detrend.o `test -f 'Detrend.cc' || echo '$(srcdir)/'`Detrend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Detrend.Tpo $(DEPDIR)/cdo-Detrend.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Detrend.cc' object='cdo-Detrend.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Detrend.o `test -f 'Detrend.cc' || echo '$(srcdir)/'`Detrend.cc
+
+cdo-Detrend.obj: Detrend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Detrend.obj -MD -MP -MF $(DEPDIR)/cdo-Detrend.Tpo -c -o cdo-Detrend.obj `if test -f 'Detrend.cc'; then $(CYGPATH_W) 'Detrend.cc'; else $(CYGPATH_W) '$(srcdir)/Detrend.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Detrend.Tpo $(DEPDIR)/cdo-Detrend.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Detrend.cc' object='cdo-Detrend.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Detrend.obj `if test -f 'Detrend.cc'; then $(CYGPATH_W) 'Detrend.cc'; else $(CYGPATH_W) '$(srcdir)/Detrend.cc'; fi`
+
+cdo-Diff.o: Diff.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Diff.o -MD -MP -MF $(DEPDIR)/cdo-Diff.Tpo -c -o cdo-Diff.o `test -f 'Diff.cc' || echo '$(srcdir)/'`Diff.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Diff.Tpo $(DEPDIR)/cdo-Diff.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Diff.cc' object='cdo-Diff.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Diff.o `test -f 'Diff.cc' || echo '$(srcdir)/'`Diff.cc
+
+cdo-Diff.obj: Diff.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Diff.obj -MD -MP -MF $(DEPDIR)/cdo-Diff.Tpo -c -o cdo-Diff.obj `if test -f 'Diff.cc'; then $(CYGPATH_W) 'Diff.cc'; else $(CYGPATH_W) '$(srcdir)/Diff.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Diff.Tpo $(DEPDIR)/cdo-Diff.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Diff.cc' object='cdo-Diff.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Diff.obj `if test -f 'Diff.cc'; then $(CYGPATH_W) 'Diff.cc'; else $(CYGPATH_W) '$(srcdir)/Diff.cc'; fi`
+
+cdo-Distgrid.o: Distgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Distgrid.o -MD -MP -MF $(DEPDIR)/cdo-Distgrid.Tpo -c -o cdo-Distgrid.o `test -f 'Distgrid.cc' || echo '$(srcdir)/'`Distgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Distgrid.Tpo $(DEPDIR)/cdo-Distgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Distgrid.cc' object='cdo-Distgrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Distgrid.o `test -f 'Distgrid.cc' || echo '$(srcdir)/'`Distgrid.cc
+
+cdo-Distgrid.obj: Distgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Distgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Distgrid.Tpo -c -o cdo-Distgrid.obj `if test -f 'Distgrid.cc'; then $(CYGPATH_W) 'Distgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Distgrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Distgrid.Tpo $(DEPDIR)/cdo-Distgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Distgrid.cc' object='cdo-Distgrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Distgrid.obj `if test -f 'Distgrid.cc'; then $(CYGPATH_W) 'Distgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Distgrid.cc'; fi`
+
+cdo-Duplicate.o: Duplicate.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Duplicate.o -MD -MP -MF $(DEPDIR)/cdo-Duplicate.Tpo -c -o cdo-Duplicate.o `test -f 'Duplicate.cc' || echo '$(srcdir)/'`Duplicate.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Duplicate.Tpo $(DEPDIR)/cdo-Duplicate.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Duplicate.cc' object='cdo-Duplicate.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Duplicate.o `test -f 'Duplicate.cc' || echo '$(srcdir)/'`Duplicate.cc
+
+cdo-Duplicate.obj: Duplicate.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Duplicate.obj -MD -MP -MF $(DEPDIR)/cdo-Duplicate.Tpo -c -o cdo-Duplicate.obj `if test -f 'Duplicate.cc'; then $(CYGPATH_W) 'Duplicate.cc'; else $(CYGPATH_W) '$(srcdir)/Duplicate.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Duplicate.Tpo $(DEPDIR)/cdo-Duplicate.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Duplicate.cc' object='cdo-Duplicate.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Duplicate.obj `if test -f 'Duplicate.cc'; then $(CYGPATH_W) 'Duplicate.cc'; else $(CYGPATH_W) '$(srcdir)/Duplicate.cc'; fi`
+
+cdo-EOFs.o: EOFs.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-EOFs.o -MD -MP -MF $(DEPDIR)/cdo-EOFs.Tpo -c -o cdo-EOFs.o `test -f 'EOFs.cc' || echo '$(srcdir)/'`EOFs.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EOFs.Tpo $(DEPDIR)/cdo-EOFs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='EOFs.cc' object='cdo-EOFs.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-EOFs.o `test -f 'EOFs.cc' || echo '$(srcdir)/'`EOFs.cc
+
+cdo-EOFs.obj: EOFs.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-EOFs.obj -MD -MP -MF $(DEPDIR)/cdo-EOFs.Tpo -c -o cdo-EOFs.obj `if test -f 'EOFs.cc'; then $(CYGPATH_W) 'EOFs.cc'; else $(CYGPATH_W) '$(srcdir)/EOFs.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EOFs.Tpo $(DEPDIR)/cdo-EOFs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='EOFs.cc' object='cdo-EOFs.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-EOFs.obj `if test -f 'EOFs.cc'; then $(CYGPATH_W) 'EOFs.cc'; else $(CYGPATH_W) '$(srcdir)/EOFs.cc'; fi`
+
+cdo-Eof3d.o: Eof3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Eof3d.o -MD -MP -MF $(DEPDIR)/cdo-Eof3d.Tpo -c -o cdo-Eof3d.o `test -f 'Eof3d.cc' || echo '$(srcdir)/'`Eof3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eof3d.Tpo $(DEPDIR)/cdo-Eof3d.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Eof3d.cc' object='cdo-Eof3d.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Eof3d.o `test -f 'Eof3d.cc' || echo '$(srcdir)/'`Eof3d.cc
+
+cdo-Eof3d.obj: Eof3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Eof3d.obj -MD -MP -MF $(DEPDIR)/cdo-Eof3d.Tpo -c -o cdo-Eof3d.obj `if test -f 'Eof3d.cc'; then $(CYGPATH_W) 'Eof3d.cc'; else $(CYGPATH_W) '$(srcdir)/Eof3d.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eof3d.Tpo $(DEPDIR)/cdo-Eof3d.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Eof3d.cc' object='cdo-Eof3d.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Eof3d.obj `if test -f 'Eof3d.cc'; then $(CYGPATH_W) 'Eof3d.cc'; else $(CYGPATH_W) '$(srcdir)/Eof3d.cc'; fi`
+
+cdo-EcaIndices.o: EcaIndices.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-EcaIndices.o -MD -MP -MF $(DEPDIR)/cdo-EcaIndices.Tpo -c -o cdo-EcaIndices.o `test -f 'EcaIndices.cc' || echo '$(srcdir)/'`EcaIndices.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EcaIndices.Tpo $(DEPDIR)/cdo-EcaIndices.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='EcaIndices.cc' object='cdo-EcaIndices.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-EcaIndices.o `test -f 'EcaIndices.cc' || echo '$(srcdir)/'`EcaIndices.cc
+
+cdo-EcaIndices.obj: EcaIndices.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-EcaIndices.obj -MD -MP -MF $(DEPDIR)/cdo-EcaIndices.Tpo -c -o cdo-EcaIndices.obj `if test -f 'EcaIndices.cc'; then $(CYGPATH_W) 'EcaIndices.cc'; else $(CYGPATH_W) '$(srcdir)/EcaIndices.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-EcaIndices.Tpo $(DEPDIR)/cdo-EcaIndices.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='EcaIndices.cc' object='cdo-EcaIndices.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-EcaIndices.obj `if test -f 'EcaIndices.cc'; then $(CYGPATH_W) 'EcaIndices.cc'; else $(CYGPATH_W) '$(srcdir)/EcaIndices.cc'; fi`
+
+cdo-Echam5ini.o: Echam5ini.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Echam5ini.o -MD -MP -MF $(DEPDIR)/cdo-Echam5ini.Tpo -c -o cdo-Echam5ini.o `test -f 'Echam5ini.cc' || echo '$(srcdir)/'`Echam5ini.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Echam5ini.Tpo $(DEPDIR)/cdo-Echam5ini.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Echam5ini.cc' object='cdo-Echam5ini.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Echam5ini.o `test -f 'Echam5ini.cc' || echo '$(srcdir)/'`Echam5ini.cc
+
+cdo-Echam5ini.obj: Echam5ini.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Echam5ini.obj -MD -MP -MF $(DEPDIR)/cdo-Echam5ini.Tpo -c -o cdo-Echam5ini.obj `if test -f 'Echam5ini.cc'; then $(CYGPATH_W) 'Echam5ini.cc'; else $(CYGPATH_W) '$(srcdir)/Echam5ini.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Echam5ini.Tpo $(DEPDIR)/cdo-Echam5ini.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Echam5ini.cc' object='cdo-Echam5ini.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Echam5ini.obj `if test -f 'Echam5ini.cc'; then $(CYGPATH_W) 'Echam5ini.cc'; else $(CYGPATH_W) '$(srcdir)/Echam5ini.cc'; fi`
+
+cdo-Enlarge.o: Enlarge.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Enlarge.o -MD -MP -MF $(DEPDIR)/cdo-Enlarge.Tpo -c -o cdo-Enlarge.o `test -f 'Enlarge.cc' || echo '$(srcdir)/'`Enlarge.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlarge.Tpo $(DEPDIR)/cdo-Enlarge.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Enlarge.cc' object='cdo-Enlarge.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Enlarge.o `test -f 'Enlarge.cc' || echo '$(srcdir)/'`Enlarge.cc
+
+cdo-Enlarge.obj: Enlarge.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Enlarge.obj -MD -MP -MF $(DEPDIR)/cdo-Enlarge.Tpo -c -o cdo-Enlarge.obj `if test -f 'Enlarge.cc'; then $(CYGPATH_W) 'Enlarge.cc'; else $(CYGPATH_W) '$(srcdir)/Enlarge.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlarge.Tpo $(DEPDIR)/cdo-Enlarge.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Enlarge.cc' object='cdo-Enlarge.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Enlarge.obj `if test -f 'Enlarge.cc'; then $(CYGPATH_W) 'Enlarge.cc'; else $(CYGPATH_W) '$(srcdir)/Enlarge.cc'; fi`
+
+cdo-Enlargegrid.o: Enlargegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Enlargegrid.o -MD -MP -MF $(DEPDIR)/cdo-Enlargegrid.Tpo -c -o cdo-Enlargegrid.o `test -f 'Enlargegrid.cc' || echo '$(srcdir)/'`Enlargegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlargegrid.Tpo $(DEPDIR)/cdo-Enlargegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Enlargegrid.cc' object='cdo-Enlargegrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Enlargegrid.o `test -f 'Enlargegrid.cc' || echo '$(srcdir)/'`Enlargegrid.cc
+
+cdo-Enlargegrid.obj: Enlargegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Enlargegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Enlargegrid.Tpo -c -o cdo-Enlargegrid.obj `if test -f 'Enlargegrid.cc'; then $(CYGPATH_W) 'Enlargegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Enlargegrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Enlargegrid.Tpo $(DEPDIR)/cdo-Enlargegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Enlargegrid.cc' object='cdo-Enlargegrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Enlargegrid.obj `if test -f 'Enlargegrid.cc'; then $(CYGPATH_W) 'Enlargegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Enlargegrid.cc'; fi`
+
+cdo-Ensstat.o: Ensstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ensstat.o -MD -MP -MF $(DEPDIR)/cdo-Ensstat.Tpo -c -o cdo-Ensstat.o `test -f 'Ensstat.cc' || echo '$(srcdir)/'`Ensstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat.Tpo $(DEPDIR)/cdo-Ensstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ensstat.cc' object='cdo-Ensstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ensstat.o `test -f 'Ensstat.cc' || echo '$(srcdir)/'`Ensstat.cc
+
+cdo-Ensstat.obj: Ensstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ensstat.obj -MD -MP -MF $(DEPDIR)/cdo-Ensstat.Tpo -c -o cdo-Ensstat.obj `if test -f 'Ensstat.cc'; then $(CYGPATH_W) 'Ensstat.cc'; else $(CYGPATH_W) '$(srcdir)/Ensstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat.Tpo $(DEPDIR)/cdo-Ensstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ensstat.cc' object='cdo-Ensstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ensstat.obj `if test -f 'Ensstat.cc'; then $(CYGPATH_W) 'Ensstat.cc'; else $(CYGPATH_W) '$(srcdir)/Ensstat.cc'; fi`
+
+cdo-Ensstat3.o: Ensstat3.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ensstat3.o -MD -MP -MF $(DEPDIR)/cdo-Ensstat3.Tpo -c -o cdo-Ensstat3.o `test -f 'Ensstat3.cc' || echo '$(srcdir)/'`Ensstat3.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat3.Tpo $(DEPDIR)/cdo-Ensstat3.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ensstat3.cc' object='cdo-Ensstat3.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ensstat3.o `test -f 'Ensstat3.cc' || echo '$(srcdir)/'`Ensstat3.cc
+
+cdo-Ensstat3.obj: Ensstat3.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ensstat3.obj -MD -MP -MF $(DEPDIR)/cdo-Ensstat3.Tpo -c -o cdo-Ensstat3.obj `if test -f 'Ensstat3.cc'; then $(CYGPATH_W) 'Ensstat3.cc'; else $(CYGPATH_W) '$(srcdir)/Ensstat3.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensstat3.Tpo $(DEPDIR)/cdo-Ensstat3.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ensstat3.cc' object='cdo-Ensstat3.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ensstat3.obj `if test -f 'Ensstat3.cc'; then $(CYGPATH_W) 'Ensstat3.cc'; else $(CYGPATH_W) '$(srcdir)/Ensstat3.cc'; fi`
+
+cdo-Ensval.o: Ensval.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ensval.o -MD -MP -MF $(DEPDIR)/cdo-Ensval.Tpo -c -o cdo-Ensval.o `test -f 'Ensval.cc' || echo '$(srcdir)/'`Ensval.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensval.Tpo $(DEPDIR)/cdo-Ensval.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ensval.cc' object='cdo-Ensval.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ensval.o `test -f 'Ensval.cc' || echo '$(srcdir)/'`Ensval.cc
+
+cdo-Ensval.obj: Ensval.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ensval.obj -MD -MP -MF $(DEPDIR)/cdo-Ensval.Tpo -c -o cdo-Ensval.obj `if test -f 'Ensval.cc'; then $(CYGPATH_W) 'Ensval.cc'; else $(CYGPATH_W) '$(srcdir)/Ensval.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ensval.Tpo $(DEPDIR)/cdo-Ensval.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ensval.cc' object='cdo-Ensval.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ensval.obj `if test -f 'Ensval.cc'; then $(CYGPATH_W) 'Ensval.cc'; else $(CYGPATH_W) '$(srcdir)/Ensval.cc'; fi`
+
+cdo-Eofcoeff.o: Eofcoeff.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Eofcoeff.o -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff.Tpo -c -o cdo-Eofcoeff.o `test -f 'Eofcoeff.cc' || echo '$(srcdir)/'`Eofcoeff.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff.Tpo $(DEPDIR)/cdo-Eofcoeff.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Eofcoeff.cc' object='cdo-Eofcoeff.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Eofcoeff.o `test -f 'Eofcoeff.cc' || echo '$(srcdir)/'`Eofcoeff.cc
+
+cdo-Eofcoeff.obj: Eofcoeff.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Eofcoeff.obj -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff.Tpo -c -o cdo-Eofcoeff.obj `if test -f 'Eofcoeff.cc'; then $(CYGPATH_W) 'Eofcoeff.cc'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff.Tpo $(DEPDIR)/cdo-Eofcoeff.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Eofcoeff.cc' object='cdo-Eofcoeff.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Eofcoeff.obj `if test -f 'Eofcoeff.cc'; then $(CYGPATH_W) 'Eofcoeff.cc'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff.cc'; fi`
+
+cdo-Eofcoeff3d.o: Eofcoeff3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Eofcoeff3d.o -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff3d.Tpo -c -o cdo-Eofcoeff3d.o `test -f 'Eofcoeff3d.cc' || echo '$(srcdir)/'`Eofcoeff3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff3d.Tpo $(DEPDIR)/cdo-Eofcoeff3d.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Eofcoeff3d.cc' object='cdo-Eofcoeff3d.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Eofcoeff3d.o `test -f 'Eofcoeff3d.cc' || echo '$(srcdir)/'`Eofcoeff3d.cc
+
+cdo-Eofcoeff3d.obj: Eofcoeff3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Eofcoeff3d.obj -MD -MP -MF $(DEPDIR)/cdo-Eofcoeff3d.Tpo -c -o cdo-Eofcoeff3d.obj `if test -f 'Eofcoeff3d.cc'; then $(CYGPATH_W) 'Eofcoeff3d.cc'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff3d.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Eofcoeff3d.Tpo $(DEPDIR)/cdo-Eofcoeff3d.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Eofcoeff3d.cc' object='cdo-Eofcoeff3d.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Eofcoeff3d.obj `if test -f 'Eofcoeff3d.cc'; then $(CYGPATH_W) 'Eofcoeff3d.cc'; else $(CYGPATH_W) '$(srcdir)/Eofcoeff3d.cc'; fi`
+
+cdo-Exprf.o: Exprf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Exprf.o -MD -MP -MF $(DEPDIR)/cdo-Exprf.Tpo -c -o cdo-Exprf.o `test -f 'Exprf.cc' || echo '$(srcdir)/'`Exprf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Exprf.Tpo $(DEPDIR)/cdo-Exprf.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Exprf.cc' object='cdo-Exprf.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Exprf.o `test -f 'Exprf.cc' || echo '$(srcdir)/'`Exprf.cc
+
+cdo-Exprf.obj: Exprf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Exprf.obj -MD -MP -MF $(DEPDIR)/cdo-Exprf.Tpo -c -o cdo-Exprf.obj `if test -f 'Exprf.cc'; then $(CYGPATH_W) 'Exprf.cc'; else $(CYGPATH_W) '$(srcdir)/Exprf.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Exprf.Tpo $(DEPDIR)/cdo-Exprf.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Exprf.cc' object='cdo-Exprf.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Exprf.obj `if test -f 'Exprf.cc'; then $(CYGPATH_W) 'Exprf.cc'; else $(CYGPATH_W) '$(srcdir)/Exprf.cc'; fi`
+
+cdo-FC.o: FC.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-FC.o -MD -MP -MF $(DEPDIR)/cdo-FC.Tpo -c -o cdo-FC.o `test -f 'FC.cc' || echo '$(srcdir)/'`FC.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-FC.Tpo $(DEPDIR)/cdo-FC.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='FC.cc' object='cdo-FC.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-FC.o `test -f 'FC.cc' || echo '$(srcdir)/'`FC.cc
+
+cdo-FC.obj: FC.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-FC.obj -MD -MP -MF $(DEPDIR)/cdo-FC.Tpo -c -o cdo-FC.obj `if test -f 'FC.cc'; then $(CYGPATH_W) 'FC.cc'; else $(CYGPATH_W) '$(srcdir)/FC.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-FC.Tpo $(DEPDIR)/cdo-FC.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='FC.cc' object='cdo-FC.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-FC.obj `if test -f 'FC.cc'; then $(CYGPATH_W) 'FC.cc'; else $(CYGPATH_W) '$(srcdir)/FC.cc'; fi`
+
+cdo-Filedes.o: Filedes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Filedes.o -MD -MP -MF $(DEPDIR)/cdo-Filedes.Tpo -c -o cdo-Filedes.o `test -f 'Filedes.cc' || echo '$(srcdir)/'`Filedes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filedes.Tpo $(DEPDIR)/cdo-Filedes.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Filedes.cc' object='cdo-Filedes.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Filedes.o `test -f 'Filedes.cc' || echo '$(srcdir)/'`Filedes.cc
+
+cdo-Filedes.obj: Filedes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Filedes.obj -MD -MP -MF $(DEPDIR)/cdo-Filedes.Tpo -c -o cdo-Filedes.obj `if test -f 'Filedes.cc'; then $(CYGPATH_W) 'Filedes.cc'; else $(CYGPATH_W) '$(srcdir)/Filedes.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filedes.Tpo $(DEPDIR)/cdo-Filedes.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Filedes.cc' object='cdo-Filedes.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Filedes.obj `if test -f 'Filedes.cc'; then $(CYGPATH_W) 'Filedes.cc'; else $(CYGPATH_W) '$(srcdir)/Filedes.cc'; fi`
+
+cdo-Fillmiss.o: Fillmiss.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fillmiss.o -MD -MP -MF $(DEPDIR)/cdo-Fillmiss.Tpo -c -o cdo-Fillmiss.o `test -f 'Fillmiss.cc' || echo '$(srcdir)/'`Fillmiss.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fillmiss.Tpo $(DEPDIR)/cdo-Fillmiss.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fillmiss.cc' object='cdo-Fillmiss.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fillmiss.o `test -f 'Fillmiss.cc' || echo '$(srcdir)/'`Fillmiss.cc
+
+cdo-Fillmiss.obj: Fillmiss.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fillmiss.obj -MD -MP -MF $(DEPDIR)/cdo-Fillmiss.Tpo -c -o cdo-Fillmiss.obj `if test -f 'Fillmiss.cc'; then $(CYGPATH_W) 'Fillmiss.cc'; else $(CYGPATH_W) '$(srcdir)/Fillmiss.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fillmiss.Tpo $(DEPDIR)/cdo-Fillmiss.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fillmiss.cc' object='cdo-Fillmiss.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fillmiss.obj `if test -f 'Fillmiss.cc'; then $(CYGPATH_W) 'Fillmiss.cc'; else $(CYGPATH_W) '$(srcdir)/Fillmiss.cc'; fi`
+
+cdo-Filter.o: Filter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Filter.o -MD -MP -MF $(DEPDIR)/cdo-Filter.Tpo -c -o cdo-Filter.o `test -f 'Filter.cc' || echo '$(srcdir)/'`Filter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filter.Tpo $(DEPDIR)/cdo-Filter.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Filter.cc' object='cdo-Filter.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Filter.o `test -f 'Filter.cc' || echo '$(srcdir)/'`Filter.cc
+
+cdo-Filter.obj: Filter.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Filter.obj -MD -MP -MF $(DEPDIR)/cdo-Filter.Tpo -c -o cdo-Filter.obj `if test -f 'Filter.cc'; then $(CYGPATH_W) 'Filter.cc'; else $(CYGPATH_W) '$(srcdir)/Filter.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Filter.Tpo $(DEPDIR)/cdo-Filter.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Filter.cc' object='cdo-Filter.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Filter.obj `if test -f 'Filter.cc'; then $(CYGPATH_W) 'Filter.cc'; else $(CYGPATH_W) '$(srcdir)/Filter.cc'; fi`
+
+cdo-Fldrms.o: Fldrms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fldrms.o -MD -MP -MF $(DEPDIR)/cdo-Fldrms.Tpo -c -o cdo-Fldrms.o `test -f 'Fldrms.cc' || echo '$(srcdir)/'`Fldrms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldrms.Tpo $(DEPDIR)/cdo-Fldrms.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fldrms.cc' object='cdo-Fldrms.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fldrms.o `test -f 'Fldrms.cc' || echo '$(srcdir)/'`Fldrms.cc
+
+cdo-Fldrms.obj: Fldrms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fldrms.obj -MD -MP -MF $(DEPDIR)/cdo-Fldrms.Tpo -c -o cdo-Fldrms.obj `if test -f 'Fldrms.cc'; then $(CYGPATH_W) 'Fldrms.cc'; else $(CYGPATH_W) '$(srcdir)/Fldrms.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldrms.Tpo $(DEPDIR)/cdo-Fldrms.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fldrms.cc' object='cdo-Fldrms.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fldrms.obj `if test -f 'Fldrms.cc'; then $(CYGPATH_W) 'Fldrms.cc'; else $(CYGPATH_W) '$(srcdir)/Fldrms.cc'; fi`
+
+cdo-Fldstat.o: Fldstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fldstat.o -MD -MP -MF $(DEPDIR)/cdo-Fldstat.Tpo -c -o cdo-Fldstat.o `test -f 'Fldstat.cc' || echo '$(srcdir)/'`Fldstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat.Tpo $(DEPDIR)/cdo-Fldstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fldstat.cc' object='cdo-Fldstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fldstat.o `test -f 'Fldstat.cc' || echo '$(srcdir)/'`Fldstat.cc
+
+cdo-Fldstat.obj: Fldstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fldstat.obj -MD -MP -MF $(DEPDIR)/cdo-Fldstat.Tpo -c -o cdo-Fldstat.obj `if test -f 'Fldstat.cc'; then $(CYGPATH_W) 'Fldstat.cc'; else $(CYGPATH_W) '$(srcdir)/Fldstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat.Tpo $(DEPDIR)/cdo-Fldstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fldstat.cc' object='cdo-Fldstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fldstat.obj `if test -f 'Fldstat.cc'; then $(CYGPATH_W) 'Fldstat.cc'; else $(CYGPATH_W) '$(srcdir)/Fldstat.cc'; fi`
+
+cdo-Fldstat2.o: Fldstat2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fldstat2.o -MD -MP -MF $(DEPDIR)/cdo-Fldstat2.Tpo -c -o cdo-Fldstat2.o `test -f 'Fldstat2.cc' || echo '$(srcdir)/'`Fldstat2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat2.Tpo $(DEPDIR)/cdo-Fldstat2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fldstat2.cc' object='cdo-Fldstat2.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fldstat2.o `test -f 'Fldstat2.cc' || echo '$(srcdir)/'`Fldstat2.cc
+
+cdo-Fldstat2.obj: Fldstat2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fldstat2.obj -MD -MP -MF $(DEPDIR)/cdo-Fldstat2.Tpo -c -o cdo-Fldstat2.obj `if test -f 'Fldstat2.cc'; then $(CYGPATH_W) 'Fldstat2.cc'; else $(CYGPATH_W) '$(srcdir)/Fldstat2.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fldstat2.Tpo $(DEPDIR)/cdo-Fldstat2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fldstat2.cc' object='cdo-Fldstat2.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fldstat2.obj `if test -f 'Fldstat2.cc'; then $(CYGPATH_W) 'Fldstat2.cc'; else $(CYGPATH_W) '$(srcdir)/Fldstat2.cc'; fi`
+
+cdo-Fourier.o: Fourier.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fourier.o -MD -MP -MF $(DEPDIR)/cdo-Fourier.Tpo -c -o cdo-Fourier.o `test -f 'Fourier.cc' || echo '$(srcdir)/'`Fourier.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fourier.Tpo $(DEPDIR)/cdo-Fourier.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fourier.cc' object='cdo-Fourier.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fourier.o `test -f 'Fourier.cc' || echo '$(srcdir)/'`Fourier.cc
+
+cdo-Fourier.obj: Fourier.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Fourier.obj -MD -MP -MF $(DEPDIR)/cdo-Fourier.Tpo -c -o cdo-Fourier.obj `if test -f 'Fourier.cc'; then $(CYGPATH_W) 'Fourier.cc'; else $(CYGPATH_W) '$(srcdir)/Fourier.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Fourier.Tpo $(DEPDIR)/cdo-Fourier.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Fourier.cc' object='cdo-Fourier.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Fourier.obj `if test -f 'Fourier.cc'; then $(CYGPATH_W) 'Fourier.cc'; else $(CYGPATH_W) '$(srcdir)/Fourier.cc'; fi`
+
+cdo-Gengrid.o: Gengrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gengrid.o -MD -MP -MF $(DEPDIR)/cdo-Gengrid.Tpo -c -o cdo-Gengrid.o `test -f 'Gengrid.cc' || echo '$(srcdir)/'`Gengrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gengrid.Tpo $(DEPDIR)/cdo-Gengrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gengrid.cc' object='cdo-Gengrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gengrid.o `test -f 'Gengrid.cc' || echo '$(srcdir)/'`Gengrid.cc
+
+cdo-Gengrid.obj: Gengrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gengrid.obj -MD -MP -MF $(DEPDIR)/cdo-Gengrid.Tpo -c -o cdo-Gengrid.obj `if test -f 'Gengrid.cc'; then $(CYGPATH_W) 'Gengrid.cc'; else $(CYGPATH_W) '$(srcdir)/Gengrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gengrid.Tpo $(DEPDIR)/cdo-Gengrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gengrid.cc' object='cdo-Gengrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gengrid.obj `if test -f 'Gengrid.cc'; then $(CYGPATH_W) 'Gengrid.cc'; else $(CYGPATH_W) '$(srcdir)/Gengrid.cc'; fi`
+
+cdo-Gradsdes.o: Gradsdes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gradsdes.o -MD -MP -MF $(DEPDIR)/cdo-Gradsdes.Tpo -c -o cdo-Gradsdes.o `test -f 'Gradsdes.cc' || echo '$(srcdir)/'`Gradsdes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gradsdes.Tpo $(DEPDIR)/cdo-Gradsdes.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gradsdes.cc' object='cdo-Gradsdes.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gradsdes.o `test -f 'Gradsdes.cc' || echo '$(srcdir)/'`Gradsdes.cc
+
+cdo-Gradsdes.obj: Gradsdes.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gradsdes.obj -MD -MP -MF $(DEPDIR)/cdo-Gradsdes.Tpo -c -o cdo-Gradsdes.obj `if test -f 'Gradsdes.cc'; then $(CYGPATH_W) 'Gradsdes.cc'; else $(CYGPATH_W) '$(srcdir)/Gradsdes.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gradsdes.Tpo $(DEPDIR)/cdo-Gradsdes.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gradsdes.cc' object='cdo-Gradsdes.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gradsdes.obj `if test -f 'Gradsdes.cc'; then $(CYGPATH_W) 'Gradsdes.cc'; else $(CYGPATH_W) '$(srcdir)/Gradsdes.cc'; fi`
+
+cdo-Gridboxstat.o: Gridboxstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gridboxstat.o -MD -MP -MF $(DEPDIR)/cdo-Gridboxstat.Tpo -c -o cdo-Gridboxstat.o `test -f 'Gridboxstat.cc' || echo '$(srcdir)/'`Gridboxstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridboxstat.Tpo $(DEPDIR)/cdo-Gridboxstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gridboxstat.cc' object='cdo-Gridboxstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gridboxstat.o `test -f 'Gridboxstat.cc' || echo '$(srcdir)/'`Gridboxstat.cc
+
+cdo-Gridboxstat.obj: Gridboxstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gridboxstat.obj -MD -MP -MF $(DEPDIR)/cdo-Gridboxstat.Tpo -c -o cdo-Gridboxstat.obj `if test -f 'Gridboxstat.cc'; then $(CYGPATH_W) 'Gridboxstat.cc'; else $(CYGPATH_W) '$(srcdir)/Gridboxstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridboxstat.Tpo $(DEPDIR)/cdo-Gridboxstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gridboxstat.cc' object='cdo-Gridboxstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gridboxstat.obj `if test -f 'Gridboxstat.cc'; then $(CYGPATH_W) 'Gridboxstat.cc'; else $(CYGPATH_W) '$(srcdir)/Gridboxstat.cc'; fi`
+
+cdo-Gridcell.o: Gridcell.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gridcell.o -MD -MP -MF $(DEPDIR)/cdo-Gridcell.Tpo -c -o cdo-Gridcell.o `test -f 'Gridcell.cc' || echo '$(srcdir)/'`Gridcell.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridcell.Tpo $(DEPDIR)/cdo-Gridcell.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gridcell.cc' object='cdo-Gridcell.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gridcell.o `test -f 'Gridcell.cc' || echo '$(srcdir)/'`Gridcell.cc
+
+cdo-Gridcell.obj: Gridcell.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gridcell.obj -MD -MP -MF $(DEPDIR)/cdo-Gridcell.Tpo -c -o cdo-Gridcell.obj `if test -f 'Gridcell.cc'; then $(CYGPATH_W) 'Gridcell.cc'; else $(CYGPATH_W) '$(srcdir)/Gridcell.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridcell.Tpo $(DEPDIR)/cdo-Gridcell.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gridcell.cc' object='cdo-Gridcell.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gridcell.obj `if test -f 'Gridcell.cc'; then $(CYGPATH_W) 'Gridcell.cc'; else $(CYGPATH_W) '$(srcdir)/Gridcell.cc'; fi`
+
+cdo-Gridsearch.o: Gridsearch.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gridsearch.o -MD -MP -MF $(DEPDIR)/cdo-Gridsearch.Tpo -c -o cdo-Gridsearch.o `test -f 'Gridsearch.cc' || echo '$(srcdir)/'`Gridsearch.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridsearch.Tpo $(DEPDIR)/cdo-Gridsearch.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gridsearch.cc' object='cdo-Gridsearch.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gridsearch.o `test -f 'Gridsearch.cc' || echo '$(srcdir)/'`Gridsearch.cc
+
+cdo-Gridsearch.obj: Gridsearch.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Gridsearch.obj -MD -MP -MF $(DEPDIR)/cdo-Gridsearch.Tpo -c -o cdo-Gridsearch.obj `if test -f 'Gridsearch.cc'; then $(CYGPATH_W) 'Gridsearch.cc'; else $(CYGPATH_W) '$(srcdir)/Gridsearch.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Gridsearch.Tpo $(DEPDIR)/cdo-Gridsearch.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Gridsearch.cc' object='cdo-Gridsearch.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Gridsearch.obj `if test -f 'Gridsearch.cc'; then $(CYGPATH_W) 'Gridsearch.cc'; else $(CYGPATH_W) '$(srcdir)/Gridsearch.cc'; fi`
+
+cdo-Harmonic.o: Harmonic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Harmonic.o -MD -MP -MF $(DEPDIR)/cdo-Harmonic.Tpo -c -o cdo-Harmonic.o `test -f 'Harmonic.cc' || echo '$(srcdir)/'`Harmonic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Harmonic.Tpo $(DEPDIR)/cdo-Harmonic.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Harmonic.cc' object='cdo-Harmonic.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Harmonic.o `test -f 'Harmonic.cc' || echo '$(srcdir)/'`Harmonic.cc
+
+cdo-Harmonic.obj: Harmonic.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Harmonic.obj -MD -MP -MF $(DEPDIR)/cdo-Harmonic.Tpo -c -o cdo-Harmonic.obj `if test -f 'Harmonic.cc'; then $(CYGPATH_W) 'Harmonic.cc'; else $(CYGPATH_W) '$(srcdir)/Harmonic.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Harmonic.Tpo $(DEPDIR)/cdo-Harmonic.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Harmonic.cc' object='cdo-Harmonic.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Harmonic.obj `if test -f 'Harmonic.cc'; then $(CYGPATH_W) 'Harmonic.cc'; else $(CYGPATH_W) '$(srcdir)/Harmonic.cc'; fi`
+
+cdo-Hi.o: Hi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Hi.o -MD -MP -MF $(DEPDIR)/cdo-Hi.Tpo -c -o cdo-Hi.o `test -f 'Hi.cc' || echo '$(srcdir)/'`Hi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Hi.Tpo $(DEPDIR)/cdo-Hi.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Hi.cc' object='cdo-Hi.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Hi.o `test -f 'Hi.cc' || echo '$(srcdir)/'`Hi.cc
+
+cdo-Hi.obj: Hi.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Hi.obj -MD -MP -MF $(DEPDIR)/cdo-Hi.Tpo -c -o cdo-Hi.obj `if test -f 'Hi.cc'; then $(CYGPATH_W) 'Hi.cc'; else $(CYGPATH_W) '$(srcdir)/Hi.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Hi.Tpo $(DEPDIR)/cdo-Hi.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Hi.cc' object='cdo-Hi.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Hi.obj `if test -f 'Hi.cc'; then $(CYGPATH_W) 'Hi.cc'; else $(CYGPATH_W) '$(srcdir)/Hi.cc'; fi`
+
+cdo-Histogram.o: Histogram.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Histogram.o -MD -MP -MF $(DEPDIR)/cdo-Histogram.Tpo -c -o cdo-Histogram.o `test -f 'Histogram.cc' || echo '$(srcdir)/'`Histogram.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Histogram.Tpo $(DEPDIR)/cdo-Histogram.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Histogram.cc' object='cdo-Histogram.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Histogram.o `test -f 'Histogram.cc' || echo '$(srcdir)/'`Histogram.cc
+
+cdo-Histogram.obj: Histogram.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Histogram.obj -MD -MP -MF $(DEPDIR)/cdo-Histogram.Tpo -c -o cdo-Histogram.obj `if test -f 'Histogram.cc'; then $(CYGPATH_W) 'Histogram.cc'; else $(CYGPATH_W) '$(srcdir)/Histogram.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Histogram.Tpo $(DEPDIR)/cdo-Histogram.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Histogram.cc' object='cdo-Histogram.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Histogram.obj `if test -f 'Histogram.cc'; then $(CYGPATH_W) 'Histogram.cc'; else $(CYGPATH_W) '$(srcdir)/Histogram.cc'; fi`
+
+cdo-Importamsr.o: Importamsr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importamsr.o -MD -MP -MF $(DEPDIR)/cdo-Importamsr.Tpo -c -o cdo-Importamsr.o `test -f 'Importamsr.cc' || echo '$(srcdir)/'`Importamsr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importamsr.Tpo $(DEPDIR)/cdo-Importamsr.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importamsr.cc' object='cdo-Importamsr.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importamsr.o `test -f 'Importamsr.cc' || echo '$(srcdir)/'`Importamsr.cc
+
+cdo-Importamsr.obj: Importamsr.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importamsr.obj -MD -MP -MF $(DEPDIR)/cdo-Importamsr.Tpo -c -o cdo-Importamsr.obj `if test -f 'Importamsr.cc'; then $(CYGPATH_W) 'Importamsr.cc'; else $(CYGPATH_W) '$(srcdir)/Importamsr.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importamsr.Tpo $(DEPDIR)/cdo-Importamsr.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importamsr.cc' object='cdo-Importamsr.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importamsr.obj `if test -f 'Importamsr.cc'; then $(CYGPATH_W) 'Importamsr.cc'; else $(CYGPATH_W) '$(srcdir)/Importamsr.cc'; fi`
+
+cdo-Importbinary.o: Importbinary.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importbinary.o -MD -MP -MF $(DEPDIR)/cdo-Importbinary.Tpo -c -o cdo-Importbinary.o `test -f 'Importbinary.cc' || echo '$(srcdir)/'`Importbinary.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importbinary.Tpo $(DEPDIR)/cdo-Importbinary.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importbinary.cc' object='cdo-Importbinary.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importbinary.o `test -f 'Importbinary.cc' || echo '$(srcdir)/'`Importbinary.cc
+
+cdo-Importbinary.obj: Importbinary.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importbinary.obj -MD -MP -MF $(DEPDIR)/cdo-Importbinary.Tpo -c -o cdo-Importbinary.obj `if test -f 'Importbinary.cc'; then $(CYGPATH_W) 'Importbinary.cc'; else $(CYGPATH_W) '$(srcdir)/Importbinary.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importbinary.Tpo $(DEPDIR)/cdo-Importbinary.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importbinary.cc' object='cdo-Importbinary.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importbinary.obj `if test -f 'Importbinary.cc'; then $(CYGPATH_W) 'Importbinary.cc'; else $(CYGPATH_W) '$(srcdir)/Importbinary.cc'; fi`
+
+cdo-Importcmsaf.o: Importcmsaf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importcmsaf.o -MD -MP -MF $(DEPDIR)/cdo-Importcmsaf.Tpo -c -o cdo-Importcmsaf.o `test -f 'Importcmsaf.cc' || echo '$(srcdir)/'`Importcmsaf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importcmsaf.Tpo $(DEPDIR)/cdo-Importcmsaf.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importcmsaf.cc' object='cdo-Importcmsaf.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importcmsaf.o `test -f 'Importcmsaf.cc' || echo '$(srcdir)/'`Importcmsaf.cc
+
+cdo-Importcmsaf.obj: Importcmsaf.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importcmsaf.obj -MD -MP -MF $(DEPDIR)/cdo-Importcmsaf.Tpo -c -o cdo-Importcmsaf.obj `if test -f 'Importcmsaf.cc'; then $(CYGPATH_W) 'Importcmsaf.cc'; else $(CYGPATH_W) '$(srcdir)/Importcmsaf.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importcmsaf.Tpo $(DEPDIR)/cdo-Importcmsaf.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importcmsaf.cc' object='cdo-Importcmsaf.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importcmsaf.obj `if test -f 'Importcmsaf.cc'; then $(CYGPATH_W) 'Importcmsaf.cc'; else $(CYGPATH_W) '$(srcdir)/Importcmsaf.cc'; fi`
+
+cdo-Importobs.o: Importobs.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importobs.o -MD -MP -MF $(DEPDIR)/cdo-Importobs.Tpo -c -o cdo-Importobs.o `test -f 'Importobs.cc' || echo '$(srcdir)/'`Importobs.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importobs.Tpo $(DEPDIR)/cdo-Importobs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importobs.cc' object='cdo-Importobs.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importobs.o `test -f 'Importobs.cc' || echo '$(srcdir)/'`Importobs.cc
+
+cdo-Importobs.obj: Importobs.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Importobs.obj -MD -MP -MF $(DEPDIR)/cdo-Importobs.Tpo -c -o cdo-Importobs.obj `if test -f 'Importobs.cc'; then $(CYGPATH_W) 'Importobs.cc'; else $(CYGPATH_W) '$(srcdir)/Importobs.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Importobs.Tpo $(DEPDIR)/cdo-Importobs.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Importobs.cc' object='cdo-Importobs.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Importobs.obj `if test -f 'Importobs.cc'; then $(CYGPATH_W) 'Importobs.cc'; else $(CYGPATH_W) '$(srcdir)/Importobs.cc'; fi`
+
+cdo-Info.o: Info.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Info.o -MD -MP -MF $(DEPDIR)/cdo-Info.Tpo -c -o cdo-Info.o `test -f 'Info.cc' || echo '$(srcdir)/'`Info.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Info.Tpo $(DEPDIR)/cdo-Info.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Info.cc' object='cdo-Info.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Info.o `test -f 'Info.cc' || echo '$(srcdir)/'`Info.cc
+
+cdo-Info.obj: Info.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Info.obj -MD -MP -MF $(DEPDIR)/cdo-Info.Tpo -c -o cdo-Info.obj `if test -f 'Info.cc'; then $(CYGPATH_W) 'Info.cc'; else $(CYGPATH_W) '$(srcdir)/Info.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Info.Tpo $(DEPDIR)/cdo-Info.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Info.cc' object='cdo-Info.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Info.obj `if test -f 'Info.cc'; then $(CYGPATH_W) 'Info.cc'; else $(CYGPATH_W) '$(srcdir)/Info.cc'; fi`
+
+cdo-Input.o: Input.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Input.o -MD -MP -MF $(DEPDIR)/cdo-Input.Tpo -c -o cdo-Input.o `test -f 'Input.cc' || echo '$(srcdir)/'`Input.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Input.Tpo $(DEPDIR)/cdo-Input.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Input.cc' object='cdo-Input.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Input.o `test -f 'Input.cc' || echo '$(srcdir)/'`Input.cc
+
+cdo-Input.obj: Input.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Input.obj -MD -MP -MF $(DEPDIR)/cdo-Input.Tpo -c -o cdo-Input.obj `if test -f 'Input.cc'; then $(CYGPATH_W) 'Input.cc'; else $(CYGPATH_W) '$(srcdir)/Input.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Input.Tpo $(DEPDIR)/cdo-Input.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Input.cc' object='cdo-Input.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Input.obj `if test -f 'Input.cc'; then $(CYGPATH_W) 'Input.cc'; else $(CYGPATH_W) '$(srcdir)/Input.cc'; fi`
+
+cdo-Intgrid.o: Intgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intgrid.o -MD -MP -MF $(DEPDIR)/cdo-Intgrid.Tpo -c -o cdo-Intgrid.o `test -f 'Intgrid.cc' || echo '$(srcdir)/'`Intgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgrid.Tpo $(DEPDIR)/cdo-Intgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intgrid.cc' object='cdo-Intgrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intgrid.o `test -f 'Intgrid.cc' || echo '$(srcdir)/'`Intgrid.cc
+
+cdo-Intgrid.obj: Intgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Intgrid.Tpo -c -o cdo-Intgrid.obj `if test -f 'Intgrid.cc'; then $(CYGPATH_W) 'Intgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Intgrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgrid.Tpo $(DEPDIR)/cdo-Intgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intgrid.cc' object='cdo-Intgrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intgrid.obj `if test -f 'Intgrid.cc'; then $(CYGPATH_W) 'Intgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Intgrid.cc'; fi`
+
+cdo-Intgridtraj.o: Intgridtraj.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intgridtraj.o -MD -MP -MF $(DEPDIR)/cdo-Intgridtraj.Tpo -c -o cdo-Intgridtraj.o `test -f 'Intgridtraj.cc' || echo '$(srcdir)/'`Intgridtraj.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgridtraj.Tpo $(DEPDIR)/cdo-Intgridtraj.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intgridtraj.cc' object='cdo-Intgridtraj.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intgridtraj.o `test -f 'Intgridtraj.cc' || echo '$(srcdir)/'`Intgridtraj.cc
+
+cdo-Intgridtraj.obj: Intgridtraj.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intgridtraj.obj -MD -MP -MF $(DEPDIR)/cdo-Intgridtraj.Tpo -c -o cdo-Intgridtraj.obj `if test -f 'Intgridtraj.cc'; then $(CYGPATH_W) 'Intgridtraj.cc'; else $(CYGPATH_W) '$(srcdir)/Intgridtraj.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intgridtraj.Tpo $(DEPDIR)/cdo-Intgridtraj.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intgridtraj.cc' object='cdo-Intgridtraj.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intgridtraj.obj `if test -f 'Intgridtraj.cc'; then $(CYGPATH_W) 'Intgridtraj.cc'; else $(CYGPATH_W) '$(srcdir)/Intgridtraj.cc'; fi`
+
+cdo-Intlevel.o: Intlevel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intlevel.o -MD -MP -MF $(DEPDIR)/cdo-Intlevel.Tpo -c -o cdo-Intlevel.o `test -f 'Intlevel.cc' || echo '$(srcdir)/'`Intlevel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel.Tpo $(DEPDIR)/cdo-Intlevel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intlevel.cc' object='cdo-Intlevel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intlevel.o `test -f 'Intlevel.cc' || echo '$(srcdir)/'`Intlevel.cc
+
+cdo-Intlevel.obj: Intlevel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intlevel.obj -MD -MP -MF $(DEPDIR)/cdo-Intlevel.Tpo -c -o cdo-Intlevel.obj `if test -f 'Intlevel.cc'; then $(CYGPATH_W) 'Intlevel.cc'; else $(CYGPATH_W) '$(srcdir)/Intlevel.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel.Tpo $(DEPDIR)/cdo-Intlevel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intlevel.cc' object='cdo-Intlevel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intlevel.obj `if test -f 'Intlevel.cc'; then $(CYGPATH_W) 'Intlevel.cc'; else $(CYGPATH_W) '$(srcdir)/Intlevel.cc'; fi`
+
+cdo-Intlevel3d.o: Intlevel3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intlevel3d.o -MD -MP -MF $(DEPDIR)/cdo-Intlevel3d.Tpo -c -o cdo-Intlevel3d.o `test -f 'Intlevel3d.cc' || echo '$(srcdir)/'`Intlevel3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel3d.Tpo $(DEPDIR)/cdo-Intlevel3d.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intlevel3d.cc' object='cdo-Intlevel3d.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intlevel3d.o `test -f 'Intlevel3d.cc' || echo '$(srcdir)/'`Intlevel3d.cc
+
+cdo-Intlevel3d.obj: Intlevel3d.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intlevel3d.obj -MD -MP -MF $(DEPDIR)/cdo-Intlevel3d.Tpo -c -o cdo-Intlevel3d.obj `if test -f 'Intlevel3d.cc'; then $(CYGPATH_W) 'Intlevel3d.cc'; else $(CYGPATH_W) '$(srcdir)/Intlevel3d.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intlevel3d.Tpo $(DEPDIR)/cdo-Intlevel3d.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intlevel3d.cc' object='cdo-Intlevel3d.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intlevel3d.obj `if test -f 'Intlevel3d.cc'; then $(CYGPATH_W) 'Intlevel3d.cc'; else $(CYGPATH_W) '$(srcdir)/Intlevel3d.cc'; fi`
+
+cdo-Intntime.o: Intntime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intntime.o -MD -MP -MF $(DEPDIR)/cdo-Intntime.Tpo -c -o cdo-Intntime.o `test -f 'Intntime.cc' || echo '$(srcdir)/'`Intntime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intntime.Tpo $(DEPDIR)/cdo-Intntime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intntime.cc' object='cdo-Intntime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intntime.o `test -f 'Intntime.cc' || echo '$(srcdir)/'`Intntime.cc
+
+cdo-Intntime.obj: Intntime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intntime.obj -MD -MP -MF $(DEPDIR)/cdo-Intntime.Tpo -c -o cdo-Intntime.obj `if test -f 'Intntime.cc'; then $(CYGPATH_W) 'Intntime.cc'; else $(CYGPATH_W) '$(srcdir)/Intntime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intntime.Tpo $(DEPDIR)/cdo-Intntime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intntime.cc' object='cdo-Intntime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intntime.obj `if test -f 'Intntime.cc'; then $(CYGPATH_W) 'Intntime.cc'; else $(CYGPATH_W) '$(srcdir)/Intntime.cc'; fi`
+
+cdo-Inttime.o: Inttime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Inttime.o -MD -MP -MF $(DEPDIR)/cdo-Inttime.Tpo -c -o cdo-Inttime.o `test -f 'Inttime.cc' || echo '$(srcdir)/'`Inttime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Inttime.Tpo $(DEPDIR)/cdo-Inttime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Inttime.cc' object='cdo-Inttime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Inttime.o `test -f 'Inttime.cc' || echo '$(srcdir)/'`Inttime.cc
+
+cdo-Inttime.obj: Inttime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Inttime.obj -MD -MP -MF $(DEPDIR)/cdo-Inttime.Tpo -c -o cdo-Inttime.obj `if test -f 'Inttime.cc'; then $(CYGPATH_W) 'Inttime.cc'; else $(CYGPATH_W) '$(srcdir)/Inttime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Inttime.Tpo $(DEPDIR)/cdo-Inttime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Inttime.cc' object='cdo-Inttime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Inttime.obj `if test -f 'Inttime.cc'; then $(CYGPATH_W) 'Inttime.cc'; else $(CYGPATH_W) '$(srcdir)/Inttime.cc'; fi`
+
+cdo-Intyear.o: Intyear.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intyear.o -MD -MP -MF $(DEPDIR)/cdo-Intyear.Tpo -c -o cdo-Intyear.o `test -f 'Intyear.cc' || echo '$(srcdir)/'`Intyear.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intyear.Tpo $(DEPDIR)/cdo-Intyear.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intyear.cc' object='cdo-Intyear.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intyear.o `test -f 'Intyear.cc' || echo '$(srcdir)/'`Intyear.cc
+
+cdo-Intyear.obj: Intyear.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Intyear.obj -MD -MP -MF $(DEPDIR)/cdo-Intyear.Tpo -c -o cdo-Intyear.obj `if test -f 'Intyear.cc'; then $(CYGPATH_W) 'Intyear.cc'; else $(CYGPATH_W) '$(srcdir)/Intyear.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Intyear.Tpo $(DEPDIR)/cdo-Intyear.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Intyear.cc' object='cdo-Intyear.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Intyear.obj `if test -f 'Intyear.cc'; then $(CYGPATH_W) 'Intyear.cc'; else $(CYGPATH_W) '$(srcdir)/Intyear.cc'; fi`
+
+cdo-Invert.o: Invert.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Invert.o -MD -MP -MF $(DEPDIR)/cdo-Invert.Tpo -c -o cdo-Invert.o `test -f 'Invert.cc' || echo '$(srcdir)/'`Invert.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invert.Tpo $(DEPDIR)/cdo-Invert.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Invert.cc' object='cdo-Invert.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Invert.o `test -f 'Invert.cc' || echo '$(srcdir)/'`Invert.cc
+
+cdo-Invert.obj: Invert.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Invert.obj -MD -MP -MF $(DEPDIR)/cdo-Invert.Tpo -c -o cdo-Invert.obj `if test -f 'Invert.cc'; then $(CYGPATH_W) 'Invert.cc'; else $(CYGPATH_W) '$(srcdir)/Invert.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invert.Tpo $(DEPDIR)/cdo-Invert.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Invert.cc' object='cdo-Invert.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Invert.obj `if test -f 'Invert.cc'; then $(CYGPATH_W) 'Invert.cc'; else $(CYGPATH_W) '$(srcdir)/Invert.cc'; fi`
+
+cdo-Invertlev.o: Invertlev.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Invertlev.o -MD -MP -MF $(DEPDIR)/cdo-Invertlev.Tpo -c -o cdo-Invertlev.o `test -f 'Invertlev.cc' || echo '$(srcdir)/'`Invertlev.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invertlev.Tpo $(DEPDIR)/cdo-Invertlev.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Invertlev.cc' object='cdo-Invertlev.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Invertlev.o `test -f 'Invertlev.cc' || echo '$(srcdir)/'`Invertlev.cc
+
+cdo-Invertlev.obj: Invertlev.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Invertlev.obj -MD -MP -MF $(DEPDIR)/cdo-Invertlev.Tpo -c -o cdo-Invertlev.obj `if test -f 'Invertlev.cc'; then $(CYGPATH_W) 'Invertlev.cc'; else $(CYGPATH_W) '$(srcdir)/Invertlev.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Invertlev.Tpo $(DEPDIR)/cdo-Invertlev.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Invertlev.cc' object='cdo-Invertlev.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Invertlev.obj `if test -f 'Invertlev.cc'; then $(CYGPATH_W) 'Invertlev.cc'; else $(CYGPATH_W) '$(srcdir)/Invertlev.cc'; fi`
+
+cdo-Isosurface.o: Isosurface.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Isosurface.o -MD -MP -MF $(DEPDIR)/cdo-Isosurface.Tpo -c -o cdo-Isosurface.o `test -f 'Isosurface.cc' || echo '$(srcdir)/'`Isosurface.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Isosurface.Tpo $(DEPDIR)/cdo-Isosurface.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Isosurface.cc' object='cdo-Isosurface.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Isosurface.o `test -f 'Isosurface.cc' || echo '$(srcdir)/'`Isosurface.cc
+
+cdo-Isosurface.obj: Isosurface.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Isosurface.obj -MD -MP -MF $(DEPDIR)/cdo-Isosurface.Tpo -c -o cdo-Isosurface.obj `if test -f 'Isosurface.cc'; then $(CYGPATH_W) 'Isosurface.cc'; else $(CYGPATH_W) '$(srcdir)/Isosurface.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Isosurface.Tpo $(DEPDIR)/cdo-Isosurface.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Isosurface.cc' object='cdo-Isosurface.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Isosurface.obj `if test -f 'Isosurface.cc'; then $(CYGPATH_W) 'Isosurface.cc'; else $(CYGPATH_W) '$(srcdir)/Isosurface.cc'; fi`
+
+cdo-Log.o: Log.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Log.o -MD -MP -MF $(DEPDIR)/cdo-Log.Tpo -c -o cdo-Log.o `test -f 'Log.cc' || echo '$(srcdir)/'`Log.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Log.Tpo $(DEPDIR)/cdo-Log.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Log.cc' object='cdo-Log.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Log.o `test -f 'Log.cc' || echo '$(srcdir)/'`Log.cc
+
+cdo-Log.obj: Log.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Log.obj -MD -MP -MF $(DEPDIR)/cdo-Log.Tpo -c -o cdo-Log.obj `if test -f 'Log.cc'; then $(CYGPATH_W) 'Log.cc'; else $(CYGPATH_W) '$(srcdir)/Log.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Log.Tpo $(DEPDIR)/cdo-Log.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Log.cc' object='cdo-Log.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Log.obj `if test -f 'Log.cc'; then $(CYGPATH_W) 'Log.cc'; else $(CYGPATH_W) '$(srcdir)/Log.cc'; fi`
+
+cdo-MapReduce.o: MapReduce.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-MapReduce.o -MD -MP -MF $(DEPDIR)/cdo-MapReduce.Tpo -c -o cdo-MapReduce.o `test -f 'MapReduce.cc' || echo '$(srcdir)/'`MapReduce.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-MapReduce.Tpo $(DEPDIR)/cdo-MapReduce.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='MapReduce.cc' object='cdo-MapReduce.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-MapReduce.o `test -f 'MapReduce.cc' || echo '$(srcdir)/'`MapReduce.cc
+
+cdo-MapReduce.obj: MapReduce.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-MapReduce.obj -MD -MP -MF $(DEPDIR)/cdo-MapReduce.Tpo -c -o cdo-MapReduce.obj `if test -f 'MapReduce.cc'; then $(CYGPATH_W) 'MapReduce.cc'; else $(CYGPATH_W) '$(srcdir)/MapReduce.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-MapReduce.Tpo $(DEPDIR)/cdo-MapReduce.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='MapReduce.cc' object='cdo-MapReduce.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-MapReduce.obj `if test -f 'MapReduce.cc'; then $(CYGPATH_W) 'MapReduce.cc'; else $(CYGPATH_W) '$(srcdir)/MapReduce.cc'; fi`
+
+cdo-Maskbox.o: Maskbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Maskbox.o -MD -MP -MF $(DEPDIR)/cdo-Maskbox.Tpo -c -o cdo-Maskbox.o `test -f 'Maskbox.cc' || echo '$(srcdir)/'`Maskbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maskbox.Tpo $(DEPDIR)/cdo-Maskbox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Maskbox.cc' object='cdo-Maskbox.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Maskbox.o `test -f 'Maskbox.cc' || echo '$(srcdir)/'`Maskbox.cc
+
+cdo-Maskbox.obj: Maskbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Maskbox.obj -MD -MP -MF $(DEPDIR)/cdo-Maskbox.Tpo -c -o cdo-Maskbox.obj `if test -f 'Maskbox.cc'; then $(CYGPATH_W) 'Maskbox.cc'; else $(CYGPATH_W) '$(srcdir)/Maskbox.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maskbox.Tpo $(DEPDIR)/cdo-Maskbox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Maskbox.cc' object='cdo-Maskbox.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Maskbox.obj `if test -f 'Maskbox.cc'; then $(CYGPATH_W) 'Maskbox.cc'; else $(CYGPATH_W) '$(srcdir)/Maskbox.cc'; fi`
+
+cdo-Mastrfu.o: Mastrfu.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mastrfu.o -MD -MP -MF $(DEPDIR)/cdo-Mastrfu.Tpo -c -o cdo-Mastrfu.o `test -f 'Mastrfu.cc' || echo '$(srcdir)/'`Mastrfu.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mastrfu.Tpo $(DEPDIR)/cdo-Mastrfu.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mastrfu.cc' object='cdo-Mastrfu.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mastrfu.o `test -f 'Mastrfu.cc' || echo '$(srcdir)/'`Mastrfu.cc
+
+cdo-Mastrfu.obj: Mastrfu.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mastrfu.obj -MD -MP -MF $(DEPDIR)/cdo-Mastrfu.Tpo -c -o cdo-Mastrfu.obj `if test -f 'Mastrfu.cc'; then $(CYGPATH_W) 'Mastrfu.cc'; else $(CYGPATH_W) '$(srcdir)/Mastrfu.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mastrfu.Tpo $(DEPDIR)/cdo-Mastrfu.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mastrfu.cc' object='cdo-Mastrfu.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mastrfu.obj `if test -f 'Mastrfu.cc'; then $(CYGPATH_W) 'Mastrfu.cc'; else $(CYGPATH_W) '$(srcdir)/Mastrfu.cc'; fi`
+
+cdo-Math.o: Math.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Math.o -MD -MP -MF $(DEPDIR)/cdo-Math.Tpo -c -o cdo-Math.o `test -f 'Math.cc' || echo '$(srcdir)/'`Math.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Math.Tpo $(DEPDIR)/cdo-Math.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Math.cc' object='cdo-Math.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Math.o `test -f 'Math.cc' || echo '$(srcdir)/'`Math.cc
+
+cdo-Math.obj: Math.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Math.obj -MD -MP -MF $(DEPDIR)/cdo-Math.Tpo -c -o cdo-Math.obj `if test -f 'Math.cc'; then $(CYGPATH_W) 'Math.cc'; else $(CYGPATH_W) '$(srcdir)/Math.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Math.Tpo $(DEPDIR)/cdo-Math.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Math.cc' object='cdo-Math.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Math.obj `if test -f 'Math.cc'; then $(CYGPATH_W) 'Math.cc'; else $(CYGPATH_W) '$(srcdir)/Math.cc'; fi`
+
+cdo-Merge.o: Merge.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Merge.o -MD -MP -MF $(DEPDIR)/cdo-Merge.Tpo -c -o cdo-Merge.o `test -f 'Merge.cc' || echo '$(srcdir)/'`Merge.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merge.Tpo $(DEPDIR)/cdo-Merge.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Merge.cc' object='cdo-Merge.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Merge.o `test -f 'Merge.cc' || echo '$(srcdir)/'`Merge.cc
+
+cdo-Merge.obj: Merge.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Merge.obj -MD -MP -MF $(DEPDIR)/cdo-Merge.Tpo -c -o cdo-Merge.obj `if test -f 'Merge.cc'; then $(CYGPATH_W) 'Merge.cc'; else $(CYGPATH_W) '$(srcdir)/Merge.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merge.Tpo $(DEPDIR)/cdo-Merge.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Merge.cc' object='cdo-Merge.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Merge.obj `if test -f 'Merge.cc'; then $(CYGPATH_W) 'Merge.cc'; else $(CYGPATH_W) '$(srcdir)/Merge.cc'; fi`
+
+cdo-Mergegrid.o: Mergegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mergegrid.o -MD -MP -MF $(DEPDIR)/cdo-Mergegrid.Tpo -c -o cdo-Mergegrid.o `test -f 'Mergegrid.cc' || echo '$(srcdir)/'`Mergegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergegrid.Tpo $(DEPDIR)/cdo-Mergegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mergegrid.cc' object='cdo-Mergegrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mergegrid.o `test -f 'Mergegrid.cc' || echo '$(srcdir)/'`Mergegrid.cc
+
+cdo-Mergegrid.obj: Mergegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mergegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Mergegrid.Tpo -c -o cdo-Mergegrid.obj `if test -f 'Mergegrid.cc'; then $(CYGPATH_W) 'Mergegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Mergegrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergegrid.Tpo $(DEPDIR)/cdo-Mergegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mergegrid.cc' object='cdo-Mergegrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mergegrid.obj `if test -f 'Mergegrid.cc'; then $(CYGPATH_W) 'Mergegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Mergegrid.cc'; fi`
+
+cdo-Mergetime.o: Mergetime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mergetime.o -MD -MP -MF $(DEPDIR)/cdo-Mergetime.Tpo -c -o cdo-Mergetime.o `test -f 'Mergetime.cc' || echo '$(srcdir)/'`Mergetime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergetime.Tpo $(DEPDIR)/cdo-Mergetime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mergetime.cc' object='cdo-Mergetime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mergetime.o `test -f 'Mergetime.cc' || echo '$(srcdir)/'`Mergetime.cc
+
+cdo-Mergetime.obj: Mergetime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mergetime.obj -MD -MP -MF $(DEPDIR)/cdo-Mergetime.Tpo -c -o cdo-Mergetime.obj `if test -f 'Mergetime.cc'; then $(CYGPATH_W) 'Mergetime.cc'; else $(CYGPATH_W) '$(srcdir)/Mergetime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mergetime.Tpo $(DEPDIR)/cdo-Mergetime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mergetime.cc' object='cdo-Mergetime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mergetime.obj `if test -f 'Mergetime.cc'; then $(CYGPATH_W) 'Mergetime.cc'; else $(CYGPATH_W) '$(srcdir)/Mergetime.cc'; fi`
+
+cdo-Merstat.o: Merstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Merstat.o -MD -MP -MF $(DEPDIR)/cdo-Merstat.Tpo -c -o cdo-Merstat.o `test -f 'Merstat.cc' || echo '$(srcdir)/'`Merstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merstat.Tpo $(DEPDIR)/cdo-Merstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Merstat.cc' object='cdo-Merstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Merstat.o `test -f 'Merstat.cc' || echo '$(srcdir)/'`Merstat.cc
+
+cdo-Merstat.obj: Merstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Merstat.obj -MD -MP -MF $(DEPDIR)/cdo-Merstat.Tpo -c -o cdo-Merstat.obj `if test -f 'Merstat.cc'; then $(CYGPATH_W) 'Merstat.cc'; else $(CYGPATH_W) '$(srcdir)/Merstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Merstat.Tpo $(DEPDIR)/cdo-Merstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Merstat.cc' object='cdo-Merstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Merstat.obj `if test -f 'Merstat.cc'; then $(CYGPATH_W) 'Merstat.cc'; else $(CYGPATH_W) '$(srcdir)/Merstat.cc'; fi`
+
+cdo-Monarith.o: Monarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Monarith.o -MD -MP -MF $(DEPDIR)/cdo-Monarith.Tpo -c -o cdo-Monarith.o `test -f 'Monarith.cc' || echo '$(srcdir)/'`Monarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Monarith.Tpo $(DEPDIR)/cdo-Monarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Monarith.cc' object='cdo-Monarith.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Monarith.o `test -f 'Monarith.cc' || echo '$(srcdir)/'`Monarith.cc
+
+cdo-Monarith.obj: Monarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Monarith.obj -MD -MP -MF $(DEPDIR)/cdo-Monarith.Tpo -c -o cdo-Monarith.obj `if test -f 'Monarith.cc'; then $(CYGPATH_W) 'Monarith.cc'; else $(CYGPATH_W) '$(srcdir)/Monarith.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Monarith.Tpo $(DEPDIR)/cdo-Monarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Monarith.cc' object='cdo-Monarith.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Monarith.obj `if test -f 'Monarith.cc'; then $(CYGPATH_W) 'Monarith.cc'; else $(CYGPATH_W) '$(srcdir)/Monarith.cc'; fi`
+
+cdo-Mrotuv.o: Mrotuv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mrotuv.o -MD -MP -MF $(DEPDIR)/cdo-Mrotuv.Tpo -c -o cdo-Mrotuv.o `test -f 'Mrotuv.cc' || echo '$(srcdir)/'`Mrotuv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuv.Tpo $(DEPDIR)/cdo-Mrotuv.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mrotuv.cc' object='cdo-Mrotuv.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mrotuv.o `test -f 'Mrotuv.cc' || echo '$(srcdir)/'`Mrotuv.cc
+
+cdo-Mrotuv.obj: Mrotuv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mrotuv.obj -MD -MP -MF $(DEPDIR)/cdo-Mrotuv.Tpo -c -o cdo-Mrotuv.obj `if test -f 'Mrotuv.cc'; then $(CYGPATH_W) 'Mrotuv.cc'; else $(CYGPATH_W) '$(srcdir)/Mrotuv.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuv.Tpo $(DEPDIR)/cdo-Mrotuv.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mrotuv.cc' object='cdo-Mrotuv.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mrotuv.obj `if test -f 'Mrotuv.cc'; then $(CYGPATH_W) 'Mrotuv.cc'; else $(CYGPATH_W) '$(srcdir)/Mrotuv.cc'; fi`
+
+cdo-Mrotuvb.o: Mrotuvb.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mrotuvb.o -MD -MP -MF $(DEPDIR)/cdo-Mrotuvb.Tpo -c -o cdo-Mrotuvb.o `test -f 'Mrotuvb.cc' || echo '$(srcdir)/'`Mrotuvb.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuvb.Tpo $(DEPDIR)/cdo-Mrotuvb.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mrotuvb.cc' object='cdo-Mrotuvb.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mrotuvb.o `test -f 'Mrotuvb.cc' || echo '$(srcdir)/'`Mrotuvb.cc
+
+cdo-Mrotuvb.obj: Mrotuvb.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Mrotuvb.obj -MD -MP -MF $(DEPDIR)/cdo-Mrotuvb.Tpo -c -o cdo-Mrotuvb.obj `if test -f 'Mrotuvb.cc'; then $(CYGPATH_W) 'Mrotuvb.cc'; else $(CYGPATH_W) '$(srcdir)/Mrotuvb.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Mrotuvb.Tpo $(DEPDIR)/cdo-Mrotuvb.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Mrotuvb.cc' object='cdo-Mrotuvb.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Mrotuvb.obj `if test -f 'Mrotuvb.cc'; then $(CYGPATH_W) 'Mrotuvb.cc'; else $(CYGPATH_W) '$(srcdir)/Mrotuvb.cc'; fi`
+
+cdo-Ninfo.o: Ninfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ninfo.o -MD -MP -MF $(DEPDIR)/cdo-Ninfo.Tpo -c -o cdo-Ninfo.o `test -f 'Ninfo.cc' || echo '$(srcdir)/'`Ninfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ninfo.Tpo $(DEPDIR)/cdo-Ninfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ninfo.cc' object='cdo-Ninfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ninfo.o `test -f 'Ninfo.cc' || echo '$(srcdir)/'`Ninfo.cc
+
+cdo-Ninfo.obj: Ninfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ninfo.obj -MD -MP -MF $(DEPDIR)/cdo-Ninfo.Tpo -c -o cdo-Ninfo.obj `if test -f 'Ninfo.cc'; then $(CYGPATH_W) 'Ninfo.cc'; else $(CYGPATH_W) '$(srcdir)/Ninfo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ninfo.Tpo $(DEPDIR)/cdo-Ninfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ninfo.cc' object='cdo-Ninfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ninfo.obj `if test -f 'Ninfo.cc'; then $(CYGPATH_W) 'Ninfo.cc'; else $(CYGPATH_W) '$(srcdir)/Ninfo.cc'; fi`
+
+cdo-Nmldump.o: Nmldump.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Nmldump.o -MD -MP -MF $(DEPDIR)/cdo-Nmldump.Tpo -c -o cdo-Nmldump.o `test -f 'Nmldump.cc' || echo '$(srcdir)/'`Nmldump.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Nmldump.Tpo $(DEPDIR)/cdo-Nmldump.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Nmldump.cc' object='cdo-Nmldump.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Nmldump.o `test -f 'Nmldump.cc' || echo '$(srcdir)/'`Nmldump.cc
+
+cdo-Nmldump.obj: Nmldump.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Nmldump.obj -MD -MP -MF $(DEPDIR)/cdo-Nmldump.Tpo -c -o cdo-Nmldump.obj `if test -f 'Nmldump.cc'; then $(CYGPATH_W) 'Nmldump.cc'; else $(CYGPATH_W) '$(srcdir)/Nmldump.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Nmldump.Tpo $(DEPDIR)/cdo-Nmldump.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Nmldump.cc' object='cdo-Nmldump.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Nmldump.obj `if test -f 'Nmldump.cc'; then $(CYGPATH_W) 'Nmldump.cc'; else $(CYGPATH_W) '$(srcdir)/Nmldump.cc'; fi`
+
+cdo-Output.o: Output.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Output.o -MD -MP -MF $(DEPDIR)/cdo-Output.Tpo -c -o cdo-Output.o `test -f 'Output.cc' || echo '$(srcdir)/'`Output.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Output.Tpo $(DEPDIR)/cdo-Output.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Output.cc' object='cdo-Output.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Output.o `test -f 'Output.cc' || echo '$(srcdir)/'`Output.cc
+
+cdo-Output.obj: Output.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Output.obj -MD -MP -MF $(DEPDIR)/cdo-Output.Tpo -c -o cdo-Output.obj `if test -f 'Output.cc'; then $(CYGPATH_W) 'Output.cc'; else $(CYGPATH_W) '$(srcdir)/Output.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Output.Tpo $(DEPDIR)/cdo-Output.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Output.cc' object='cdo-Output.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Output.obj `if test -f 'Output.cc'; then $(CYGPATH_W) 'Output.cc'; else $(CYGPATH_W) '$(srcdir)/Output.cc'; fi`
+
+cdo-Outputgmt.o: Outputgmt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Outputgmt.o -MD -MP -MF $(DEPDIR)/cdo-Outputgmt.Tpo -c -o cdo-Outputgmt.o `test -f 'Outputgmt.cc' || echo '$(srcdir)/'`Outputgmt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Outputgmt.Tpo $(DEPDIR)/cdo-Outputgmt.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Outputgmt.cc' object='cdo-Outputgmt.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Outputgmt.o `test -f 'Outputgmt.cc' || echo '$(srcdir)/'`Outputgmt.cc
+
+cdo-Outputgmt.obj: Outputgmt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Outputgmt.obj -MD -MP -MF $(DEPDIR)/cdo-Outputgmt.Tpo -c -o cdo-Outputgmt.obj `if test -f 'Outputgmt.cc'; then $(CYGPATH_W) 'Outputgmt.cc'; else $(CYGPATH_W) '$(srcdir)/Outputgmt.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Outputgmt.Tpo $(DEPDIR)/cdo-Outputgmt.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Outputgmt.cc' object='cdo-Outputgmt.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Outputgmt.obj `if test -f 'Outputgmt.cc'; then $(CYGPATH_W) 'Outputgmt.cc'; else $(CYGPATH_W) '$(srcdir)/Outputgmt.cc'; fi`
+
+cdo-Pack.o: Pack.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pack.o -MD -MP -MF $(DEPDIR)/cdo-Pack.Tpo -c -o cdo-Pack.o `test -f 'Pack.cc' || echo '$(srcdir)/'`Pack.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pack.Tpo $(DEPDIR)/cdo-Pack.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pack.cc' object='cdo-Pack.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pack.o `test -f 'Pack.cc' || echo '$(srcdir)/'`Pack.cc
+
+cdo-Pack.obj: Pack.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pack.obj -MD -MP -MF $(DEPDIR)/cdo-Pack.Tpo -c -o cdo-Pack.obj `if test -f 'Pack.cc'; then $(CYGPATH_W) 'Pack.cc'; else $(CYGPATH_W) '$(srcdir)/Pack.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pack.Tpo $(DEPDIR)/cdo-Pack.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pack.cc' object='cdo-Pack.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pack.obj `if test -f 'Pack.cc'; then $(CYGPATH_W) 'Pack.cc'; else $(CYGPATH_W) '$(srcdir)/Pack.cc'; fi`
+
+cdo-Pardup.o: Pardup.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pardup.o -MD -MP -MF $(DEPDIR)/cdo-Pardup.Tpo -c -o cdo-Pardup.o `test -f 'Pardup.cc' || echo '$(srcdir)/'`Pardup.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pardup.Tpo $(DEPDIR)/cdo-Pardup.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pardup.cc' object='cdo-Pardup.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pardup.o `test -f 'Pardup.cc' || echo '$(srcdir)/'`Pardup.cc
+
+cdo-Pardup.obj: Pardup.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pardup.obj -MD -MP -MF $(DEPDIR)/cdo-Pardup.Tpo -c -o cdo-Pardup.obj `if test -f 'Pardup.cc'; then $(CYGPATH_W) 'Pardup.cc'; else $(CYGPATH_W) '$(srcdir)/Pardup.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pardup.Tpo $(DEPDIR)/cdo-Pardup.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pardup.cc' object='cdo-Pardup.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pardup.obj `if test -f 'Pardup.cc'; then $(CYGPATH_W) 'Pardup.cc'; else $(CYGPATH_W) '$(srcdir)/Pardup.cc'; fi`
+
+cdo-Pinfo.o: Pinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pinfo.o -MD -MP -MF $(DEPDIR)/cdo-Pinfo.Tpo -c -o cdo-Pinfo.o `test -f 'Pinfo.cc' || echo '$(srcdir)/'`Pinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pinfo.Tpo $(DEPDIR)/cdo-Pinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pinfo.cc' object='cdo-Pinfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pinfo.o `test -f 'Pinfo.cc' || echo '$(srcdir)/'`Pinfo.cc
+
+cdo-Pinfo.obj: Pinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Pinfo.Tpo -c -o cdo-Pinfo.obj `if test -f 'Pinfo.cc'; then $(CYGPATH_W) 'Pinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Pinfo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pinfo.Tpo $(DEPDIR)/cdo-Pinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pinfo.cc' object='cdo-Pinfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pinfo.obj `if test -f 'Pinfo.cc'; then $(CYGPATH_W) 'Pinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Pinfo.cc'; fi`
+
+cdo-Pressure.o: Pressure.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pressure.o -MD -MP -MF $(DEPDIR)/cdo-Pressure.Tpo -c -o cdo-Pressure.o `test -f 'Pressure.cc' || echo '$(srcdir)/'`Pressure.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pressure.Tpo $(DEPDIR)/cdo-Pressure.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pressure.cc' object='cdo-Pressure.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pressure.o `test -f 'Pressure.cc' || echo '$(srcdir)/'`Pressure.cc
+
+cdo-Pressure.obj: Pressure.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Pressure.obj -MD -MP -MF $(DEPDIR)/cdo-Pressure.Tpo -c -o cdo-Pressure.obj `if test -f 'Pressure.cc'; then $(CYGPATH_W) 'Pressure.cc'; else $(CYGPATH_W) '$(srcdir)/Pressure.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Pressure.Tpo $(DEPDIR)/cdo-Pressure.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Pressure.cc' object='cdo-Pressure.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Pressure.obj `if test -f 'Pressure.cc'; then $(CYGPATH_W) 'Pressure.cc'; else $(CYGPATH_W) '$(srcdir)/Pressure.cc'; fi`
+
+cdo-Regres.o: Regres.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Regres.o -MD -MP -MF $(DEPDIR)/cdo-Regres.Tpo -c -o cdo-Regres.o `test -f 'Regres.cc' || echo '$(srcdir)/'`Regres.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Regres.Tpo $(DEPDIR)/cdo-Regres.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Regres.cc' object='cdo-Regres.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Regres.o `test -f 'Regres.cc' || echo '$(srcdir)/'`Regres.cc
+
+cdo-Regres.obj: Regres.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Regres.obj -MD -MP -MF $(DEPDIR)/cdo-Regres.Tpo -c -o cdo-Regres.obj `if test -f 'Regres.cc'; then $(CYGPATH_W) 'Regres.cc'; else $(CYGPATH_W) '$(srcdir)/Regres.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Regres.Tpo $(DEPDIR)/cdo-Regres.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Regres.cc' object='cdo-Regres.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Regres.obj `if test -f 'Regres.cc'; then $(CYGPATH_W) 'Regres.cc'; else $(CYGPATH_W) '$(srcdir)/Regres.cc'; fi`
+
+cdo-Remap.o: Remap.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Remap.o -MD -MP -MF $(DEPDIR)/cdo-Remap.Tpo -c -o cdo-Remap.o `test -f 'Remap.cc' || echo '$(srcdir)/'`Remap.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remap.Tpo $(DEPDIR)/cdo-Remap.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Remap.cc' object='cdo-Remap.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Remap.o `test -f 'Remap.cc' || echo '$(srcdir)/'`Remap.cc
+
+cdo-Remap.obj: Remap.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Remap.obj -MD -MP -MF $(DEPDIR)/cdo-Remap.Tpo -c -o cdo-Remap.obj `if test -f 'Remap.cc'; then $(CYGPATH_W) 'Remap.cc'; else $(CYGPATH_W) '$(srcdir)/Remap.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remap.Tpo $(DEPDIR)/cdo-Remap.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Remap.cc' object='cdo-Remap.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Remap.obj `if test -f 'Remap.cc'; then $(CYGPATH_W) 'Remap.cc'; else $(CYGPATH_W) '$(srcdir)/Remap.cc'; fi`
+
+cdo-Remapeta.o: Remapeta.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Remapeta.o -MD -MP -MF $(DEPDIR)/cdo-Remapeta.Tpo -c -o cdo-Remapeta.o `test -f 'Remapeta.cc' || echo '$(srcdir)/'`Remapeta.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remapeta.Tpo $(DEPDIR)/cdo-Remapeta.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Remapeta.cc' object='cdo-Remapeta.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Remapeta.o `test -f 'Remapeta.cc' || echo '$(srcdir)/'`Remapeta.cc
+
+cdo-Remapeta.obj: Remapeta.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Remapeta.obj -MD -MP -MF $(DEPDIR)/cdo-Remapeta.Tpo -c -o cdo-Remapeta.obj `if test -f 'Remapeta.cc'; then $(CYGPATH_W) 'Remapeta.cc'; else $(CYGPATH_W) '$(srcdir)/Remapeta.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Remapeta.Tpo $(DEPDIR)/cdo-Remapeta.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Remapeta.cc' object='cdo-Remapeta.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Remapeta.obj `if test -f 'Remapeta.cc'; then $(CYGPATH_W) 'Remapeta.cc'; else $(CYGPATH_W) '$(srcdir)/Remapeta.cc'; fi`
+
+cdo-Replace.o: Replace.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Replace.o -MD -MP -MF $(DEPDIR)/cdo-Replace.Tpo -c -o cdo-Replace.o `test -f 'Replace.cc' || echo '$(srcdir)/'`Replace.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replace.Tpo $(DEPDIR)/cdo-Replace.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Replace.cc' object='cdo-Replace.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Replace.o `test -f 'Replace.cc' || echo '$(srcdir)/'`Replace.cc
+
+cdo-Replace.obj: Replace.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Replace.obj -MD -MP -MF $(DEPDIR)/cdo-Replace.Tpo -c -o cdo-Replace.obj `if test -f 'Replace.cc'; then $(CYGPATH_W) 'Replace.cc'; else $(CYGPATH_W) '$(srcdir)/Replace.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replace.Tpo $(DEPDIR)/cdo-Replace.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Replace.cc' object='cdo-Replace.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Replace.obj `if test -f 'Replace.cc'; then $(CYGPATH_W) 'Replace.cc'; else $(CYGPATH_W) '$(srcdir)/Replace.cc'; fi`
+
+cdo-Replacevalues.o: Replacevalues.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Replacevalues.o -MD -MP -MF $(DEPDIR)/cdo-Replacevalues.Tpo -c -o cdo-Replacevalues.o `test -f 'Replacevalues.cc' || echo '$(srcdir)/'`Replacevalues.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replacevalues.Tpo $(DEPDIR)/cdo-Replacevalues.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Replacevalues.cc' object='cdo-Replacevalues.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Replacevalues.o `test -f 'Replacevalues.cc' || echo '$(srcdir)/'`Replacevalues.cc
+
+cdo-Replacevalues.obj: Replacevalues.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Replacevalues.obj -MD -MP -MF $(DEPDIR)/cdo-Replacevalues.Tpo -c -o cdo-Replacevalues.obj `if test -f 'Replacevalues.cc'; then $(CYGPATH_W) 'Replacevalues.cc'; else $(CYGPATH_W) '$(srcdir)/Replacevalues.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Replacevalues.Tpo $(DEPDIR)/cdo-Replacevalues.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Replacevalues.cc' object='cdo-Replacevalues.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Replacevalues.obj `if test -f 'Replacevalues.cc'; then $(CYGPATH_W) 'Replacevalues.cc'; else $(CYGPATH_W) '$(srcdir)/Replacevalues.cc'; fi`
+
+cdo-Rhopot.o: Rhopot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Rhopot.o -MD -MP -MF $(DEPDIR)/cdo-Rhopot.Tpo -c -o cdo-Rhopot.o `test -f 'Rhopot.cc' || echo '$(srcdir)/'`Rhopot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rhopot.Tpo $(DEPDIR)/cdo-Rhopot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Rhopot.cc' object='cdo-Rhopot.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Rhopot.o `test -f 'Rhopot.cc' || echo '$(srcdir)/'`Rhopot.cc
+
+cdo-Rhopot.obj: Rhopot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Rhopot.obj -MD -MP -MF $(DEPDIR)/cdo-Rhopot.Tpo -c -o cdo-Rhopot.obj `if test -f 'Rhopot.cc'; then $(CYGPATH_W) 'Rhopot.cc'; else $(CYGPATH_W) '$(srcdir)/Rhopot.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rhopot.Tpo $(DEPDIR)/cdo-Rhopot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Rhopot.cc' object='cdo-Rhopot.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Rhopot.obj `if test -f 'Rhopot.cc'; then $(CYGPATH_W) 'Rhopot.cc'; else $(CYGPATH_W) '$(srcdir)/Rhopot.cc'; fi`
+
+cdo-Rotuv.o: Rotuv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Rotuv.o -MD -MP -MF $(DEPDIR)/cdo-Rotuv.Tpo -c -o cdo-Rotuv.o `test -f 'Rotuv.cc' || echo '$(srcdir)/'`Rotuv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rotuv.Tpo $(DEPDIR)/cdo-Rotuv.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Rotuv.cc' object='cdo-Rotuv.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Rotuv.o `test -f 'Rotuv.cc' || echo '$(srcdir)/'`Rotuv.cc
+
+cdo-Rotuv.obj: Rotuv.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Rotuv.obj -MD -MP -MF $(DEPDIR)/cdo-Rotuv.Tpo -c -o cdo-Rotuv.obj `if test -f 'Rotuv.cc'; then $(CYGPATH_W) 'Rotuv.cc'; else $(CYGPATH_W) '$(srcdir)/Rotuv.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Rotuv.Tpo $(DEPDIR)/cdo-Rotuv.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Rotuv.cc' object='cdo-Rotuv.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Rotuv.obj `if test -f 'Rotuv.cc'; then $(CYGPATH_W) 'Rotuv.cc'; else $(CYGPATH_W) '$(srcdir)/Rotuv.cc'; fi`
+
+cdo-Runpctl.o: Runpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Runpctl.o -MD -MP -MF $(DEPDIR)/cdo-Runpctl.Tpo -c -o cdo-Runpctl.o `test -f 'Runpctl.cc' || echo '$(srcdir)/'`Runpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runpctl.Tpo $(DEPDIR)/cdo-Runpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Runpctl.cc' object='cdo-Runpctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Runpctl.o `test -f 'Runpctl.cc' || echo '$(srcdir)/'`Runpctl.cc
+
+cdo-Runpctl.obj: Runpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Runpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Runpctl.Tpo -c -o cdo-Runpctl.obj `if test -f 'Runpctl.cc'; then $(CYGPATH_W) 'Runpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Runpctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runpctl.Tpo $(DEPDIR)/cdo-Runpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Runpctl.cc' object='cdo-Runpctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Runpctl.obj `if test -f 'Runpctl.cc'; then $(CYGPATH_W) 'Runpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Runpctl.cc'; fi`
+
+cdo-Runstat.o: Runstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Runstat.o -MD -MP -MF $(DEPDIR)/cdo-Runstat.Tpo -c -o cdo-Runstat.o `test -f 'Runstat.cc' || echo '$(srcdir)/'`Runstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runstat.Tpo $(DEPDIR)/cdo-Runstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Runstat.cc' object='cdo-Runstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Runstat.o `test -f 'Runstat.cc' || echo '$(srcdir)/'`Runstat.cc
+
+cdo-Runstat.obj: Runstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Runstat.obj -MD -MP -MF $(DEPDIR)/cdo-Runstat.Tpo -c -o cdo-Runstat.obj `if test -f 'Runstat.cc'; then $(CYGPATH_W) 'Runstat.cc'; else $(CYGPATH_W) '$(srcdir)/Runstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Runstat.Tpo $(DEPDIR)/cdo-Runstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Runstat.cc' object='cdo-Runstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Runstat.obj `if test -f 'Runstat.cc'; then $(CYGPATH_W) 'Runstat.cc'; else $(CYGPATH_W) '$(srcdir)/Runstat.cc'; fi`
+
+cdo-Samplegrid.o: Samplegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Samplegrid.o -MD -MP -MF $(DEPDIR)/cdo-Samplegrid.Tpo -c -o cdo-Samplegrid.o `test -f 'Samplegrid.cc' || echo '$(srcdir)/'`Samplegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegrid.Tpo $(DEPDIR)/cdo-Samplegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Samplegrid.cc' object='cdo-Samplegrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Samplegrid.o `test -f 'Samplegrid.cc' || echo '$(srcdir)/'`Samplegrid.cc
+
+cdo-Samplegrid.obj: Samplegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Samplegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Samplegrid.Tpo -c -o cdo-Samplegrid.obj `if test -f 'Samplegrid.cc'; then $(CYGPATH_W) 'Samplegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Samplegrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegrid.Tpo $(DEPDIR)/cdo-Samplegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Samplegrid.cc' object='cdo-Samplegrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Samplegrid.obj `if test -f 'Samplegrid.cc'; then $(CYGPATH_W) 'Samplegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Samplegrid.cc'; fi`
+
+cdo-Samplegridicon.o: Samplegridicon.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Samplegridicon.o -MD -MP -MF $(DEPDIR)/cdo-Samplegridicon.Tpo -c -o cdo-Samplegridicon.o `test -f 'Samplegridicon.cc' || echo '$(srcdir)/'`Samplegridicon.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegridicon.Tpo $(DEPDIR)/cdo-Samplegridicon.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Samplegridicon.cc' object='cdo-Samplegridicon.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Samplegridicon.o `test -f 'Samplegridicon.cc' || echo '$(srcdir)/'`Samplegridicon.cc
+
+cdo-Samplegridicon.obj: Samplegridicon.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Samplegridicon.obj -MD -MP -MF $(DEPDIR)/cdo-Samplegridicon.Tpo -c -o cdo-Samplegridicon.obj `if test -f 'Samplegridicon.cc'; then $(CYGPATH_W) 'Samplegridicon.cc'; else $(CYGPATH_W) '$(srcdir)/Samplegridicon.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Samplegridicon.Tpo $(DEPDIR)/cdo-Samplegridicon.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Samplegridicon.cc' object='cdo-Samplegridicon.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Samplegridicon.obj `if test -f 'Samplegridicon.cc'; then $(CYGPATH_W) 'Samplegridicon.cc'; else $(CYGPATH_W) '$(srcdir)/Samplegridicon.cc'; fi`
+
+cdo-Seascount.o: Seascount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seascount.o -MD -MP -MF $(DEPDIR)/cdo-Seascount.Tpo -c -o cdo-Seascount.o `test -f 'Seascount.cc' || echo '$(srcdir)/'`Seascount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seascount.Tpo $(DEPDIR)/cdo-Seascount.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seascount.cc' object='cdo-Seascount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seascount.o `test -f 'Seascount.cc' || echo '$(srcdir)/'`Seascount.cc
+
+cdo-Seascount.obj: Seascount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seascount.obj -MD -MP -MF $(DEPDIR)/cdo-Seascount.Tpo -c -o cdo-Seascount.obj `if test -f 'Seascount.cc'; then $(CYGPATH_W) 'Seascount.cc'; else $(CYGPATH_W) '$(srcdir)/Seascount.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seascount.Tpo $(DEPDIR)/cdo-Seascount.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seascount.cc' object='cdo-Seascount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seascount.obj `if test -f 'Seascount.cc'; then $(CYGPATH_W) 'Seascount.cc'; else $(CYGPATH_W) '$(srcdir)/Seascount.cc'; fi`
+
+cdo-Seaspctl.o: Seaspctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seaspctl.o -MD -MP -MF $(DEPDIR)/cdo-Seaspctl.Tpo -c -o cdo-Seaspctl.o `test -f 'Seaspctl.cc' || echo '$(srcdir)/'`Seaspctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seaspctl.Tpo $(DEPDIR)/cdo-Seaspctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seaspctl.cc' object='cdo-Seaspctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seaspctl.o `test -f 'Seaspctl.cc' || echo '$(srcdir)/'`Seaspctl.cc
+
+cdo-Seaspctl.obj: Seaspctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seaspctl.obj -MD -MP -MF $(DEPDIR)/cdo-Seaspctl.Tpo -c -o cdo-Seaspctl.obj `if test -f 'Seaspctl.cc'; then $(CYGPATH_W) 'Seaspctl.cc'; else $(CYGPATH_W) '$(srcdir)/Seaspctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seaspctl.Tpo $(DEPDIR)/cdo-Seaspctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seaspctl.cc' object='cdo-Seaspctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seaspctl.obj `if test -f 'Seaspctl.cc'; then $(CYGPATH_W) 'Seaspctl.cc'; else $(CYGPATH_W) '$(srcdir)/Seaspctl.cc'; fi`
+
+cdo-Seasstat.o: Seasstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seasstat.o -MD -MP -MF $(DEPDIR)/cdo-Seasstat.Tpo -c -o cdo-Seasstat.o `test -f 'Seasstat.cc' || echo '$(srcdir)/'`Seasstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seasstat.Tpo $(DEPDIR)/cdo-Seasstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seasstat.cc' object='cdo-Seasstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seasstat.o `test -f 'Seasstat.cc' || echo '$(srcdir)/'`Seasstat.cc
+
+cdo-Seasstat.obj: Seasstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seasstat.obj -MD -MP -MF $(DEPDIR)/cdo-Seasstat.Tpo -c -o cdo-Seasstat.obj `if test -f 'Seasstat.cc'; then $(CYGPATH_W) 'Seasstat.cc'; else $(CYGPATH_W) '$(srcdir)/Seasstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seasstat.Tpo $(DEPDIR)/cdo-Seasstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seasstat.cc' object='cdo-Seasstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seasstat.obj `if test -f 'Seasstat.cc'; then $(CYGPATH_W) 'Seasstat.cc'; else $(CYGPATH_W) '$(srcdir)/Seasstat.cc'; fi`
+
+cdo-Selbox.o: Selbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selbox.o -MD -MP -MF $(DEPDIR)/cdo-Selbox.Tpo -c -o cdo-Selbox.o `test -f 'Selbox.cc' || echo '$(srcdir)/'`Selbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selbox.Tpo $(DEPDIR)/cdo-Selbox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selbox.cc' object='cdo-Selbox.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selbox.o `test -f 'Selbox.cc' || echo '$(srcdir)/'`Selbox.cc
+
+cdo-Selbox.obj: Selbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selbox.obj -MD -MP -MF $(DEPDIR)/cdo-Selbox.Tpo -c -o cdo-Selbox.obj `if test -f 'Selbox.cc'; then $(CYGPATH_W) 'Selbox.cc'; else $(CYGPATH_W) '$(srcdir)/Selbox.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selbox.Tpo $(DEPDIR)/cdo-Selbox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selbox.cc' object='cdo-Selbox.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selbox.obj `if test -f 'Selbox.cc'; then $(CYGPATH_W) 'Selbox.cc'; else $(CYGPATH_W) '$(srcdir)/Selbox.cc'; fi`
+
+cdo-Selgridcell.o: Selgridcell.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selgridcell.o -MD -MP -MF $(DEPDIR)/cdo-Selgridcell.Tpo -c -o cdo-Selgridcell.o `test -f 'Selgridcell.cc' || echo '$(srcdir)/'`Selgridcell.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selgridcell.Tpo $(DEPDIR)/cdo-Selgridcell.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selgridcell.cc' object='cdo-Selgridcell.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selgridcell.o `test -f 'Selgridcell.cc' || echo '$(srcdir)/'`Selgridcell.cc
+
+cdo-Selgridcell.obj: Selgridcell.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selgridcell.obj -MD -MP -MF $(DEPDIR)/cdo-Selgridcell.Tpo -c -o cdo-Selgridcell.obj `if test -f 'Selgridcell.cc'; then $(CYGPATH_W) 'Selgridcell.cc'; else $(CYGPATH_W) '$(srcdir)/Selgridcell.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selgridcell.Tpo $(DEPDIR)/cdo-Selgridcell.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selgridcell.cc' object='cdo-Selgridcell.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selgridcell.obj `if test -f 'Selgridcell.cc'; then $(CYGPATH_W) 'Selgridcell.cc'; else $(CYGPATH_W) '$(srcdir)/Selgridcell.cc'; fi`
+
+cdo-Select.o: Select.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Select.o -MD -MP -MF $(DEPDIR)/cdo-Select.Tpo -c -o cdo-Select.o `test -f 'Select.cc' || echo '$(srcdir)/'`Select.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Select.Tpo $(DEPDIR)/cdo-Select.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Select.cc' object='cdo-Select.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Select.o `test -f 'Select.cc' || echo '$(srcdir)/'`Select.cc
+
+cdo-Select.obj: Select.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Select.obj -MD -MP -MF $(DEPDIR)/cdo-Select.Tpo -c -o cdo-Select.obj `if test -f 'Select.cc'; then $(CYGPATH_W) 'Select.cc'; else $(CYGPATH_W) '$(srcdir)/Select.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Select.Tpo $(DEPDIR)/cdo-Select.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Select.cc' object='cdo-Select.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Select.obj `if test -f 'Select.cc'; then $(CYGPATH_W) 'Select.cc'; else $(CYGPATH_W) '$(srcdir)/Select.cc'; fi`
+
+cdo-Selmulti.o: Selmulti.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selmulti.o -MD -MP -MF $(DEPDIR)/cdo-Selmulti.Tpo -c -o cdo-Selmulti.o `test -f 'Selmulti.cc' || echo '$(srcdir)/'`Selmulti.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selmulti.Tpo $(DEPDIR)/cdo-Selmulti.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selmulti.cc' object='cdo-Selmulti.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selmulti.o `test -f 'Selmulti.cc' || echo '$(srcdir)/'`Selmulti.cc
+
+cdo-Selmulti.obj: Selmulti.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selmulti.obj -MD -MP -MF $(DEPDIR)/cdo-Selmulti.Tpo -c -o cdo-Selmulti.obj `if test -f 'Selmulti.cc'; then $(CYGPATH_W) 'Selmulti.cc'; else $(CYGPATH_W) '$(srcdir)/Selmulti.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selmulti.Tpo $(DEPDIR)/cdo-Selmulti.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selmulti.cc' object='cdo-Selmulti.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selmulti.obj `if test -f 'Selmulti.cc'; then $(CYGPATH_W) 'Selmulti.cc'; else $(CYGPATH_W) '$(srcdir)/Selmulti.cc'; fi`
+
+cdo-Seloperator.o: Seloperator.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seloperator.o -MD -MP -MF $(DEPDIR)/cdo-Seloperator.Tpo -c -o cdo-Seloperator.o `test -f 'Seloperator.cc' || echo '$(srcdir)/'`Seloperator.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seloperator.Tpo $(DEPDIR)/cdo-Seloperator.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seloperator.cc' object='cdo-Seloperator.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seloperator.o `test -f 'Seloperator.cc' || echo '$(srcdir)/'`Seloperator.cc
+
+cdo-Seloperator.obj: Seloperator.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seloperator.obj -MD -MP -MF $(DEPDIR)/cdo-Seloperator.Tpo -c -o cdo-Seloperator.obj `if test -f 'Seloperator.cc'; then $(CYGPATH_W) 'Seloperator.cc'; else $(CYGPATH_W) '$(srcdir)/Seloperator.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seloperator.Tpo $(DEPDIR)/cdo-Seloperator.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seloperator.cc' object='cdo-Seloperator.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seloperator.obj `if test -f 'Seloperator.cc'; then $(CYGPATH_W) 'Seloperator.cc'; else $(CYGPATH_W) '$(srcdir)/Seloperator.cc'; fi`
+
+cdo-Selrec.o: Selrec.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selrec.o -MD -MP -MF $(DEPDIR)/cdo-Selrec.Tpo -c -o cdo-Selrec.o `test -f 'Selrec.cc' || echo '$(srcdir)/'`Selrec.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selrec.Tpo $(DEPDIR)/cdo-Selrec.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selrec.cc' object='cdo-Selrec.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selrec.o `test -f 'Selrec.cc' || echo '$(srcdir)/'`Selrec.cc
+
+cdo-Selrec.obj: Selrec.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selrec.obj -MD -MP -MF $(DEPDIR)/cdo-Selrec.Tpo -c -o cdo-Selrec.obj `if test -f 'Selrec.cc'; then $(CYGPATH_W) 'Selrec.cc'; else $(CYGPATH_W) '$(srcdir)/Selrec.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selrec.Tpo $(DEPDIR)/cdo-Selrec.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selrec.cc' object='cdo-Selrec.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selrec.obj `if test -f 'Selrec.cc'; then $(CYGPATH_W) 'Selrec.cc'; else $(CYGPATH_W) '$(srcdir)/Selrec.cc'; fi`
+
+cdo-Seltime.o: Seltime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seltime.o -MD -MP -MF $(DEPDIR)/cdo-Seltime.Tpo -c -o cdo-Seltime.o `test -f 'Seltime.cc' || echo '$(srcdir)/'`Seltime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seltime.Tpo $(DEPDIR)/cdo-Seltime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seltime.cc' object='cdo-Seltime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seltime.o `test -f 'Seltime.cc' || echo '$(srcdir)/'`Seltime.cc
+
+cdo-Seltime.obj: Seltime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Seltime.obj -MD -MP -MF $(DEPDIR)/cdo-Seltime.Tpo -c -o cdo-Seltime.obj `if test -f 'Seltime.cc'; then $(CYGPATH_W) 'Seltime.cc'; else $(CYGPATH_W) '$(srcdir)/Seltime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Seltime.Tpo $(DEPDIR)/cdo-Seltime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Seltime.cc' object='cdo-Seltime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Seltime.obj `if test -f 'Seltime.cc'; then $(CYGPATH_W) 'Seltime.cc'; else $(CYGPATH_W) '$(srcdir)/Seltime.cc'; fi`
+
+cdo-Selvar.o: Selvar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selvar.o -MD -MP -MF $(DEPDIR)/cdo-Selvar.Tpo -c -o cdo-Selvar.o `test -f 'Selvar.cc' || echo '$(srcdir)/'`Selvar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selvar.Tpo $(DEPDIR)/cdo-Selvar.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selvar.cc' object='cdo-Selvar.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selvar.o `test -f 'Selvar.cc' || echo '$(srcdir)/'`Selvar.cc
+
+cdo-Selvar.obj: Selvar.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Selvar.obj -MD -MP -MF $(DEPDIR)/cdo-Selvar.Tpo -c -o cdo-Selvar.obj `if test -f 'Selvar.cc'; then $(CYGPATH_W) 'Selvar.cc'; else $(CYGPATH_W) '$(srcdir)/Selvar.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Selvar.Tpo $(DEPDIR)/cdo-Selvar.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Selvar.cc' object='cdo-Selvar.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Selvar.obj `if test -f 'Selvar.cc'; then $(CYGPATH_W) 'Selvar.cc'; else $(CYGPATH_W) '$(srcdir)/Selvar.cc'; fi`
+
+cdo-Set.o: Set.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Set.o -MD -MP -MF $(DEPDIR)/cdo-Set.Tpo -c -o cdo-Set.o `test -f 'Set.cc' || echo '$(srcdir)/'`Set.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Set.Tpo $(DEPDIR)/cdo-Set.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Set.cc' object='cdo-Set.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Set.o `test -f 'Set.cc' || echo '$(srcdir)/'`Set.cc
+
+cdo-Set.obj: Set.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Set.obj -MD -MP -MF $(DEPDIR)/cdo-Set.Tpo -c -o cdo-Set.obj `if test -f 'Set.cc'; then $(CYGPATH_W) 'Set.cc'; else $(CYGPATH_W) '$(srcdir)/Set.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Set.Tpo $(DEPDIR)/cdo-Set.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Set.cc' object='cdo-Set.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Set.obj `if test -f 'Set.cc'; then $(CYGPATH_W) 'Set.cc'; else $(CYGPATH_W) '$(srcdir)/Set.cc'; fi`
+
+cdo-Setattribute.o: Setattribute.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setattribute.o -MD -MP -MF $(DEPDIR)/cdo-Setattribute.Tpo -c -o cdo-Setattribute.o `test -f 'Setattribute.cc' || echo '$(srcdir)/'`Setattribute.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setattribute.Tpo $(DEPDIR)/cdo-Setattribute.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setattribute.cc' object='cdo-Setattribute.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setattribute.o `test -f 'Setattribute.cc' || echo '$(srcdir)/'`Setattribute.cc
+
+cdo-Setattribute.obj: Setattribute.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setattribute.obj -MD -MP -MF $(DEPDIR)/cdo-Setattribute.Tpo -c -o cdo-Setattribute.obj `if test -f 'Setattribute.cc'; then $(CYGPATH_W) 'Setattribute.cc'; else $(CYGPATH_W) '$(srcdir)/Setattribute.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setattribute.Tpo $(DEPDIR)/cdo-Setattribute.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setattribute.cc' object='cdo-Setattribute.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setattribute.obj `if test -f 'Setattribute.cc'; then $(CYGPATH_W) 'Setattribute.cc'; else $(CYGPATH_W) '$(srcdir)/Setattribute.cc'; fi`
+
+cdo-Setbox.o: Setbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setbox.o -MD -MP -MF $(DEPDIR)/cdo-Setbox.Tpo -c -o cdo-Setbox.o `test -f 'Setbox.cc' || echo '$(srcdir)/'`Setbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setbox.Tpo $(DEPDIR)/cdo-Setbox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setbox.cc' object='cdo-Setbox.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setbox.o `test -f 'Setbox.cc' || echo '$(srcdir)/'`Setbox.cc
+
+cdo-Setbox.obj: Setbox.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setbox.obj -MD -MP -MF $(DEPDIR)/cdo-Setbox.Tpo -c -o cdo-Setbox.obj `if test -f 'Setbox.cc'; then $(CYGPATH_W) 'Setbox.cc'; else $(CYGPATH_W) '$(srcdir)/Setbox.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setbox.Tpo $(DEPDIR)/cdo-Setbox.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setbox.cc' object='cdo-Setbox.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setbox.obj `if test -f 'Setbox.cc'; then $(CYGPATH_W) 'Setbox.cc'; else $(CYGPATH_W) '$(srcdir)/Setbox.cc'; fi`
+
+cdo-Setgatt.o: Setgatt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setgatt.o -MD -MP -MF $(DEPDIR)/cdo-Setgatt.Tpo -c -o cdo-Setgatt.o `test -f 'Setgatt.cc' || echo '$(srcdir)/'`Setgatt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgatt.Tpo $(DEPDIR)/cdo-Setgatt.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setgatt.cc' object='cdo-Setgatt.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setgatt.o `test -f 'Setgatt.cc' || echo '$(srcdir)/'`Setgatt.cc
+
+cdo-Setgatt.obj: Setgatt.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setgatt.obj -MD -MP -MF $(DEPDIR)/cdo-Setgatt.Tpo -c -o cdo-Setgatt.obj `if test -f 'Setgatt.cc'; then $(CYGPATH_W) 'Setgatt.cc'; else $(CYGPATH_W) '$(srcdir)/Setgatt.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgatt.Tpo $(DEPDIR)/cdo-Setgatt.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setgatt.cc' object='cdo-Setgatt.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setgatt.obj `if test -f 'Setgatt.cc'; then $(CYGPATH_W) 'Setgatt.cc'; else $(CYGPATH_W) '$(srcdir)/Setgatt.cc'; fi`
+
+cdo-Setgrid.o: Setgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setgrid.o -MD -MP -MF $(DEPDIR)/cdo-Setgrid.Tpo -c -o cdo-Setgrid.o `test -f 'Setgrid.cc' || echo '$(srcdir)/'`Setgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgrid.Tpo $(DEPDIR)/cdo-Setgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setgrid.cc' object='cdo-Setgrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setgrid.o `test -f 'Setgrid.cc' || echo '$(srcdir)/'`Setgrid.cc
+
+cdo-Setgrid.obj: Setgrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setgrid.obj -MD -MP -MF $(DEPDIR)/cdo-Setgrid.Tpo -c -o cdo-Setgrid.obj `if test -f 'Setgrid.cc'; then $(CYGPATH_W) 'Setgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Setgrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setgrid.Tpo $(DEPDIR)/cdo-Setgrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setgrid.cc' object='cdo-Setgrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setgrid.obj `if test -f 'Setgrid.cc'; then $(CYGPATH_W) 'Setgrid.cc'; else $(CYGPATH_W) '$(srcdir)/Setgrid.cc'; fi`
+
+cdo-Sethalo.o: Sethalo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sethalo.o -MD -MP -MF $(DEPDIR)/cdo-Sethalo.Tpo -c -o cdo-Sethalo.o `test -f 'Sethalo.cc' || echo '$(srcdir)/'`Sethalo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sethalo.Tpo $(DEPDIR)/cdo-Sethalo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sethalo.cc' object='cdo-Sethalo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sethalo.o `test -f 'Sethalo.cc' || echo '$(srcdir)/'`Sethalo.cc
+
+cdo-Sethalo.obj: Sethalo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sethalo.obj -MD -MP -MF $(DEPDIR)/cdo-Sethalo.Tpo -c -o cdo-Sethalo.obj `if test -f 'Sethalo.cc'; then $(CYGPATH_W) 'Sethalo.cc'; else $(CYGPATH_W) '$(srcdir)/Sethalo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sethalo.Tpo $(DEPDIR)/cdo-Sethalo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sethalo.cc' object='cdo-Sethalo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sethalo.obj `if test -f 'Sethalo.cc'; then $(CYGPATH_W) 'Sethalo.cc'; else $(CYGPATH_W) '$(srcdir)/Sethalo.cc'; fi`
+
+cdo-Setmiss.o: Setmiss.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setmiss.o -MD -MP -MF $(DEPDIR)/cdo-Setmiss.Tpo -c -o cdo-Setmiss.o `test -f 'Setmiss.cc' || echo '$(srcdir)/'`Setmiss.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setmiss.Tpo $(DEPDIR)/cdo-Setmiss.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setmiss.cc' object='cdo-Setmiss.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setmiss.o `test -f 'Setmiss.cc' || echo '$(srcdir)/'`Setmiss.cc
+
+cdo-Setmiss.obj: Setmiss.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setmiss.obj -MD -MP -MF $(DEPDIR)/cdo-Setmiss.Tpo -c -o cdo-Setmiss.obj `if test -f 'Setmiss.cc'; then $(CYGPATH_W) 'Setmiss.cc'; else $(CYGPATH_W) '$(srcdir)/Setmiss.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setmiss.Tpo $(DEPDIR)/cdo-Setmiss.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setmiss.cc' object='cdo-Setmiss.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setmiss.obj `if test -f 'Setmiss.cc'; then $(CYGPATH_W) 'Setmiss.cc'; else $(CYGPATH_W) '$(srcdir)/Setmiss.cc'; fi`
+
+cdo-Setpartab.o: Setpartab.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setpartab.o -MD -MP -MF $(DEPDIR)/cdo-Setpartab.Tpo -c -o cdo-Setpartab.o `test -f 'Setpartab.cc' || echo '$(srcdir)/'`Setpartab.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setpartab.Tpo $(DEPDIR)/cdo-Setpartab.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setpartab.cc' object='cdo-Setpartab.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setpartab.o `test -f 'Setpartab.cc' || echo '$(srcdir)/'`Setpartab.cc
+
+cdo-Setpartab.obj: Setpartab.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setpartab.obj -MD -MP -MF $(DEPDIR)/cdo-Setpartab.Tpo -c -o cdo-Setpartab.obj `if test -f 'Setpartab.cc'; then $(CYGPATH_W) 'Setpartab.cc'; else $(CYGPATH_W) '$(srcdir)/Setpartab.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setpartab.Tpo $(DEPDIR)/cdo-Setpartab.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setpartab.cc' object='cdo-Setpartab.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setpartab.obj `if test -f 'Setpartab.cc'; then $(CYGPATH_W) 'Setpartab.cc'; else $(CYGPATH_W) '$(srcdir)/Setpartab.cc'; fi`
+
+cdo-Setrcaname.o: Setrcaname.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setrcaname.o -MD -MP -MF $(DEPDIR)/cdo-Setrcaname.Tpo -c -o cdo-Setrcaname.o `test -f 'Setrcaname.cc' || echo '$(srcdir)/'`Setrcaname.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setrcaname.Tpo $(DEPDIR)/cdo-Setrcaname.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setrcaname.cc' object='cdo-Setrcaname.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setrcaname.o `test -f 'Setrcaname.cc' || echo '$(srcdir)/'`Setrcaname.cc
+
+cdo-Setrcaname.obj: Setrcaname.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setrcaname.obj -MD -MP -MF $(DEPDIR)/cdo-Setrcaname.Tpo -c -o cdo-Setrcaname.obj `if test -f 'Setrcaname.cc'; then $(CYGPATH_W) 'Setrcaname.cc'; else $(CYGPATH_W) '$(srcdir)/Setrcaname.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setrcaname.Tpo $(DEPDIR)/cdo-Setrcaname.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setrcaname.cc' object='cdo-Setrcaname.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setrcaname.obj `if test -f 'Setrcaname.cc'; then $(CYGPATH_W) 'Setrcaname.cc'; else $(CYGPATH_W) '$(srcdir)/Setrcaname.cc'; fi`
+
+cdo-Settime.o: Settime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Settime.o -MD -MP -MF $(DEPDIR)/cdo-Settime.Tpo -c -o cdo-Settime.o `test -f 'Settime.cc' || echo '$(srcdir)/'`Settime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Settime.Tpo $(DEPDIR)/cdo-Settime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Settime.cc' object='cdo-Settime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Settime.o `test -f 'Settime.cc' || echo '$(srcdir)/'`Settime.cc
+
+cdo-Settime.obj: Settime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Settime.obj -MD -MP -MF $(DEPDIR)/cdo-Settime.Tpo -c -o cdo-Settime.obj `if test -f 'Settime.cc'; then $(CYGPATH_W) 'Settime.cc'; else $(CYGPATH_W) '$(srcdir)/Settime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Settime.Tpo $(DEPDIR)/cdo-Settime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Settime.cc' object='cdo-Settime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Settime.obj `if test -f 'Settime.cc'; then $(CYGPATH_W) 'Settime.cc'; else $(CYGPATH_W) '$(srcdir)/Settime.cc'; fi`
+
+cdo-Setzaxis.o: Setzaxis.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setzaxis.o -MD -MP -MF $(DEPDIR)/cdo-Setzaxis.Tpo -c -o cdo-Setzaxis.o `test -f 'Setzaxis.cc' || echo '$(srcdir)/'`Setzaxis.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setzaxis.Tpo $(DEPDIR)/cdo-Setzaxis.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setzaxis.cc' object='cdo-Setzaxis.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setzaxis.o `test -f 'Setzaxis.cc' || echo '$(srcdir)/'`Setzaxis.cc
+
+cdo-Setzaxis.obj: Setzaxis.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Setzaxis.obj -MD -MP -MF $(DEPDIR)/cdo-Setzaxis.Tpo -c -o cdo-Setzaxis.obj `if test -f 'Setzaxis.cc'; then $(CYGPATH_W) 'Setzaxis.cc'; else $(CYGPATH_W) '$(srcdir)/Setzaxis.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Setzaxis.Tpo $(DEPDIR)/cdo-Setzaxis.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Setzaxis.cc' object='cdo-Setzaxis.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Setzaxis.obj `if test -f 'Setzaxis.cc'; then $(CYGPATH_W) 'Setzaxis.cc'; else $(CYGPATH_W) '$(srcdir)/Setzaxis.cc'; fi`
+
+cdo-Shiftxy.o: Shiftxy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Shiftxy.o -MD -MP -MF $(DEPDIR)/cdo-Shiftxy.Tpo -c -o cdo-Shiftxy.o `test -f 'Shiftxy.cc' || echo '$(srcdir)/'`Shiftxy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Shiftxy.Tpo $(DEPDIR)/cdo-Shiftxy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Shiftxy.cc' object='cdo-Shiftxy.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Shiftxy.o `test -f 'Shiftxy.cc' || echo '$(srcdir)/'`Shiftxy.cc
+
+cdo-Shiftxy.obj: Shiftxy.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Shiftxy.obj -MD -MP -MF $(DEPDIR)/cdo-Shiftxy.Tpo -c -o cdo-Shiftxy.obj `if test -f 'Shiftxy.cc'; then $(CYGPATH_W) 'Shiftxy.cc'; else $(CYGPATH_W) '$(srcdir)/Shiftxy.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Shiftxy.Tpo $(DEPDIR)/cdo-Shiftxy.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Shiftxy.cc' object='cdo-Shiftxy.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Shiftxy.obj `if test -f 'Shiftxy.cc'; then $(CYGPATH_W) 'Shiftxy.cc'; else $(CYGPATH_W) '$(srcdir)/Shiftxy.cc'; fi`
+
+cdo-Showinfo.o: Showinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Showinfo.o -MD -MP -MF $(DEPDIR)/cdo-Showinfo.Tpo -c -o cdo-Showinfo.o `test -f 'Showinfo.cc' || echo '$(srcdir)/'`Showinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Showinfo.Tpo $(DEPDIR)/cdo-Showinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Showinfo.cc' object='cdo-Showinfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Showinfo.o `test -f 'Showinfo.cc' || echo '$(srcdir)/'`Showinfo.cc
+
+cdo-Showinfo.obj: Showinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Showinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Showinfo.Tpo -c -o cdo-Showinfo.obj `if test -f 'Showinfo.cc'; then $(CYGPATH_W) 'Showinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Showinfo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Showinfo.Tpo $(DEPDIR)/cdo-Showinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Showinfo.cc' object='cdo-Showinfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Showinfo.obj `if test -f 'Showinfo.cc'; then $(CYGPATH_W) 'Showinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Showinfo.cc'; fi`
+
+cdo-Sinfo.o: Sinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sinfo.o -MD -MP -MF $(DEPDIR)/cdo-Sinfo.Tpo -c -o cdo-Sinfo.o `test -f 'Sinfo.cc' || echo '$(srcdir)/'`Sinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sinfo.Tpo $(DEPDIR)/cdo-Sinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sinfo.cc' object='cdo-Sinfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sinfo.o `test -f 'Sinfo.cc' || echo '$(srcdir)/'`Sinfo.cc
+
+cdo-Sinfo.obj: Sinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Sinfo.Tpo -c -o cdo-Sinfo.obj `if test -f 'Sinfo.cc'; then $(CYGPATH_W) 'Sinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Sinfo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sinfo.Tpo $(DEPDIR)/cdo-Sinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sinfo.cc' object='cdo-Sinfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sinfo.obj `if test -f 'Sinfo.cc'; then $(CYGPATH_W) 'Sinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Sinfo.cc'; fi`
+
+cdo-Smooth.o: Smooth.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Smooth.o -MD -MP -MF $(DEPDIR)/cdo-Smooth.Tpo -c -o cdo-Smooth.o `test -f 'Smooth.cc' || echo '$(srcdir)/'`Smooth.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Smooth.Tpo $(DEPDIR)/cdo-Smooth.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Smooth.cc' object='cdo-Smooth.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Smooth.o `test -f 'Smooth.cc' || echo '$(srcdir)/'`Smooth.cc
+
+cdo-Smooth.obj: Smooth.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Smooth.obj -MD -MP -MF $(DEPDIR)/cdo-Smooth.Tpo -c -o cdo-Smooth.obj `if test -f 'Smooth.cc'; then $(CYGPATH_W) 'Smooth.cc'; else $(CYGPATH_W) '$(srcdir)/Smooth.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Smooth.Tpo $(DEPDIR)/cdo-Smooth.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Smooth.cc' object='cdo-Smooth.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Smooth.obj `if test -f 'Smooth.cc'; then $(CYGPATH_W) 'Smooth.cc'; else $(CYGPATH_W) '$(srcdir)/Smooth.cc'; fi`
+
+cdo-Sort.o: Sort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sort.o -MD -MP -MF $(DEPDIR)/cdo-Sort.Tpo -c -o cdo-Sort.o `test -f 'Sort.cc' || echo '$(srcdir)/'`Sort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sort.Tpo $(DEPDIR)/cdo-Sort.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sort.cc' object='cdo-Sort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sort.o `test -f 'Sort.cc' || echo '$(srcdir)/'`Sort.cc
+
+cdo-Sort.obj: Sort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sort.obj -MD -MP -MF $(DEPDIR)/cdo-Sort.Tpo -c -o cdo-Sort.obj `if test -f 'Sort.cc'; then $(CYGPATH_W) 'Sort.cc'; else $(CYGPATH_W) '$(srcdir)/Sort.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sort.Tpo $(DEPDIR)/cdo-Sort.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sort.cc' object='cdo-Sort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sort.obj `if test -f 'Sort.cc'; then $(CYGPATH_W) 'Sort.cc'; else $(CYGPATH_W) '$(srcdir)/Sort.cc'; fi`
+
+cdo-Sorttimestamp.o: Sorttimestamp.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sorttimestamp.o -MD -MP -MF $(DEPDIR)/cdo-Sorttimestamp.Tpo -c -o cdo-Sorttimestamp.o `test -f 'Sorttimestamp.cc' || echo '$(srcdir)/'`Sorttimestamp.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sorttimestamp.Tpo $(DEPDIR)/cdo-Sorttimestamp.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sorttimestamp.cc' object='cdo-Sorttimestamp.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sorttimestamp.o `test -f 'Sorttimestamp.cc' || echo '$(srcdir)/'`Sorttimestamp.cc
+
+cdo-Sorttimestamp.obj: Sorttimestamp.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Sorttimestamp.obj -MD -MP -MF $(DEPDIR)/cdo-Sorttimestamp.Tpo -c -o cdo-Sorttimestamp.obj `if test -f 'Sorttimestamp.cc'; then $(CYGPATH_W) 'Sorttimestamp.cc'; else $(CYGPATH_W) '$(srcdir)/Sorttimestamp.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Sorttimestamp.Tpo $(DEPDIR)/cdo-Sorttimestamp.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Sorttimestamp.cc' object='cdo-Sorttimestamp.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Sorttimestamp.obj `if test -f 'Sorttimestamp.cc'; then $(CYGPATH_W) 'Sorttimestamp.cc'; else $(CYGPATH_W) '$(srcdir)/Sorttimestamp.cc'; fi`
+
+cdo-Specinfo.o: Specinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Specinfo.o -MD -MP -MF $(DEPDIR)/cdo-Specinfo.Tpo -c -o cdo-Specinfo.o `test -f 'Specinfo.cc' || echo '$(srcdir)/'`Specinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Specinfo.Tpo $(DEPDIR)/cdo-Specinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Specinfo.cc' object='cdo-Specinfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Specinfo.o `test -f 'Specinfo.cc' || echo '$(srcdir)/'`Specinfo.cc
+
+cdo-Specinfo.obj: Specinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Specinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Specinfo.Tpo -c -o cdo-Specinfo.obj `if test -f 'Specinfo.cc'; then $(CYGPATH_W) 'Specinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Specinfo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Specinfo.Tpo $(DEPDIR)/cdo-Specinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Specinfo.cc' object='cdo-Specinfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Specinfo.obj `if test -f 'Specinfo.cc'; then $(CYGPATH_W) 'Specinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Specinfo.cc'; fi`
+
+cdo-Spectral.o: Spectral.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Spectral.o -MD -MP -MF $(DEPDIR)/cdo-Spectral.Tpo -c -o cdo-Spectral.o `test -f 'Spectral.cc' || echo '$(srcdir)/'`Spectral.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectral.Tpo $(DEPDIR)/cdo-Spectral.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Spectral.cc' object='cdo-Spectral.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Spectral.o `test -f 'Spectral.cc' || echo '$(srcdir)/'`Spectral.cc
+
+cdo-Spectral.obj: Spectral.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Spectral.obj -MD -MP -MF $(DEPDIR)/cdo-Spectral.Tpo -c -o cdo-Spectral.obj `if test -f 'Spectral.cc'; then $(CYGPATH_W) 'Spectral.cc'; else $(CYGPATH_W) '$(srcdir)/Spectral.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectral.Tpo $(DEPDIR)/cdo-Spectral.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Spectral.cc' object='cdo-Spectral.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Spectral.obj `if test -f 'Spectral.cc'; then $(CYGPATH_W) 'Spectral.cc'; else $(CYGPATH_W) '$(srcdir)/Spectral.cc'; fi`
+
+cdo-Spectrum.o: Spectrum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Spectrum.o -MD -MP -MF $(DEPDIR)/cdo-Spectrum.Tpo -c -o cdo-Spectrum.o `test -f 'Spectrum.cc' || echo '$(srcdir)/'`Spectrum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectrum.Tpo $(DEPDIR)/cdo-Spectrum.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Spectrum.cc' object='cdo-Spectrum.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Spectrum.o `test -f 'Spectrum.cc' || echo '$(srcdir)/'`Spectrum.cc
+
+cdo-Spectrum.obj: Spectrum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Spectrum.obj -MD -MP -MF $(DEPDIR)/cdo-Spectrum.Tpo -c -o cdo-Spectrum.obj `if test -f 'Spectrum.cc'; then $(CYGPATH_W) 'Spectrum.cc'; else $(CYGPATH_W) '$(srcdir)/Spectrum.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Spectrum.Tpo $(DEPDIR)/cdo-Spectrum.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Spectrum.cc' object='cdo-Spectrum.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Spectrum.obj `if test -f 'Spectrum.cc'; then $(CYGPATH_W) 'Spectrum.cc'; else $(CYGPATH_W) '$(srcdir)/Spectrum.cc'; fi`
+
+cdo-Split.o: Split.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Split.o -MD -MP -MF $(DEPDIR)/cdo-Split.Tpo -c -o cdo-Split.o `test -f 'Split.cc' || echo '$(srcdir)/'`Split.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Split.Tpo $(DEPDIR)/cdo-Split.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Split.cc' object='cdo-Split.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Split.o `test -f 'Split.cc' || echo '$(srcdir)/'`Split.cc
+
+cdo-Split.obj: Split.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Split.obj -MD -MP -MF $(DEPDIR)/cdo-Split.Tpo -c -o cdo-Split.obj `if test -f 'Split.cc'; then $(CYGPATH_W) 'Split.cc'; else $(CYGPATH_W) '$(srcdir)/Split.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Split.Tpo $(DEPDIR)/cdo-Split.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Split.cc' object='cdo-Split.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Split.obj `if test -f 'Split.cc'; then $(CYGPATH_W) 'Split.cc'; else $(CYGPATH_W) '$(srcdir)/Split.cc'; fi`
+
+cdo-Splitrec.o: Splitrec.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splitrec.o -MD -MP -MF $(DEPDIR)/cdo-Splitrec.Tpo -c -o cdo-Splitrec.o `test -f 'Splitrec.cc' || echo '$(srcdir)/'`Splitrec.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitrec.Tpo $(DEPDIR)/cdo-Splitrec.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splitrec.cc' object='cdo-Splitrec.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splitrec.o `test -f 'Splitrec.cc' || echo '$(srcdir)/'`Splitrec.cc
+
+cdo-Splitrec.obj: Splitrec.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splitrec.obj -MD -MP -MF $(DEPDIR)/cdo-Splitrec.Tpo -c -o cdo-Splitrec.obj `if test -f 'Splitrec.cc'; then $(CYGPATH_W) 'Splitrec.cc'; else $(CYGPATH_W) '$(srcdir)/Splitrec.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitrec.Tpo $(DEPDIR)/cdo-Splitrec.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splitrec.cc' object='cdo-Splitrec.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splitrec.obj `if test -f 'Splitrec.cc'; then $(CYGPATH_W) 'Splitrec.cc'; else $(CYGPATH_W) '$(srcdir)/Splitrec.cc'; fi`
+
+cdo-Splitsel.o: Splitsel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splitsel.o -MD -MP -MF $(DEPDIR)/cdo-Splitsel.Tpo -c -o cdo-Splitsel.o `test -f 'Splitsel.cc' || echo '$(srcdir)/'`Splitsel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitsel.Tpo $(DEPDIR)/cdo-Splitsel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splitsel.cc' object='cdo-Splitsel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splitsel.o `test -f 'Splitsel.cc' || echo '$(srcdir)/'`Splitsel.cc
+
+cdo-Splitsel.obj: Splitsel.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splitsel.obj -MD -MP -MF $(DEPDIR)/cdo-Splitsel.Tpo -c -o cdo-Splitsel.obj `if test -f 'Splitsel.cc'; then $(CYGPATH_W) 'Splitsel.cc'; else $(CYGPATH_W) '$(srcdir)/Splitsel.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splitsel.Tpo $(DEPDIR)/cdo-Splitsel.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splitsel.cc' object='cdo-Splitsel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splitsel.obj `if test -f 'Splitsel.cc'; then $(CYGPATH_W) 'Splitsel.cc'; else $(CYGPATH_W) '$(srcdir)/Splitsel.cc'; fi`
+
+cdo-Splittime.o: Splittime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splittime.o -MD -MP -MF $(DEPDIR)/cdo-Splittime.Tpo -c -o cdo-Splittime.o `test -f 'Splittime.cc' || echo '$(srcdir)/'`Splittime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splittime.Tpo $(DEPDIR)/cdo-Splittime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splittime.cc' object='cdo-Splittime.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splittime.o `test -f 'Splittime.cc' || echo '$(srcdir)/'`Splittime.cc
+
+cdo-Splittime.obj: Splittime.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splittime.obj -MD -MP -MF $(DEPDIR)/cdo-Splittime.Tpo -c -o cdo-Splittime.obj `if test -f 'Splittime.cc'; then $(CYGPATH_W) 'Splittime.cc'; else $(CYGPATH_W) '$(srcdir)/Splittime.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splittime.Tpo $(DEPDIR)/cdo-Splittime.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splittime.cc' object='cdo-Splittime.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splittime.obj `if test -f 'Splittime.cc'; then $(CYGPATH_W) 'Splittime.cc'; else $(CYGPATH_W) '$(srcdir)/Splittime.cc'; fi`
+
+cdo-Splityear.o: Splityear.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splityear.o -MD -MP -MF $(DEPDIR)/cdo-Splityear.Tpo -c -o cdo-Splityear.o `test -f 'Splityear.cc' || echo '$(srcdir)/'`Splityear.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splityear.Tpo $(DEPDIR)/cdo-Splityear.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splityear.cc' object='cdo-Splityear.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splityear.o `test -f 'Splityear.cc' || echo '$(srcdir)/'`Splityear.cc
+
+cdo-Splityear.obj: Splityear.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Splityear.obj -MD -MP -MF $(DEPDIR)/cdo-Splityear.Tpo -c -o cdo-Splityear.obj `if test -f 'Splityear.cc'; then $(CYGPATH_W) 'Splityear.cc'; else $(CYGPATH_W) '$(srcdir)/Splityear.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Splityear.Tpo $(DEPDIR)/cdo-Splityear.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Splityear.cc' object='cdo-Splityear.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Splityear.obj `if test -f 'Splityear.cc'; then $(CYGPATH_W) 'Splityear.cc'; else $(CYGPATH_W) '$(srcdir)/Splityear.cc'; fi`
+
+cdo-Subtrend.o: Subtrend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Subtrend.o -MD -MP -MF $(DEPDIR)/cdo-Subtrend.Tpo -c -o cdo-Subtrend.o `test -f 'Subtrend.cc' || echo '$(srcdir)/'`Subtrend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Subtrend.Tpo $(DEPDIR)/cdo-Subtrend.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Subtrend.cc' object='cdo-Subtrend.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Subtrend.o `test -f 'Subtrend.cc' || echo '$(srcdir)/'`Subtrend.cc
+
+cdo-Subtrend.obj: Subtrend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Subtrend.obj -MD -MP -MF $(DEPDIR)/cdo-Subtrend.Tpo -c -o cdo-Subtrend.obj `if test -f 'Subtrend.cc'; then $(CYGPATH_W) 'Subtrend.cc'; else $(CYGPATH_W) '$(srcdir)/Subtrend.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Subtrend.Tpo $(DEPDIR)/cdo-Subtrend.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Subtrend.cc' object='cdo-Subtrend.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Subtrend.obj `if test -f 'Subtrend.cc'; then $(CYGPATH_W) 'Subtrend.cc'; else $(CYGPATH_W) '$(srcdir)/Subtrend.cc'; fi`
+
+cdo-Tee.o: Tee.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tee.o -MD -MP -MF $(DEPDIR)/cdo-Tee.Tpo -c -o cdo-Tee.o `test -f 'Tee.cc' || echo '$(srcdir)/'`Tee.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tee.Tpo $(DEPDIR)/cdo-Tee.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tee.cc' object='cdo-Tee.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tee.o `test -f 'Tee.cc' || echo '$(srcdir)/'`Tee.cc
+
+cdo-Tee.obj: Tee.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tee.obj -MD -MP -MF $(DEPDIR)/cdo-Tee.Tpo -c -o cdo-Tee.obj `if test -f 'Tee.cc'; then $(CYGPATH_W) 'Tee.cc'; else $(CYGPATH_W) '$(srcdir)/Tee.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tee.Tpo $(DEPDIR)/cdo-Tee.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tee.cc' object='cdo-Tee.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tee.obj `if test -f 'Tee.cc'; then $(CYGPATH_W) 'Tee.cc'; else $(CYGPATH_W) '$(srcdir)/Tee.cc'; fi`
+
+cdo-Templates.o: Templates.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Templates.o -MD -MP -MF $(DEPDIR)/cdo-Templates.Tpo -c -o cdo-Templates.o `test -f 'Templates.cc' || echo '$(srcdir)/'`Templates.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Templates.Tpo $(DEPDIR)/cdo-Templates.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Templates.cc' object='cdo-Templates.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Templates.o `test -f 'Templates.cc' || echo '$(srcdir)/'`Templates.cc
+
+cdo-Templates.obj: Templates.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Templates.obj -MD -MP -MF $(DEPDIR)/cdo-Templates.Tpo -c -o cdo-Templates.obj `if test -f 'Templates.cc'; then $(CYGPATH_W) 'Templates.cc'; else $(CYGPATH_W) '$(srcdir)/Templates.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Templates.Tpo $(DEPDIR)/cdo-Templates.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Templates.cc' object='cdo-Templates.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Templates.obj `if test -f 'Templates.cc'; then $(CYGPATH_W) 'Templates.cc'; else $(CYGPATH_W) '$(srcdir)/Templates.cc'; fi`
+
+cdo-Test.o: Test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Test.o -MD -MP -MF $(DEPDIR)/cdo-Test.Tpo -c -o cdo-Test.o `test -f 'Test.cc' || echo '$(srcdir)/'`Test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Test.Tpo $(DEPDIR)/cdo-Test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Test.cc' object='cdo-Test.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Test.o `test -f 'Test.cc' || echo '$(srcdir)/'`Test.cc
+
+cdo-Test.obj: Test.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Test.obj -MD -MP -MF $(DEPDIR)/cdo-Test.Tpo -c -o cdo-Test.obj `if test -f 'Test.cc'; then $(CYGPATH_W) 'Test.cc'; else $(CYGPATH_W) '$(srcdir)/Test.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Test.Tpo $(DEPDIR)/cdo-Test.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Test.cc' object='cdo-Test.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Test.obj `if test -f 'Test.cc'; then $(CYGPATH_W) 'Test.cc'; else $(CYGPATH_W) '$(srcdir)/Test.cc'; fi`
+
+cdo-Tests.o: Tests.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tests.o -MD -MP -MF $(DEPDIR)/cdo-Tests.Tpo -c -o cdo-Tests.o `test -f 'Tests.cc' || echo '$(srcdir)/'`Tests.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tests.Tpo $(DEPDIR)/cdo-Tests.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tests.cc' object='cdo-Tests.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tests.o `test -f 'Tests.cc' || echo '$(srcdir)/'`Tests.cc
+
+cdo-Tests.obj: Tests.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tests.obj -MD -MP -MF $(DEPDIR)/cdo-Tests.Tpo -c -o cdo-Tests.obj `if test -f 'Tests.cc'; then $(CYGPATH_W) 'Tests.cc'; else $(CYGPATH_W) '$(srcdir)/Tests.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tests.Tpo $(DEPDIR)/cdo-Tests.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tests.cc' object='cdo-Tests.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tests.obj `if test -f 'Tests.cc'; then $(CYGPATH_W) 'Tests.cc'; else $(CYGPATH_W) '$(srcdir)/Tests.cc'; fi`
+
+cdo-Timcount.o: Timcount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timcount.o -MD -MP -MF $(DEPDIR)/cdo-Timcount.Tpo -c -o cdo-Timcount.o `test -f 'Timcount.cc' || echo '$(srcdir)/'`Timcount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcount.Tpo $(DEPDIR)/cdo-Timcount.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timcount.cc' object='cdo-Timcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timcount.o `test -f 'Timcount.cc' || echo '$(srcdir)/'`Timcount.cc
+
+cdo-Timcount.obj: Timcount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timcount.obj -MD -MP -MF $(DEPDIR)/cdo-Timcount.Tpo -c -o cdo-Timcount.obj `if test -f 'Timcount.cc'; then $(CYGPATH_W) 'Timcount.cc'; else $(CYGPATH_W) '$(srcdir)/Timcount.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcount.Tpo $(DEPDIR)/cdo-Timcount.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timcount.cc' object='cdo-Timcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timcount.obj `if test -f 'Timcount.cc'; then $(CYGPATH_W) 'Timcount.cc'; else $(CYGPATH_W) '$(srcdir)/Timcount.cc'; fi`
+
+cdo-Timcumsum.o: Timcumsum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timcumsum.o -MD -MP -MF $(DEPDIR)/cdo-Timcumsum.Tpo -c -o cdo-Timcumsum.o `test -f 'Timcumsum.cc' || echo '$(srcdir)/'`Timcumsum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcumsum.Tpo $(DEPDIR)/cdo-Timcumsum.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timcumsum.cc' object='cdo-Timcumsum.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timcumsum.o `test -f 'Timcumsum.cc' || echo '$(srcdir)/'`Timcumsum.cc
+
+cdo-Timcumsum.obj: Timcumsum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timcumsum.obj -MD -MP -MF $(DEPDIR)/cdo-Timcumsum.Tpo -c -o cdo-Timcumsum.obj `if test -f 'Timcumsum.cc'; then $(CYGPATH_W) 'Timcumsum.cc'; else $(CYGPATH_W) '$(srcdir)/Timcumsum.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timcumsum.Tpo $(DEPDIR)/cdo-Timcumsum.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timcumsum.cc' object='cdo-Timcumsum.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timcumsum.obj `if test -f 'Timcumsum.cc'; then $(CYGPATH_W) 'Timcumsum.cc'; else $(CYGPATH_W) '$(srcdir)/Timcumsum.cc'; fi`
+
+cdo-Timpctl.o: Timpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timpctl.o -MD -MP -MF $(DEPDIR)/cdo-Timpctl.Tpo -c -o cdo-Timpctl.o `test -f 'Timpctl.cc' || echo '$(srcdir)/'`Timpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timpctl.Tpo $(DEPDIR)/cdo-Timpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timpctl.cc' object='cdo-Timpctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timpctl.o `test -f 'Timpctl.cc' || echo '$(srcdir)/'`Timpctl.cc
+
+cdo-Timpctl.obj: Timpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Timpctl.Tpo -c -o cdo-Timpctl.obj `if test -f 'Timpctl.cc'; then $(CYGPATH_W) 'Timpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Timpctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timpctl.Tpo $(DEPDIR)/cdo-Timpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timpctl.cc' object='cdo-Timpctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timpctl.obj `if test -f 'Timpctl.cc'; then $(CYGPATH_W) 'Timpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Timpctl.cc'; fi`
+
+cdo-Timselpctl.o: Timselpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timselpctl.o -MD -MP -MF $(DEPDIR)/cdo-Timselpctl.Tpo -c -o cdo-Timselpctl.o `test -f 'Timselpctl.cc' || echo '$(srcdir)/'`Timselpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselpctl.Tpo $(DEPDIR)/cdo-Timselpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timselpctl.cc' object='cdo-Timselpctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timselpctl.o `test -f 'Timselpctl.cc' || echo '$(srcdir)/'`Timselpctl.cc
+
+cdo-Timselpctl.obj: Timselpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timselpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Timselpctl.Tpo -c -o cdo-Timselpctl.obj `if test -f 'Timselpctl.cc'; then $(CYGPATH_W) 'Timselpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Timselpctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselpctl.Tpo $(DEPDIR)/cdo-Timselpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timselpctl.cc' object='cdo-Timselpctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timselpctl.obj `if test -f 'Timselpctl.cc'; then $(CYGPATH_W) 'Timselpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Timselpctl.cc'; fi`
+
+cdo-Timselstat.o: Timselstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timselstat.o -MD -MP -MF $(DEPDIR)/cdo-Timselstat.Tpo -c -o cdo-Timselstat.o `test -f 'Timselstat.cc' || echo '$(srcdir)/'`Timselstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselstat.Tpo $(DEPDIR)/cdo-Timselstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timselstat.cc' object='cdo-Timselstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timselstat.o `test -f 'Timselstat.cc' || echo '$(srcdir)/'`Timselstat.cc
+
+cdo-Timselstat.obj: Timselstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timselstat.obj -MD -MP -MF $(DEPDIR)/cdo-Timselstat.Tpo -c -o cdo-Timselstat.obj `if test -f 'Timselstat.cc'; then $(CYGPATH_W) 'Timselstat.cc'; else $(CYGPATH_W) '$(srcdir)/Timselstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timselstat.Tpo $(DEPDIR)/cdo-Timselstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timselstat.cc' object='cdo-Timselstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timselstat.obj `if test -f 'Timselstat.cc'; then $(CYGPATH_W) 'Timselstat.cc'; else $(CYGPATH_W) '$(srcdir)/Timselstat.cc'; fi`
+
+cdo-Timsort.o: Timsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timsort.o -MD -MP -MF $(DEPDIR)/cdo-Timsort.Tpo -c -o cdo-Timsort.o `test -f 'Timsort.cc' || echo '$(srcdir)/'`Timsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timsort.Tpo $(DEPDIR)/cdo-Timsort.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timsort.cc' object='cdo-Timsort.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timsort.o `test -f 'Timsort.cc' || echo '$(srcdir)/'`Timsort.cc
+
+cdo-Timsort.obj: Timsort.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timsort.obj -MD -MP -MF $(DEPDIR)/cdo-Timsort.Tpo -c -o cdo-Timsort.obj `if test -f 'Timsort.cc'; then $(CYGPATH_W) 'Timsort.cc'; else $(CYGPATH_W) '$(srcdir)/Timsort.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timsort.Tpo $(DEPDIR)/cdo-Timsort.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timsort.cc' object='cdo-Timsort.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timsort.obj `if test -f 'Timsort.cc'; then $(CYGPATH_W) 'Timsort.cc'; else $(CYGPATH_W) '$(srcdir)/Timsort.cc'; fi`
+
+cdo-Timstat.o: Timstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timstat.o -MD -MP -MF $(DEPDIR)/cdo-Timstat.Tpo -c -o cdo-Timstat.o `test -f 'Timstat.cc' || echo '$(srcdir)/'`Timstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat.Tpo $(DEPDIR)/cdo-Timstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timstat.cc' object='cdo-Timstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timstat.o `test -f 'Timstat.cc' || echo '$(srcdir)/'`Timstat.cc
+
+cdo-Timstat.obj: Timstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timstat.obj -MD -MP -MF $(DEPDIR)/cdo-Timstat.Tpo -c -o cdo-Timstat.obj `if test -f 'Timstat.cc'; then $(CYGPATH_W) 'Timstat.cc'; else $(CYGPATH_W) '$(srcdir)/Timstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat.Tpo $(DEPDIR)/cdo-Timstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timstat.cc' object='cdo-Timstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timstat.obj `if test -f 'Timstat.cc'; then $(CYGPATH_W) 'Timstat.cc'; else $(CYGPATH_W) '$(srcdir)/Timstat.cc'; fi`
+
+cdo-Timstat2.o: Timstat2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timstat2.o -MD -MP -MF $(DEPDIR)/cdo-Timstat2.Tpo -c -o cdo-Timstat2.o `test -f 'Timstat2.cc' || echo '$(srcdir)/'`Timstat2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat2.Tpo $(DEPDIR)/cdo-Timstat2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timstat2.cc' object='cdo-Timstat2.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timstat2.o `test -f 'Timstat2.cc' || echo '$(srcdir)/'`Timstat2.cc
+
+cdo-Timstat2.obj: Timstat2.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timstat2.obj -MD -MP -MF $(DEPDIR)/cdo-Timstat2.Tpo -c -o cdo-Timstat2.obj `if test -f 'Timstat2.cc'; then $(CYGPATH_W) 'Timstat2.cc'; else $(CYGPATH_W) '$(srcdir)/Timstat2.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat2.Tpo $(DEPDIR)/cdo-Timstat2.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timstat2.cc' object='cdo-Timstat2.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timstat2.obj `if test -f 'Timstat2.cc'; then $(CYGPATH_W) 'Timstat2.cc'; else $(CYGPATH_W) '$(srcdir)/Timstat2.cc'; fi`
+
+cdo-Timstat3.o: Timstat3.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timstat3.o -MD -MP -MF $(DEPDIR)/cdo-Timstat3.Tpo -c -o cdo-Timstat3.o `test -f 'Timstat3.cc' || echo '$(srcdir)/'`Timstat3.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat3.Tpo $(DEPDIR)/cdo-Timstat3.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timstat3.cc' object='cdo-Timstat3.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timstat3.o `test -f 'Timstat3.cc' || echo '$(srcdir)/'`Timstat3.cc
+
+cdo-Timstat3.obj: Timstat3.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Timstat3.obj -MD -MP -MF $(DEPDIR)/cdo-Timstat3.Tpo -c -o cdo-Timstat3.obj `if test -f 'Timstat3.cc'; then $(CYGPATH_W) 'Timstat3.cc'; else $(CYGPATH_W) '$(srcdir)/Timstat3.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Timstat3.Tpo $(DEPDIR)/cdo-Timstat3.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Timstat3.cc' object='cdo-Timstat3.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Timstat3.obj `if test -f 'Timstat3.cc'; then $(CYGPATH_W) 'Timstat3.cc'; else $(CYGPATH_W) '$(srcdir)/Timstat3.cc'; fi`
+
+cdo-Tinfo.o: Tinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tinfo.o -MD -MP -MF $(DEPDIR)/cdo-Tinfo.Tpo -c -o cdo-Tinfo.o `test -f 'Tinfo.cc' || echo '$(srcdir)/'`Tinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tinfo.Tpo $(DEPDIR)/cdo-Tinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tinfo.cc' object='cdo-Tinfo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tinfo.o `test -f 'Tinfo.cc' || echo '$(srcdir)/'`Tinfo.cc
+
+cdo-Tinfo.obj: Tinfo.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tinfo.obj -MD -MP -MF $(DEPDIR)/cdo-Tinfo.Tpo -c -o cdo-Tinfo.obj `if test -f 'Tinfo.cc'; then $(CYGPATH_W) 'Tinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Tinfo.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tinfo.Tpo $(DEPDIR)/cdo-Tinfo.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tinfo.cc' object='cdo-Tinfo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tinfo.obj `if test -f 'Tinfo.cc'; then $(CYGPATH_W) 'Tinfo.cc'; else $(CYGPATH_W) '$(srcdir)/Tinfo.cc'; fi`
+
+cdo-Tocomplex.o: Tocomplex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tocomplex.o -MD -MP -MF $(DEPDIR)/cdo-Tocomplex.Tpo -c -o cdo-Tocomplex.o `test -f 'Tocomplex.cc' || echo '$(srcdir)/'`Tocomplex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tocomplex.Tpo $(DEPDIR)/cdo-Tocomplex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tocomplex.cc' object='cdo-Tocomplex.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tocomplex.o `test -f 'Tocomplex.cc' || echo '$(srcdir)/'`Tocomplex.cc
+
+cdo-Tocomplex.obj: Tocomplex.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tocomplex.obj -MD -MP -MF $(DEPDIR)/cdo-Tocomplex.Tpo -c -o cdo-Tocomplex.obj `if test -f 'Tocomplex.cc'; then $(CYGPATH_W) 'Tocomplex.cc'; else $(CYGPATH_W) '$(srcdir)/Tocomplex.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tocomplex.Tpo $(DEPDIR)/cdo-Tocomplex.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tocomplex.cc' object='cdo-Tocomplex.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tocomplex.obj `if test -f 'Tocomplex.cc'; then $(CYGPATH_W) 'Tocomplex.cc'; else $(CYGPATH_W) '$(srcdir)/Tocomplex.cc'; fi`
+
+cdo-Transpose.o: Transpose.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Transpose.o -MD -MP -MF $(DEPDIR)/cdo-Transpose.Tpo -c -o cdo-Transpose.o `test -f 'Transpose.cc' || echo '$(srcdir)/'`Transpose.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Transpose.Tpo $(DEPDIR)/cdo-Transpose.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Transpose.cc' object='cdo-Transpose.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Transpose.o `test -f 'Transpose.cc' || echo '$(srcdir)/'`Transpose.cc
+
+cdo-Transpose.obj: Transpose.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Transpose.obj -MD -MP -MF $(DEPDIR)/cdo-Transpose.Tpo -c -o cdo-Transpose.obj `if test -f 'Transpose.cc'; then $(CYGPATH_W) 'Transpose.cc'; else $(CYGPATH_W) '$(srcdir)/Transpose.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Transpose.Tpo $(DEPDIR)/cdo-Transpose.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Transpose.cc' object='cdo-Transpose.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Transpose.obj `if test -f 'Transpose.cc'; then $(CYGPATH_W) 'Transpose.cc'; else $(CYGPATH_W) '$(srcdir)/Transpose.cc'; fi`
+
+cdo-Trend.o: Trend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Trend.o -MD -MP -MF $(DEPDIR)/cdo-Trend.Tpo -c -o cdo-Trend.o `test -f 'Trend.cc' || echo '$(srcdir)/'`Trend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trend.Tpo $(DEPDIR)/cdo-Trend.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Trend.cc' object='cdo-Trend.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Trend.o `test -f 'Trend.cc' || echo '$(srcdir)/'`Trend.cc
+
+cdo-Trend.obj: Trend.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Trend.obj -MD -MP -MF $(DEPDIR)/cdo-Trend.Tpo -c -o cdo-Trend.obj `if test -f 'Trend.cc'; then $(CYGPATH_W) 'Trend.cc'; else $(CYGPATH_W) '$(srcdir)/Trend.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trend.Tpo $(DEPDIR)/cdo-Trend.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Trend.cc' object='cdo-Trend.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Trend.obj `if test -f 'Trend.cc'; then $(CYGPATH_W) 'Trend.cc'; else $(CYGPATH_W) '$(srcdir)/Trend.cc'; fi`
+
+cdo-Trms.o: Trms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Trms.o -MD -MP -MF $(DEPDIR)/cdo-Trms.Tpo -c -o cdo-Trms.o `test -f 'Trms.cc' || echo '$(srcdir)/'`Trms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trms.Tpo $(DEPDIR)/cdo-Trms.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Trms.cc' object='cdo-Trms.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Trms.o `test -f 'Trms.cc' || echo '$(srcdir)/'`Trms.cc
+
+cdo-Trms.obj: Trms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Trms.obj -MD -MP -MF $(DEPDIR)/cdo-Trms.Tpo -c -o cdo-Trms.obj `if test -f 'Trms.cc'; then $(CYGPATH_W) 'Trms.cc'; else $(CYGPATH_W) '$(srcdir)/Trms.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Trms.Tpo $(DEPDIR)/cdo-Trms.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Trms.cc' object='cdo-Trms.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Trms.obj `if test -f 'Trms.cc'; then $(CYGPATH_W) 'Trms.cc'; else $(CYGPATH_W) '$(srcdir)/Trms.cc'; fi`
+
+cdo-Tstepcount.o: Tstepcount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tstepcount.o -MD -MP -MF $(DEPDIR)/cdo-Tstepcount.Tpo -c -o cdo-Tstepcount.o `test -f 'Tstepcount.cc' || echo '$(srcdir)/'`Tstepcount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tstepcount.Tpo $(DEPDIR)/cdo-Tstepcount.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tstepcount.cc' object='cdo-Tstepcount.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tstepcount.o `test -f 'Tstepcount.cc' || echo '$(srcdir)/'`Tstepcount.cc
+
+cdo-Tstepcount.obj: Tstepcount.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Tstepcount.obj -MD -MP -MF $(DEPDIR)/cdo-Tstepcount.Tpo -c -o cdo-Tstepcount.obj `if test -f 'Tstepcount.cc'; then $(CYGPATH_W) 'Tstepcount.cc'; else $(CYGPATH_W) '$(srcdir)/Tstepcount.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Tstepcount.Tpo $(DEPDIR)/cdo-Tstepcount.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Tstepcount.cc' object='cdo-Tstepcount.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Tstepcount.obj `if test -f 'Tstepcount.cc'; then $(CYGPATH_W) 'Tstepcount.cc'; else $(CYGPATH_W) '$(srcdir)/Tstepcount.cc'; fi`
+
+cdo-Vargen.o: Vargen.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vargen.o -MD -MP -MF $(DEPDIR)/cdo-Vargen.Tpo -c -o cdo-Vargen.o `test -f 'Vargen.cc' || echo '$(srcdir)/'`Vargen.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vargen.Tpo $(DEPDIR)/cdo-Vargen.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vargen.cc' object='cdo-Vargen.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vargen.o `test -f 'Vargen.cc' || echo '$(srcdir)/'`Vargen.cc
+
+cdo-Vargen.obj: Vargen.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vargen.obj -MD -MP -MF $(DEPDIR)/cdo-Vargen.Tpo -c -o cdo-Vargen.obj `if test -f 'Vargen.cc'; then $(CYGPATH_W) 'Vargen.cc'; else $(CYGPATH_W) '$(srcdir)/Vargen.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vargen.Tpo $(DEPDIR)/cdo-Vargen.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vargen.cc' object='cdo-Vargen.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vargen.obj `if test -f 'Vargen.cc'; then $(CYGPATH_W) 'Vargen.cc'; else $(CYGPATH_W) '$(srcdir)/Vargen.cc'; fi`
+
+cdo-Varrms.o: Varrms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Varrms.o -MD -MP -MF $(DEPDIR)/cdo-Varrms.Tpo -c -o cdo-Varrms.o `test -f 'Varrms.cc' || echo '$(srcdir)/'`Varrms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Varrms.Tpo $(DEPDIR)/cdo-Varrms.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Varrms.cc' object='cdo-Varrms.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Varrms.o `test -f 'Varrms.cc' || echo '$(srcdir)/'`Varrms.cc
+
+cdo-Varrms.obj: Varrms.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Varrms.obj -MD -MP -MF $(DEPDIR)/cdo-Varrms.Tpo -c -o cdo-Varrms.obj `if test -f 'Varrms.cc'; then $(CYGPATH_W) 'Varrms.cc'; else $(CYGPATH_W) '$(srcdir)/Varrms.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Varrms.Tpo $(DEPDIR)/cdo-Varrms.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Varrms.cc' object='cdo-Varrms.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Varrms.obj `if test -f 'Varrms.cc'; then $(CYGPATH_W) 'Varrms.cc'; else $(CYGPATH_W) '$(srcdir)/Varrms.cc'; fi`
+
+cdo-Vertintml.o: Vertintml.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertintml.o -MD -MP -MF $(DEPDIR)/cdo-Vertintml.Tpo -c -o cdo-Vertintml.o `test -f 'Vertintml.cc' || echo '$(srcdir)/'`Vertintml.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintml.Tpo $(DEPDIR)/cdo-Vertintml.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertintml.cc' object='cdo-Vertintml.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertintml.o `test -f 'Vertintml.cc' || echo '$(srcdir)/'`Vertintml.cc
+
+cdo-Vertintml.obj: Vertintml.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertintml.obj -MD -MP -MF $(DEPDIR)/cdo-Vertintml.Tpo -c -o cdo-Vertintml.obj `if test -f 'Vertintml.cc'; then $(CYGPATH_W) 'Vertintml.cc'; else $(CYGPATH_W) '$(srcdir)/Vertintml.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintml.Tpo $(DEPDIR)/cdo-Vertintml.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertintml.cc' object='cdo-Vertintml.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertintml.obj `if test -f 'Vertintml.cc'; then $(CYGPATH_W) 'Vertintml.cc'; else $(CYGPATH_W) '$(srcdir)/Vertintml.cc'; fi`
+
+cdo-Vertintap.o: Vertintap.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertintap.o -MD -MP -MF $(DEPDIR)/cdo-Vertintap.Tpo -c -o cdo-Vertintap.o `test -f 'Vertintap.cc' || echo '$(srcdir)/'`Vertintap.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintap.Tpo $(DEPDIR)/cdo-Vertintap.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertintap.cc' object='cdo-Vertintap.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertintap.o `test -f 'Vertintap.cc' || echo '$(srcdir)/'`Vertintap.cc
+
+cdo-Vertintap.obj: Vertintap.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertintap.obj -MD -MP -MF $(DEPDIR)/cdo-Vertintap.Tpo -c -o cdo-Vertintap.obj `if test -f 'Vertintap.cc'; then $(CYGPATH_W) 'Vertintap.cc'; else $(CYGPATH_W) '$(srcdir)/Vertintap.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertintap.Tpo $(DEPDIR)/cdo-Vertintap.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertintap.cc' object='cdo-Vertintap.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertintap.obj `if test -f 'Vertintap.cc'; then $(CYGPATH_W) 'Vertintap.cc'; else $(CYGPATH_W) '$(srcdir)/Vertintap.cc'; fi`
+
+cdo-Vertstat.o: Vertstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertstat.o -MD -MP -MF $(DEPDIR)/cdo-Vertstat.Tpo -c -o cdo-Vertstat.o `test -f 'Vertstat.cc' || echo '$(srcdir)/'`Vertstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertstat.Tpo $(DEPDIR)/cdo-Vertstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertstat.cc' object='cdo-Vertstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertstat.o `test -f 'Vertstat.cc' || echo '$(srcdir)/'`Vertstat.cc
+
+cdo-Vertstat.obj: Vertstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertstat.obj -MD -MP -MF $(DEPDIR)/cdo-Vertstat.Tpo -c -o cdo-Vertstat.obj `if test -f 'Vertstat.cc'; then $(CYGPATH_W) 'Vertstat.cc'; else $(CYGPATH_W) '$(srcdir)/Vertstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertstat.Tpo $(DEPDIR)/cdo-Vertstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertstat.cc' object='cdo-Vertstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertstat.obj `if test -f 'Vertstat.cc'; then $(CYGPATH_W) 'Vertstat.cc'; else $(CYGPATH_W) '$(srcdir)/Vertstat.cc'; fi`
+
+cdo-Vertcum.o: Vertcum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertcum.o -MD -MP -MF $(DEPDIR)/cdo-Vertcum.Tpo -c -o cdo-Vertcum.o `test -f 'Vertcum.cc' || echo '$(srcdir)/'`Vertcum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertcum.Tpo $(DEPDIR)/cdo-Vertcum.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertcum.cc' object='cdo-Vertcum.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertcum.o `test -f 'Vertcum.cc' || echo '$(srcdir)/'`Vertcum.cc
+
+cdo-Vertcum.obj: Vertcum.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertcum.obj -MD -MP -MF $(DEPDIR)/cdo-Vertcum.Tpo -c -o cdo-Vertcum.obj `if test -f 'Vertcum.cc'; then $(CYGPATH_W) 'Vertcum.cc'; else $(CYGPATH_W) '$(srcdir)/Vertcum.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertcum.Tpo $(DEPDIR)/cdo-Vertcum.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertcum.cc' object='cdo-Vertcum.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertcum.obj `if test -f 'Vertcum.cc'; then $(CYGPATH_W) 'Vertcum.cc'; else $(CYGPATH_W) '$(srcdir)/Vertcum.cc'; fi`
+
+cdo-Vertwind.o: Vertwind.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertwind.o -MD -MP -MF $(DEPDIR)/cdo-Vertwind.Tpo -c -o cdo-Vertwind.o `test -f 'Vertwind.cc' || echo '$(srcdir)/'`Vertwind.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertwind.Tpo $(DEPDIR)/cdo-Vertwind.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertwind.cc' object='cdo-Vertwind.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertwind.o `test -f 'Vertwind.cc' || echo '$(srcdir)/'`Vertwind.cc
+
+cdo-Vertwind.obj: Vertwind.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Vertwind.obj -MD -MP -MF $(DEPDIR)/cdo-Vertwind.Tpo -c -o cdo-Vertwind.obj `if test -f 'Vertwind.cc'; then $(CYGPATH_W) 'Vertwind.cc'; else $(CYGPATH_W) '$(srcdir)/Vertwind.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Vertwind.Tpo $(DEPDIR)/cdo-Vertwind.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Vertwind.cc' object='cdo-Vertwind.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Vertwind.obj `if test -f 'Vertwind.cc'; then $(CYGPATH_W) 'Vertwind.cc'; else $(CYGPATH_W) '$(srcdir)/Vertwind.cc'; fi`
+
+cdo-Verifygrid.o: Verifygrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Verifygrid.o -MD -MP -MF $(DEPDIR)/cdo-Verifygrid.Tpo -c -o cdo-Verifygrid.o `test -f 'Verifygrid.cc' || echo '$(srcdir)/'`Verifygrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Verifygrid.Tpo $(DEPDIR)/cdo-Verifygrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Verifygrid.cc' object='cdo-Verifygrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Verifygrid.o `test -f 'Verifygrid.cc' || echo '$(srcdir)/'`Verifygrid.cc
+
+cdo-Verifygrid.obj: Verifygrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Verifygrid.obj -MD -MP -MF $(DEPDIR)/cdo-Verifygrid.Tpo -c -o cdo-Verifygrid.obj `if test -f 'Verifygrid.cc'; then $(CYGPATH_W) 'Verifygrid.cc'; else $(CYGPATH_W) '$(srcdir)/Verifygrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Verifygrid.Tpo $(DEPDIR)/cdo-Verifygrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Verifygrid.cc' object='cdo-Verifygrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Verifygrid.obj `if test -f 'Verifygrid.cc'; then $(CYGPATH_W) 'Verifygrid.cc'; else $(CYGPATH_W) '$(srcdir)/Verifygrid.cc'; fi`
+
+cdo-Wct.o: Wct.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Wct.o -MD -MP -MF $(DEPDIR)/cdo-Wct.Tpo -c -o cdo-Wct.o `test -f 'Wct.cc' || echo '$(srcdir)/'`Wct.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wct.Tpo $(DEPDIR)/cdo-Wct.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Wct.cc' object='cdo-Wct.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Wct.o `test -f 'Wct.cc' || echo '$(srcdir)/'`Wct.cc
+
+cdo-Wct.obj: Wct.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Wct.obj -MD -MP -MF $(DEPDIR)/cdo-Wct.Tpo -c -o cdo-Wct.obj `if test -f 'Wct.cc'; then $(CYGPATH_W) 'Wct.cc'; else $(CYGPATH_W) '$(srcdir)/Wct.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wct.Tpo $(DEPDIR)/cdo-Wct.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Wct.cc' object='cdo-Wct.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Wct.obj `if test -f 'Wct.cc'; then $(CYGPATH_W) 'Wct.cc'; else $(CYGPATH_W) '$(srcdir)/Wct.cc'; fi`
+
+cdo-Wind.o: Wind.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Wind.o -MD -MP -MF $(DEPDIR)/cdo-Wind.Tpo -c -o cdo-Wind.o `test -f 'Wind.cc' || echo '$(srcdir)/'`Wind.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wind.Tpo $(DEPDIR)/cdo-Wind.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Wind.cc' object='cdo-Wind.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Wind.o `test -f 'Wind.cc' || echo '$(srcdir)/'`Wind.cc
+
+cdo-Wind.obj: Wind.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Wind.obj -MD -MP -MF $(DEPDIR)/cdo-Wind.Tpo -c -o cdo-Wind.obj `if test -f 'Wind.cc'; then $(CYGPATH_W) 'Wind.cc'; else $(CYGPATH_W) '$(srcdir)/Wind.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Wind.Tpo $(DEPDIR)/cdo-Wind.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Wind.cc' object='cdo-Wind.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Wind.obj `if test -f 'Wind.cc'; then $(CYGPATH_W) 'Wind.cc'; else $(CYGPATH_W) '$(srcdir)/Wind.cc'; fi`
+
+cdo-WindTrans.o: WindTrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-WindTrans.o -MD -MP -MF $(DEPDIR)/cdo-WindTrans.Tpo -c -o cdo-WindTrans.o `test -f 'WindTrans.cc' || echo '$(srcdir)/'`WindTrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-WindTrans.Tpo $(DEPDIR)/cdo-WindTrans.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='WindTrans.cc' object='cdo-WindTrans.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-WindTrans.o `test -f 'WindTrans.cc' || echo '$(srcdir)/'`WindTrans.cc
+
+cdo-WindTrans.obj: WindTrans.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-WindTrans.obj -MD -MP -MF $(DEPDIR)/cdo-WindTrans.Tpo -c -o cdo-WindTrans.obj `if test -f 'WindTrans.cc'; then $(CYGPATH_W) 'WindTrans.cc'; else $(CYGPATH_W) '$(srcdir)/WindTrans.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-WindTrans.Tpo $(DEPDIR)/cdo-WindTrans.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='WindTrans.cc' object='cdo-WindTrans.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-WindTrans.obj `if test -f 'WindTrans.cc'; then $(CYGPATH_W) 'WindTrans.cc'; else $(CYGPATH_W) '$(srcdir)/WindTrans.cc'; fi`
+
+cdo-Writegrid.o: Writegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Writegrid.o -MD -MP -MF $(DEPDIR)/cdo-Writegrid.Tpo -c -o cdo-Writegrid.o `test -f 'Writegrid.cc' || echo '$(srcdir)/'`Writegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writegrid.Tpo $(DEPDIR)/cdo-Writegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Writegrid.cc' object='cdo-Writegrid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Writegrid.o `test -f 'Writegrid.cc' || echo '$(srcdir)/'`Writegrid.cc
+
+cdo-Writegrid.obj: Writegrid.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Writegrid.obj -MD -MP -MF $(DEPDIR)/cdo-Writegrid.Tpo -c -o cdo-Writegrid.obj `if test -f 'Writegrid.cc'; then $(CYGPATH_W) 'Writegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Writegrid.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writegrid.Tpo $(DEPDIR)/cdo-Writegrid.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Writegrid.cc' object='cdo-Writegrid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Writegrid.obj `if test -f 'Writegrid.cc'; then $(CYGPATH_W) 'Writegrid.cc'; else $(CYGPATH_W) '$(srcdir)/Writegrid.cc'; fi`
+
+cdo-Writerandom.o: Writerandom.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Writerandom.o -MD -MP -MF $(DEPDIR)/cdo-Writerandom.Tpo -c -o cdo-Writerandom.o `test -f 'Writerandom.cc' || echo '$(srcdir)/'`Writerandom.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writerandom.Tpo $(DEPDIR)/cdo-Writerandom.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Writerandom.cc' object='cdo-Writerandom.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Writerandom.o `test -f 'Writerandom.cc' || echo '$(srcdir)/'`Writerandom.cc
+
+cdo-Writerandom.obj: Writerandom.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Writerandom.obj -MD -MP -MF $(DEPDIR)/cdo-Writerandom.Tpo -c -o cdo-Writerandom.obj `if test -f 'Writerandom.cc'; then $(CYGPATH_W) 'Writerandom.cc'; else $(CYGPATH_W) '$(srcdir)/Writerandom.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Writerandom.Tpo $(DEPDIR)/cdo-Writerandom.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Writerandom.cc' object='cdo-Writerandom.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Writerandom.obj `if test -f 'Writerandom.cc'; then $(CYGPATH_W) 'Writerandom.cc'; else $(CYGPATH_W) '$(srcdir)/Writerandom.cc'; fi`
+
+cdo-XTimstat.o: XTimstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-XTimstat.o -MD -MP -MF $(DEPDIR)/cdo-XTimstat.Tpo -c -o cdo-XTimstat.o `test -f 'XTimstat.cc' || echo '$(srcdir)/'`XTimstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-XTimstat.Tpo $(DEPDIR)/cdo-XTimstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='XTimstat.cc' object='cdo-XTimstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-XTimstat.o `test -f 'XTimstat.cc' || echo '$(srcdir)/'`XTimstat.cc
+
+cdo-XTimstat.obj: XTimstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-XTimstat.obj -MD -MP -MF $(DEPDIR)/cdo-XTimstat.Tpo -c -o cdo-XTimstat.obj `if test -f 'XTimstat.cc'; then $(CYGPATH_W) 'XTimstat.cc'; else $(CYGPATH_W) '$(srcdir)/XTimstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-XTimstat.Tpo $(DEPDIR)/cdo-XTimstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='XTimstat.cc' object='cdo-XTimstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-XTimstat.obj `if test -f 'XTimstat.cc'; then $(CYGPATH_W) 'XTimstat.cc'; else $(CYGPATH_W) '$(srcdir)/XTimstat.cc'; fi`
+
+cdo-YAR.o: YAR.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-YAR.o -MD -MP -MF $(DEPDIR)/cdo-YAR.Tpo -c -o cdo-YAR.o `test -f 'YAR.cc' || echo '$(srcdir)/'`YAR.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-YAR.Tpo $(DEPDIR)/cdo-YAR.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='YAR.cc' object='cdo-YAR.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-YAR.o `test -f 'YAR.cc' || echo '$(srcdir)/'`YAR.cc
+
+cdo-YAR.obj: YAR.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-YAR.obj -MD -MP -MF $(DEPDIR)/cdo-YAR.Tpo -c -o cdo-YAR.obj `if test -f 'YAR.cc'; then $(CYGPATH_W) 'YAR.cc'; else $(CYGPATH_W) '$(srcdir)/YAR.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-YAR.Tpo $(DEPDIR)/cdo-YAR.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='YAR.cc' object='cdo-YAR.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-YAR.obj `if test -f 'YAR.cc'; then $(CYGPATH_W) 'YAR.cc'; else $(CYGPATH_W) '$(srcdir)/YAR.cc'; fi`
+
+cdo-Yearmonstat.o: Yearmonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yearmonstat.o -MD -MP -MF $(DEPDIR)/cdo-Yearmonstat.Tpo -c -o cdo-Yearmonstat.o `test -f 'Yearmonstat.cc' || echo '$(srcdir)/'`Yearmonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yearmonstat.Tpo $(DEPDIR)/cdo-Yearmonstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yearmonstat.cc' object='cdo-Yearmonstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yearmonstat.o `test -f 'Yearmonstat.cc' || echo '$(srcdir)/'`Yearmonstat.cc
+
+cdo-Yearmonstat.obj: Yearmonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yearmonstat.obj -MD -MP -MF $(DEPDIR)/cdo-Yearmonstat.Tpo -c -o cdo-Yearmonstat.obj `if test -f 'Yearmonstat.cc'; then $(CYGPATH_W) 'Yearmonstat.cc'; else $(CYGPATH_W) '$(srcdir)/Yearmonstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yearmonstat.Tpo $(DEPDIR)/cdo-Yearmonstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yearmonstat.cc' object='cdo-Yearmonstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yearmonstat.obj `if test -f 'Yearmonstat.cc'; then $(CYGPATH_W) 'Yearmonstat.cc'; else $(CYGPATH_W) '$(srcdir)/Yearmonstat.cc'; fi`
+
+cdo-Ydayarith.o: Ydayarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydayarith.o -MD -MP -MF $(DEPDIR)/cdo-Ydayarith.Tpo -c -o cdo-Ydayarith.o `test -f 'Ydayarith.cc' || echo '$(srcdir)/'`Ydayarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydayarith.Tpo $(DEPDIR)/cdo-Ydayarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydayarith.cc' object='cdo-Ydayarith.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydayarith.o `test -f 'Ydayarith.cc' || echo '$(srcdir)/'`Ydayarith.cc
+
+cdo-Ydayarith.obj: Ydayarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydayarith.obj -MD -MP -MF $(DEPDIR)/cdo-Ydayarith.Tpo -c -o cdo-Ydayarith.obj `if test -f 'Ydayarith.cc'; then $(CYGPATH_W) 'Ydayarith.cc'; else $(CYGPATH_W) '$(srcdir)/Ydayarith.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydayarith.Tpo $(DEPDIR)/cdo-Ydayarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydayarith.cc' object='cdo-Ydayarith.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydayarith.obj `if test -f 'Ydayarith.cc'; then $(CYGPATH_W) 'Ydayarith.cc'; else $(CYGPATH_W) '$(srcdir)/Ydayarith.cc'; fi`
+
+cdo-Ydaypctl.o: Ydaypctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydaypctl.o -MD -MP -MF $(DEPDIR)/cdo-Ydaypctl.Tpo -c -o cdo-Ydaypctl.o `test -f 'Ydaypctl.cc' || echo '$(srcdir)/'`Ydaypctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaypctl.Tpo $(DEPDIR)/cdo-Ydaypctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydaypctl.cc' object='cdo-Ydaypctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydaypctl.o `test -f 'Ydaypctl.cc' || echo '$(srcdir)/'`Ydaypctl.cc
+
+cdo-Ydaypctl.obj: Ydaypctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydaypctl.obj -MD -MP -MF $(DEPDIR)/cdo-Ydaypctl.Tpo -c -o cdo-Ydaypctl.obj `if test -f 'Ydaypctl.cc'; then $(CYGPATH_W) 'Ydaypctl.cc'; else $(CYGPATH_W) '$(srcdir)/Ydaypctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaypctl.Tpo $(DEPDIR)/cdo-Ydaypctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydaypctl.cc' object='cdo-Ydaypctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydaypctl.obj `if test -f 'Ydaypctl.cc'; then $(CYGPATH_W) 'Ydaypctl.cc'; else $(CYGPATH_W) '$(srcdir)/Ydaypctl.cc'; fi`
+
+cdo-Ydaystat.o: Ydaystat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydaystat.o -MD -MP -MF $(DEPDIR)/cdo-Ydaystat.Tpo -c -o cdo-Ydaystat.o `test -f 'Ydaystat.cc' || echo '$(srcdir)/'`Ydaystat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaystat.Tpo $(DEPDIR)/cdo-Ydaystat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydaystat.cc' object='cdo-Ydaystat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydaystat.o `test -f 'Ydaystat.cc' || echo '$(srcdir)/'`Ydaystat.cc
+
+cdo-Ydaystat.obj: Ydaystat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydaystat.obj -MD -MP -MF $(DEPDIR)/cdo-Ydaystat.Tpo -c -o cdo-Ydaystat.obj `if test -f 'Ydaystat.cc'; then $(CYGPATH_W) 'Ydaystat.cc'; else $(CYGPATH_W) '$(srcdir)/Ydaystat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydaystat.Tpo $(DEPDIR)/cdo-Ydaystat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydaystat.cc' object='cdo-Ydaystat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydaystat.obj `if test -f 'Ydaystat.cc'; then $(CYGPATH_W) 'Ydaystat.cc'; else $(CYGPATH_W) '$(srcdir)/Ydaystat.cc'; fi`
+
+cdo-Ydrunpctl.o: Ydrunpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydrunpctl.o -MD -MP -MF $(DEPDIR)/cdo-Ydrunpctl.Tpo -c -o cdo-Ydrunpctl.o `test -f 'Ydrunpctl.cc' || echo '$(srcdir)/'`Ydrunpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunpctl.Tpo $(DEPDIR)/cdo-Ydrunpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydrunpctl.cc' object='cdo-Ydrunpctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydrunpctl.o `test -f 'Ydrunpctl.cc' || echo '$(srcdir)/'`Ydrunpctl.cc
+
+cdo-Ydrunpctl.obj: Ydrunpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydrunpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Ydrunpctl.Tpo -c -o cdo-Ydrunpctl.obj `if test -f 'Ydrunpctl.cc'; then $(CYGPATH_W) 'Ydrunpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Ydrunpctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunpctl.Tpo $(DEPDIR)/cdo-Ydrunpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydrunpctl.cc' object='cdo-Ydrunpctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydrunpctl.obj `if test -f 'Ydrunpctl.cc'; then $(CYGPATH_W) 'Ydrunpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Ydrunpctl.cc'; fi`
+
+cdo-Ydrunstat.o: Ydrunstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydrunstat.o -MD -MP -MF $(DEPDIR)/cdo-Ydrunstat.Tpo -c -o cdo-Ydrunstat.o `test -f 'Ydrunstat.cc' || echo '$(srcdir)/'`Ydrunstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunstat.Tpo $(DEPDIR)/cdo-Ydrunstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydrunstat.cc' object='cdo-Ydrunstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydrunstat.o `test -f 'Ydrunstat.cc' || echo '$(srcdir)/'`Ydrunstat.cc
+
+cdo-Ydrunstat.obj: Ydrunstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ydrunstat.obj -MD -MP -MF $(DEPDIR)/cdo-Ydrunstat.Tpo -c -o cdo-Ydrunstat.obj `if test -f 'Ydrunstat.cc'; then $(CYGPATH_W) 'Ydrunstat.cc'; else $(CYGPATH_W) '$(srcdir)/Ydrunstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ydrunstat.Tpo $(DEPDIR)/cdo-Ydrunstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ydrunstat.cc' object='cdo-Ydrunstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ydrunstat.obj `if test -f 'Ydrunstat.cc'; then $(CYGPATH_W) 'Ydrunstat.cc'; else $(CYGPATH_W) '$(srcdir)/Ydrunstat.cc'; fi`
+
+cdo-Yhourarith.o: Yhourarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yhourarith.o -MD -MP -MF $(DEPDIR)/cdo-Yhourarith.Tpo -c -o cdo-Yhourarith.o `test -f 'Yhourarith.cc' || echo '$(srcdir)/'`Yhourarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourarith.Tpo $(DEPDIR)/cdo-Yhourarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yhourarith.cc' object='cdo-Yhourarith.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yhourarith.o `test -f 'Yhourarith.cc' || echo '$(srcdir)/'`Yhourarith.cc
+
+cdo-Yhourarith.obj: Yhourarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yhourarith.obj -MD -MP -MF $(DEPDIR)/cdo-Yhourarith.Tpo -c -o cdo-Yhourarith.obj `if test -f 'Yhourarith.cc'; then $(CYGPATH_W) 'Yhourarith.cc'; else $(CYGPATH_W) '$(srcdir)/Yhourarith.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourarith.Tpo $(DEPDIR)/cdo-Yhourarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yhourarith.cc' object='cdo-Yhourarith.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yhourarith.obj `if test -f 'Yhourarith.cc'; then $(CYGPATH_W) 'Yhourarith.cc'; else $(CYGPATH_W) '$(srcdir)/Yhourarith.cc'; fi`
+
+cdo-Yhourstat.o: Yhourstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yhourstat.o -MD -MP -MF $(DEPDIR)/cdo-Yhourstat.Tpo -c -o cdo-Yhourstat.o `test -f 'Yhourstat.cc' || echo '$(srcdir)/'`Yhourstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourstat.Tpo $(DEPDIR)/cdo-Yhourstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yhourstat.cc' object='cdo-Yhourstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yhourstat.o `test -f 'Yhourstat.cc' || echo '$(srcdir)/'`Yhourstat.cc
+
+cdo-Yhourstat.obj: Yhourstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yhourstat.obj -MD -MP -MF $(DEPDIR)/cdo-Yhourstat.Tpo -c -o cdo-Yhourstat.obj `if test -f 'Yhourstat.cc'; then $(CYGPATH_W) 'Yhourstat.cc'; else $(CYGPATH_W) '$(srcdir)/Yhourstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yhourstat.Tpo $(DEPDIR)/cdo-Yhourstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yhourstat.cc' object='cdo-Yhourstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yhourstat.obj `if test -f 'Yhourstat.cc'; then $(CYGPATH_W) 'Yhourstat.cc'; else $(CYGPATH_W) '$(srcdir)/Yhourstat.cc'; fi`
+
+cdo-Ymonarith.o: Ymonarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ymonarith.o -MD -MP -MF $(DEPDIR)/cdo-Ymonarith.Tpo -c -o cdo-Ymonarith.o `test -f 'Ymonarith.cc' || echo '$(srcdir)/'`Ymonarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonarith.Tpo $(DEPDIR)/cdo-Ymonarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ymonarith.cc' object='cdo-Ymonarith.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ymonarith.o `test -f 'Ymonarith.cc' || echo '$(srcdir)/'`Ymonarith.cc
+
+cdo-Ymonarith.obj: Ymonarith.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ymonarith.obj -MD -MP -MF $(DEPDIR)/cdo-Ymonarith.Tpo -c -o cdo-Ymonarith.obj `if test -f 'Ymonarith.cc'; then $(CYGPATH_W) 'Ymonarith.cc'; else $(CYGPATH_W) '$(srcdir)/Ymonarith.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonarith.Tpo $(DEPDIR)/cdo-Ymonarith.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ymonarith.cc' object='cdo-Ymonarith.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ymonarith.obj `if test -f 'Ymonarith.cc'; then $(CYGPATH_W) 'Ymonarith.cc'; else $(CYGPATH_W) '$(srcdir)/Ymonarith.cc'; fi`
+
+cdo-Ymonpctl.o: Ymonpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ymonpctl.o -MD -MP -MF $(DEPDIR)/cdo-Ymonpctl.Tpo -c -o cdo-Ymonpctl.o `test -f 'Ymonpctl.cc' || echo '$(srcdir)/'`Ymonpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonpctl.Tpo $(DEPDIR)/cdo-Ymonpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ymonpctl.cc' object='cdo-Ymonpctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ymonpctl.o `test -f 'Ymonpctl.cc' || echo '$(srcdir)/'`Ymonpctl.cc
+
+cdo-Ymonpctl.obj: Ymonpctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ymonpctl.obj -MD -MP -MF $(DEPDIR)/cdo-Ymonpctl.Tpo -c -o cdo-Ymonpctl.obj `if test -f 'Ymonpctl.cc'; then $(CYGPATH_W) 'Ymonpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Ymonpctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonpctl.Tpo $(DEPDIR)/cdo-Ymonpctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ymonpctl.cc' object='cdo-Ymonpctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ymonpctl.obj `if test -f 'Ymonpctl.cc'; then $(CYGPATH_W) 'Ymonpctl.cc'; else $(CYGPATH_W) '$(srcdir)/Ymonpctl.cc'; fi`
+
+cdo-Ymonstat.o: Ymonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ymonstat.o -MD -MP -MF $(DEPDIR)/cdo-Ymonstat.Tpo -c -o cdo-Ymonstat.o `test -f 'Ymonstat.cc' || echo '$(srcdir)/'`Ymonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonstat.Tpo $(DEPDIR)/cdo-Ymonstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ymonstat.cc' object='cdo-Ymonstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ymonstat.o `test -f 'Ymonstat.cc' || echo '$(srcdir)/'`Ymonstat.cc
+
+cdo-Ymonstat.obj: Ymonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Ymonstat.obj -MD -MP -MF $(DEPDIR)/cdo-Ymonstat.Tpo -c -o cdo-Ymonstat.obj `if test -f 'Ymonstat.cc'; then $(CYGPATH_W) 'Ymonstat.cc'; else $(CYGPATH_W) '$(srcdir)/Ymonstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Ymonstat.Tpo $(DEPDIR)/cdo-Ymonstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Ymonstat.cc' object='cdo-Ymonstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Ymonstat.obj `if test -f 'Ymonstat.cc'; then $(CYGPATH_W) 'Ymonstat.cc'; else $(CYGPATH_W) '$(srcdir)/Ymonstat.cc'; fi`
+
+cdo-Yseaspctl.o: Yseaspctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yseaspctl.o -MD -MP -MF $(DEPDIR)/cdo-Yseaspctl.Tpo -c -o cdo-Yseaspctl.o `test -f 'Yseaspctl.cc' || echo '$(srcdir)/'`Yseaspctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseaspctl.Tpo $(DEPDIR)/cdo-Yseaspctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yseaspctl.cc' object='cdo-Yseaspctl.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yseaspctl.o `test -f 'Yseaspctl.cc' || echo '$(srcdir)/'`Yseaspctl.cc
+
+cdo-Yseaspctl.obj: Yseaspctl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yseaspctl.obj -MD -MP -MF $(DEPDIR)/cdo-Yseaspctl.Tpo -c -o cdo-Yseaspctl.obj `if test -f 'Yseaspctl.cc'; then $(CYGPATH_W) 'Yseaspctl.cc'; else $(CYGPATH_W) '$(srcdir)/Yseaspctl.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseaspctl.Tpo $(DEPDIR)/cdo-Yseaspctl.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yseaspctl.cc' object='cdo-Yseaspctl.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yseaspctl.obj `if test -f 'Yseaspctl.cc'; then $(CYGPATH_W) 'Yseaspctl.cc'; else $(CYGPATH_W) '$(srcdir)/Yseaspctl.cc'; fi`
+
+cdo-Yseasstat.o: Yseasstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yseasstat.o -MD -MP -MF $(DEPDIR)/cdo-Yseasstat.Tpo -c -o cdo-Yseasstat.o `test -f 'Yseasstat.cc' || echo '$(srcdir)/'`Yseasstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseasstat.Tpo $(DEPDIR)/cdo-Yseasstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yseasstat.cc' object='cdo-Yseasstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yseasstat.o `test -f 'Yseasstat.cc' || echo '$(srcdir)/'`Yseasstat.cc
+
+cdo-Yseasstat.obj: Yseasstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Yseasstat.obj -MD -MP -MF $(DEPDIR)/cdo-Yseasstat.Tpo -c -o cdo-Yseasstat.obj `if test -f 'Yseasstat.cc'; then $(CYGPATH_W) 'Yseasstat.cc'; else $(CYGPATH_W) '$(srcdir)/Yseasstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Yseasstat.Tpo $(DEPDIR)/cdo-Yseasstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Yseasstat.cc' object='cdo-Yseasstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Yseasstat.obj `if test -f 'Yseasstat.cc'; then $(CYGPATH_W) 'Yseasstat.cc'; else $(CYGPATH_W) '$(srcdir)/Yseasstat.cc'; fi`
+
+cdo-Zonstat.o: Zonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Zonstat.o -MD -MP -MF $(DEPDIR)/cdo-Zonstat.Tpo -c -o cdo-Zonstat.o `test -f 'Zonstat.cc' || echo '$(srcdir)/'`Zonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Zonstat.Tpo $(DEPDIR)/cdo-Zonstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Zonstat.cc' object='cdo-Zonstat.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Zonstat.o `test -f 'Zonstat.cc' || echo '$(srcdir)/'`Zonstat.cc
+
+cdo-Zonstat.obj: Zonstat.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Zonstat.obj -MD -MP -MF $(DEPDIR)/cdo-Zonstat.Tpo -c -o cdo-Zonstat.obj `if test -f 'Zonstat.cc'; then $(CYGPATH_W) 'Zonstat.cc'; else $(CYGPATH_W) '$(srcdir)/Zonstat.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Zonstat.Tpo $(DEPDIR)/cdo-Zonstat.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Zonstat.cc' object='cdo-Zonstat.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Zonstat.obj `if test -f 'Zonstat.cc'; then $(CYGPATH_W) 'Zonstat.cc'; else $(CYGPATH_W) '$(srcdir)/Zonstat.cc'; fi`
+
+cdo-Magplot.o: Magplot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Magplot.o -MD -MP -MF $(DEPDIR)/cdo-Magplot.Tpo -c -o cdo-Magplot.o `test -f 'Magplot.cc' || echo '$(srcdir)/'`Magplot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magplot.Tpo $(DEPDIR)/cdo-Magplot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Magplot.cc' object='cdo-Magplot.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Magplot.o `test -f 'Magplot.cc' || echo '$(srcdir)/'`Magplot.cc
+
+cdo-Magplot.obj: Magplot.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Magplot.obj -MD -MP -MF $(DEPDIR)/cdo-Magplot.Tpo -c -o cdo-Magplot.obj `if test -f 'Magplot.cc'; then $(CYGPATH_W) 'Magplot.cc'; else $(CYGPATH_W) '$(srcdir)/Magplot.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magplot.Tpo $(DEPDIR)/cdo-Magplot.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Magplot.cc' object='cdo-Magplot.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Magplot.obj `if test -f 'Magplot.cc'; then $(CYGPATH_W) 'Magplot.cc'; else $(CYGPATH_W) '$(srcdir)/Magplot.cc'; fi`
+
+cdo-Magvector.o: Magvector.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Magvector.o -MD -MP -MF $(DEPDIR)/cdo-Magvector.Tpo -c -o cdo-Magvector.o `test -f 'Magvector.cc' || echo '$(srcdir)/'`Magvector.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magvector.Tpo $(DEPDIR)/cdo-Magvector.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Magvector.cc' object='cdo-Magvector.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Magvector.o `test -f 'Magvector.cc' || echo '$(srcdir)/'`Magvector.cc
+
+cdo-Magvector.obj: Magvector.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Magvector.obj -MD -MP -MF $(DEPDIR)/cdo-Magvector.Tpo -c -o cdo-Magvector.obj `if test -f 'Magvector.cc'; then $(CYGPATH_W) 'Magvector.cc'; else $(CYGPATH_W) '$(srcdir)/Magvector.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Magvector.Tpo $(DEPDIR)/cdo-Magvector.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Magvector.cc' object='cdo-Magvector.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Magvector.obj `if test -f 'Magvector.cc'; then $(CYGPATH_W) 'Magvector.cc'; else $(CYGPATH_W) '$(srcdir)/Magvector.cc'; fi`
+
+cdo-Maggraph.o: Maggraph.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Maggraph.o -MD -MP -MF $(DEPDIR)/cdo-Maggraph.Tpo -c -o cdo-Maggraph.o `test -f 'Maggraph.cc' || echo '$(srcdir)/'`Maggraph.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maggraph.Tpo $(DEPDIR)/cdo-Maggraph.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Maggraph.cc' object='cdo-Maggraph.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Maggraph.o `test -f 'Maggraph.cc' || echo '$(srcdir)/'`Maggraph.cc
+
+cdo-Maggraph.obj: Maggraph.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-Maggraph.obj -MD -MP -MF $(DEPDIR)/cdo-Maggraph.Tpo -c -o cdo-Maggraph.obj `if test -f 'Maggraph.cc'; then $(CYGPATH_W) 'Maggraph.cc'; else $(CYGPATH_W) '$(srcdir)/Maggraph.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-Maggraph.Tpo $(DEPDIR)/cdo-Maggraph.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Maggraph.cc' object='cdo-Maggraph.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-Maggraph.obj `if test -f 'Maggraph.cc'; then $(CYGPATH_W) 'Maggraph.cc'; else $(CYGPATH_W) '$(srcdir)/Maggraph.cc'; fi`
+
+cdo-template_parser.o: template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-template_parser.o -MD -MP -MF $(DEPDIR)/cdo-template_parser.Tpo -c -o cdo-template_parser.o `test -f 'template_parser.cc' || echo '$(srcdir)/'`template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-template_parser.Tpo $(DEPDIR)/cdo-template_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='template_parser.cc' object='cdo-template_parser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-template_parser.o `test -f 'template_parser.cc' || echo '$(srcdir)/'`template_parser.cc
+
+cdo-template_parser.obj: template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-template_parser.obj -MD -MP -MF $(DEPDIR)/cdo-template_parser.Tpo -c -o cdo-template_parser.obj `if test -f 'template_parser.cc'; then $(CYGPATH_W) 'template_parser.cc'; else $(CYGPATH_W) '$(srcdir)/template_parser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-template_parser.Tpo $(DEPDIR)/cdo-template_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='template_parser.cc' object='cdo-template_parser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-template_parser.obj `if test -f 'template_parser.cc'; then $(CYGPATH_W) 'template_parser.cc'; else $(CYGPATH_W) '$(srcdir)/template_parser.cc'; fi`
+
+cdo-results_template_parser.o: results_template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-results_template_parser.o -MD -MP -MF $(DEPDIR)/cdo-results_template_parser.Tpo -c -o cdo-results_template_parser.o `test -f 'results_template_parser.cc' || echo '$(srcdir)/'`results_template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-results_template_parser.Tpo $(DEPDIR)/cdo-results_template_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='results_template_parser.cc' object='cdo-results_template_parser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-results_template_parser.o `test -f 'results_template_parser.cc' || echo '$(srcdir)/'`results_template_parser.cc
+
+cdo-results_template_parser.obj: results_template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-results_template_parser.obj -MD -MP -MF $(DEPDIR)/cdo-results_template_parser.Tpo -c -o cdo-results_template_parser.obj `if test -f 'results_template_parser.cc'; then $(CYGPATH_W) 'results_template_parser.cc'; else $(CYGPATH_W) '$(srcdir)/results_template_parser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-results_template_parser.Tpo $(DEPDIR)/cdo-results_template_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='results_template_parser.cc' object='cdo-results_template_parser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-results_template_parser.obj `if test -f 'results_template_parser.cc'; then $(CYGPATH_W) 'results_template_parser.cc'; else $(CYGPATH_W) '$(srcdir)/results_template_parser.cc'; fi`
+
+cdo-magics_template_parser.o: magics_template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-magics_template_parser.o -MD -MP -MF $(DEPDIR)/cdo-magics_template_parser.Tpo -c -o cdo-magics_template_parser.o `test -f 'magics_template_parser.cc' || echo '$(srcdir)/'`magics_template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-magics_template_parser.Tpo $(DEPDIR)/cdo-magics_template_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='magics_template_parser.cc' object='cdo-magics_template_parser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-magics_template_parser.o `test -f 'magics_template_parser.cc' || echo '$(srcdir)/'`magics_template_parser.cc
+
+cdo-magics_template_parser.obj: magics_template_parser.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-magics_template_parser.obj -MD -MP -MF $(DEPDIR)/cdo-magics_template_parser.Tpo -c -o cdo-magics_template_parser.obj `if test -f 'magics_template_parser.cc'; then $(CYGPATH_W) 'magics_template_parser.cc'; else $(CYGPATH_W) '$(srcdir)/magics_template_parser.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-magics_template_parser.Tpo $(DEPDIR)/cdo-magics_template_parser.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='magics_template_parser.cc' object='cdo-magics_template_parser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-magics_template_parser.obj `if test -f 'magics_template_parser.cc'; then $(CYGPATH_W) 'magics_template_parser.cc'; else $(CYGPATH_W) '$(srcdir)/magics_template_parser.cc'; fi`
+
+cdo-StringUtilities.o: StringUtilities.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-StringUtilities.o -MD -MP -MF $(DEPDIR)/cdo-StringUtilities.Tpo -c -o cdo-StringUtilities.o `test -f 'StringUtilities.cc' || echo '$(srcdir)/'`StringUtilities.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-StringUtilities.Tpo $(DEPDIR)/cdo-StringUtilities.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='StringUtilities.cc' object='cdo-StringUtilities.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-StringUtilities.o `test -f 'StringUtilities.cc' || echo '$(srcdir)/'`StringUtilities.cc
+
+cdo-StringUtilities.obj: StringUtilities.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-StringUtilities.obj -MD -MP -MF $(DEPDIR)/cdo-StringUtilities.Tpo -c -o cdo-StringUtilities.obj `if test -f 'StringUtilities.cc'; then $(CYGPATH_W) 'StringUtilities.cc'; else $(CYGPATH_W) '$(srcdir)/StringUtilities.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-StringUtilities.Tpo $(DEPDIR)/cdo-StringUtilities.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='StringUtilities.cc' object='cdo-StringUtilities.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-StringUtilities.obj `if test -f 'StringUtilities.cc'; then $(CYGPATH_W) 'StringUtilities.cc'; else $(CYGPATH_W) '$(srcdir)/StringUtilities.cc'; fi`
+
+cdo-CdoMagicsMapper.o: CdoMagicsMapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CdoMagicsMapper.o -MD -MP -MF $(DEPDIR)/cdo-CdoMagicsMapper.Tpo -c -o cdo-CdoMagicsMapper.o `test -f 'CdoMagicsMapper.cc' || echo '$(srcdir)/'`CdoMagicsMapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CdoMagicsMapper.Tpo $(DEPDIR)/cdo-CdoMagicsMapper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CdoMagicsMapper.cc' object='cdo-CdoMagicsMapper.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CdoMagicsMapper.o `test -f 'CdoMagicsMapper.cc' || echo '$(srcdir)/'`CdoMagicsMapper.cc
+
+cdo-CdoMagicsMapper.obj: CdoMagicsMapper.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdo-CdoMagicsMapper.obj -MD -MP -MF $(DEPDIR)/cdo-CdoMagicsMapper.Tpo -c -o cdo-CdoMagicsMapper.obj `if test -f 'CdoMagicsMapper.cc'; then $(CYGPATH_W) 'CdoMagicsMapper.cc'; else $(CYGPATH_W) '$(srcdir)/CdoMagicsMapper.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdo-CdoMagicsMapper.Tpo $(DEPDIR)/cdo-CdoMagicsMapper.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='CdoMagicsMapper.cc' object='cdo-CdoMagicsMapper.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdo_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdo-CdoMagicsMapper.obj `if test -f 'CdoMagicsMapper.cc'; then $(CYGPATH_W) 'CdoMagicsMapper.cc'; else $(CYGPATH_W) '$(srcdir)/CdoMagicsMapper.cc'; fi`
+
+cdotest-cdotest.o: cdotest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdotest-cdotest.o -MD -MP -MF $(DEPDIR)/cdotest-cdotest.Tpo -c -o cdotest-cdotest.o `test -f 'cdotest.cc' || echo '$(srcdir)/'`cdotest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdotest-cdotest.Tpo $(DEPDIR)/cdotest-cdotest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdotest.cc' object='cdotest-cdotest.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdotest-cdotest.o `test -f 'cdotest.cc' || echo '$(srcdir)/'`cdotest.cc
+
+cdotest-cdotest.obj: cdotest.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdotest-cdotest.obj -MD -MP -MF $(DEPDIR)/cdotest-cdotest.Tpo -c -o cdotest-cdotest.obj `if test -f 'cdotest.cc'; then $(CYGPATH_W) 'cdotest.cc'; else $(CYGPATH_W) '$(srcdir)/cdotest.cc'; fi`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/cdotest-cdotest.Tpo $(DEPDIR)/cdotest-cdotest.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='cdotest.cc' object='cdotest-cdotest.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cdotest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdotest-cdotest.obj `if test -f 'cdotest.cc'; then $(CYGPATH_W) 'cdotest.cc'; else $(CYGPATH_W) '$(srcdir)/cdotest.cc'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/src/MapReduce.c b/src/MapReduce.cc
similarity index 89%
rename from src/MapReduce.c
rename to src/MapReduce.cc
index 3cf8bed..56aa261 100644
--- a/src/MapReduce.c
+++ b/src/MapReduce.cc
@@ -64,7 +64,7 @@ int countMask(double *maskField, int gridSize, double falseVal)
   return counter;
 }
 
-/* 
+/*
  * the operators argument has to be a single horizontal field,
  * non-zero values are used to mark the relevant locations
  */
@@ -79,7 +79,7 @@ void *MapReduce(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   /* check input grid type and size - this will be used for selecting relevant
    * variables from the input file*/
@@ -123,7 +123,7 @@ void *MapReduce(void *argument)
   /* create output vlist: Only variabes which have the same gridtype and
    * gridsize as the input mask should be proessed. Everything else is ignoreds
    * {{{ */
-  int vlistID1  = streamInqVlist(streamID1);
+  int vlistID1  = pstreamInqVlist(streamID1);
   int nvars     = vlistNvars(vlistID1);
   int *vars     = (int*) Malloc(nvars*sizeof(int));
 
@@ -146,7 +146,7 @@ void *MapReduce(void *argument)
         }
     }
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
   /* }}} */
 
   int taxisID1  = vlistInqTaxis(vlistID1);
@@ -158,34 +158,34 @@ void *MapReduce(void *argument)
   for ( int index = 0; index < ngrids; index++ ) vlistChangeGridIndex(vlistID2, index, outputGridID);
 
   /* loop over input fields and mask the data values {{{ */
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *arrayIn  = (double *)Malloc(inputGridSize*sizeof(double));
   double *arrayOut = (double *)Malloc(maskSize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
           if (TRUE == vars[varID])
             {
               int varID2   = vlistFindVar(vlistID2, varID);
               int levelID2 = vlistFindLevel(vlistID2, varID, levelID);
 
-              streamReadRecord(streamID1, arrayIn, &nmiss);
+              pstreamReadRecord(streamID1, arrayIn, &nmiss);
 
               for (int i = 0; i < maskSize;  i++)
                 arrayOut[i] = arrayIn[maskIndexList[i]];
 
 
-              streamDefRecord(streamID2, varID2, levelID2);
-              streamWriteRecord(streamID2, arrayOut, 0);
+              pstreamDefRecord(streamID2, varID2, levelID2);
+              pstreamWriteRecord(streamID2, arrayOut, 0);
 
             }
         }
@@ -194,8 +194,8 @@ void *MapReduce(void *argument)
   /* }}} */
 
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   Free(vars);
   Free(arrayOut);
diff --git a/src/Maskbox.c b/src/Maskbox.cc
similarity index 95%
rename from src/Maskbox.c
rename to src/Maskbox.cc
index 99242af..4fc2bb5 100644
--- a/src/Maskbox.c
+++ b/src/Maskbox.cc
@@ -280,17 +280,19 @@ void *Maskbox(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int MASKLONLATBOX = cdoOperatorAdd("masklonlatbox", 0, 0, "western and eastern longitude and southern and northern latitude");
   int MASKINDEXBOX  = cdoOperatorAdd("maskindexbox",  0, 0, "index of first and last longitude and index of first and last latitude");
   int MASKREGION    = cdoOperatorAdd("maskregion",    0, 0, "limiting coordinates of the region");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
   operatorInputArg(cdoOperatorEnter(operatorID));
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int ngrids = vlistNgrids(vlistID1);
   int ndiffgrids = 0;
@@ -334,9 +336,8 @@ void *Maskbox(void *argument)
 	vars[varID] = false;
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = gridInqSize(gridID);
   double *array = (double *) Malloc(gridsize*sizeof(double));
@@ -387,19 +388,19 @@ void *Maskbox(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( vars[varID] )
 	    {
               int nmiss;
-	      streamReadRecord(streamID1, array, &nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
 
               double missval = vlistInqVarMissval(vlistID1, varID);             
 	      for ( int i = 0; i < gridsize; i++ )
@@ -409,15 +410,15 @@ void *Maskbox(void *argument)
 	      for ( int i = 0; i < gridsize; i++ )
 		if ( DBL_IS_EQUAL(array[i], missval) ) nmiss++;
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 	    }
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( vars  ) Free(vars);
   if ( array ) Free(array);
diff --git a/src/Mastrfu.c b/src/Mastrfu.cc
similarity index 89%
rename from src/Mastrfu.c
rename to src/Mastrfu.cc
index 03607e6..857e0c7 100644
--- a/src/Mastrfu.c
+++ b/src/Mastrfu.cc
@@ -113,9 +113,9 @@ void *Mastrfu(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nvars = vlistNvars(vlistID1);
   if ( nvars != 1 ) cdoAbort("This operator works only with one variable!");
@@ -152,26 +152,25 @@ void *Mastrfu(void *argument)
   vlistDefVarUnits(vlistID2, 0, "kg/s");
   vlistDefVarDatatype(vlistID2, 0, CDI_DATATYPE_FLT32);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *array1 = (double*) Malloc(gridsize*nlev*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*nlev*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       nmiss = 0;
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  offset  = gridsize*levelID;
-	  streamReadRecord(streamID1, array1+offset, &nmiss1);
+	  pstreamReadRecord(streamID1, array1+offset, &nmiss1);
 	  nmiss += nmiss1;
 	}
 
@@ -181,15 +180,15 @@ void *Mastrfu(void *argument)
 	{
 	  varID = 0;
 	  levelID = recID;
-	  streamDefRecord(streamID2, varID,  levelID);
+	  pstreamDefRecord(streamID2, varID,  levelID);
 	  offset  = gridsize*levelID;
-	  streamWriteRecord(streamID2, array2+offset, nmiss);     
+	  pstreamWriteRecord(streamID2, array2+offset, nmiss);     
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Math.c b/src/Math.cc
similarity index 92%
rename from src/Math.c
rename to src/Math.cc
index 3a7404d..7cf9de0 100644
--- a/src/Math.c
+++ b/src/Math.cc
@@ -51,6 +51,7 @@ void *Math(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("abs",   ABS,   0, NULL);
   cdoOperatorAdd("int",   FINT,  0, NULL);
   cdoOperatorAdd("nint",  FNINT, 0, NULL);
@@ -67,6 +68,7 @@ void *Math(void *argument)
   cdoOperatorAdd("atan",  ATAN,  0, NULL);
   cdoOperatorAdd("pow",   POW,   0, NULL);
   cdoOperatorAdd("reci",  RECI,  0, NULL);
+  // clang-format on
  
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -80,9 +82,9 @@ void *Math(void *argument)
       rc = parameter2double(operatorArgv()[0]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -95,21 +97,19 @@ void *Math(void *argument)
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  double missval1 = vlistInqVarMissval(vlistID1, varID);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
@@ -211,14 +211,15 @@ void *Math(void *argument)
 	  for ( i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(array2[i], missval1) ) nmiss2++;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss2);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss2);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Merge.c b/src/Merge.cc
similarity index 92%
rename from src/Merge.c
rename to src/Merge.cc
index 4e099c4..223848e 100644
--- a/src/Merge.c
+++ b/src/Merge.cc
@@ -148,9 +148,8 @@ void *Merge(void *argument)
 
   for ( index = 0; index < nmerge; index++ )
     {
-      streamID1 = streamOpenRead(cdoStreamName(index));
-      streamIDs[index] = streamID1;
-      vlistIDs[index]  = streamInqVlist(streamID1);
+      streamIDs[index] = pstreamOpenRead(cdoStreamName(index));
+      vlistIDs[index]  = pstreamInqVlist(streamIDs[index]);
     }
 
   int taxisindex = 0;
@@ -211,10 +210,10 @@ void *Merge(void *argument)
       vlistPrint(vlistID2);
     }
        
-  int streamID2 = streamOpenWrite(cdoStreamName(streamCnt-1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(streamCnt-1), cdoFiletype());
 
   vlistDefTaxis(vlistID2, taxisID2);
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *array = NULL;
   if ( ! lcopy )
@@ -232,7 +231,7 @@ void *Merge(void *argument)
 	  vlistID1  = vlistIDs[index];
 	  if ( vlistID1 == -1 ) continue;
 
-	  numrecs[index] = streamInqTimestep(streamID1, tsID);
+	  numrecs[index] = pstreamInqTimestep(streamID1, tsID);
 	}
 
       for ( index = 0; index < nmerge; index++ ) if ( numrecs[index] != 0 ) break;
@@ -274,7 +273,7 @@ void *Merge(void *argument)
 	}
 
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( index = 0; index < nmerge; index++ )
 	{
@@ -286,22 +285,22 @@ void *Merge(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 
 	      varID2   = vlistMergedVar(vlistID1, varID);
 	      levelID2 = vlistMergedLevel(vlistID1, varID, levelID);
 
 	      if ( cdoVerbose )	cdoPrint("var %d %d %d %d", varID, levelID, varID2, levelID2);
 
-	      streamDefRecord(streamID2, varID2, levelID2);
+	      pstreamDefRecord(streamID2, varID2, levelID2);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	}
@@ -310,9 +309,9 @@ void *Merge(void *argument)
    }
 
   for ( index = 0; index < nmerge; index++ )
-    streamClose(streamIDs[index]);
+    pstreamClose(streamIDs[index]);
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Mergegrid.c b/src/Mergegrid.cc
similarity index 88%
rename from src/Mergegrid.c
rename to src/Mergegrid.cc
index 282d02f..4eaf7b8 100644
--- a/src/Mergegrid.c
+++ b/src/Mergegrid.cc
@@ -165,15 +165,15 @@ void *Mergegrid(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID3 = taxisDuplicate(taxisID1);
 
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   vlistCompare(vlistID1, vlistID2, CMP_NAME | CMP_NLEVEL);
 
@@ -205,34 +205,34 @@ void *Mergegrid(void *argument)
 
   int vlistID3 = vlistDuplicate(vlistID1);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
   vlistDefTaxis(vlistID3, taxisID3);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      int nrecs2 = streamInqTimestep(streamID2, tsID);
+      int nrecs2 = pstreamInqTimestep(streamID2, tsID);
       if ( nrecs2 == 0 )
 	cdoAbort("Input streams have different number of timesteps!");
 
       if ( nrecs != nrecs2 )
 	cdoAbort("Input streams have different number of records!");
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, array2, &nmiss2);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, array2, &nmiss2);
 
 	  double missval2 = vlistInqVarMissval(vlistID2, varID);
 
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss1);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss1);
 
 	  double missval1 = vlistInqVarMissval(vlistID1, varID);
 
@@ -251,16 +251,16 @@ void *Mergegrid(void *argument)
 		if ( DBL_IS_EQUAL(array1[i], missval1) ) nmiss1++;
 	    }
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, array1, nmiss1);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, array1, nmiss1);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   if ( gindex ) Free(gindex);
   if ( array2 ) Free(array2);
diff --git a/src/Mergetime.c b/src/Mergetime.cc
similarity index 64%
rename from src/Mergetime.c
rename to src/Mergetime.cc
index b35ad18..5097e81 100644
--- a/src/Mergetime.c
+++ b/src/Mergetime.cc
@@ -31,15 +31,9 @@
 
 void *Mergetime(void *argument)
 {
-  int streamID1;
-  int tsID2 = 0, varID, levelID;
-  int vlistID1, vlistID2;
-  int fileID;
-  int taxisID1, taxisID2 = CDI_UNDEFID;
-  int nmiss;
-  int vdate, vtime;
+  int tsID2 = 0;
+  int taxisID2 = CDI_UNDEFID;
   int last_vdate = -1, last_vtime = -1;
-  int next_fileID;
   bool skip_same_time = false;
   double *array = NULL;
   typedef struct
@@ -55,20 +49,17 @@ void *Mergetime(void *argument)
 
   cdoInitialize(argument);
 
-  {
-    char *envstr = getenv("SKIP_SAME_TIME");
-    if ( envstr )
-      {
-	int ival;
-	ival = atoi(envstr);
-	if ( ival == 1 )
-	  {
-	    skip_same_time = true;
-	    if ( cdoVerbose )
-	      cdoPrint("Set SKIP_SAME_TIME to %d", ival);
-	  }
-      }
-  }
+  char *envstr = getenv("SKIP_SAME_TIME");
+  if ( envstr )
+    {
+      int ival = atoi(envstr);
+      if ( ival == 1 )
+        {
+          skip_same_time = true;
+          if ( cdoVerbose )
+            cdoPrint("Set SKIP_SAME_TIME to %d", ival);
+        }
+    }
 
   bool lcopy = UNCHANGED_RECORD;
 
@@ -76,33 +67,28 @@ void *Mergetime(void *argument)
 
   sfile_t *sf = (sfile_t*) Malloc(nfiles*sizeof(sfile_t));
 
-  for ( fileID = 0; fileID < nfiles; fileID++ )
+  for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
       if ( cdoVerbose ) cdoPrint("process: %s", cdoStreamName(fileID)->args);
 
-      streamID1 = streamOpenRead(cdoStreamName(fileID));
-
-      vlistID1 = streamInqVlist(streamID1);
-      taxisID1 = vlistInqTaxis(vlistID1);
-
-      sf[fileID].streamID = streamID1;
-      sf[fileID].vlistID  = vlistID1;
-      sf[fileID].taxisID  = taxisID1;
+      sf[fileID].streamID = pstreamOpenRead(cdoStreamName(fileID));
+      sf[fileID].vlistID = pstreamInqVlist(sf[fileID].streamID);
+      sf[fileID].taxisID = vlistInqTaxis(sf[fileID].vlistID);
     }
 
   
-  /* check that the contents is always the same */
-  for ( fileID = 1; fileID < nfiles; fileID++ )
+  // check that the contents is always the same
+  for ( int fileID = 1; fileID < nfiles; fileID++ )
     vlistCompare(sf[0].vlistID, sf[fileID].vlistID, CMP_ALL);
 
-  /* read the first time step */
-  for ( fileID = 0; fileID < nfiles; fileID++ )
+  // read the first time step
+  for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
       sf[fileID].tsID = 0;
-      sf[fileID].nrecs = streamInqTimestep(sf[fileID].streamID, sf[fileID].tsID);
+      sf[fileID].nrecs = pstreamInqTimestep(sf[fileID].streamID, sf[fileID].tsID);
       if ( sf[fileID].nrecs == 0 )
 	{
-	  streamClose(sf[fileID].streamID);
+	  pstreamClose(sf[fileID].streamID);
 	  sf[fileID].streamID = -1;
 	}
       else
@@ -117,7 +103,7 @@ void *Mergetime(void *argument)
   if ( !cdoOverwriteMode && fileExists(ofilename) && !userFileOverwrite(ofilename) )
     cdoAbort("Outputfile %s already exists!", ofilename);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
 
   if ( ! lcopy )
     {
@@ -125,14 +111,14 @@ void *Mergetime(void *argument)
       array = (double*) Malloc(gridsize*sizeof(double));
     }
 
-  while ( TRUE )
+  while ( true )
     {
       bool process_timestep = true;
 
-      next_fileID = -1;
-      vdate = 0;
-      vtime = 0;
-      for ( fileID = 0; fileID < nfiles; fileID++ )
+      int next_fileID = -1;
+      int vdate = 0;
+      int vtime = 0;
+      for ( int fileID = 0; fileID < nfiles; fileID++ )
 	{
 	  if ( sf[fileID].streamID != -1 )
 	    if ( next_fileID == -1 || sf[fileID].vdate < vdate ||
@@ -144,12 +130,12 @@ void *Mergetime(void *argument)
 	      }
 	}
 
-      fileID = next_fileID;
+      int fileID = next_fileID;
 
       if ( cdoVerbose )
-	cdoPrint("nextstep = %d  vdate = %d  vtime = %d", next_fileID, vdate, vtime);
+	cdoPrint("nextstep = %d  vdate = %d  vtime = %d", fileID, vdate, vtime);
 
-      if ( next_fileID == -1 ) break;
+      if ( fileID == -1 ) break;
 
       if ( skip_same_time )
 	if ( vdate == last_vdate && vtime == last_vtime )
@@ -166,13 +152,13 @@ void *Mergetime(void *argument)
 	{
 	  if ( tsID2 == 0 )
 	    {
-	      vlistID1 = sf[0].vlistID;
-	      vlistID2 = vlistDuplicate(vlistID1);
-	      taxisID1 = vlistInqTaxis(vlistID1);
+	      int vlistID1 = sf[fileID].vlistID;
+	      int vlistID2 = vlistDuplicate(vlistID1);
+	      int taxisID1 = vlistInqTaxis(vlistID1);
 	      taxisID2 = taxisDuplicate(taxisID1);
 	      vlistDefTaxis(vlistID2, taxisID2);
 	      
-	      streamDefVlist(streamID2, vlistID2);
+	      pstreamDefVlist(streamID2, vlistID2);
 	    }
 
 	  last_vdate = vdate;
@@ -180,36 +166,38 @@ void *Mergetime(void *argument)
 
 	  taxisCopyTimestep(taxisID2, sf[fileID].taxisID);
 
-	  streamDefTimestep(streamID2, tsID2);
+	  pstreamDefTimestep(streamID2, tsID2);
 	       
 	  for ( int recID = 0; recID < sf[fileID].nrecs; recID++ )
 	    {
-	      streamInqRecord(sf[fileID].streamID, &varID, &levelID);
+              int varID, levelID;
+	      pstreamInqRecord(sf[fileID].streamID, &varID, &levelID);
 
               if ( tsID2 > 0 && sf[fileID].tsID == 0 )
                 if ( vlistInqVarTsteptype(sf[fileID].vlistID, varID) == TSTEP_CONSTANT )
                   continue;
 
-              streamDefRecord(streamID2, varID, levelID);
+              pstreamDefRecord(streamID2, varID, levelID);
 	  
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, sf[fileID].streamID); 
+		  pstreamCopyRecord(streamID2, sf[fileID].streamID); 
 		}
 	      else
 		{
-		  streamReadRecord(sf[fileID].streamID, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+                  int nmiss;
+		  pstreamReadRecord(sf[fileID].streamID, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 
 	  tsID2++;
 	}
 
-      sf[fileID].nrecs = streamInqTimestep(sf[fileID].streamID, ++sf[fileID].tsID);
+      sf[fileID].nrecs = pstreamInqTimestep(sf[fileID].streamID, ++sf[fileID].tsID);
       if ( sf[fileID].nrecs == 0 )
 	{
-	  streamClose(sf[fileID].streamID);
+	  pstreamClose(sf[fileID].streamID);
 	  sf[fileID].streamID = -1;
 	}
       else
@@ -219,7 +207,7 @@ void *Mergetime(void *argument)
 	}
     }
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
   if ( ! lcopy )
     if ( array ) Free(array);
diff --git a/src/Merstat.c b/src/Merstat.cc
similarity index 77%
rename from src/Merstat.c
rename to src/Merstat.cc
index 0edd6bf..d480c91 100644
--- a/src/Merstat.c
+++ b/src/Merstat.cc
@@ -18,6 +18,7 @@
 /*
    This module contains the following operators:
 
+      Merstat    merrange        Meridional range
       Merstat    mermin          Meridional minimum
       Merstat    mermax          Meridional maximum
       Merstat    mersum          Meridional sum
@@ -50,17 +51,20 @@ void *Merstat(void *argument)
 
   cdoInitialize(argument);
 
-  cdoOperatorAdd("mermin",  func_min,   0, NULL);
-  cdoOperatorAdd("mermax",  func_max,   0, NULL);
-  cdoOperatorAdd("mersum",  func_sum,   0, NULL);
-  cdoOperatorAdd("mermean", func_meanw, 1, NULL);
-  cdoOperatorAdd("meravg",  func_avgw,  1, NULL);
-  cdoOperatorAdd("mervar",  func_varw,  1, NULL);
-  cdoOperatorAdd("mervar1", func_var1w, 1, NULL);
-  cdoOperatorAdd("merstd",  func_stdw,  1, NULL);
-  cdoOperatorAdd("merstd1", func_std1w, 1, NULL);
-  cdoOperatorAdd("merpctl", func_pctl,  0, NULL);
- 
+  // clang-format off
+  cdoOperatorAdd("merrange", func_range, 0, NULL);
+  cdoOperatorAdd("mermin",   func_min,   0, NULL);
+  cdoOperatorAdd("mermax",   func_max,   0, NULL);
+  cdoOperatorAdd("mersum",   func_sum,   0, NULL);
+  cdoOperatorAdd("mermean",  func_meanw, 1, NULL);
+  cdoOperatorAdd("meravg",   func_avgw,  1, NULL);
+  cdoOperatorAdd("mervar",   func_varw,  1, NULL);
+  cdoOperatorAdd("mervar1",  func_var1w, 1, NULL);
+  cdoOperatorAdd("merstd",   func_stdw,  1, NULL);
+  cdoOperatorAdd("merstd1",  func_std1w, 1, NULL);
+  cdoOperatorAdd("merpctl",  func_pctl,  0, NULL);
+  // clang-format on
+  
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
   bool needWeights = cdoOperatorF2(operatorID) != 0;
@@ -73,9 +77,9 @@ void *Merstat(void *argument)
       percentile_check_number(pn);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -106,9 +110,8 @@ void *Merstat(void *argument)
 
   vlistChangeGridIndex(vlistID2, index, gridID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   gridID1 = vlistInqVarGrid(vlistID1, 0);
   int nlonmax = gridInqXsize(gridID1); /* max nlon ? */
@@ -127,16 +130,15 @@ void *Merstat(void *argument)
   field2.grid = gridID2;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
 	  field1.grid = vlistInqVarGrid(vlistID1, varID);
 	  if ( needWeights && field1.grid != lastgrid )
@@ -157,14 +159,15 @@ void *Merstat(void *argument)
 	  else  
 	    merfun(field1, &field2, operfunc);
 
-	  streamDefRecord(streamID2, varID,  levelID);
-	  streamWriteRecord(streamID2, field2.ptr, (int)field2.nmiss);
+	  pstreamDefRecord(streamID2, varID,  levelID);
+	  pstreamWriteRecord(streamID2, field2.ptr, (int)field2.nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field1.ptr )    Free(field1.ptr);
   if ( field1.weight ) Free(field1.weight);
diff --git a/src/Monarith.c b/src/Monarith.cc
similarity index 83%
rename from src/Monarith.c
rename to src/Monarith.cc
index 5aeba88..9e3426f 100644
--- a/src/Monarith.c
+++ b/src/Monarith.cc
@@ -48,11 +48,11 @@ void *Monarith(void *argument)
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -70,9 +70,8 @@ void *Monarith(void *argument)
   int taxisID3 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int nvars  = vlistNvars(vlistID2);
 
@@ -89,7 +88,7 @@ void *Monarith(void *argument)
 
   int tsID  = 0;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       int yearmon1 = vdate / 100;
@@ -103,7 +102,7 @@ void *Monarith(void *argument)
 
 	  if ( cdoVerbose ) cdoPrint("Process: Year = %4d  Month = %2d", year1, mon1);
 
-	  nrecs2 = streamInqTimestep(streamID2, tsID2);
+	  nrecs2 = pstreamInqTimestep(streamID2, tsID2);
 	  if ( nrecs2 == 0 )
 	    cdoAbort("Missing year=%4d mon=%2d in %s!", year1, mon1, cdoStreamName(1)->args);
 
@@ -120,12 +119,12 @@ void *Monarith(void *argument)
 
 	  for ( int recID = 0; recID < nrecs2; recID++ )
 	    {
-	      streamInqRecord(streamID2, &varID, &levelID);
+	      pstreamInqRecord(streamID2, &varID, &levelID);
 
 	      gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 	      offset   = gridsize*levelID;
 
-	      streamReadRecord(streamID2, vardata2[varID]+offset, &nmiss);
+	      pstreamReadRecord(streamID2, vardata2[varID]+offset, &nmiss);
 	      varnmiss2[varID][levelID] = nmiss;
 	    }
 
@@ -133,13 +132,12 @@ void *Monarith(void *argument)
 	}
 
       taxisCopyTimestep(taxisID3, taxisID1);
-
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss   = (size_t) nmiss;
 	  field1.grid    = vlistInqVarGrid(vlistID1, varID);
 	  field1.missval = vlistInqVarMissval(vlistID1, varID);
@@ -153,16 +151,16 @@ void *Monarith(void *argument)
 
 	  farfun(&field1, field2, operfunc);
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
diff --git a/src/Mrotuv.c b/src/Mrotuv.cc
similarity index 92%
rename from src/Mrotuv.c
rename to src/Mrotuv.cc
index e23a258..3f6ab7c 100644
--- a/src/Mrotuv.c
+++ b/src/Mrotuv.cc
@@ -199,9 +199,9 @@ void *Mrotuv(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nvars = vlistNvars(vlistID1);
   for ( varid = 0; varid < nvars; varid++ )
@@ -290,13 +290,13 @@ void *Mrotuv(void *argument)
   vlistClearFlag(vlistID1);
   for ( int lid = 0; lid < nlevs; lid++ ) vlistDefFlag(vlistID1, uid, lid, TRUE);
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
   vlistChangeVarGrid(vlistID2, 0, gridIDu);
 
   vlistClearFlag(vlistID1);
   for ( int lid = 0; lid < nlevs; lid++ ) vlistDefFlag(vlistID1, vid, lid, TRUE);
   int vlistID3 = vlistCreate();
-  vlistCopyFlag(vlistID3, vlistID1);
+  cdoVlistCopyFlag(vlistID3, vlistID1);
   vlistChangeVarGrid(vlistID3, 0, gridIDv);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -305,11 +305,11 @@ void *Mrotuv(void *argument)
   vlistDefTaxis(vlistID2, taxisID2);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID3, vlistID3);
 
   double missval1 = vlistInqVarMissval(vlistID1, uid);
   double missval2 = vlistInqVarMissval(vlistID1, vid);
@@ -329,19 +329,19 @@ void *Mrotuv(void *argument)
   double *vhelp = (double*) Malloc(gridsizex*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
       taxisCopyTimestep(taxisID3, taxisID1);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
-	  if ( varID == uid ) streamReadRecord(streamID1, urfield[levelID], &nmiss1);
-	  if ( varID == vid ) streamReadRecord(streamID1, vrfield[levelID], &nmiss2);
+	  if ( varID == uid ) pstreamReadRecord(streamID1, urfield[levelID], &nmiss1);
+	  if ( varID == vid ) pstreamReadRecord(streamID1, vrfield[levelID], &nmiss2);
 	}
 
       for ( levelID = 0; levelID < nlevs; levelID++ )
@@ -395,18 +395,18 @@ void *Mrotuv(void *argument)
 	      vfield[IX2D(nlat-1,i,nlon)] = vhelp[IX2D(nlat-1,i+1,nlon+2)];
 	    }
 
-	  streamDefRecord(streamID2, 0, levelID);
-	  streamWriteRecord(streamID2, ufield, nmiss1);     
-	  streamDefRecord(streamID3, 0, levelID);
-	  streamWriteRecord(streamID3, vfield, nmiss2);     
+	  pstreamDefRecord(streamID2, 0, levelID);
+	  pstreamWriteRecord(streamID2, ufield, nmiss1);     
+	  pstreamDefRecord(streamID3, 0, levelID);
+	  pstreamWriteRecord(streamID3, vfield, nmiss2);     
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( ufield  ) Free(ufield);
   if ( vfield  ) Free(vfield);
diff --git a/src/Mrotuvb.c b/src/Mrotuvb.cc
similarity index 94%
rename from src/Mrotuvb.c
rename to src/Mrotuvb.cc
index 3bd7e02..56e971e 100644
--- a/src/Mrotuvb.c
+++ b/src/Mrotuvb.cc
@@ -266,11 +266,11 @@ void *Mrotuvb(void *argument)
   if ( operatorArgc() == 1 )
     if ( strcmp(operatorArgv()[0], "noint") == 0 ) gpint = false;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   int nvars = vlistNvars(vlistID1);
   if ( nvars > 1 ) cdoAbort("More than one variable found in %s",  cdoStreamName(0)->args);
@@ -379,9 +379,8 @@ void *Mrotuvb(void *argument)
 
   if ( cdoVerbose ) vlistPrint(vlistID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   double missval1 = vlistInqVarMissval(vlistID1, 0);
   double missval2 = vlistInqVarMissval(vlistID2, 0);
@@ -400,23 +399,23 @@ void *Mrotuvb(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
-      nrecs2 = streamInqTimestep(streamID2, tsID);
+      nrecs2 = pstreamInqTimestep(streamID2, tsID);
 
       if ( nrecs != nrecs2 ) cdoAbort("Input streams have different number of levels!");
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID1, &levelID);
-	  streamInqRecord(streamID2, &varID2, &levelID);
+	  pstreamInqRecord(streamID1, &varID1, &levelID);
+	  pstreamInqRecord(streamID2, &varID2, &levelID);
 
-	  streamReadRecord(streamID1, ufield, &nmiss1);
-	  streamReadRecord(streamID2, vfield, &nmiss2);
+	  pstreamReadRecord(streamID1, ufield, &nmiss1);
+	  pstreamReadRecord(streamID2, vfield, &nmiss2);
 
 	  /* remove missing values */
 	  if ( nmiss1 || nmiss2 )
@@ -489,18 +488,18 @@ void *Mrotuvb(void *argument)
 	  */
 	  nmiss1 = 0;
 	  nmiss2 = 0;
-	  streamDefRecord(streamID3, 0, levelID);
-	  streamWriteRecord(streamID3, urfield, nmiss1);     
-	  streamDefRecord(streamID3, 1, levelID);
-	  streamWriteRecord(streamID3, vrfield, nmiss2);     
+	  pstreamDefRecord(streamID3, 0, levelID);
+	  pstreamWriteRecord(streamID3, urfield, nmiss1);     
+	  pstreamDefRecord(streamID3, 1, levelID);
+	  pstreamWriteRecord(streamID3, vrfield, nmiss2);     
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( ufield  ) Free(ufield);
   if ( vfield  ) Free(vfield);
diff --git a/src/Ninfo.c b/src/Ninfo.cc
similarity index 91%
rename from src/Ninfo.c
rename to src/Ninfo.cc
index fc2e299..8ed29ac 100644
--- a/src/Ninfo.c
+++ b/src/Ninfo.cc
@@ -39,12 +39,12 @@ void *Ninfo(void *argument)
 {
   enum {NYEAR, NMON, NDATE, NTIME, NPAR, NLEVEL, NGRIDPOINTS, NGRIDS};
   int varID;
-  int nrecs;
   int date0 = 0;
   int day, mon0 = 0, mon, year0 = 0, year;
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("nyear"       , NYEAR       , 0 , NULL);
   cdoOperatorAdd("nmon"        , NMON        , 0 , NULL);
   cdoOperatorAdd("ndate"       , NDATE       , 0 , NULL);
@@ -53,13 +53,14 @@ void *Ninfo(void *argument)
   cdoOperatorAdd("nlevel"      , NLEVEL      , 0 , NULL);
   cdoOperatorAdd("ngridpoints" , NGRIDPOINTS , 0 , NULL);
   cdoOperatorAdd("ngrids"      , NGRIDS      , 0 , NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   int nvars   = vlistNvars(vlistID);
   int taxisID = vlistInqTaxis(vlistID);
@@ -73,7 +74,7 @@ void *Ninfo(void *argument)
       int nyear = 0;
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 	    cdiDecodeDate(vdate, &year, &mon, &day);
@@ -94,7 +95,7 @@ void *Ninfo(void *argument)
       int nmon = 0;
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 	    cdiDecodeDate(vdate, &year, &mon, &day);
@@ -115,7 +116,7 @@ void *Ninfo(void *argument)
       int ndate = 0;
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 	    
@@ -134,7 +135,7 @@ void *Ninfo(void *argument)
       {
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) ) tsID++;
+	while ( pstreamInqTimestep(streamID, tsID) ) tsID++;
       fprintf(stdout, "%d\n", tsID);
       break;
       }
@@ -165,7 +166,7 @@ void *Ninfo(void *argument)
       break;
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   cdoFinish();
 
diff --git a/src/Nmldump.c b/src/Nmldump.cc
similarity index 100%
rename from src/Nmldump.c
rename to src/Nmldump.cc
diff --git a/src/Output.c b/src/Output.cc
similarity index 94%
rename from src/Output.c
rename to src/Output.cc
index bf4f46d..a9844c9 100644
--- a/src/Output.c
+++ b/src/Output.cc
@@ -52,6 +52,8 @@ void *Output(void *argument)
   int year, month, day;
   int *keys = NULL, nkeys = 0, k;
   int nKeys;
+
+  // clang-format off
   int Keylen[]           = {      0,        8,      11,      4,      8,     6,     6,     6,     6,      4,      4,          6,     10,      8,      5,       2,     2 };
   enum                     {knohead,   kvalue,  kparam,  kcode,  kname,  klon,  klat,  klev,  kbin,  kxind,  kyind,  ktimestep,  kdate,  ktime,  kyear,  kmonth,  kday };
   const char *Keynames[] = {"nohead",  "value", "param", "code", "name", "lon", "lat", "lev", "bin", "xind", "yind", "timestep", "date", "time", "year", "month", "day"};
@@ -69,6 +71,7 @@ void *Output(void *argument)
   int OUTPUTARR = cdoOperatorAdd("outputarr", 0, 0, NULL);
   int OUTPUTXYZ = cdoOperatorAdd("outputxyz", 0, 0, NULL);
   int OUTPUTTAB = cdoOperatorAdd("outputtab", 0, 0, NULL);
+  // clang-format on
 
   UNUSED(OUTPUT);
 
@@ -108,11 +111,16 @@ void *Output(void *argument)
 	      if ( len < 3 ) len = 3;
 	      if ( strncmp(parnames[i], Keynames[k], len) == 0 )
 		{
+                  int len2 = strlen(parnames[i]);
+                  if ( len2 > len && parnames[i][len] != ':' )
+                    cdoAbort("Key parameter >%s< contains invalid character at position %d!", parnames[i], len+1);
+
 		  if ( k == knohead ) lhead = false;
 		  else
 		    {
 		      keys[nkeys++] = k;
-		      if ( parnames[i][len] == ':' && isdigit(parnames[i][len+1]) ) Keylen[k] = atoi(&parnames[i][len+1]);
+		      if ( len2 > len && parnames[i][len] == ':' && isdigit(parnames[i][len+1]) )
+                        Keylen[k] = atoi(&parnames[i][len+1]);
 		    }
 		  break;
 		}
@@ -140,9 +148,9 @@ void *Output(void *argument)
 
   for ( int indf = 0; indf < cdoStreamCnt(); indf++ )
     {
-      int streamID = streamOpenRead(cdoStreamName(indf));
+      int streamID = pstreamOpenRead(cdoStreamName(indf));
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
 
       int ngrids = vlistNgrids(vlistID);
       int ndiffgrids = 0;
@@ -184,7 +192,7 @@ void *Output(void *argument)
 
       int tsID = 0;
       int taxisID = vlistInqTaxis(vlistID);
-      while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
 	{
 	  int vdate = taxisInqVdate(taxisID);
 	  int vtime = taxisInqVtime(taxisID);
@@ -195,7 +203,7 @@ void *Output(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID, &varID, &levelID);
+	      pstreamInqRecord(streamID, &varID, &levelID);
 
 	      vlistInqVarName(vlistID, varID, name);
 	      int param    = vlistInqVarParam(vlistID, varID);
@@ -212,7 +220,7 @@ void *Output(void *argument)
 
 	      if ( nlon*nlat != gridsize ) { nlon = gridsize; nlat = 1; }
 
-	      streamReadRecord(streamID, array, &nmiss);
+	      pstreamReadRecord(streamID, array, &nmiss);
 
 	      if ( operatorID == OUTPUTSRV )
 		fprintf(stdout, "%4d %8g %8d %4d %8d %8d %d %d\n", code, level, vdate, vtime, nlon, nlat, 0, 0);
@@ -427,9 +435,11 @@ void *Output(void *argument)
 		    }
 		}
 	    }
+
 	  tsID++;
 	}
-      streamClose(streamID);
+
+      pstreamClose(streamID);
 
       if ( array ) Free(array);
       if ( grid_center_lon ) Free(grid_center_lon);
diff --git a/src/Outputgmt.c b/src/Outputgmt.cc
similarity index 98%
rename from src/Outputgmt.c
rename to src/Outputgmt.cc
index 6fd1802..ffb4d60 100644
--- a/src/Outputgmt.c
+++ b/src/Outputgmt.cc
@@ -220,6 +220,7 @@ void *Outputgmt(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int OUTPUTCENTER    = cdoOperatorAdd("gmtxyz",          0, 0, NULL);
   int OUTPUTCENTER2   = cdoOperatorAdd("outputcenter2",   0, 0, NULL);
   int OUTPUTCENTERCPT = cdoOperatorAdd("outputcentercpt", 0, 0, NULL);
@@ -228,6 +229,7 @@ void *Outputgmt(void *argument)
   int OUTPUTVECTOR    = cdoOperatorAdd("outputvector",    0, 0, NULL);
   int OUTPUTTRI       = cdoOperatorAdd("outputtri",       0, 0, NULL);
   int OUTPUTVRML      = cdoOperatorAdd("outputvrml",      0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -258,9 +260,9 @@ void *Outputgmt(void *argument)
       if ( cdoVerbose ) cptWrite(stderr, cpt);
     }
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int taxisID = vlistInqTaxis(vlistID);
 
   int varID = 0;
@@ -435,7 +437,7 @@ void *Outputgmt(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID);
       int vtime = taxisInqVtime(taxisID);
@@ -471,12 +473,12 @@ void *Outputgmt(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID, &varID, &levelID);
+	  pstreamInqRecord(streamID, &varID, &levelID);
 
 	  if ( varID != varID0 ) continue;
 	  if ( recID > 0 && !lzon && !lmer ) continue;
 
-	  streamReadRecord(streamID, array, &nmiss);
+	  pstreamReadRecord(streamID, array, &nmiss);
 
 	  if ( operatorID == OUTPUTCENTER2 && grid_is_circular )
 	    make_cyclic(array, array2, nlon, nlat);
@@ -561,8 +563,8 @@ void *Outputgmt(void *argument)
 	      if ( nrecs < 2 ) cdoAbort("Too few fields!");
 
 	      memcpy(uf, array, gridsize*sizeof(double));
-	      streamInqRecord(streamID, &varID, &levelID);
-	      streamReadRecord(streamID, vf, &nmiss);
+	      pstreamInqRecord(streamID, &varID, &levelID);
+	      pstreamReadRecord(streamID, vf, &nmiss);
 
 	      for ( int j = 0; j < nlat; j += ninc )
 		for ( int i = 0; i < nlon; i += ninc )
@@ -714,7 +716,7 @@ void *Outputgmt(void *argument)
       tsID++;
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   if ( array  ) Free(array);
   if ( array2 ) Free(array2);
diff --git a/src/Pack.c b/src/Pack.cc
similarity index 91%
rename from src/Pack.c
rename to src/Pack.cc
index a807128..1c69646 100644
--- a/src/Pack.c
+++ b/src/Pack.cc
@@ -94,9 +94,9 @@ void *Pack(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -106,7 +106,7 @@ void *Pack(void *argument)
   int nvars = vlistNvars(vlistID1);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -120,11 +120,11 @@ void *Pack(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 	}
 
@@ -229,14 +229,13 @@ void *Pack(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   for ( tsID = 0; tsID < nts; tsID++ )
     {
       dtlist_taxisDefTimestep(dtlist, taxisID2, tsID);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -246,8 +245,8 @@ void *Pack(void *argument)
 	      if ( vars[tsID][varID][levelID].ptr )
 		{
 		  nmiss = vars[tsID][varID][levelID].nmiss;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
 		  Free(vars[tsID][varID][levelID].ptr);
 		  vars[tsID][varID][levelID].ptr = NULL;
 		}
@@ -261,8 +260,8 @@ void *Pack(void *argument)
 
   dtlist_delete(dtlist);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Pardup.c b/src/Pardup.cc
similarity index 86%
rename from src/Pardup.c
rename to src/Pardup.cc
index 35541d2..ce8bce3 100644
--- a/src/Pardup.c
+++ b/src/Pardup.cc
@@ -57,9 +57,9 @@ void *Pardup(void *argument)
   else
     cdoAbort("operator not implemented!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -92,20 +92,18 @@ void *Pardup(void *argument)
 	vlistDefVarParam(vlistID2, varID+nvars*i, cdiEncodeParam(-(varID+nvars*i+1), 255, 255));
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  recVarID[recID]   = varID;
 	  recLevelID[recID] = levelID;
@@ -114,7 +112,7 @@ void *Pardup(void *argument)
 	  offset   = gridsize*levelID;
 	  single   = vardata[varID] + offset;
   
-	  streamReadRecord(streamID1, single, &nmiss);
+	  pstreamReadRecord(streamID1, single, &nmiss);
 	  varnmiss[varID][levelID] = nmiss;
 	}
 
@@ -132,15 +130,15 @@ void *Pardup(void *argument)
 
 	    memcpy(array, single, gridsize*sizeof(double));
 
-	    streamDefRecord(streamID2,  varID2,  levelID);
-	    streamWriteRecord(streamID2, array, nmiss);
+	    pstreamDefRecord(streamID2,  varID2,  levelID);
+	    pstreamWriteRecord(streamID2, array, nmiss);
 	  }
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ ) Free(vardata[varID]);
   for ( varID = 0; varID < nvars; varID++ ) Free(varnmiss[varID]);
diff --git a/src/Pinfo.c b/src/Pinfo.cc
similarity index 88%
rename from src/Pinfo.c
rename to src/Pinfo.cc
index efa5389..4b402ed 100644
--- a/src/Pinfo.c
+++ b/src/Pinfo.cc
@@ -42,25 +42,26 @@ void *Pinfo(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int PINFO  = cdoOperatorAdd("pinfo",  0, 0, NULL);
   int PINFOV = cdoOperatorAdd("pinfov", 0, 0, NULL);
+  // clang-format on
 
   UNUSED(PINFO);
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -69,14 +70,13 @@ void *Pinfo(void *argument)
 
   int indg = 0;
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       int vtime = taxisInqVtime(taxisID1);
 
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       date2str(vdate, vdatestr, sizeof(vdatestr));
       time2str(vtime, vtimestr, sizeof(vtimestr));
@@ -93,8 +93,8 @@ void *Pinfo(void *argument)
 			"     Minimum        Mean     Maximum\n");
 	    }
 
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  indg += 1;
 	  int code     = vlistInqVarCode(vlistID1, varID);
@@ -175,14 +175,15 @@ void *Pinfo(void *argument)
 
 	  for ( i = 0; i < gridsize; i++ ) array2[i] = array1[i];
 
-	  streamDefRecord(streamID2,  varID,  levelID);
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Pressure.c b/src/Pressure.cc
similarity index 93%
rename from src/Pressure.c
rename to src/Pressure.cc
index 18f65a0..14ab63c 100644
--- a/src/Pressure.c
+++ b/src/Pressure.cc
@@ -36,7 +36,7 @@
 void *Pressure(void *argument)
 {
   int mode;
-  gribcode_t gribcodes = {0};
+  gribcode_t gribcodes = {};
   int nrecs;
   int i, k, offset;
   int varID, levelID;
@@ -52,15 +52,17 @@ void *Pressure(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int PRESSURE_FL = cdoOperatorAdd("pressure_fl", 0, 0, NULL);
   int PRESSURE_HL = cdoOperatorAdd("pressure_hl", 0, 0, NULL);
   int DELTAP      = cdoOperatorAdd("deltap",      0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int gridsize = vlist_check_gridsize(vlistID1);
 
@@ -221,24 +223,22 @@ void *Pressure(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( varID == pvarID )
 	    {	  
-	      streamReadRecord(streamID1, pdata, &nmiss);
+	      pstreamReadRecord(streamID1, pdata, &nmiss);
 	      if ( nmiss > 0 ) cdoAbort("Missing valus unsupported!");
 	    }
 	}
@@ -283,16 +283,16 @@ void *Pressure(void *argument)
       varID = 0;
       for ( levelID = 0; levelID < nlevel; levelID++ )
 	{
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 	  offset = levelID*gridsize;
-	  streamWriteRecord(streamID2, pout+offset, 0);
+	  pstreamWriteRecord(streamID2, pout+offset, 0);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( pdata      ) Free(pdata);
   if ( ps_prog    ) Free(ps_prog);
diff --git a/src/Regres.c b/src/Regres.cc
similarity index 82%
rename from src/Regres.c
rename to src/Regres.cc
index 55219fd..520d2b9 100644
--- a/src/Regres.c
+++ b/src/Regres.cc
@@ -40,9 +40,9 @@ void *Regres(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   vlistDefNtsteps(vlistID2, 1);
@@ -51,13 +51,11 @@ void *Regres(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
   /*
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
   */
-  int streamID3 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID2);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID2);
 
   int nrecords = vlistNrecs(vlistID1);
 
@@ -77,16 +75,16 @@ void *Regres(void *argument)
 
   int vdate = 0, vtime = 0;
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
 
-      tsID++; /* don't move this line !!! */
+      tsID++; // don't move this line !!!
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 1 )
 	    {
@@ -94,7 +92,7 @@ void *Regres(void *argument)
 	      recLevelID[recID] = levelID;
 	    }
 
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
 
 	  double missval = vlistInqVarMissval(vlistID1, varID);
 	  int gridID   = vlistInqVarGrid(vlistID1, varID);
@@ -115,8 +113,8 @@ void *Regres(void *argument)
 
   taxisDefVdate(taxisID2, vdate);
   taxisDefVtime(taxisID2, vtime);
-  /* streamDefTimestep(streamID2, 0); */
-  streamDefTimestep(streamID3, 0);
+  /* pstreamDefTimestep(streamID2, 0); */
+  pstreamDefTimestep(streamID3, 0);
 
   for ( int recID = 0; recID < nrecords; recID++ )
     {
@@ -147,15 +145,15 @@ void *Regres(void *argument)
       for ( i = 0; i < gridsize; i++ )
 	if ( DBL_IS_EQUAL(field1.ptr[i], missval) ) nmiss++;
 
-      streamDefRecord(streamID2, varID, levelID);
-      streamWriteRecord(streamID2, field1.ptr, nmiss);
+      pstreamDefRecord(streamID2, varID, levelID);
+      pstreamWriteRecord(streamID2, field1.ptr, nmiss);
       */
       nmiss = 0;
       for ( int i = 0; i < gridsize; i++ )
 	if ( DBL_IS_EQUAL(field2.ptr[i], missval) ) nmiss++;
 
-      streamDefRecord(streamID3, varID, levelID);
-      streamWriteRecord(streamID3, field2.ptr, nmiss);
+      pstreamDefRecord(streamID3, varID, levelID);
+      pstreamWriteRecord(streamID3, field2.ptr, nmiss);
     }
 
 
@@ -167,9 +165,9 @@ void *Regres(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID3);
-  /* streamClose(streamID2); */
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  /* pstreamClose(streamID2); */
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Remap.c b/src/Remap.cc
similarity index 98%
rename from src/Remap.c
rename to src/Remap.cc
index 8a1f6c2..2993334 100644
--- a/src/Remap.c
+++ b/src/Remap.cc
@@ -761,6 +761,7 @@ void *Remap(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("remapcon",     REMAPCON,     0, NULL);
   cdoOperatorAdd("remapcon2",    REMAPCON2,    0, NULL);
   cdoOperatorAdd("remapbil",     REMAPBIL,     0, NULL);
@@ -779,6 +780,7 @@ void *Remap(void *argument)
   cdoOperatorAdd("remap",        REMAPXXX,     0, NULL);
   cdoOperatorAdd("remapycon",    REMAPYCON,    0, NULL);
   cdoOperatorAdd("genycon",      GENYCON,      1, NULL);
+  // clang-format on
 
   int operatorID   = cdoOperatorID();
   int operfunc     = cdoOperatorF1(operatorID);
@@ -801,7 +803,7 @@ void *Remap(void *argument)
 	cdoPrint("Extrapolation disabled!");
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   if ( lremapxxx )
     {
@@ -829,9 +831,9 @@ void *Remap(void *argument)
 
   if ( gridInqType(gridID2) == GRID_GENERIC ) cdoAbort("Unsupported target grid type (generic)!");
 
-  int filetype = streamInqFiletype(streamID1);
+  int filetype = pstreamInqFiletype(streamID1);
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -957,22 +959,22 @@ void *Remap(void *argument)
 
   if ( ! lwrite_remap )
     {
-      streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-      streamDefVlist(streamID2, vlistID2);
+      streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+      pstreamDefVlist(streamID2, vlistID2);
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
 
       if ( ! lwrite_remap ) 
-	streamDefTimestep(streamID2, tsID);
+	pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss1);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss1);
 
 	  gridID1 = vlistInqVarGrid(vlistID1, varID);
 
@@ -1247,13 +1249,14 @@ void *Remap(void *argument)
 
 	SKIPVAR:
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss2);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss2);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
  WRITE_REMAP:
  
@@ -1261,7 +1264,7 @@ void *Remap(void *argument)
     write_remap_scrip(cdoStreamName(1)->args, map_type, submap_type, num_neighbors, remap_order,
 		      remaps[r].src_grid, remaps[r].tgt_grid, remaps[r].vars);
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
 
   if ( imask )  Free(imask);
   if ( array2 ) Free(array2);
diff --git a/src/Remapeta.c b/src/Remapeta.cc
similarity index 93%
rename from src/Remapeta.c
rename to src/Remapeta.cc
index 4106c85..a04bb64 100644
--- a/src/Remapeta.c
+++ b/src/Remapeta.cc
@@ -250,9 +250,11 @@ void *Remapeta(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int REMAPETA  = cdoOperatorAdd("remapeta",   0, 0, "VCT file name");
   int REMAPETAS = cdoOperatorAdd("remapeta_s", 0, 0, "VCT file name");
   int REMAPETAZ = cdoOperatorAdd("remapeta_z", 0, 0, "VCT file name");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -281,7 +283,7 @@ void *Remapeta(void *argument)
     for ( i = 0; i < nhlevf2+1; ++i )
       cdoPrint("vct2: %5d %25.17f %25.17f", i, vct2[i], vct2[nvct2/2+i]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   if ( operatorArgc() == 2 )
     {
@@ -289,18 +291,18 @@ void *Remapeta(void *argument)
 
       const char *fname = operatorArgv()[1];
       argument_t *fileargument = file_argument_new(fname);
-      int streamID = streamOpenRead(fileargument);
+      int streamID = pstreamOpenRead(fileargument);
       file_argument_free(fileargument);
 
-      int vlistID1 = streamInqVlist(streamID);
+      int vlistID1 = pstreamInqVlist(streamID);
 
-      streamInqRecord(streamID, &varID, &levelID);
+      pstreamInqRecord(streamID, &varID, &levelID);
       int gridID  = vlistInqVarGrid(vlistID1, varID);
       nfis2gp = gridInqSize(gridID);
 
       fis2 = (double*) Malloc(nfis2gp*sizeof(double));
 
-      streamReadRecord(streamID, fis2, &nmiss);
+      pstreamReadRecord(streamID, fis2, &nmiss);
 
       if ( nmiss )
 	{
@@ -325,10 +327,10 @@ void *Remapeta(void *argument)
       if ( minval < -1.e10 || maxval > 1.e10 )
 	cdoAbort("%s out of range!", var_stdname(surface_geopotential));
 
-      streamClose(streamID); 
+      pstreamClose(streamID); 
     }
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -375,9 +377,8 @@ void *Remapeta(void *argument)
       cdoPrint("vct1: %5d %25.17f %25.17f", i, vct1[i], vct1[nvct1/2+i]);
 
   
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
 
   if ( zaxisIDh == -1 )
@@ -542,18 +543,18 @@ void *Remapeta(void *argument)
   if ( cdoVerbose ) cdoPrint("nvars3D = %d   ltq = %d", nvars3D, (int)ltq);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  int zaxisID = vlistInqVarZaxis(vlistID1, varID);
 	  int nlevel  = zaxisInqSize(zaxisID);
 	  int offset = gridsize*levelID;
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  if ( zaxisIDh != -1 )
 	    {
@@ -582,14 +583,14 @@ void *Remapeta(void *argument)
 		}
 	      else
 		{
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	  else
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 	    }
 	}
 
@@ -663,8 +664,8 @@ void *Remapeta(void *argument)
 	  varID   = sgeopotID;
 	  levelID = 0;
 	  setmissval(gridsize, imiss, missval, fis2);
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, fis2, nmissout);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, fis2, nmissout);
 	}
 
       if ( zaxisIDh != -1 && lnpsID != -1 )
@@ -675,8 +676,8 @@ void *Remapeta(void *argument)
 	  varID   = presID;
 	  levelID = 0;
 	  setmissval(gridsize, imiss, missval, ps2);
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, ps2, nmissout);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, ps2, nmissout);
 	}
 
       if ( ltq )
@@ -694,8 +695,8 @@ void *Remapeta(void *argument)
 			   levelID+1, minval, maxval);
 
 	      setmissval(gridsize, imiss, missval, single2);
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, single2, nmissout);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, single2, nmissout);
 	    }
 
 	  varID = sqID;
@@ -716,8 +717,8 @@ void *Remapeta(void *argument)
 			   levelID+1, minval, maxval);
 
 	      setmissval(gridsize, imiss, missval, single2);
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, single2, nmissout);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, single2, nmissout);
 	    }
 	}
 
@@ -772,16 +773,16 @@ void *Remapeta(void *argument)
 		}
 
 	      setmissval(gridsize, imiss, missval, single2);
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, single2, nmissout);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, single2, nmissout);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( nvars3D )
     {
diff --git a/src/Replace.c b/src/Replace.cc
similarity index 86%
rename from src/Replace.c
rename to src/Replace.cc
index d3ae813..39994c9 100644
--- a/src/Replace.c
+++ b/src/Replace.cc
@@ -47,15 +47,15 @@ void *Replace(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID3 = taxisDuplicate(taxisID1);
 
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   /* compare all variables in vlistID2 */
 
@@ -149,10 +149,10 @@ void *Replace(void *argument)
 
   int vlistID3 = vlistDuplicate(vlistID1);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
   vlistDefTaxis(vlistID3, taxisID3);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array = (double*) Malloc(gridsize*sizeof(double));
@@ -160,38 +160,38 @@ void *Replace(void *argument)
   int nts2 = vlistNtsteps(vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID3, taxisID1);
 
       if ( tsID == 0 || (nts2 != 0 && nts2 != 1) )
 	{
-	  nrecs2 = streamInqTimestep(streamID2, tsID);
+	  nrecs2 = pstreamInqTimestep(streamID2, tsID);
 	  if ( nrecs2 == 0 )
 	    cdoAbort("Input streams have different number of timesteps!");
 
 	  for ( int recID = 0; recID < nrecs2; recID++ )
 	    {
-	      streamInqRecord(streamID2, &varID, &levelID);
+	      pstreamInqRecord(streamID2, &varID, &levelID);
 	      
 	      for ( idx = 0; idx < nchvars; idx++ )
 		if ( varlist2[idx] == varID )
 		  {
 		    int gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 		    int offset   = gridsize*levelID;
-		    parray   = vardata2[idx]+offset;
-		    streamReadRecord(streamID2, parray, &nmiss);
+		    parray = vardata2[idx]+offset;
+		    pstreamReadRecord(streamID2, parray, &nmiss);
 		    varnmiss2[idx][levelID] = nmiss;
 		    break;
 		  }
 	    }
 	}
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  parray = array;
 
@@ -209,18 +209,18 @@ void *Replace(void *argument)
 		  }
 	      }
 
-	  if ( idx == nchvars ) streamReadRecord(streamID1, parray, &nmiss);
+	  if ( idx == nchvars ) pstreamReadRecord(streamID1, parray, &nmiss);
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, parray, nmiss);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, parray, nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   if ( vardata2 )
     {
diff --git a/src/Replacevalues.c b/src/Replacevalues.cc
similarity index 85%
rename from src/Replacevalues.c
rename to src/Replacevalues.cc
index 35b6a92..06598b5 100644
--- a/src/Replacevalues.c
+++ b/src/Replacevalues.cc
@@ -43,9 +43,11 @@ void *Replacevalues(void *argument)
 
   cdoInitialize(argument);
 
-  int SETVALS  = cdoOperatorAdd("setvals" , 0, 0, "I1,O1,...,In,On");
+  // clang-format off
+  int SETVALS  = cdoOperatorAdd("setvals",  0, 0, "I1,O1,...,In,On");
   int SETRTOC  = cdoOperatorAdd("setrtoc",  0, 0, "range (min, max), value");
   int SETRTOC2 = cdoOperatorAdd("setrtoc2", 0, 0, "range (min, max), value1, value2");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -75,33 +77,33 @@ void *Replacevalues(void *argument)
       newval2 = parameter2double(operatorArgv()[3]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  double missval = vlistInqVarMissval(vlistID1, varID);
@@ -144,14 +146,15 @@ void *Replacevalues(void *argument)
 		  }
 	    }
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
 
diff --git a/src/Rhopot.c b/src/Rhopot.cc
similarity index 93%
rename from src/Rhopot.c
rename to src/Rhopot.cc
index f2c2c8d..0d6df6f 100644
--- a/src/Rhopot.c
+++ b/src/Rhopot.cc
@@ -166,9 +166,9 @@ void *Rhopot(void *argument)
 
   if ( operatorArgc() == 1 ) pin = parameter2double(operatorArgv()[0]);
   
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nvars = vlistNvars(vlistID1);
 
@@ -266,30 +266,29 @@ void *Rhopot(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; ++recID )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  offset = gridsize*levelID;
 
 	  if ( varID == toID )
             {
-              streamReadRecord(streamID1, to.ptr+offset, &nmiss);
+              pstreamReadRecord(streamID1, to.ptr+offset, &nmiss);
               to.nmiss = (size_t) nmiss;
             }
 	  if ( varID == saoID )
             {
-              streamReadRecord(streamID1, sao.ptr+offset, &nmiss);
+              pstreamReadRecord(streamID1, sao.ptr+offset, &nmiss);
               sao.nmiss = (size_t) nmiss;
             }
         }
@@ -305,15 +304,15 @@ void *Rhopot(void *argument)
 	  for ( int i = 0; i < gridsize; ++i )
 	    if ( DBL_IS_EQUAL(single[i], rho.missval) ) nmiss++;
  
-	  streamDefRecord(streamID2, 0, levelID);
-	  streamWriteRecord(streamID2, single, nmiss);     
+	  pstreamDefRecord(streamID2, 0, levelID);
+	  pstreamWriteRecord(streamID2, single, nmiss);     
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Rotuv.c b/src/Rotuv.cc
similarity index 92%
rename from src/Rotuv.c
rename to src/Rotuv.cc
index 4cb0923..c321972 100644
--- a/src/Rotuv.c
+++ b/src/Rotuv.cc
@@ -116,9 +116,9 @@ void *Rotuv(void *argument)
 	chcodes[i] = parameter2int(operatorArgv()[i]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars = vlistNvars(vlistID1);
@@ -172,20 +172,18 @@ void *Rotuv(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  recVarID[recID]   = varID;
 	  recLevelID[recID] = levelID;
@@ -193,7 +191,7 @@ void *Rotuv(void *argument)
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));	  
 	  offset  = gridsize*levelID;
 	  single  = vardata[varID] + offset;
-	  streamReadRecord(streamID1, single, &varnmiss[varID][levelID]);
+	  pstreamReadRecord(streamID1, single, &varnmiss[varID][levelID]);
 	  if ( varnmiss[varID][levelID] )
 	    cdoAbort("Missing values unsupported for this operator!");
 	}
@@ -281,15 +279,15 @@ void *Rotuv(void *argument)
 	  offset   = gridsize*levelID;
 	  single   = vardata[varID] + offset;
 
-	  streamDefRecord(streamID2, varID,  levelID);
-	  streamWriteRecord(streamID2, single, varnmiss[varID][levelID]);     
+	  pstreamDefRecord(streamID2, varID,  levelID);
+	  pstreamWriteRecord(streamID2, single, varnmiss[varID][levelID]);     
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
diff --git a/src/Runpctl.c b/src/Runpctl.cc
similarity index 85%
rename from src/Runpctl.c
rename to src/Runpctl.cc
index 2ace7fb..64fdb7a 100644
--- a/src/Runpctl.c
+++ b/src/Runpctl.cc
@@ -45,18 +45,17 @@ void *Runpctl(void *argument)
   percentile_check_number(pn);
   int ndates = parameter2int(operatorArgv()[1]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -77,14 +76,14 @@ void *Runpctl(void *argument)
   int tsID;
   for ( tsID = 0; tsID < ndates; tsID++ )
     {
-      int nrecs = streamInqTimestep(streamID1, tsID);
+      int nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) cdoAbort("File has less than %d timesteps!", ndates);
 
       dtlist_taxisInqTimestep(dtlist, taxisID1, tsID);
         
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
 
           if ( tsID == 0 )
             {
@@ -92,7 +91,7 @@ void *Runpctl(void *argument)
               recLevelID[recID] = levelID;
             }
           
-          streamReadRecord(streamID1, vars1[tsID][varID][levelID].ptr, &nmiss);
+          pstreamReadRecord(streamID1, vars1[tsID][varID][levelID].ptr, &nmiss);
           vars1[tsID][varID][levelID].nmiss = nmiss;
         }
     }
@@ -135,7 +134,7 @@ void *Runpctl(void *argument)
         }
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID2, ndates);
-      streamDefTimestep(streamID2, otsID);
+      pstreamDefTimestep(streamID2, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
         {
@@ -144,8 +143,8 @@ void *Runpctl(void *argument)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[0][varID][levelID].ptr, vars1[0][varID][levelID].nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, vars1[0][varID][levelID].ptr, vars1[0][varID][levelID].nmiss);
         }
 
       otsID++;
@@ -155,16 +154,15 @@ void *Runpctl(void *argument)
       vars1[ndates] = vars1[0];
       for ( int inp = 0; inp < ndates; inp++ ) vars1[inp] = vars1[inp+1];
 
-      int nrecs = streamInqTimestep(streamID1, tsID);
+      int nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       dtlist_taxisInqTimestep(dtlist, taxisID1, ndates-1);
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
-          
-          streamReadRecord(streamID1, vars1[ndates-1][varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, vars1[ndates-1][varID][levelID].ptr, &nmiss);
           vars1[ndates-1][varID][levelID].nmiss = nmiss;
         }
 
@@ -182,8 +180,8 @@ void *Runpctl(void *argument)
 
   dtlist_delete(dtlist);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Runstat.c b/src/Runstat.c
deleted file mode 100644
index 1b791e7..0000000
--- a/src/Runstat.c
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Runstat    runmin          Running minimum
-      Runstat    runmax          Running maximum
-      Runstat    runsum          Running sum
-      Runstat    runmean         Running mean
-      Runstat    runavg          Running average
-      Runstat    runvar          Running variance
-      Runstat    runvar1         Running variance [Normalize by (n-1)]
-      Runstat    runstd          Running standard deviation
-      Runstat    runstd1         Running standard deviation [Normalize by (n-1)]
-*/
-
-#include <cdi.h>
-#include "cdo_int.h"
-#include "pstream.h"
-
-
-void *Runstat(void *argument)
-{
-  int timestat_date = TIMESTAT_MEAN;
-  int varID;
-  int levelID;
-  int nmiss;
-  int runstat_nomiss = 0;
-
-  cdoInitialize(argument);
-
-  char *envstr = getenv("RUNSTAT_NOMISS");
-  if ( envstr )
-    {
-      char *endptr;
-      int envval = (int) strtol(envstr, &endptr, 10);
-      if ( envval == 1 ) runstat_nomiss = 1;
-    }
-
-  cdoOperatorAdd("runmin",  func_min,  0, NULL);
-  cdoOperatorAdd("runmax",  func_max,  0, NULL);
-  cdoOperatorAdd("runsum",  func_sum,  0, NULL);
-  cdoOperatorAdd("runmean", func_mean, 0, NULL);
-  cdoOperatorAdd("runavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("runvar",  func_var,  0, NULL);
-  cdoOperatorAdd("runvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("runstd",  func_std,  0, NULL);
-  cdoOperatorAdd("runstd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  operatorInputArg("number of timesteps");
-  int ndates = parameter2int(operatorArgv()[0]);
-
-  int lmean   = operfunc == func_mean || operfunc == func_avg;
-  int lstd    = operfunc == func_std || operfunc == func_std1;
-  int lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor = operfunc == func_std1 || operfunc == func_var1;
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  vlistDefTaxis(vlistID2, taxisID2);
-  /*  Number of timestep will be reduced compared to the input
-   *  error handling in case of not enough timesteps is done per record */
-  int nsteps = vlistNtsteps(vlistID1);
-  if ( nsteps != -1 )
-    {
-      nsteps -= ndates-1;
-      if ( nsteps > 0 ) vlistDefNtsteps(vlistID2, nsteps);
-    }
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  dtlist_type *dtlist = dtlist_new();
-  dtlist_set_stat(dtlist, timestat_date);
-  dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
-
-  field_type ***vars1 = (field_type ***) Malloc((ndates+1)*sizeof(field_type **));
-  field_type ***vars2 = NULL, ***samp1 = NULL;
-  if ( !runstat_nomiss )
-    samp1 = (field_type ***) Malloc((ndates+1)*sizeof(field_type **));
-  if ( lvarstd )
-    vars2 = (field_type ***) Malloc((ndates+1)*sizeof(field_type **));
-
-  for ( int its = 0; its < ndates; its++ )
-    {
-      vars1[its] = field_malloc(vlistID1, FIELD_PTR);
-      if ( !runstat_nomiss )
-	samp1[its] = field_malloc(vlistID1, FIELD_PTR);
-      if ( lvarstd )
-	vars2[its] = field_malloc(vlistID1, FIELD_PTR);
-    }
-
-  int gridsizemax = vlistGridsizeMax(vlistID1);
-  bool *imask = (bool*) Malloc(gridsizemax*sizeof(bool));
-
-  int tsID = 0;
-  for ( tsID = 0; tsID < ndates; tsID++ )
-    {
-      int nrecs = streamInqTimestep(streamID1, tsID);
-      if ( nrecs == 0 ) cdoAbort("File has less then %d timesteps!", ndates);
-
-      dtlist_taxisInqTimestep(dtlist, taxisID1, tsID);
-	
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-
-	  if ( tsID == 0 )
-	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
-	    }
-	  
-	  streamReadRecord(streamID1, vars1[tsID][varID][levelID].ptr, &nmiss);
-	  vars1[tsID][varID][levelID].nmiss = nmiss;
-
-	  if ( runstat_nomiss && nmiss > 0 ) cdoAbort("Missing values supported swichted off!");
-
-	  if ( !runstat_nomiss )
-	    {
-	      int gridsize = gridInqSize(vars1[0][varID][levelID].grid);
-	      double missval  = vars1[0][varID][levelID].missval;
-
-	      for ( int i = 0; i < gridsize; i++ )
-		if ( DBL_IS_EQUAL(vars1[tsID][varID][levelID].ptr[i], missval) )
-		  imask[i] = false;
-		else
-		  imask[i] = true;
-
-	      for ( int i = 0; i < gridsize; i++ )
-		samp1[tsID][varID][levelID].ptr[i] = (double) imask[i];
-
-#if defined(_OPENMP)
-#pragma omp parallel for default(none) shared(tsID,gridsize,imask,samp1,varID,levelID)
-#endif
-	      for ( int inp = 0; inp < tsID; inp++ )
-		{
-		  double *ptr = samp1[inp][varID][levelID].ptr;
-		  for ( int i = 0; i < gridsize; i++ )
-		    if ( imask[i] ) ptr[i]++;
-		}
-	    }
-
-	  if ( lvarstd )
-	    {
-	      farmoq(&vars2[tsID][varID][levelID], vars1[tsID][varID][levelID]);
-#if defined(_OPENMP)
-#pragma omp parallel for default(none) shared(tsID,vars1,vars2,varID,levelID)
-#endif
-	      for ( int inp = 0; inp < tsID; inp++ )
-		{
-		  farsumq(&vars2[inp][varID][levelID], vars1[tsID][varID][levelID]);
-		  farsum(&vars1[inp][varID][levelID], vars1[tsID][varID][levelID]);
-		}
-	    }
-	  else
-	    {
-#if defined(_OPENMP)
-#pragma omp parallel for default(none) shared(tsID,vars1,operfunc,varID,levelID)
-#endif
-	      for ( int inp = 0; inp < tsID; inp++ )
-		{
-		  farfun(&vars1[inp][varID][levelID], vars1[tsID][varID][levelID], operfunc);
-		}
-	    }
-	}
-    }
-
-  int otsID = 0;
-  while ( TRUE )
-    {
-      if ( lmean )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    int nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( runstat_nomiss )
-		  farcdiv(&vars1[0][varID][levelID], (double)ndates);
-		else
-		  fardiv(&vars1[0][varID][levelID], samp1[0][varID][levelID]);
-	      }
-	  }
-      else if ( lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    int nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( runstat_nomiss )
-		  {
-		    if ( lstd )
-		      farcstd(&vars1[0][varID][levelID], vars2[0][varID][levelID], ndates, divisor);
-		    else
-		      farcvar(&vars1[0][varID][levelID], vars2[0][varID][levelID], ndates, divisor);
-		  }
-		else
-		  {
-		    if ( lstd )
-		      farstd(&vars1[0][varID][levelID], vars2[0][varID][levelID], samp1[0][varID][levelID], divisor);
-		    else
-		      farvar(&vars1[0][varID][levelID], vars2[0][varID][levelID], samp1[0][varID][levelID], divisor);
-		  }
-	      }
-	  }
-
-      dtlist_stat_taxisDefTimestep(dtlist, taxisID2, ndates);
-      streamDefTimestep(streamID2, otsID);
-
-      for ( int recID = 0; recID < nrecords; recID++ )
-	{
-	  varID    = recVarID[recID];
-	  levelID  = recLevelID[recID];
-
-	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[0][varID][levelID].ptr, vars1[0][varID][levelID].nmiss);
-	}
-
-      otsID++;
-
-      dtlist_shift(dtlist);
-
-      vars1[ndates] = vars1[0];
-      if ( !runstat_nomiss )
-	samp1[ndates] = samp1[0];
-      if ( lvarstd )
-        vars2[ndates] = vars2[0];
-
-      for ( int inp = 0; inp < ndates; inp++ )
-	{
-	  vars1[inp] = vars1[inp+1];
-	  if ( !runstat_nomiss )
-	    samp1[inp] = samp1[inp+1];
-	  if ( lvarstd )
-	    vars2[inp] = vars2[inp+1];
-	}
-
-      int nrecs = streamInqTimestep(streamID1, tsID);
-      if ( nrecs == 0 ) break;
-
-      dtlist_taxisInqTimestep(dtlist, taxisID1, ndates-1);
-
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  
-	  streamReadRecord(streamID1, vars1[ndates-1][varID][levelID].ptr, &nmiss);
-	  vars1[ndates-1][varID][levelID].nmiss = nmiss;
-
-	  if ( runstat_nomiss && nmiss > 0 ) cdoAbort("Missing values supported swichted off!");
-
-	  if ( !runstat_nomiss )
-	    {
-	      int gridsize = gridInqSize(vars1[0][varID][levelID].grid);
-	      double missval  = vars1[0][varID][levelID].missval;
-
-	      for ( int i = 0; i < gridsize; i++ )
-		if ( DBL_IS_EQUAL(vars1[ndates-1][varID][levelID].ptr[i], missval) )
-		  imask[i] = false;
-		else
-		  imask[i] = true;
-
-	      for ( int i = 0; i < gridsize; i++ )
-		samp1[ndates-1][varID][levelID].ptr[i] = (double) imask[i];
-
-#if defined(_OPENMP)
-#pragma omp parallel for default(none) shared(ndates,imask,gridsize,samp1,varID,levelID)
-#endif
-	      for ( int inp = 0; inp < ndates-1; inp++ )
-		{
-		  double *ptr = samp1[inp][varID][levelID].ptr;
-		  for ( int i = 0; i < gridsize; i++ )
-		    if ( imask[i] ) ptr[i]++;
-		}
-	    }
-
-	  if ( lvarstd )
-	    {
-	      farmoq(&vars2[ndates-1][varID][levelID], vars1[ndates-1][varID][levelID]);
-#if defined(_OPENMP)
-#pragma omp parallel for default(none) shared(ndates,vars1,vars2,varID,levelID)
-#endif
-	      for ( int inp = 0; inp < ndates-1; inp++ )
-		{
-		  farsumq(&vars2[inp][varID][levelID], vars1[ndates-1][varID][levelID]);
-		  farsum(&vars1[inp][varID][levelID], vars1[ndates-1][varID][levelID]);
-		}
-	    }
-	  else
-	    {
-#if defined(_OPENMP)
-#pragma omp parallel for default(none) shared(ndates,vars1,varID,levelID,operfunc)
-#endif
-	      for ( int inp = 0; inp < ndates-1; inp++ )
-		{
-		  farfun(&vars1[inp][varID][levelID], vars1[ndates-1][varID][levelID], operfunc);
-		}
-	    }
-	}
-
-      tsID++;
-    }
-
-  for ( int its = 0; its < ndates; its++ )
-    {
-      field_free(vars1[its], vlistID1);
-      if ( !runstat_nomiss ) field_free(samp1[its], vlistID1);
-      if ( lvarstd ) field_free(vars2[its], vlistID1);
-    }
-
-  Free(vars1);
-  if ( !runstat_nomiss ) Free(samp1);
-  if ( lvarstd ) Free(vars2);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-  if ( imask )      Free(imask);
-
-  dtlist_delete(dtlist);
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Runstat.cc b/src/Runstat.cc
new file mode 100644
index 0000000..11e68ef
--- /dev/null
+++ b/src/Runstat.cc
@@ -0,0 +1,406 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Runstat    runrange        Running range
+      Runstat    runmin          Running minimum
+      Runstat    runmax          Running maximum
+      Runstat    runsum          Running sum
+      Runstat    runmean         Running mean
+      Runstat    runavg          Running average
+      Runstat    runvar          Running variance
+      Runstat    runvar1         Running variance [Normalize by (n-1)]
+      Runstat    runstd          Running standard deviation
+      Runstat    runstd1         Running standard deviation [Normalize by (n-1)]
+*/
+
+#include <cdi.h>
+#include "cdo_int.h"
+#include "pstream.h"
+
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+void *Runstat(void *argument)
+{
+  int timestat_date = TIMESTAT_MEAN;
+  int varID;
+  int levelID;
+  int nmiss;
+  int runstat_nomiss = 0;
+
+  cdoInitialize(argument);
+
+  char *envstr = getenv("RUNSTAT_NOMISS");
+  if ( envstr )
+    {
+      char *endptr;
+      int envval = (int) strtol(envstr, &endptr, 10);
+      if ( envval == 1 ) runstat_nomiss = 1;
+    }
+
+  // clang-format off
+  cdoOperatorAdd("runrange", func_range, 0, NULL);
+  cdoOperatorAdd("runmin",   func_min,   0, NULL);
+  cdoOperatorAdd("runmax",   func_max,   0, NULL);
+  cdoOperatorAdd("runsum",   func_sum,   0, NULL);
+  cdoOperatorAdd("runmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("runavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("runvar",   func_var,   0, NULL);
+  cdoOperatorAdd("runvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("runstd",   func_std,   0, NULL);
+  cdoOperatorAdd("runstd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
+
+  operatorInputArg("number of timesteps");
+  int ndates = parameter2int(operatorArgv()[0]);
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  vlistDefTaxis(vlistID2, taxisID2);
+  /*  Number of timestep will be reduced compared to the input
+   *  error handling in case of not enough timesteps is done per record */
+  int nsteps = vlistNtsteps(vlistID1);
+  if ( nsteps != -1 )
+    {
+      nsteps -= ndates-1;
+      if ( nsteps > 0 ) vlistDefNtsteps(vlistID2, nsteps);
+    }
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  dtlist_type *dtlist = dtlist_new();
+  dtlist_set_stat(dtlist, timestat_date);
+  dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
+
+  field_type ***vars1 = (field_type ***) Malloc((ndates+1)*sizeof(field_type **));
+  field_type ***vars2 = NULL, ***samp1 = NULL;
+  if ( !runstat_nomiss )
+    samp1 = (field_type ***) Malloc((ndates+1)*sizeof(field_type **));
+  if ( lvarstd || lrange )
+    vars2 = (field_type ***) Malloc((ndates+1)*sizeof(field_type **));
+
+  for ( int its = 0; its < ndates; its++ )
+    {
+      vars1[its] = field_malloc(vlistID1, FIELD_PTR);
+      if ( !runstat_nomiss )
+	samp1[its] = field_malloc(vlistID1, FIELD_PTR);
+      if ( lvarstd || lrange )
+	vars2[its] = field_malloc(vlistID1, FIELD_PTR);
+    }
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+  bool *imask = (bool*) Malloc(gridsizemax*sizeof(bool));
+
+  int tsID = 0;
+  for ( tsID = 0; tsID < ndates; tsID++ )
+    {
+      int nrecs = pstreamInqTimestep(streamID1, tsID);
+      if ( nrecs == 0 ) cdoAbort("File has less then %d timesteps!", ndates);
+
+      dtlist_taxisInqTimestep(dtlist, taxisID1, tsID);
+	
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+
+	  if ( tsID == 0 )
+	    {
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
+	    }
+	  
+          field_type *psamp1 = samp1 ? &samp1[tsID][varID][levelID] : NULL;
+          field_type *pvars1 = &vars1[tsID][varID][levelID];
+          field_type *pvars2 = vars2 ? &vars2[tsID][varID][levelID] : NULL;
+
+          int gridsize = pvars1->size;
+
+          pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	  pvars1->nmiss = nmiss;
+          if ( lrange )
+            {
+              pvars2->nmiss = pvars1->nmiss;
+              for ( int i = 0; i < gridsize; i++ )
+                pvars2->ptr[i] = pvars1->ptr[i];
+            }
+
+	  if ( runstat_nomiss && nmiss > 0 ) cdoAbort("Missing values supported was swichted off by env. RUNSTAT_NOMISS!");
+
+	  if ( !runstat_nomiss )
+	    {
+	      double missval = pvars1->missval;
+
+	      for ( int i = 0; i < gridsize; i++ )
+                imask[i] = !DBL_IS_EQUAL(pvars1->ptr[i], missval);
+
+	      for ( int i = 0; i < gridsize; i++ )
+		psamp1->ptr[i] = (double) imask[i];
+
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(tsID,gridsize,imask,samp1,varID,levelID)
+#endif
+	      for ( int inp = 0; inp < tsID; inp++ )
+		{
+                  double *ptr = samp1[inp][varID][levelID].ptr;
+		  for ( int i = 0; i < gridsize; i++ )
+		    if ( imask[i] ) ptr[i]++;
+		}
+	    }
+
+	  if ( lvarstd )
+	    {
+              farmoq(pvars2, *pvars1);
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(tsID,vars1,vars2,varID,levelID,pvars1)
+#endif
+	      for ( int inp = 0; inp < tsID; inp++ )
+		{
+		  farsumq(&vars2[inp][varID][levelID], *pvars1);
+		  farsum(&vars1[inp][varID][levelID], *pvars1);
+		}
+	    }
+	  else if ( lrange )
+	    {
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(tsID,vars1,vars2,varID,levelID,pvars1)
+#endif
+	      for ( int inp = 0; inp < tsID; inp++ )
+		{
+		  farmin(&vars2[inp][varID][levelID], *pvars1);
+		  farmax(&vars1[inp][varID][levelID], *pvars1);
+		}
+	    }
+	  else
+	    {
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(tsID,vars1,operfunc,varID,levelID,pvars1)
+#endif
+	      for ( int inp = 0; inp < tsID; inp++ )
+		{
+		  farfun(&vars1[inp][varID][levelID], *pvars1, operfunc);
+		}
+	    }
+	}
+    }
+
+  int otsID = 0;
+  while ( TRUE )
+    {
+      for ( int recID = 0; recID < maxrecs; recID++ )
+        {
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *psamp1 = samp1 ? &samp1[0][varID][levelID] : NULL;
+          field_type *pvars1 = &vars1[0][varID][levelID];
+          field_type *pvars2 = vars2 ? &vars2[0][varID][levelID] : NULL;
+          int nsets = ndates;
+
+          if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+          if ( lmean )
+            {
+              if ( !runstat_nomiss ) fardiv(pvars1, *psamp1);
+              else                   farcdiv(pvars1, (double)nsets);
+            }
+          else if ( lvarstd )
+            {
+              if ( !runstat_nomiss )
+                {
+                  if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                  else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                }
+              else
+                {
+                  if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                  else        farcvar(pvars1, *pvars2, nsets, divisor);
+                }
+            }
+          else if ( lrange )
+            {
+              farsub(pvars1, *pvars2);
+            }
+        }
+
+      dtlist_stat_taxisDefTimestep(dtlist, taxisID2, ndates);
+      pstreamDefTimestep(streamID2, otsID);
+
+      for ( int recID = 0; recID < maxrecs; recID++ )
+	{
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *pvars1 = &vars1[0][varID][levelID];
+
+	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr, pvars1->nmiss);
+	}
+
+      otsID++;
+
+      dtlist_shift(dtlist);
+
+      vars1[ndates] = vars1[0];
+      if ( !runstat_nomiss )
+	samp1[ndates] = samp1[0];
+      if ( lvarstd || lrange )
+        vars2[ndates] = vars2[0];
+
+      for ( int inp = 0; inp < ndates; inp++ )
+	{
+	  vars1[inp] = vars1[inp+1];
+	  if ( !runstat_nomiss )
+	    samp1[inp] = samp1[inp+1];
+	  if ( lvarstd || lrange )
+	    vars2[inp] = vars2[inp+1];
+	}
+
+      int nrecs = pstreamInqTimestep(streamID1, tsID);
+      if ( nrecs == 0 ) break;
+
+      dtlist_taxisInqTimestep(dtlist, taxisID1, ndates-1);
+
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  
+          field_type *psamp1 = samp1 ? &samp1[ndates-1][varID][levelID] : NULL;
+          field_type *pvars1 = &vars1[ndates-1][varID][levelID];
+          field_type *pvars2 = vars2 ? &vars2[ndates-1][varID][levelID] : NULL;
+
+          int gridsize = pvars1->size;
+
+          pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	  pvars1->nmiss = nmiss;
+          if ( lrange )
+            {
+              pvars2->nmiss = pvars1->nmiss;
+              for ( int i = 0; i < gridsize; i++ )
+                pvars2->ptr[i] = pvars1->ptr[i];
+            }
+
+	  if ( runstat_nomiss && nmiss > 0 ) cdoAbort("Missing values supported swichted off!");
+
+	  if ( !runstat_nomiss )
+	    {
+	      double missval = pvars1->missval;
+
+	      for ( int i = 0; i < gridsize; i++ )
+                imask[i] = !DBL_IS_EQUAL(pvars1->ptr[i], missval);
+
+	      for ( int i = 0; i < gridsize; i++ )
+		psamp1->ptr[i] = (double) imask[i];
+
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(ndates,imask,gridsize,samp1,varID,levelID)
+#endif
+	      for ( int inp = 0; inp < ndates-1; inp++ )
+		{
+                  double *ptr = samp1[inp][varID][levelID].ptr;
+		  for ( int i = 0; i < gridsize; i++ )
+		    if ( imask[i] ) ptr[i]++;
+		}
+	    }
+
+	  if ( lvarstd )
+	    {
+	      farmoq(pvars2, *pvars1);
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(ndates,vars1,vars2,varID,levelID,pvars1)
+#endif
+	      for ( int inp = 0; inp < ndates-1; inp++ )
+		{
+		  farsumq(&vars2[inp][varID][levelID], *pvars1);
+		  farsum(&vars1[inp][varID][levelID], *pvars1);
+		}
+	    }
+	  else if ( lrange )
+	    {
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(ndates,vars1,vars2,varID,levelID,pvars1)
+#endif
+	      for ( int inp = 0; inp < ndates-1; inp++ )
+		{
+		  farmin(&vars2[inp][varID][levelID], *pvars1);
+		  farmax(&vars1[inp][varID][levelID], *pvars1);
+		}
+	    }
+	  else
+	    {
+#if defined(_OPENMP)
+#pragma omp parallel for default(none) shared(ndates,vars1,varID,levelID,operfunc,pvars1)
+#endif
+	      for ( int inp = 0; inp < ndates-1; inp++ )
+		{
+		  farfun(&vars1[inp][varID][levelID], *pvars1, operfunc);
+		}
+	    }
+	}
+
+      tsID++;
+    }
+
+  for ( int its = 0; its < ndates; its++ )
+    {
+      field_free(vars1[its], vlistID1);
+      if ( !runstat_nomiss ) field_free(samp1[its], vlistID1);
+      if ( lvarstd || lrange ) field_free(vars2[its], vlistID1);
+    }
+
+  Free(vars1);
+  if ( !runstat_nomiss ) Free(samp1);
+  if ( lvarstd || lrange ) Free(vars2);
+
+  if ( imask ) Free(imask);
+
+  dtlist_delete(dtlist);
+
+  Free(recinfo);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Samplegrid.c b/src/Samplegrid.cc
similarity index 91%
rename from src/Samplegrid.c
rename to src/Samplegrid.cc
index 64e6eb1..2a758e9 100644
--- a/src/Samplegrid.c
+++ b/src/Samplegrid.cc
@@ -94,9 +94,9 @@ void *Samplegrid(void *argument)
   else
     cdoAbort("Unknown operator ...");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -153,9 +153,8 @@ void *Samplegrid(void *argument)
       if ( operatorID == SUBGRID    ) cdoPrint("Sub-grid has been created.");
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
@@ -168,18 +167,17 @@ void *Samplegrid(void *argument)
   if ( cdoDebugExt ) cdoPrint("gridsize = %ld, gridsize2 = %ld", gridsize, gridsize2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
-          streamReadRecord(streamID1, array1, &nmiss);
+          pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, array1, &nmiss);
 
-          streamDefRecord(streamID2, varID, levelID);
+          pstreamDefRecord(streamID2, varID, levelID);
 
           if ( cdoDebugExt>=20 ) cdoPrint("Processing record (%d) of %d.",recID, nrecs);
 
@@ -212,19 +210,19 @@ void *Samplegrid(void *argument)
                     if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
                 }
 
-              streamWriteRecord(streamID2, array2, nmiss);
+              pstreamWriteRecord(streamID2, array2, nmiss);
             }
           else
             {
-              streamWriteRecord(streamID2, array1, nmiss);
+              pstreamWriteRecord(streamID2, array1, nmiss);
             }
         }
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Samplegridicon.c b/src/Samplegridicon.cc
similarity index 87%
rename from src/Samplegridicon.c
rename to src/Samplegridicon.cc
index b64a0c7..bff7fb4 100644
--- a/src/Samplegridicon.c
+++ b/src/Samplegridicon.cc
@@ -2,6 +2,7 @@
 #include "cdo_int.h"
 #include "grid.h"
 
+constexpr int MAX_CHILDS = 9;
 
 typedef struct {
   int ncells;
@@ -74,7 +75,7 @@ cellindex_type *read_cellindex(const char *filename)
   // cellindex->neighbor = (int*) Malloc(3*ncells*sizeof(int));
   cellindex->parent   = (int*) Malloc(  ncells*sizeof(int));
   cellindex->child    = NULL;
-  // cellindex->child    = (cid != CDI_UNDEFID) ? (int*) Malloc(4*ncells*sizeof(int)) : NULL;
+  // cellindex->child    = (cid != CDI_UNDEFID) ? (int*) Malloc(MAX_CHILDS*ncells*sizeof(int)) : NULL;
   double *data = (double *) Malloc(ncells*sizeof(double));
 
   int nrecs = streamInqTimestep(streamID, 0);
@@ -191,6 +192,11 @@ void compute_child(cellindex_type *cellindex1, cellindex_type *cellindex2)
 {
   int ncells1 = cellindex1->ncells;
   int *parent1 = cellindex1->parent;
+  {
+    int i;
+    for ( i = 0; i < ncells1; ++i ) if ( parent1[i] >= 0 ) break;
+    if ( i == ncells1 ) cdoAbort("Missing parent index of %s!", cellindex1->filename);
+  }
   int *idx1 = (int*) Malloc(ncells1*sizeof(int));
   for ( int i = 0; i < ncells1; ++i ) idx1[i] = i;
   for ( int i = 1; i < ncells1; ++i )
@@ -214,18 +220,18 @@ void compute_child(cellindex_type *cellindex1, cellindex_type *cellindex2)
       }
 
   int ncells2 = cellindex2->ncells;
-  int *child2 = (int*) Malloc(4*ncells2*sizeof(int));
+  int *child2 = (int*) Malloc(MAX_CHILDS*ncells2*sizeof(int));
   cellindex2->child = child2;
   for ( int i = 0; i< ncells2; ++i )
     {
-      for ( int k = 0; k < 4; ++k ) child2[i*4+k] = -1;
+      for ( int k = 0; k < MAX_CHILDS; ++k ) child2[i*MAX_CHILDS+k] = -1;
       int j = find_index(i, ncells1, parent1);
       if ( j < 0 ) continue;
-      for ( int k = 0; k < 4; ++k )
+      for ( int k = 0; k < MAX_CHILDS; ++k )
         {
           if ( i != parent1[j+k] ) break;
-          //  child2[i*4+k] = j+k;
-          child2[i*4+k] = idx1[j+k];
+          //  child2[i*MAX_CHILDS+k] = j+k;
+          child2[i*MAX_CHILDS+k] = idx1[j+k];
         }
       // if ( i%10000 == 0 ) printf("%d %d %d %d %d %d\n", i, j, parent1[j], parent1[j+1], parent1[j+2], parent1[j+3]);      
     }
@@ -239,9 +245,9 @@ void compute_sum(int i, int *n, double *sum, double *sumq, int kci, cellindex_ty
   int ncells2 = cellindex[kci]->ncells;
   if ( i < 0 || i > ncells2 ) cdoAbort("Child grid cell index %d out of bounds %d!", i, ncells2);
 
-  for ( int k = 0; k < 4; ++k )
+  for ( int k = 0; k < MAX_CHILDS; ++k )
     {
-      int index = cellindex[kci]->child[i*4+k];
+      int index = cellindex[kci]->child[i*MAX_CHILDS+k];
       if ( index == -1 ) break;
       if ( kci == 1 )
         {
@@ -308,9 +314,9 @@ void *Samplegridicon(void *argument)
   
   int gridID2 = read_grid(operatorArgv()[nsamplegrids-1]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( cdoVerbose ) cdoPrint("Source gridsize = %d", gridsize);
@@ -340,11 +346,11 @@ void *Samplegridicon(void *argument)
       vlistChangeGridIndex(vlistID3, index, gridID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int gridsize2 = gridInqSize(gridID2);
   if ( cdoVerbose ) cdoPrint("Target gridsize = %d", gridsize2);
@@ -353,18 +359,18 @@ void *Samplegridicon(void *argument)
   double *array3 = (double *) Malloc(gridsize2*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
       taxisCopyTimestep(taxisID3, taxisID1);
-      streamDefTimestep(streamID2, tsID);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
           int nmiss;
-          streamInqRecord(streamID1, &varID, &levelID);
-          streamReadRecord(streamID1, array1, &nmiss);
+          pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, array1, &nmiss);
 
           double missval = vlistInqVarMissval(vlistID1, varID);
 
@@ -374,23 +380,23 @@ void *Samplegridicon(void *argument)
           for ( int i = 0; i < gridsize2; ++i )
             if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
 
-          streamDefRecord(streamID2, varID, levelID);
-          streamWriteRecord(streamID2, array2, nmiss);
+          pstreamDefRecord(streamID2, varID, levelID);
+          pstreamWriteRecord(streamID2, array2, nmiss);
 
           nmiss = 0;
           for ( int i = 0; i < gridsize2; ++i )
             if ( DBL_IS_EQUAL(array3[i], missval) ) nmiss++;
 
-          streamDefRecord(streamID3, varID, levelID);
-          streamWriteRecord(streamID3, array3, nmiss);
+          pstreamDefRecord(streamID3, varID, levelID);
+          pstreamWriteRecord(streamID3, array3, nmiss);
         }
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
   gridDestroy(gridID2);
diff --git a/src/Seascount.c b/src/Seascount.cc
similarity index 86%
rename from src/Seascount.c
rename to src/Seascount.cc
index 67757bc..1f69388 100644
--- a/src/Seascount.c
+++ b/src/Seascount.cc
@@ -44,18 +44,17 @@ void *Seascount(void *argument)
 
   int season_start = get_season_start();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nrecords = vlistNrecs(vlistID1);
 
@@ -77,7 +76,7 @@ void *Seascount(void *argument)
     {
       int nsets = 0;
       bool newseas = false;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
         {
           int vdate = taxisInqVdate(taxisID1);
           int vtime = taxisInqVtime(taxisID1);
@@ -102,7 +101,7 @@ void *Seascount(void *argument)
 
           for ( int recID = 0; recID < nrecs; recID++ )
             {
-              streamInqRecord(streamID1, &varID, &levelID);
+              pstreamInqRecord(streamID1, &varID, &levelID);
 
               if ( tsID == 0 )
                 {
@@ -120,7 +119,7 @@ void *Seascount(void *argument)
 		  vars1[varID][levelID].nmiss = gridsize;
                 }
 
-              streamReadRecord(streamID1, field.ptr, &nmiss);
+              pstreamReadRecord(streamID1, field.ptr, &nmiss);
               field.nmiss   = (size_t)nmiss;
               field.grid    = vars1[varID][levelID].grid;
               field.missval = vars1[varID][levelID].missval;
@@ -138,7 +137,7 @@ void *Seascount(void *argument)
 
       taxisDefVdate(taxisID2, vdate0);
       taxisDefVtime(taxisID2, vtime0);
-      streamDefTimestep(streamID2, otsID);
+      pstreamDefTimestep(streamID2, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
         {
@@ -147,8 +146,8 @@ void *Seascount(void *argument)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[varID][levelID].ptr, (int)vars1[varID][levelID].nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, vars1[varID][levelID].ptr, (int)vars1[varID][levelID].nmiss);
         }
 
       if ( nrecs == 0 ) break;
@@ -162,8 +161,8 @@ void *Seascount(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Seaspctl.c b/src/Seaspctl.cc
similarity index 82%
rename from src/Seaspctl.c
rename to src/Seaspctl.cc
index a63e75e..7e0d643 100644
--- a/src/Seaspctl.c
+++ b/src/Seaspctl.cc
@@ -52,13 +52,13 @@ void *Seaspctl(void *argument)
 
   season_start = get_season_start();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -72,9 +72,8 @@ void *Seaspctl(void *argument)
   int taxisID4 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -118,8 +117,8 @@ void *Seaspctl(void *argument)
   int otsID   = 0;
   while ( TRUE )
     {
-      nrecs = streamInqTimestep(streamID2, otsID);
-      if ( nrecs != streamInqTimestep(streamID3, otsID) )
+      nrecs = pstreamInqTimestep(streamID2, otsID);
+      if ( nrecs != pstreamInqTimestep(streamID3, otsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", otsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
       
       int vdate2 = taxisInqVdate(taxisID2);
@@ -131,15 +130,15 @@ void *Seaspctl(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, vars1[varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, vars1[varID][levelID].ptr, &nmiss);
           vars1[varID][levelID].nmiss = nmiss;
         }
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars1[varID][levelID].grid;
 	  field.missval = vars1[varID][levelID].missval;
@@ -149,7 +148,7 @@ void *Seaspctl(void *argument)
 
       int nsets   = 0;
       bool newseas = false;
-      while ( nrecs && (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( nrecs && (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 	{
 	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
 	  int vdate1 = dtlist_get_vdate(dtlist, nsets);
@@ -176,13 +175,13 @@ void *Seaspctl(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 	      if ( tsID == 0 )
 		{
 		  recVarID[recID]   = varID;
 		  recLevelID[recID] = levelID;
 		}
-	      streamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
+	      pstreamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
 	      vars1[varID][levelID].nmiss = nmiss;
 	      
 	      hsetAddVarLevelValues(hset, varID, levelID, &vars1[varID][levelID]);
@@ -204,7 +203,7 @@ void *Seaspctl(void *argument)
 	}
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID4, nsets);
-      streamDefTimestep(streamID4, otsID);
+      pstreamDefTimestep(streamID4, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
 	{
@@ -213,8 +212,8 @@ void *Seaspctl(void *argument)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID4, varID, levelID);
-	  streamWriteRecord(streamID4, vars1[varID][levelID].ptr, vars1[varID][levelID].nmiss);
+	  pstreamDefRecord(streamID4, varID, levelID);
+	  pstreamWriteRecord(streamID4, vars1[varID][levelID].ptr, vars1[varID][levelID].nmiss);
 	}
 
       if ( nrecs == 0 ) break;
@@ -239,10 +238,10 @@ void *Seaspctl(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Seasstat.c b/src/Seasstat.c
deleted file mode 100644
index bdd13a7..0000000
--- a/src/Seasstat.c
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Seasstat   seasmin         Seasonal minimum
-      Seasstat   seasmax         Seasonal maximum
-      Seasstat   seassum         Seasonal sum
-      Seasstat   seasmean        Seasonal mean
-      Seasstat   seasavg         Seasonal average
-      Seasstat   seasvar         Seasonal variance
-      Seasstat   seasvar1        Seasonal variance [Normalize by (n-1)]
-      Seasstat   seasstd         Seasonal standard deviation
-      Seasstat   seasstd1        Seasonal standard deviation [Normalize by (n-1)]
-*/
-
-
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "pstream.h"
-#include "util.h"
-
-
-void *Seasstat(void *argument)
-{
-  int timestat_date = TIMESTAT_MEAN;
-  int vdate0 = 0, vtime0 = 0;
-  int vdate1 = 0, vtime1 = 0;
-  int nrecs;
-  int varID, levelID;
-  int year, month, day, seas0 = 0;
-  int nmiss;
-  int nlevel;
-  int oldmon = 0;
-  int nseason = 0;
-  const char *seas_name[4];
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("seasmin",  func_min,  0, NULL);
-  cdoOperatorAdd("seasmax",  func_max,  0, NULL);
-  cdoOperatorAdd("seassum",  func_sum,  0, NULL);
-  cdoOperatorAdd("seasmean", func_mean, 0, NULL);
-  cdoOperatorAdd("seasavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("seasvar",  func_var,  0, NULL);
-  cdoOperatorAdd("seasvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("seasstd",  func_std,  0, NULL);
-  cdoOperatorAdd("seasstd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  int season_start = get_season_start();
-  get_season_name(seas_name);
-
-  int lmean   = operfunc == func_mean || operfunc == func_avg;
-  int lstd    = operfunc == func_std || operfunc == func_std1;
-  int lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor = operfunc == func_std1 || operfunc == func_var1;
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  if ( taxisInqType(taxisID2) == TAXIS_FORECAST ) taxisDefType(taxisID2, TAXIS_RELATIVE);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  dtlist_type *dtlist = dtlist_new();
-  dtlist_set_stat(dtlist, timestat_date);
-  dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
-
-  int gridsize = vlistGridsizeMax(vlistID1);
-
-  field_type field;
-  field_init(&field);
-  field.ptr = (double*) Malloc(gridsize*sizeof(double));
-
-  field_type **samp1 = field_malloc(vlistID1, FIELD_NONE);
-  field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
-  field_type **vars2 = NULL;
-  if ( lvarstd ) vars2 = field_malloc(vlistID1, FIELD_PTR);
-
-  int tsID    = 0;
-  int otsID   = 0;
-  while ( TRUE )
-    {
-      long nsets = 0;
-      bool newseas = false;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
-	{
-	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
-	  int vdate = dtlist_get_vdate(dtlist, nsets);
-	  int vtime = dtlist_get_vtime(dtlist, nsets);
-
-	  cdiDecodeDate(vdate, &year, &month, &day);
-
-	  int newmon = month;
-
-	  if ( season_start == START_DEC && newmon == 12 ) newmon = 0;
-
-          int seas = month_to_season(month);
-
-	  if ( nsets == 0 )
-	    {
-	      nseason++;
-	      vdate0 = vdate;
-	      vtime0 = vtime;
-	      seas0  = seas;
-	      oldmon = newmon;
-	    }
-
-	  if ( newmon < oldmon ) newseas = true;
-
-	  if ( (seas != seas0) || newseas ) break;
-
-	  oldmon = newmon;
-
-	  for ( int recID = 0; recID < nrecs; recID++ )
-	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
-
-	      if ( tsID == 0 )
-		{
-		  recVarID[recID]   = varID;
-		  recLevelID[recID] = levelID;
-		}
-
-	      gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-
-	      if ( nsets == 0 )
-		{
-		  streamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
-		  vars1[varID][levelID].nmiss = nmiss;
-
-		  if ( nmiss > 0 || samp1[varID][levelID].ptr )
-		    {
-		      if ( samp1[varID][levelID].ptr == NULL )
-			samp1[varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-
-		      for ( int i = 0; i < gridsize; i++ )
-			if ( DBL_IS_EQUAL(vars1[varID][levelID].ptr[i],
-					  vars1[varID][levelID].missval) )
-			  samp1[varID][levelID].ptr[i] = 0;
-			else
-			  samp1[varID][levelID].ptr[i] = 1;
-		    }
-		}
-	      else
-		{
-		  streamReadRecord(streamID1, field.ptr, &nmiss);
-                  field.nmiss   = (size_t)nmiss;
-		  field.grid    = vars1[varID][levelID].grid;
-		  field.missval = vars1[varID][levelID].missval;
-
-		  if ( field.nmiss > 0 || samp1[varID][levelID].ptr )
-		    {
-		      if ( samp1[varID][levelID].ptr == NULL )
-			{
-			  samp1[varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-			  for ( int i = 0; i < gridsize; i++ )
-			    samp1[varID][levelID].ptr[i] = nsets;
-			}
-
-		      for ( int i = 0; i < gridsize; i++ )
-			if ( !DBL_IS_EQUAL(field.ptr[i], vars1[varID][levelID].missval) )
-			  samp1[varID][levelID].ptr[i]++;
-		    }
-
-		  if ( lvarstd )
-		    {
-		      farsumq(&vars2[varID][levelID], field);
-		      farsum(&vars1[varID][levelID], field);
-		    }
-		  else
-		    {
-		      farfun(&vars1[varID][levelID], field, operfunc);
-		    }
-		}
-	    }
-
-	  if ( nsets == 0 && lvarstd )
-	    for ( varID = 0; varID < nvars; varID++ )
-	      {
-		if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-		nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-		for ( levelID = 0; levelID < nlevel; levelID++ )
-		  farmoq(&vars2[varID][levelID], vars1[varID][levelID]);
-	      }
-
-	  vdate1 = vdate;
-	  vtime1 = vtime;
-	  nsets++;
-	  tsID++;
-	}
-
-      if ( nrecs == 0 && nsets == 0 ) break;
-
-      if ( lmean )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( samp1[varID][levelID].ptr == NULL )
-		  farcdiv(&vars1[varID][levelID], (double)nsets);
-		else
-		  fardiv(&vars1[varID][levelID], samp1[varID][levelID]);
-	      }
-	  }
-      else if ( lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( samp1[varID][levelID].ptr == NULL )
-		  {
-		    if ( lstd )
-		      farcstd(&vars1[varID][levelID], vars2[varID][levelID], nsets, divisor);
-		    else
-		      farcvar(&vars1[varID][levelID], vars2[varID][levelID], nsets, divisor);
-		  }
-		else
-		  {
-		    if ( lstd )
-		      farstd(&vars1[varID][levelID], vars2[varID][levelID], samp1[varID][levelID], divisor);
-		    else
-		      farvar(&vars1[varID][levelID], vars2[varID][levelID], samp1[varID][levelID], divisor);
-		  }
-	      }
-	  }
-
-      if ( cdoVerbose )
-	{
-	  char vdatestr0[32], vtimestr0[32];
-	  char vdatestr1[32], vtimestr1[32];
-	  date2str(vdate0, vdatestr0, sizeof(vdatestr0));
-	  time2str(vtime0, vtimestr0, sizeof(vtimestr0));
-	  date2str(vdate1, vdatestr1, sizeof(vdatestr1));
-	  time2str(vtime1, vtimestr1, sizeof(vtimestr1));
-	  cdoPrint("season: %3d %3s  start: %s %s  end: %s %s ntimesteps: %d", 
-		   nseason, seas_name[seas0], vdatestr0, vtimestr0, vdatestr1, vtimestr1, nsets);
-	}
-
-      dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
-      streamDefTimestep(streamID2, otsID);
-
-      if ( nsets < 3 )
-	{
-	  char vdatestr[32];
-	  date2str(vdate0, vdatestr, sizeof(vdatestr));
-	  cdoWarning("Season %3d (%s) has only %d input time step%s!", 
-		     otsID+1, vdatestr, nsets, nsets == 1 ? "" : "s");
-	}
-
-      for ( int recID = 0; recID < nrecords; recID++ )
-	{
-	  varID   = recVarID[recID];
-	  levelID = recLevelID[recID];
-
-	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[varID][levelID].ptr, (int)vars1[varID][levelID].nmiss);
-	}
-
-      if ( nrecs == 0 ) break;
-      otsID++;
-    }
-
-
-  field_free(vars1, vlistID1);
-  field_free(samp1, vlistID1);
-  if ( lvarstd ) field_free(vars2, vlistID1);
-
-  if ( field.ptr ) Free(field.ptr);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-
-  dtlist_delete(dtlist);
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Seasstat.cc b/src/Seasstat.cc
new file mode 100644
index 0000000..c4589eb
--- /dev/null
+++ b/src/Seasstat.cc
@@ -0,0 +1,338 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Seasstat   seasrange       Seasonal range
+      Seasstat   seasmin         Seasonal minimum
+      Seasstat   seasmax         Seasonal maximum
+      Seasstat   seassum         Seasonal sum
+      Seasstat   seasmean        Seasonal mean
+      Seasstat   seasavg         Seasonal average
+      Seasstat   seasvar         Seasonal variance
+      Seasstat   seasvar1        Seasonal variance [Normalize by (n-1)]
+      Seasstat   seasstd         Seasonal standard deviation
+      Seasstat   seasstd1        Seasonal standard deviation [Normalize by (n-1)]
+*/
+
+
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "pstream.h"
+
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+void *Seasstat(void *argument)
+{
+  int timestat_date = TIMESTAT_MEAN;
+  int vdate0 = 0, vtime0 = 0;
+  int vdate1 = 0, vtime1 = 0;
+  int nrecs;
+  int varID, levelID;
+  int year, month, day, seas0 = 0;
+  int nmiss;
+  int oldmon = 0;
+  int nseason = 0;
+  const char *seas_name[4];
+
+  cdoInitialize(argument);
+
+  // clang-format off
+  cdoOperatorAdd("seasrange", func_range, 0, NULL);
+  cdoOperatorAdd("seasmin",   func_min,   0, NULL);
+  cdoOperatorAdd("seasmax",   func_max,   0, NULL);
+  cdoOperatorAdd("seassum",   func_sum,   0, NULL);
+  cdoOperatorAdd("seasmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("seasavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("seasvar",   func_var,   0, NULL);
+  cdoOperatorAdd("seasvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("seasstd",   func_std,   0, NULL);
+  cdoOperatorAdd("seasstd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
+
+  int season_start = get_season_start();
+  get_season_name(seas_name);
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  if ( taxisInqType(taxisID2) == TAXIS_FORECAST ) taxisDefType(taxisID2, TAXIS_RELATIVE);
+  vlistDefTaxis(vlistID2, taxisID2);
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  dtlist_type *dtlist = dtlist_new();
+  dtlist_set_stat(dtlist, timestat_date);
+  dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+
+  field_type field;
+  field_init(&field);
+  field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
+
+  field_type **samp1 = field_malloc(vlistID1, FIELD_NONE);
+  field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
+  field_type **vars2 = NULL;
+  if ( lvarstd || lrange ) vars2 = field_malloc(vlistID1, FIELD_PTR);
+
+  int tsID  = 0;
+  int otsID = 0;
+  while ( TRUE )
+    {
+      long nsets = 0;
+      bool newseas = false;
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
+	{
+	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
+	  int vdate = dtlist_get_vdate(dtlist, nsets);
+	  int vtime = dtlist_get_vtime(dtlist, nsets);
+
+	  cdiDecodeDate(vdate, &year, &month, &day);
+
+	  int newmon = month;
+
+	  if ( season_start == START_DEC && newmon == 12 ) newmon = 0;
+
+          int seas = month_to_season(month);
+
+	  if ( nsets == 0 )
+	    {
+	      nseason++;
+	      vdate0 = vdate;
+	      vtime0 = vtime;
+	      seas0  = seas;
+	      oldmon = newmon;
+	    }
+
+	  if ( newmon < oldmon ) newseas = true;
+
+	  if ( (seas != seas0) || newseas ) break;
+
+	  oldmon = newmon;
+
+	  for ( int recID = 0; recID < nrecs; recID++ )
+	    {
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+
+	      if ( tsID == 0 )
+		{
+                  recinfo[recID].varID   = varID;
+                  recinfo[recID].levelID = levelID;
+		}
+
+              field_type *psamp1 = &samp1[varID][levelID];
+              field_type *pvars1 = &vars1[varID][levelID];
+              field_type *pvars2 = vars2 ? &vars2[varID][levelID] : NULL;
+
+	      int gridsize = pvars1->size;
+
+	      if ( nsets == 0 )
+		{
+		  pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+		  pvars1->nmiss = (size_t)nmiss;
+                  if ( lrange )
+                    {
+                      pvars2->nmiss = pvars1->nmiss;
+		      for ( int i = 0; i < gridsize; i++ )
+                        pvars2->ptr[i] = pvars1->ptr[i];
+                    }
+
+		  if ( nmiss > 0 || psamp1->ptr )
+		    {
+		      if ( psamp1->ptr == NULL )
+			psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+
+		      for ( int i = 0; i < gridsize; i++ )
+                        psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
+		    }
+		}
+	      else
+		{
+		  pstreamReadRecord(streamID1, field.ptr, &nmiss);
+                  field.nmiss   = (size_t)nmiss;
+		  field.grid    = pvars1->grid;
+		  field.missval = pvars1->missval;
+
+		  if ( field.nmiss > 0 || psamp1->ptr )
+		    {
+		      if ( psamp1->ptr == NULL )
+			{
+			  psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+			  for ( int i = 0; i < gridsize; i++ )
+			    psamp1->ptr[i] = nsets;
+			}
+
+		      for ( int i = 0; i < gridsize; i++ )
+			if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+			  psamp1->ptr[i]++;
+		    }
+
+		  if ( lvarstd )
+		    {
+		      farsumq(pvars2, field);
+		      farsum(pvars1, field);
+		    }
+                  else if ( lrange )
+                    {
+                      farmin(pvars2, field);
+                      farmax(pvars1, field);
+                    }
+		  else
+		    {
+		      farfun(pvars1, field, operfunc);
+		    }
+		}
+	    }
+
+	  if ( nsets == 0 && lvarstd )
+            for ( int recID = 0; recID < maxrecs; recID++ )
+              {
+                int varID   = recinfo[recID].varID;
+                int levelID = recinfo[recID].levelID;
+                field_type *pvars1 = &vars1[varID][levelID];
+                field_type *pvars2 = &vars2[varID][levelID];
+
+		if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+                farmoq(pvars2, *pvars1);
+	      }
+
+	  vdate1 = vdate;
+	  vtime1 = vtime;
+	  nsets++;
+	  tsID++;
+	}
+
+      if ( nrecs == 0 && nsets == 0 ) break;
+
+      for ( int recID = 0; recID < maxrecs; recID++ )
+        {
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *psamp1 = &samp1[varID][levelID];
+          field_type *pvars1 = &vars1[varID][levelID];
+          field_type *pvars2 = vars2 ? &vars2[varID][levelID] : NULL;
+
+          if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+          if ( lmean )
+            {
+              if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+              else               farcdiv(pvars1, (double)nsets);
+            }
+          else if ( lvarstd )
+            {
+              if ( psamp1->ptr )
+                {
+                  if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                  else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                }
+              else
+                {
+                  if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                  else        farcvar(pvars1, *pvars2, nsets, divisor);
+                }
+            }
+          else if ( lrange )
+            {
+              farsub(pvars1, *pvars2);
+            }
+        }
+
+      if ( cdoVerbose )
+	{
+	  char vdatestr0[32], vtimestr0[32];
+	  char vdatestr1[32], vtimestr1[32];
+	  date2str(vdate0, vdatestr0, sizeof(vdatestr0));
+	  time2str(vtime0, vtimestr0, sizeof(vtimestr0));
+	  date2str(vdate1, vdatestr1, sizeof(vdatestr1));
+	  time2str(vtime1, vtimestr1, sizeof(vtimestr1));
+	  cdoPrint("season: %3d %3s  start: %s %s  end: %s %s ntimesteps: %d", 
+		   nseason, seas_name[seas0], vdatestr0, vtimestr0, vdatestr1, vtimestr1, nsets);
+	}
+
+      dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
+      pstreamDefTimestep(streamID2, otsID);
+
+      if ( nsets < 3 )
+	{
+	  char vdatestr[32];
+	  date2str(vdate0, vdatestr, sizeof(vdatestr));
+	  cdoWarning("Season %3d (%s) has only %d input time step%s!", 
+		     otsID+1, vdatestr, nsets, nsets == 1 ? "" : "s");
+	}
+
+      for ( int recID = 0; recID < maxrecs; recID++ )
+	{
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *pvars1 = &vars1[varID][levelID];
+
+	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
+	}
+
+      if ( nrecs == 0 ) break;
+      otsID++;
+    }
+
+
+  field_free(vars1, vlistID1);
+  field_free(samp1, vlistID1);
+  if ( lvarstd ) field_free(vars2, vlistID1);
+
+  dtlist_delete(dtlist);
+
+  Free(recinfo);
+
+  if ( field.ptr ) Free(field.ptr);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Selbox.c b/src/Selbox.cc
similarity index 97%
rename from src/Selbox.c
rename to src/Selbox.cc
index 818ecce..e8597f0 100644
--- a/src/Selbox.c
+++ b/src/Selbox.cc
@@ -857,16 +857,18 @@ void *Selbox(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SELLONLATBOX = cdoOperatorAdd("sellonlatbox", 0, 0, "western and eastern longitude and southern and northern latitude");
   int SELINDEXBOX  = cdoOperatorAdd("selindexbox",  0, 0, "index of first and last longitude and index of first and last latitude");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
   operatorInputArg(cdoOperatorEnter(operatorID));
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -944,9 +946,8 @@ void *Selbox(void *argument)
 
   if ( varID >= nvars ) cdoWarning("No variables selected!");
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
@@ -957,18 +958,17 @@ void *Selbox(void *argument)
   double *array2 = (double*) Malloc(gridsize2*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 
 	  if ( vars[varID] )
 	    {
@@ -998,18 +998,19 @@ void *Selbox(void *argument)
 		    if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
 		}
 
-	      streamWriteRecord(streamID2, array2, nmiss);
+	      pstreamWriteRecord(streamID2, array2, nmiss);
 	    }
 	  else
 	    {
-	      streamWriteRecord(streamID2, array1, nmiss);
+	      pstreamWriteRecord(streamID2, array1, nmiss);
 	    }
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Select.c b/src/Select.cc
similarity index 95%
rename from src/Select.c
rename to src/Select.cc
index 75fb560..0c4a55f 100644
--- a/src/Select.c
+++ b/src/Select.cc
@@ -49,8 +49,8 @@ void write_const_vars(int streamID2, int vlistID2, int nvars, double **vardata2)
                 if ( DBL_IS_EQUAL(pdata[i], missval) ) nmiss++;
 
               // if ( levelID2c == 0 ) printf("Write varID %d\n", varID2c);
-              streamDefRecord(streamID2, varID2c, levelID2c);
-              streamWriteRecord(streamID2, pdata, nmiss);
+              pstreamDefRecord(streamID2, varID2c, levelID2c);
+              pstreamWriteRecord(streamID2, pdata, nmiss);
             }
           Free(vardata2[varID2c]);
           vardata2[varID2c] = NULL;
@@ -186,9 +186,9 @@ void *Select(void *argument)
       if ( !cdoVerbose && nfiles > 1 ) progressStatus(0, 1, (indf+1.)/nfiles);
       if ( cdoVerbose ) cdoPrint("Process file: %s", cdoStreamName(indf)->args);
 
-      int streamID1 = streamOpenRead(cdoStreamName(indf));
+      int streamID1 = pstreamOpenRead(cdoStreamName(indf));
 
-      int vlistID1 = streamInqVlist(streamID1);
+      int vlistID1 = pstreamInqVlist(streamID1);
       int taxisID1 = vlistInqTaxis(vlistID1);
 
       bool lcopy_const = false;
@@ -428,7 +428,7 @@ void *Select(void *argument)
 	  //if ( cdoVerbose ) vlistPrint(vlistID0);
 
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID0);
+	  cdoVlistCopyFlag(vlistID2, vlistID0);
 
 	  //if ( cdoVerbose ) vlistPrint(vlistID2);
 
@@ -505,7 +505,7 @@ void *Select(void *argument)
 
       bool lstop = false;
       int tsID1 = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
 	{
           timestep++;
 	  bool copytimestep = true;
@@ -599,16 +599,16 @@ void *Select(void *argument)
                   bool lasttimestep = (nfiles == 1) && (ntsteps2 > 1) && (ntsteps2 == (tsID1+1));
                   if ( lasttimestep && tsID2 == 0 ) ntsteps2 = 1;
                   if ( ntsteps2 == 0 || ntsteps2 == 1 ) vlistDefNtsteps(vlistID2, ntsteps2);
-		  streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
-		  streamDefVlist(streamID2, vlistID2);
+		  streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+		  pstreamDefVlist(streamID2, vlistID2);
 		}
 
 	      taxisCopyTimestep(taxisID2, taxisID1);
-	      streamDefTimestep(streamID2, tsID2);
+	      pstreamDefTimestep(streamID2, tsID2);
               
 	      for ( int recID = 0; recID < nrecs; ++recID )
 		{
-		  streamInqRecord(streamID1, &varID, &levelID);
+		  pstreamInqRecord(streamID1, &varID, &levelID);
 		  if ( vlistInqFlag(vlistID0, varID, levelID) == TRUE )
 		    {
                       if ( lconstvars && tsID2 > 0 && tsID1 == 0 )
@@ -621,17 +621,17 @@ void *Select(void *argument)
                       if ( lcopy_const && tsID2 == 0 )
                         write_const_vars(streamID2, vlistID2, varID2, vardata2);
 
-                      streamDefRecord(streamID2, varID2, levelID2);
+                      pstreamDefRecord(streamID2, varID2, levelID2);
                       // if ( levelID2 == 0 ) printf("Write varID %d\n", varID2);
 		      if ( lcopy )
 			{
-			  streamCopyRecord(streamID2, streamID1);
+			  pstreamCopyRecord(streamID2, streamID1);
 			}
 		      else
 			{
                           int nmiss;
-			  streamReadRecord(streamID1, array, &nmiss);
-			  streamWriteRecord(streamID2, array, nmiss);
+			  pstreamReadRecord(streamID1, array, &nmiss);
+			  pstreamWriteRecord(streamID2, array, nmiss);
 			}
 		    }
 		}
@@ -645,7 +645,7 @@ void *Select(void *argument)
             {
 	      for ( int recID = 0; recID < nrecs; ++recID )
 		{
-		  streamInqRecord(streamID1, &varID, &levelID);
+		  pstreamInqRecord(streamID1, &varID, &levelID);
 		  if ( vlistInqFlag(vlistID0, varID, levelID) == TRUE )
 		    {
 		      int varID2 = vlistFindVar(vlistID2, varID);
@@ -659,7 +659,7 @@ void *Select(void *argument)
                               vardata2[varID2] = (double*) Malloc(gridsize*nlevel*sizeof(double));
                             }
                           int nmiss;
-                          streamReadRecord(streamID1, vardata2[varID2]+gridsize*levelID2, &nmiss);
+                          pstreamReadRecord(streamID1, vardata2[varID2]+gridsize*levelID2, &nmiss);
                         }
 		    }
 		}
@@ -668,7 +668,7 @@ void *Select(void *argument)
 	  tsID1++;
 	}
       
-      streamClose(streamID1);
+      pstreamClose(streamID1);
 
       if ( lstop ) break;
     }
@@ -689,7 +689,7 @@ void *Select(void *argument)
   SELLIST_CHECK_FLAG(season);
   SELLIST_CHECK_FLAG(date);
 
-  if ( streamID2 != CDI_UNDEFID ) streamClose(streamID2);
+  if ( streamID2 != CDI_UNDEFID ) pstreamClose(streamID2);
 
   vlistDestroy(vlistID0);
   vlistDestroy(vlistID2);
diff --git a/src/Selgridcell.c b/src/Selgridcell.cc
similarity index 75%
rename from src/Selgridcell.c
rename to src/Selgridcell.cc
index 94ff1f1..6873794 100644
--- a/src/Selgridcell.c
+++ b/src/Selgridcell.cc
@@ -65,11 +65,9 @@ void sel_index(double *array1, double *array2, int nind, int *indarr)
 void *Selgridcell(void *argument)
 {
   int nrecs;
-  int varID, levelID;
+  int varID;
   int gridID1 = -1, gridID2;
   int index, gridtype = -1;
-  int nmiss;
-  double missval;
   typedef struct {
     int gridID1, gridID2;
   } sindex_t;
@@ -77,17 +75,42 @@ void *Selgridcell(void *argument)
 
   cdoInitialize(argument);
 
-  int SELGRIDCELL = cdoOperatorAdd("selgridcell", 0, 0, "grid cell indices (1-N)");
+                    cdoOperatorAdd("selgridcell", 0, 0, "grid cell indices (1-N)");
   int DELGRIDCELL = cdoOperatorAdd("delgridcell", 0, 0, "grid cell indices (1-N)");
 
-  UNUSED(SELGRIDCELL);
-
   operatorInputArg(cdoOperatorEnter(0));
 
   int operatorID = cdoOperatorID();
 
-  int nind = args2int_lista(operatorArgc(), operatorArgv(), ilista);
-  int *indarr = (int*) lista_dataptr(ilista);
+  int nind;
+  int *indarr = NULL;
+  if ( operatorArgc() == 1 && fileExists(operatorArgv()[0]) )
+    {
+      bool *cdo_read_mask(const char *maskfile, int *n);
+      int n = 0;
+      bool *mask = cdo_read_mask(operatorArgv()[0], &n);
+      nind = 0;
+      for ( int i = 0; i < n; ++i ) if ( mask[i] ) nind++;
+      if ( nind == 0 ) cdoAbort("Mask is empty!");
+      else
+        {
+          indarr = (int*) Malloc(nind*sizeof(double));
+          nind = 0;
+          for ( int i = 0; i < n; ++i ) if ( mask[i] ) indarr[nind++] = i;
+        }
+      if ( mask ) Free(mask);
+    }
+ else
+    {
+      nind = args2int_lista(operatorArgc(), operatorArgv(), ilista);
+      indarr = (int*) lista_dataptr(ilista);
+
+      if ( cdoVerbose )
+        for ( int i = 0; i < nind; i++ )
+          cdoPrint("int %d = %d", i+1, indarr[i]);
+
+      for ( int i = 0; i < nind; i++ ) indarr[i] -= 1;
+    }
 
   int indmin = indarr[0];
   int indmax = indarr[0];
@@ -97,18 +120,11 @@ void *Selgridcell(void *argument)
       if ( indmin > indarr[i] ) indmin = indarr[i];
     }
 
-  if ( cdoVerbose )
-    for ( int i = 0; i < nind; i++ )
-      cdoPrint("int %d = %d", i+1, indarr[i]);
-
-  if ( indmin < 1 ) cdoAbort("Index < 1 not allowed!");
-
-  for ( int i = 0; i < nind; i++ ) indarr[i] -= 1;
-
+  if ( indmin < 0 ) cdoAbort("Index < 1 not allowed!");
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -136,6 +152,7 @@ void *Selgridcell(void *argument)
         if ( cellidx[i] == 1 ) cellidx[j++] = i;
       if ( j != ncells ) cdoAbort("Internal error; number of cells differ");
     }
+  if ( ncells == 0 ) cdoAbort("Mask is empty!");
 
   for ( index = 0; index < ngrids; index++ )
     {
@@ -144,7 +161,7 @@ void *Selgridcell(void *argument)
 
       int gridsize = gridInqSize(gridID1);
       if ( gridsize == 1 ) continue;
-      if ( indmax > gridsize )
+      if ( indmax >= gridsize )
         {
           cdoWarning("Max grid index is greater than grid size, skipped grid %d!", index+1);
           continue;
@@ -174,9 +191,8 @@ void *Selgridcell(void *argument)
   if ( varID >= nvars ) cdoAbort("No variables selected!");
 
   
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
@@ -187,18 +203,18 @@ void *Selgridcell(void *argument)
   double *array2 = (double*) Malloc(gridsize2*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+          int nmiss, varID, levelID;
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 
 	  if ( vars[varID] )
 	    {	      
@@ -216,23 +232,24 @@ void *Selgridcell(void *argument)
 	      if ( nmiss )
 		{
 		  nmiss = 0;
-		  missval = vlistInqVarMissval(vlistID2, varID);
+                  double missval = vlistInqVarMissval(vlistID2, varID);
 		  for ( int i = 0; i < gridsize2; i++ )
 		    if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
 		}
 
-	      streamWriteRecord(streamID2, array2, nmiss);
+	      pstreamWriteRecord(streamID2, array2, nmiss);
 	    }
 	  else
 	    {
-	      streamWriteRecord(streamID2, array1, nmiss);
+	      pstreamWriteRecord(streamID2, array1, nmiss);
 	    }
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Selmulti.c b/src/Selmulti.cc
similarity index 97%
rename from src/Selmulti.c
rename to src/Selmulti.cc
index 8695419..bf998e8 100644
--- a/src/Selmulti.c
+++ b/src/Selmulti.cc
@@ -174,9 +174,11 @@ void *Selmulti(void *argument)
 
   cdoInitialize(argument);
 
-  int SELMULTI       = cdoOperatorAdd("selmulti",       0, 0, "filename/string with selection specification ");
-  int DELMULTI       = cdoOperatorAdd("delmulti",       0, 0, "filename/string with selection specification ");
-  int CHANGEMULTI    = cdoOperatorAdd("changemulti",    0, 0, "filename/string with selection specification ");
+  // clang-format off
+  int SELMULTI    = cdoOperatorAdd("selmulti",    0, 0, "filename/string with selection specification ");
+  int DELMULTI    = cdoOperatorAdd("delmulti",    0, 0, "filename/string with selection specification ");
+  int CHANGEMULTI = cdoOperatorAdd("changemulti", 0, 0, "filename/string with selection specification ");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -208,9 +210,9 @@ void *Selmulti(void *argument)
     if (getNumberOfSelectionTuples()==0)
       cdoAbort("Error! You must provide at lease ONE selection tuple!\nNotations: 'CHANGE,  .. or (/;;|;;;)'\nCheck the file: %s",filenameOrString);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   vlistClearFlag(vlistID1);
   int nvars = vlistNvars(vlistID1);
@@ -326,7 +328,7 @@ void *Selmulti(void *argument)
   if ( cdoDebugExt ) cdoPrint(" Writing the selected fields ...");
 
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
 
   nvars = vlistNvars(vlistID2);
   for ( varID = 0; varID < nvars; ++varID )
@@ -339,23 +341,22 @@ void *Selmulti(void *argument)
 
   int nrecs = vlistNrecs(vlistID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double *) malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
           missval = vlistInqVarMissval(vlistID1, varID);
 
           if ( vlistInqFlag(vlistID1, varID, levelID) == TRUE )
@@ -413,21 +414,21 @@ void *Selmulti(void *argument)
                 cdoPrint(" Warning: Missing varID or levelID with (code %3i, ltype %3i, level %3i)   [varID(%d),levelID(%d)] .. #2[varID(%d),levelID(%d)]",code, ltype, (int)(level), varID,levelID, varID2, levelID2);
                 continue;
               }
-              streamDefRecord(streamID2, varID2, levelID2);
+              pstreamDefRecord(streamID2, varID2, levelID2);
 
               if ( lcopy )
                 {
                   if ( cdoDebugExt ) cdoPrint(" Copying record [%4d] with (code %3i, ltype %3i, level %3i)   [varID(%d),levelID(%d)]",recID, code, ltype, (int)(level), varID,levelID);
-                  streamCopyRecord(streamID2, streamID1);
+                  pstreamCopyRecord(streamID2, streamID1);
                 }
               else
                 {
-                  streamReadRecord(streamID1, array, &nmiss);
+                  pstreamReadRecord(streamID1, array, &nmiss);
 
                   if (!simpleMath)
                     {
                       if ( cdoDebugExt ) cdoPrint(" Writing record [%4d] with (code %3i, ltype %3i, level %3i)   [varID(%d),levelID(%d)]",recID, code, ltype, (int)(level), varID,levelID);
-                      streamWriteRecord(streamID2, array, nmiss);
+                      pstreamWriteRecord(streamID2, array, nmiss);
                     }
                   else  // 1:  simple array arithmetics ( *,+)
                     {
@@ -438,7 +439,7 @@ void *Selmulti(void *argument)
                             array[li] = scale*(array[li] - offset);
                             // If SCALE and/or OFFSET are defined, then the data values are scaled as SCALE*(VALUE-OFFSET).
                           }
-                      streamWriteRecord(streamID2, array, nmiss);
+                      pstreamWriteRecord(streamID2, array, nmiss);
                     }
                 } // end of else ( lcopy )
             } // end if ( vlistInqFlag(vlistID1, varID, levelID) == TRUE )
@@ -458,8 +459,8 @@ void *Selmulti(void *argument)
       tsID++;
     } // end while ( (nrecs
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Seloperator.c b/src/Seloperator.cc
similarity index 82%
rename from src/Seloperator.c
rename to src/Seloperator.cc
index 5d57239..24216b5 100644
--- a/src/Seloperator.c
+++ b/src/Seloperator.cc
@@ -45,9 +45,9 @@ void *Seloperator(void *argument)
   if ( operatorArgc() == 3 )
     slevel = parameter2double(operatorArgv()[2]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nvars = vlistNvars(vlistID1);
   for ( varID = 0; varID < nvars; varID++ )
@@ -89,15 +89,14 @@ void *Seloperator(void *argument)
     cdoWarning("Code %d, ltype %d, level %g not found!", scode, sltype, slevel);
 
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   if ( ! lcopy )
     {
@@ -106,30 +105,29 @@ void *Seloperator(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  if ( vlistInqFlag(vlistID1, varID, levelID) == TRUE )
 	    {
 	      varID2   = vlistFindVar(vlistID2, varID);
 	      levelID2 = vlistFindLevel(vlistID2, varID, levelID);
 
-	      streamDefRecord(streamID2, varID2, levelID2);
+	      pstreamDefRecord(streamID2, varID2, levelID2);
 	  
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	}
@@ -137,8 +135,8 @@ void *Seloperator(void *argument)
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Selrec.c b/src/Selrec.cc
similarity index 79%
rename from src/Selrec.c
rename to src/Selrec.cc
index 93ddd30..5eac316 100644
--- a/src/Selrec.c
+++ b/src/Selrec.cc
@@ -49,43 +49,41 @@ void *Selrec(void *argument)
 	cdoPrint("intarr entry: %d %d", i, intarr[i]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int filetype = streamInqFiletype(streamID1);
+  int filetype = pstreamInqFiletype(streamID1);
 
   if ( filetype == CDI_FILETYPE_NC || filetype == CDI_FILETYPE_NC2 || filetype == CDI_FILETYPE_NC4 || filetype == CDI_FILETYPE_NC4C )
     cdoAbort("This operator does not work on NetCDF data!");
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int recordID = 0;
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
      
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
 	  recordID++;
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  for ( int i = 0; i < nsel; i++ )
 	    {
 	      if ( recordID == intarr[i] )
 		{
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamCopyRecord(streamID2, streamID1);
 
 		  break;
 		}
@@ -95,8 +93,8 @@ void *Selrec(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   lista_destroy(ilista);
 
diff --git a/src/Seltime.c b/src/Seltime.cc
similarity index 94%
rename from src/Seltime.c
rename to src/Seltime.cc
index 33c7d67..aaf7a63 100644
--- a/src/Seltime.c
+++ b/src/Seltime.cc
@@ -194,6 +194,7 @@ void *Seltime(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int SELTIMESTEP = cdoOperatorAdd("seltimestep", func_step,     0, "timesteps");
   int SELDATE     = cdoOperatorAdd("seldate",     func_datetime, 0, "start date and end date (format YYYY-MM-DDThh:mm:ss)");
   int SELTIME     = cdoOperatorAdd("seltime",     func_time,     0, "times (format hh:mm:ss)");
@@ -203,6 +204,7 @@ void *Seltime(void *argument)
   int SELYEAR     = cdoOperatorAdd("selyear",     func_date,     0, "years");
   int SELSEASON   = cdoOperatorAdd("selseason",   func_date,     0, "seasons");
   int SELSMON     = cdoOperatorAdd("selsmon",     func_date,     0, "month[,nts1[,nts2]]");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -265,9 +267,9 @@ void *Seltime(void *argument)
       for ( i = 0; i < nsel; i++ ) selfound[i] = false;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   if ( nsel == 1 && operfunc == func_step )  vlistDefNtsteps(vlistID2,  1);
@@ -353,7 +355,7 @@ void *Seltime(void *argument)
 
   int tsID  = 0;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       int vtime = taxisInqVtime(taxisID1);
@@ -434,9 +436,8 @@ void *Seltime(void *argument)
 	{
 	  if ( tsID2 == 0 )
 	    {
-	      streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-	      streamDefVlist(streamID2, vlistID2);
+	      streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+	      pstreamDefVlist(streamID2, vlistID2);
 	    }
 
 	  if ( lnts1 && ncts == 0 )
@@ -452,7 +453,7 @@ void *Seltime(void *argument)
 		{
 		  taxisDefVdate(taxisID2, vdate_list[it]);
 		  taxisDefVtime(taxisID2, vtime_list[it]);
-		  streamDefTimestep(streamID2, tsID2++);
+		  pstreamDefTimestep(streamID2, tsID2++);
 		  
 		  for ( varID = 0; varID < nvars; varID++ )
 		    {
@@ -460,10 +461,10 @@ void *Seltime(void *argument)
 		      int nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
 		      for ( levelID = 0; levelID < nlevel; levelID++ )
 			{
-			  streamDefRecord(streamID2, varID, levelID);
+			  pstreamDefRecord(streamID2, varID, levelID);
 			  single = vars[it][varID][levelID].ptr;
 			  nmiss  = vars[it][varID][levelID].nmiss;
-			  streamWriteRecord(streamID2, single, nmiss);
+			  pstreamWriteRecord(streamID2, single, nmiss);
 			}
 		    }
 		}
@@ -479,8 +480,7 @@ void *Seltime(void *argument)
 	    }
 
 	  taxisCopyTimestep(taxisID2, taxisID1);
-
-	  streamDefTimestep(streamID2, tsID2++);
+	  pstreamDefTimestep(streamID2, tsID2++);
 
 	  if ( tsID > 0 && lconstout )
 	    {
@@ -493,10 +493,10 @@ void *Seltime(void *argument)
 		      int nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
 		      for ( levelID = 0; levelID < nlevel; levelID++ )
 			{
-			  streamDefRecord(streamID2, varID, levelID);
+			  pstreamDefRecord(streamID2, varID, levelID);
 			  single = vars[nts][varID][levelID].ptr;
 			  nmiss  = vars[nts][varID][levelID].nmiss;
-			  streamWriteRecord(streamID2, single, nmiss);
+			  pstreamWriteRecord(streamID2, single, nmiss);
 			}
 		    }
 		}
@@ -504,16 +504,16 @@ void *Seltime(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
 	    }
 	}
@@ -559,11 +559,11 @@ void *Seltime(void *argument)
 
 	      for ( int recID = 0; recID < nrecs; recID++ )
 		{
-		  streamInqRecord(streamID1, &varID, &levelID);
+		  pstreamInqRecord(streamID1, &varID, &levelID);
 		  if ( lnts1 || (vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT) )
 		    {
 		      single = vars[nts][varID][levelID].ptr;
-		      streamReadRecord(streamID1, single, &nmiss);
+		      pstreamReadRecord(streamID1, single, &nmiss);
 		      vars[nts][varID][levelID].nmiss = nmiss;
 		    }
 		}
@@ -573,8 +573,8 @@ void *Seltime(void *argument)
       tsID++;
     }
 
-  if ( streamID2 != -1 ) streamClose(streamID2);
-  streamClose(streamID1);
+  if ( streamID2 != -1 ) pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   if ( operatorID == SELSMON )
     if ( its2 < nts2 )
diff --git a/src/Selvar.c b/src/Selvar.cc
similarity index 94%
rename from src/Selvar.c
rename to src/Selvar.cc
index 6fb3d95..c5ddd0e 100644
--- a/src/Selvar.c
+++ b/src/Selvar.cc
@@ -67,6 +67,7 @@ void *Selvar(void *argument)
 # define TAKES_INTEGERS(id) (cdoOperatorF2(id) & 4)
 # define TAKES_FLOATS(id) (cdoOperatorF2(id) & 8)
 
+  // clang-format off
   int SELPARAM     = cdoOperatorAdd("selparam",     0, 2,   "parameters");
   int SELCODE      = cdoOperatorAdd("selcode",      0, 4,   "code numbers");
   int SELNAME      = cdoOperatorAdd("selname",      0, 2,   "variable names");
@@ -81,6 +82,7 @@ void *Selvar(void *argument)
   int DELCODE      = cdoOperatorAdd("delcode",      1, 1,   "code numbers");
   int DELNAME      = cdoOperatorAdd("delname",      1, 2|1, "variable names");
   int SELLTYPE     = cdoOperatorAdd("selltype",     0, 4,   "GRIB level types"); 
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -129,9 +131,9 @@ void *Selvar(void *argument)
   if ( nsel == 0 )
     cdoAbort("missing code argument!");
   */
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int nvars = vlistNvars(vlistID1);
   bool *vars = (bool*) Malloc(nvars*sizeof(bool));
 
@@ -285,7 +287,7 @@ void *Selvar(void *argument)
   if ( npar == 0 ) cdoAbort("No variables selected!");
 
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
 
   nvars = vlistNvars(vlistID2);
   for ( varID = 0; varID < nvars; ++varID )
@@ -298,9 +300,8 @@ void *Selvar(void *argument)
 
   int nrecs = vlistNrecs(vlistID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *array = NULL;
   if ( ! lcopy )
@@ -311,29 +312,28 @@ void *Selvar(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
      
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  if ( vlistInqFlag(vlistID1, varID, levelID) == TRUE )
 	    {
 	      varID2   = vlistFindVar(vlistID2, varID);
 	      levelID2 = vlistFindLevel(vlistID2, varID, levelID);
 
-	      streamDefRecord(streamID2, varID2, levelID2);
+	      pstreamDefRecord(streamID2, varID2, levelID2);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 		}
      	    }
 	}
@@ -341,8 +341,8 @@ void *Selvar(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   vlistDestroy(vlistID2);
 
diff --git a/src/Set.c b/src/Set.cc
similarity index 88%
rename from src/Set.c
rename to src/Set.cc
index f0be92a..80f2a31 100644
--- a/src/Set.c
+++ b/src/Set.cc
@@ -58,6 +58,7 @@ void *Set(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SETCODE    = cdoOperatorAdd("setcode",    0, 0, "code number");
   int SETPARAM   = cdoOperatorAdd("setparam",   0, 0, "parameter identifier (format: code[.tabnum] or num[.cat[.dis]])");
   int SETNAME    = cdoOperatorAdd("setname",    0, 0, "variable name");
@@ -65,6 +66,7 @@ void *Set(void *argument)
   int SETLEVEL   = cdoOperatorAdd("setlevel",   0, 0, "level");
   int SETLTYPE   = cdoOperatorAdd("setltype",   0, 0, "GRIB level type");
   int SETTABNUM  = cdoOperatorAdd("settabnum",  0, 0, "GRIB table number");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -94,9 +96,9 @@ void *Set(void *argument)
       newlevel = parameter2double(operatorArgv()[0]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
   /* vlistPrint(vlistID2);*/
 
@@ -161,34 +163,34 @@ void *Set(void *argument)
 	}
     }
 
-  /* vlistPrint(vlistID2);*/
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  // vlistPrint(vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID1);
+      pstreamDefTimestep(streamID2, tsID1);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
+
       tsID1++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
 
diff --git a/src/Setattribute.c b/src/Setattribute.cc
similarity index 92%
rename from src/Setattribute.c
rename to src/Setattribute.cc
index ea6ee90..1374d01 100644
--- a/src/Setattribute.c
+++ b/src/Setattribute.cc
@@ -213,9 +213,9 @@ void *Setattribute(void *argument)
         }
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   set_attributes(kvlist, vlistID2);
@@ -227,9 +227,8 @@ void *Setattribute(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *array = NULL;
   if ( ! lcopy )
@@ -240,34 +239,33 @@ void *Setattribute(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
           if ( lcopy )
             {
-              streamCopyRecord(streamID2, streamID1);
+              pstreamCopyRecord(streamID2, streamID1);
             }
           else
             {
               int nmiss;
-              streamReadRecord(streamID1, array, &nmiss);
-              streamWriteRecord(streamID2, array, nmiss);
+              pstreamReadRecord(streamID1, array, &nmiss);
+              pstreamWriteRecord(streamID2, array, nmiss);
             }
         }
 
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array ) Free(array);
 
diff --git a/src/Setbox.c b/src/Setbox.cc
similarity index 89%
rename from src/Setbox.c
rename to src/Setbox.cc
index edc9fd7..6e52692 100644
--- a/src/Setbox.c
+++ b/src/Setbox.cc
@@ -85,9 +85,9 @@ void *Setbox(void *argument)
 
   constant = parameter2double(operatorArgv()[0]);
 
-  streamID1 = streamOpenRead(cdoStreamName(0));
+  streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  vlistID1 = streamInqVlist(streamID1);
+  vlistID1 = pstreamInqVlist(streamID1);
 
   ngrids = vlistNgrids(vlistID1);
   ndiffgrids = 0;
@@ -134,26 +134,26 @@ void *Setbox(void *argument)
 	vars[varID] = FALSE;
     }
 
-  streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   gridsize = gridInqSize(gridID);
   array = (double*) Malloc(gridsize*sizeof(double));
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( vars[varID] )
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
 
 	      missval = vlistInqVarMissval(vlistID1, varID);
 	      setcbox(constant, array, gridID, lat1, lat2, lon11, lon12, lon21, lon22);
@@ -162,15 +162,16 @@ void *Setbox(void *argument)
 	      for ( i = 0; i < gridsize; i++ )
 		if ( DBL_IS_EQUAL(array[i], missval) ) nmiss++;
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 	    }
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( vars  ) Free(vars);
   if ( array ) Free(array);
diff --git a/src/Setgatt.c b/src/Setgatt.cc
similarity index 85%
rename from src/Setgatt.c
rename to src/Setgatt.cc
index fc21704..c04fbbe 100644
--- a/src/Setgatt.c
+++ b/src/Setgatt.cc
@@ -54,16 +54,16 @@ void *Setgatt(void *argument)
       attfile   = operatorArgv()[0];
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   if ( operatorID == SETGATT )
     {
@@ -108,32 +108,32 @@ void *Setgatt(void *argument)
       fclose(fp);
     }
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array ) Free(array);
 
diff --git a/src/Setgrid.c b/src/Setgrid.cc
similarity index 91%
rename from src/Setgrid.c
rename to src/Setgrid.cc
index 5fcf58f..5924b87 100644
--- a/src/Setgrid.c
+++ b/src/Setgrid.cc
@@ -54,6 +54,7 @@ void *Setgrid(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SETGRID       = cdoOperatorAdd("setgrid",       0, 0, "grid description file or name");
   int SETGRIDTYPE   = cdoOperatorAdd("setgridtype",   0, 0, "grid type");
   int SETGRIDAREA   = cdoOperatorAdd("setgridarea",   0, 0, "filename with area weights");
@@ -62,6 +63,7 @@ void *Setgrid(void *argument)
   int SETGRIDNUMBER = cdoOperatorAdd("setgridnumber", 0, 0, "grid number and optionally grid position");
   int SETGRIDURI    = cdoOperatorAdd("setgriduri",    0, 0, "reference URI of the horizontal grid");
   int USEGRIDNUMBER = cdoOperatorAdd("usegridnumber", 0, 0, "use existing grid identified by grid number");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -97,20 +99,20 @@ void *Setgrid(void *argument)
       char *areafile = operatorArgv()[0];
 
       argument_t *fileargument = file_argument_new(areafile);
-      int streamID = streamOpenRead(fileargument);
+      int streamID = pstreamOpenRead(fileargument);
       file_argument_free(fileargument);
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
 
-      nrecs = streamInqTimestep(streamID, 0);
-      streamInqRecord(streamID, &varID, &levelID);
+      nrecs = pstreamInqTimestep(streamID, 0);
+      pstreamInqRecord(streamID, &varID, &levelID);
 
       int gridID = vlistInqVarGrid(vlistID, varID);
       areasize = gridInqSize(gridID);
       areaweight = (double*) Malloc(areasize*sizeof(double));
   
-      streamReadRecord(streamID, areaweight, &nmiss);
-      streamClose(streamID);
+      pstreamReadRecord(streamID, areaweight, &nmiss);
+      pstreamClose(streamID);
 
       if ( cdoVerbose )
 	{
@@ -133,21 +135,21 @@ void *Setgrid(void *argument)
       operatorCheckArgc(1);
       char *maskfile = operatorArgv()[0];
       argument_t *fileargument = file_argument_new(maskfile);
-      int streamID = streamOpenRead(fileargument);
+      int streamID = pstreamOpenRead(fileargument);
       file_argument_free(fileargument);
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
 
-      nrecs = streamInqTimestep(streamID, 0);
-      streamInqRecord(streamID, &varID, &levelID);
+      nrecs = pstreamInqTimestep(streamID, 0);
+      pstreamInqRecord(streamID, &varID, &levelID);
 
       double missval  = vlistInqVarMissval(vlistID, varID);
       int gridID   = vlistInqVarGrid(vlistID, varID);
       masksize = gridInqSize(gridID);
       gridmask = (double*) Malloc(masksize*sizeof(double));
   
-      streamReadRecord(streamID, gridmask, &nmiss);
-      streamClose(streamID);
+      pstreamReadRecord(streamID, gridmask, &nmiss);
+      pstreamClose(streamID);
 
       for ( int i = 0; i < masksize; i++ )
 	if ( DBL_IS_EQUAL(gridmask[i], missval) ) gridmask[i] = 0;
@@ -175,9 +177,9 @@ void *Setgrid(void *argument)
       griduri = operatorArgv()[0];
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -367,9 +369,9 @@ void *Setgrid(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
   //vlistPrint(vlistID2);
 
   int gridsize = (lregular || lregularnn) ? vlistGridsizeMax(vlistID2) : vlistGridsizeMax(vlistID1);
@@ -378,18 +380,17 @@ void *Setgrid(void *argument)
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  int gridID1 = vlistInqVarGrid(vlistID1, varID);
 	  if ( lregular || lregularnn )
@@ -410,13 +411,14 @@ void *Setgrid(void *argument)
 		if ( grid2_vgpm[i] ) array[j++] = array[i];
 	    }
 
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( gridmask ) Free(gridmask);
   if ( areaweight ) Free(areaweight);
diff --git a/src/Sethalo.c b/src/Sethalo.cc
similarity index 96%
rename from src/Sethalo.c
rename to src/Sethalo.cc
index 74309f7..e8bd0a7 100644
--- a/src/Sethalo.c
+++ b/src/Sethalo.cc
@@ -451,14 +451,16 @@ void *Sethalo(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SETHALO = cdoOperatorAdd("sethalo", 0, 0, NULL);
                 cdoOperatorAdd("tpnhalo", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int ngrids = vlistNgrids(vlistID1);
   int ndiffgrids = 0;
@@ -518,9 +520,8 @@ void *Sethalo(void *argument)
 	vars[varID] = FALSE;
     }
 
- int  streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   gridsize = gridInqSize(gridID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
@@ -529,18 +530,18 @@ void *Sethalo(void *argument)
   double *array2 = (double*) Malloc(gridsize2*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( vars[varID] )
 	    {
-	      streamReadRecord(streamID1, array1, &nmiss);
+	      pstreamReadRecord(streamID1, array1, &nmiss);
 
 	      if ( operatorID == SETHALO )
 		halo(array1, gridID1, array2, lhalo, rhalo);
@@ -555,15 +556,16 @@ void *Sethalo(void *argument)
 		    if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
 		}
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array2, nmiss);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array2, nmiss);
 	    }
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( vars   ) Free(vars);
   if ( array2 ) Free(array2);
diff --git a/src/Setmiss.c b/src/Setmiss.cc
similarity index 89%
rename from src/Setmiss.c
rename to src/Setmiss.cc
index d14ac1e..fec30bb 100644
--- a/src/Setmiss.c
+++ b/src/Setmiss.cc
@@ -51,11 +51,13 @@ void *Setmiss(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SETMISSVAL = cdoOperatorAdd("setmissval", 0, 0, "missing value");
   int SETCTOMISS = cdoOperatorAdd("setctomiss", 0, 0, "constant");
   int SETMISSTOC = cdoOperatorAdd("setmisstoc", 0, 0, "constant");
   int SETRTOMISS = cdoOperatorAdd("setrtomiss", 0, 0, "range (min, max)");
   int SETVRANGE  = cdoOperatorAdd("setvrange",  0, 0, "range (min, max)");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -86,9 +88,9 @@ void *Setmiss(void *argument)
       rmax = parameter2double(operatorArgv()[1]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -127,24 +129,23 @@ void *Setmiss(void *argument)
 	cdiDefAttFlt(vlistID2, varID, "valid_range", CDI_DATATYPE_FLT64, 2, range);
     }
   */
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  missval = vlistInqVarMissval(vlistID1, varID);
@@ -211,15 +212,15 @@ void *Setmiss(void *argument)
 		if ( DBL_IS_EQUAL(array[i], missval) ) nmiss++;
 	    }
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
 
diff --git a/src/Setpartab.c b/src/Setpartab.cc
similarity index 89%
rename from src/Setpartab.c
rename to src/Setpartab.cc
index 6c6597b..d7b4d92 100644
--- a/src/Setpartab.c
+++ b/src/Setpartab.cc
@@ -30,7 +30,25 @@
 #include "convert_units.h"
 
 int stringToParam(const char *paramstr);
-void paramToStringLong(int param, char *paramstr, int maxlen);
+
+void paramToString(int param, char *paramstr, int maxlen)
+{
+  int len;
+
+  int dis, cat, num;
+  cdiDecodeParam(param, &num, &cat, &dis);
+
+  size_t umaxlen = maxlen >= 0 ? (unsigned)maxlen : 0U;
+  if ( dis == 255 && (cat == 255 || cat == 0 ) )
+    len = snprintf(paramstr, umaxlen, "%d", num);
+  else  if ( dis == 255 )
+    len = snprintf(paramstr, umaxlen, "%d.%d", num, cat);
+  else
+    len = snprintf(paramstr, umaxlen, "%d.%d.%d", num, cat, dis);
+
+  if ( len >= maxlen || len < 0)
+    fprintf(stderr, "Internal problem (%s): size of input string is too small!\n", __func__);
+}
 
 typedef enum {CODE_NUMBER, PARAMETER_ID, VARIABLE_NAME, STANDARD_NAME} pt_mode_t;
 
@@ -119,6 +137,7 @@ void apply_parameterlist(pt_mode_t ptmode, list_t *pmlist, int nvars, int vlistI
         }
 
       list_t *kvlist = NULL;
+      keyValues_t *kv;
       if ( ptmode == CODE_NUMBER )
         {
           codenum = vlistInqVarCode(vlistID2, varID);
@@ -129,27 +148,24 @@ void apply_parameterlist(pt_mode_t ptmode, list_t *pmlist, int nvars, int vlistI
               int tableID = vlistInqVarTable(vlistID2, varID);
               int tabnum  = tableInqNum(tableID);
               int levtype = zaxisInqLtype(vlistInqVarZaxis(vlistID2, varID));
-              int table = tabnum;
-              int ltype = levtype;
-              keyValues_t *kv = kvlist_search(kvlist, "table");
-              if ( kv && kv->nvalues == 1 ) table = parameter2int(kv->values[0]);
+              kv = kvlist_search(kvlist, "table");
+              int table = (kv && kv->nvalues == 1) ? parameter2int(kv->values[0]) : tabnum;
               kv = kvlist_search(kvlist, "ltype");
-              if ( kv && kv->nvalues == 1 ) ltype = parameter2int(kv->values[0]);
+              int ltype = (kv && kv->nvalues == 1) ? parameter2int(kv->values[0]) : levtype;
               if ( !(tabnum == table && levtype == ltype) ) kvlist = NULL;
             }
         }
       else if ( ptmode == PARAMETER_ID )
         {
           int param = vlistInqVarParam(vlistID2, varID);
-          paramToStringLong(param, paramstr, sizeof(paramstr));
+          paramToString(param, paramstr, sizeof(paramstr));
           snprintf(valstr, sizeof(valstr), "%s", paramstr);
           kvlist = pmlist_search_kvlist_ventry(pmlist, "param", valstr, nventry, ventry);
           if ( kvlist )
             {
               int levtype = zaxisInqLtype(vlistInqVarZaxis(vlistID2, varID));
-              int ltype = levtype;
-              keyValues_t *kv = kvlist_search(kvlist, "ltype");
-              if ( kv && kv->nvalues == 1 ) ltype = parameter2int(kv->values[0]);
+              kv = kvlist_search(kvlist, "ltype");
+              int ltype = (kv && kv->nvalues == 1) ? parameter2int(kv->values[0]) : levtype;
               if ( !(levtype == ltype) ) kvlist = NULL;
             }  
         }
@@ -166,7 +182,7 @@ void apply_parameterlist(pt_mode_t ptmode, list_t *pmlist, int nvars, int vlistI
 
           for ( listNode_t *kvnode = kvlist->head; kvnode; kvnode = kvnode->next )
             {
-              keyValues_t *kv = *(keyValues_t **)kvnode->data;
+              kv = *(keyValues_t **)kvnode->data;
               const char *key = kv->key;
               const char *value = (kv->nvalues > 0) ? kv->values[0] : NULL;
               bool lv1 = (kv->nvalues == 1);
@@ -354,11 +370,11 @@ void *Setpartab(void *argument)
 
   if ( cdoVerbose ) cdoPrint("Table format version %d", tableformat);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
-  /* vlistPrint(vlistID2);*/
+  // vlistPrint(vlistID2);
 
   int nvars = vlistNvars(vlistID2);
   var_t *vars = (var_t *) Malloc(nvars*sizeof(var_t));
@@ -382,15 +398,16 @@ void *Setpartab(void *argument)
           if ( pdis == 255 )
             {
               int code = pnum;
-              if ( tableInqParName(tableID, code, name) == 0 )
+              int ltype = zaxisInqLtype(vlistInqVarZaxis(vlistID2, varID));
+              name[0] = 0;
+              longname[0] = 0;
+              units[0] = 0;
+              tableInqEntry(tableID, code, ltype, name, longname, units);
+              if ( name[0] )
                 {
                   vlistDefVarName(vlistID2, varID, name);
-                  longname[0] = 0;
-                  tableInqParLongname(tableID, code, longname);
-                  vlistDefVarLongname(vlistID2, varID, longname);
-                  units[0] = 0;
-                  tableInqParUnits(tableID, code, units);
-                  vlistDefVarUnits(vlistID2, varID, units);
+                  if ( longname[0] ) vlistDefVarLongname(vlistID2, varID, longname);
+                  if ( units[0] )    vlistDefVarUnits(vlistID2, varID, units);
                 }
             }
           vlistDefVarTable(vlistID2, varID, tableID);
@@ -437,7 +454,7 @@ void *Setpartab(void *argument)
 	    }
 
 	  int vlistIDx = vlistCreate();
-	  vlistCopyFlag(vlistIDx, vlistID2);
+	  cdoVlistCopyFlag(vlistIDx, vlistID2);
 
 	  vlistDestroy(vlistID2);
 
@@ -458,27 +475,25 @@ void *Setpartab(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  /* vlistPrint(vlistID2);*/
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  // vlistPrint(vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   long gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double *) Malloc(gridsize*sizeof(double));
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID1);
+      pstreamDefTimestep(streamID2, tsID1);
 	       
       cmor_check_init(nvars, vars);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
           var_t *var = &vars[varID];
 	  int varID2 = varID;
@@ -495,9 +510,9 @@ void *Setpartab(void *argument)
 		}
 	    }
 
-	  streamDefRecord(streamID2,  varID2,  levelID2);
+	  pstreamDefRecord(streamID2,  varID2,  levelID2);
 
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  missval = vlistInqVarMissval(vlistID2, varID2);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID2));
@@ -540,7 +555,7 @@ void *Setpartab(void *argument)
 	    }
 #endif
 	  
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 
           cmor_check_prep(var, gridsize, missval, array);
 	}
@@ -550,8 +565,8 @@ void *Setpartab(void *argument)
       tsID1++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
 #if defined(HAVE_UDUNITS2)
   for ( int varID = 0; varID < nvars; varID++ )
diff --git a/src/Setrcaname.c b/src/Setrcaname.cc
similarity index 84%
rename from src/Setrcaname.c
rename to src/Setrcaname.cc
index c81a7ac..9be5e82 100644
--- a/src/Setrcaname.c
+++ b/src/Setrcaname.cc
@@ -42,9 +42,9 @@ void *Setrcaname(void *argument)
   operatorInputArg("file name with RCA names");
   rcsnames = operatorArgv();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars = vlistNvars(vlistID2);
@@ -108,9 +108,9 @@ void *Setrcaname(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   if ( ! lcopy )
     {
@@ -119,33 +119,32 @@ void *Setrcaname(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 
 	  if ( lcopy )
 	    {
-	      streamCopyRecord(streamID2, streamID1);
+	      pstreamCopyRecord(streamID2, streamID1);
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Settime.c b/src/Settime.cc
similarity index 87%
rename from src/Settime.c
rename to src/Settime.cc
index e0b5ea1..2940d06 100644
--- a/src/Settime.c
+++ b/src/Settime.cc
@@ -100,12 +100,10 @@ void shifttime(int calendar, int tunit, int ijulinc, int *pdate, int *ptime)
 }
 
 static
-void gen_bounds(int calendar, int tunit, int vdate, int vtime, int *vdateb, int *vtimeb)
+void gen_bounds(int calendar, int tunit, int incperiod, int vdate, int vtime, int *vdateb, int *vtimeb)
 {
   juldate_t juldate;
   int year, month, day;
-  //int hour, minute, second;
-  UNUSED(vtime);
   
   vdateb[0] = vdate;
   vdateb[1] = vdate;
@@ -132,6 +130,29 @@ void gen_bounds(int calendar, int tunit, int vdate, int vtime, int *vdateb, int
       juldate = juldate_add_seconds(86400, juldate);
       juldate_decode(calendar, juldate, &vdateb[1], &vtimeb[1]);
     }
+  else if ( tunit == TUNIT_HOUR || tunit == TUNIT_3HOURS || tunit == TUNIT_6HOURS || tunit == TUNIT_12HOURS )
+    {
+      if ( incperiod == 0 ) incperiod = 1;
+      if ( incperiod > 24 ) cdoAbort("Time period must be less equal 24!");
+      if      ( tunit == TUNIT_3HOURS  ) incperiod = 3;
+      else if ( tunit == TUNIT_6HOURS  ) incperiod = 6;
+      else if ( tunit == TUNIT_12HOURS ) incperiod = 12;
+
+      int hour, minute, second;
+      cdiDecodeTime(vtime, &hour, &minute, &second);
+      int h0 = (hour/incperiod) * incperiod;
+      vtimeb[0] = cdiEncodeTime(h0, 0, 0);
+      int h1 = h0 + incperiod;
+      if ( h1 >= 24 )
+        {
+          vdateb[1] = cdiEncodeDate(year, month, day+1);
+          juldate = juldate_encode(calendar, vdateb[0], vtimeb[0]);
+          juldate = juldate_add_seconds(incperiod*3600, juldate);
+          juldate_decode(calendar, juldate, &vdateb[1], &vtimeb[1]);
+        }
+      else
+        vtimeb[1] = cdiEncodeTime(h1, 0, 0);
+    }
 }
 
 
@@ -155,6 +176,7 @@ void *Settime(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SETYEAR     = cdoOperatorAdd("setyear",      0,  1, "year");
   int SETMON      = cdoOperatorAdd("setmon",       0,  1, "month");
   int SETDAY      = cdoOperatorAdd("setday",       0,  1, "day");
@@ -166,6 +188,7 @@ void *Settime(void *argument)
   int SETREFTIME  = cdoOperatorAdd("setreftime",   0, -2, "date,time<,units> (format YYYY-MM-DD,hh:mm:ss)");
   int SETCALENDAR = cdoOperatorAdd("setcalendar",  0,  1, "calendar (standard, proleptic_gregorian, 360_day, 365_day, 366_day)");
   int SHIFTTIME   = cdoOperatorAdd("shifttime",    0,  1, "shift value");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   // nargs = cdoOperatorF2(operatorID);
@@ -262,14 +285,17 @@ void *Settime(void *argument)
   else if ( operatorID == SETTUNITS || operatorID == SETTBOUNDS )
     {
       operatorCheckArgc(1);
-      int idum;
       const char *timeunits = operatorArgv()[0];
-      incperiod = 0;
-      get_tunits(timeunits, &incperiod, &idum, &tunit);
+      incperiod = (int)strtol(timeunits, NULL, 10);
+      if ( timeunits[0] == '-' || timeunits[0] == '+' ) timeunits++;
+      while ( isdigit((int) *timeunits) ) timeunits++;
+
+      get_tunits(timeunits, &incperiod, &incunit, &tunit);
 
       if ( operatorID == SETTBOUNDS &&
-           !(tunit == TUNIT_DAY || tunit == TUNIT_MONTH || tunit == TUNIT_YEAR) )
-        cdoAbort("Unsupported frequency %s! Use day, month or year.", timeunits);
+           !(tunit == TUNIT_HOUR || tunit == TUNIT_3HOURS || tunit == TUNIT_6HOURS || tunit == TUNIT_12HOURS ||
+             tunit == TUNIT_DAY || tunit == TUNIT_MONTH || tunit == TUNIT_YEAR) )
+        cdoAbort("Unsupported frequency %s! Use hour, 3hours, 6hours, day, month or year.", timeunits);
     }
   else if ( operatorID == SETCALENDAR )
     {
@@ -296,9 +322,9 @@ void *Settime(void *argument)
       newval = parameter2int(operatorArgv()[0]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -401,16 +427,15 @@ void *Settime(void *argument)
 
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       int vtime = taxisInqVtime(taxisID1);
@@ -448,7 +473,7 @@ void *Settime(void *argument)
 	}
       else if ( operatorID == SETTBOUNDS )
 	{
-          gen_bounds(calendar, tunit, vdate, vtime, vdateb, vtimeb);
+          gen_bounds(calendar, tunit, incperiod, vdate, vtime, vdateb, vtimeb);
           
           if ( CDO_CMOR_Mode )
             {
@@ -513,22 +538,22 @@ void *Settime(void *argument)
 	    }
 	}
 
-      streamDefTimestep(streamID2, tsID1);
+      pstreamDefTimestep(streamID2, tsID1);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
       
       tsID1++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array ) Free(array);
 
diff --git a/src/Setzaxis.c b/src/Setzaxis.cc
similarity index 88%
rename from src/Setzaxis.c
rename to src/Setzaxis.cc
index 08c1fa5..bc64f80 100644
--- a/src/Setzaxis.c
+++ b/src/Setzaxis.cc
@@ -64,8 +64,10 @@ void *Setzaxis(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SETZAXIS       = cdoOperatorAdd("setzaxis",        0, 0, "zaxis description file");
   int GENLEVELBOUNDS = cdoOperatorAdd("genlevelbounds",  0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -90,16 +92,16 @@ void *Setzaxis(void *argument)
         }
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   if ( operatorID == SETZAXIS )
     {
@@ -149,32 +151,32 @@ void *Setzaxis(void *argument)
 	}
     }
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array ) Free(array);
 
diff --git a/src/Shiftxy.c b/src/Shiftxy.cc
similarity index 92%
rename from src/Shiftxy.c
rename to src/Shiftxy.cc
index 21f54d2..91175a7 100644
--- a/src/Shiftxy.c
+++ b/src/Shiftxy.cc
@@ -183,9 +183,9 @@ void *Shiftxy(void *argument)
         }
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -236,26 +236,25 @@ void *Shiftxy(void *argument)
 
   if ( varID >= nvars ) cdoWarning("No variables selected!");
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 
 	  if ( vars[varID] )
 	    {	      
@@ -273,18 +272,18 @@ void *Shiftxy(void *argument)
               for ( int i = 0; i < gridsize; i++ )
                 if ( DBL_IS_EQUAL(array2[i], missval) ) nmiss++;
 
-	      streamWriteRecord(streamID2, array2, nmiss);
+	      pstreamWriteRecord(streamID2, array2, nmiss);
 	    }
 	  else
 	    {
-	      streamWriteRecord(streamID2, array1, nmiss);
+	      pstreamWriteRecord(streamID2, array1, nmiss);
 	    }
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Showinfo.c b/src/Showinfo.cc
similarity index 94%
rename from src/Showinfo.c
rename to src/Showinfo.cc
index 17e4814..5f60117 100644
--- a/src/Showinfo.c
+++ b/src/Showinfo.cc
@@ -41,13 +41,13 @@
 
 void *Showinfo(void *argument)
 {
-  int nrecs;
   int date0 = 0;
   int year, month, day;
   int month0 = 0, year0 = 0;
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SHOWYEAR      = cdoOperatorAdd("showyear",      0, 0, NULL);
   int SHOWMON       = cdoOperatorAdd("showmon",       0, 0, NULL);
   int SHOWDATE      = cdoOperatorAdd("showdate",      0, 0, NULL);
@@ -62,12 +62,13 @@ void *Showinfo(void *argument)
   int SHOWLTYPE     = cdoOperatorAdd("showltype",     0, 0, NULL);
   int SHOWFORMAT    = cdoOperatorAdd("showformat",    0, 0, NULL);
   int SHOWGRID      = cdoOperatorAdd("showgrid",      0, 0, NULL); 
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   int nvars   = vlistNvars(vlistID);
   int taxisID = vlistInqTaxis(vlistID);
@@ -77,7 +78,7 @@ void *Showinfo(void *argument)
     {
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 
@@ -97,7 +98,7 @@ void *Showinfo(void *argument)
     {
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 
@@ -118,7 +119,7 @@ void *Showinfo(void *argument)
       char vdatestr[32];
       int tsID  = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 	 
@@ -139,7 +140,7 @@ void *Showinfo(void *argument)
       char vtimestr[32];
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vtime = taxisInqVtime(taxisID);
 
@@ -155,7 +156,7 @@ void *Showinfo(void *argument)
       char vdatetimestr[64];
       int tsID = 0;
       if ( ntsteps != 0 )
-	while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+	while ( pstreamInqTimestep(streamID, tsID) )
 	  {
 	    int vdate = taxisInqVdate(taxisID);
 	    int vtime = taxisInqVtime(taxisID);
@@ -258,7 +259,7 @@ void *Showinfo(void *argument)
       printFiletype(streamID, vlistID);
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   cdoFinish();
 
diff --git a/src/Sinfo.c b/src/Sinfo.cc
similarity index 98%
rename from src/Sinfo.c
rename to src/Sinfo.cc
index 37c4fcf..cf43224 100644
--- a/src/Sinfo.c
+++ b/src/Sinfo.cc
@@ -86,6 +86,7 @@ void *Sinfo(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("sinfo",   func_generic, 0, NULL);
   cdoOperatorAdd("sinfop",  func_param,   0, NULL);
   cdoOperatorAdd("sinfon",  func_name,    0, NULL);
@@ -94,6 +95,7 @@ void *Sinfo(void *argument)
   cdoOperatorAdd("seinfop", func_param,   1, NULL);
   cdoOperatorAdd("seinfon", func_name,    1, NULL);
   cdoOperatorAdd("seinfoc", func_code,    1, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -102,9 +104,9 @@ void *Sinfo(void *argument)
 
   for ( int indf = 0; indf < cdoStreamCnt(); indf++ )
     {
-      int streamID = streamOpenRead(cdoStreamName(indf));
+      int streamID = pstreamOpenRead(cdoStreamName(indf));
 
-      int vlistID = streamInqVlist(streamID);
+      int vlistID = pstreamInqVlist(streamID);
 
       set_text_color(stdout, BRIGHT, BLACK);
       fprintf(stdout, "   File format");
@@ -332,7 +334,7 @@ void *Sinfo(void *argument)
 	  fprintf(stdout, "\n");
 	}
 
-      streamClose(streamID);
+      pstreamClose(streamID);
     }
 
   cdoFinish();
diff --git a/src/Smooth.c b/src/Smooth.cc
similarity index 95%
rename from src/Smooth.c
rename to src/Smooth.cc
index fdc7c25..f19a158 100644
--- a/src/Smooth.c
+++ b/src/Smooth.cc
@@ -403,9 +403,11 @@ void *Smooth(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SMOOTH  = cdoOperatorAdd("smooth",   0,   0, NULL);
   int SMOOTH9 = cdoOperatorAdd("smooth9",  0,   0, NULL);
- 
+  // clang-format on
+  
   int operatorID = cdoOperatorID();
 
   if ( operatorID == SMOOTH ) smooth_set_parameter(&xnsmooth, &spoint);
@@ -414,9 +416,9 @@ void *Smooth(void *argument)
 
   spoint.radius *= DEG2RAD;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -453,20 +455,19 @@ void *Smooth(void *argument)
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
  
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 	
 	  if ( varIDs[varID] )
 	    {	    
@@ -483,21 +484,21 @@ void *Smooth(void *argument)
                   memcpy(array1, array2, gridsize*sizeof(double));
                 }
           
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array2, nmiss);		
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array2, nmiss);		
 	    }     	   
 	  else 
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array1, nmiss);
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array1, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   Free(varIDs);
   if ( array2 ) Free(array2);
diff --git a/src/Sort.c b/src/Sort.cc
similarity index 92%
rename from src/Sort.c
rename to src/Sort.cc
index ff83ee3..89477bb 100644
--- a/src/Sort.c
+++ b/src/Sort.cc
@@ -127,9 +127,9 @@ void setNmiss(int varID, int levelID, int nvars, varinfo_t *varInfo, int nmiss)
 
 void paramToStringLong(int param, char *paramstr, int maxlen)
 {
-  int dis, cat, num;
   int len;
 
+  int dis, cat, num;
   cdiDecodeParam(param, &num, &cat, &dis);
 
   size_t umaxlen = maxlen >= 0 ? (unsigned)maxlen : 0U;
@@ -157,10 +157,12 @@ void *Sort(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int SORTCODE  = cdoOperatorAdd("sortcode",  0, 0, NULL);
   int SORTPARAM = cdoOperatorAdd("sortparam", 0, 0, NULL);
   int SORTNAME  = cdoOperatorAdd("sortname",  0, 0, NULL);
   int SORTLEVEL = cdoOperatorAdd("sortlevel", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -172,9 +174,9 @@ void *Sort(void *argument)
       if ( iarg < 0 ) cmpvarlev = cmpvarlevelrev;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -189,11 +191,10 @@ void *Sort(void *argument)
       ;
   */
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars   = vlistNvars(vlistID1);
+  int nvars = vlistNvars(vlistID1);
 
   varinfo_t *varInfo = (varinfo_t*) Malloc(nvars*sizeof(varinfo_t));
   for ( varID = 0; varID < nvars; ++varID )
@@ -213,15 +214,14 @@ void *Sort(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -239,7 +239,7 @@ void *Sort(void *argument)
 	  offset   = gridsize*levelID;
 	  single   = vardata[varID] + offset;
 
-	  streamReadRecord(streamID1, single, &nmiss);
+	  pstreamReadRecord(streamID1, single, &nmiss);
 
 	  setNmiss(varID, levelID, nvars, varInfo, nmiss);
 	  // varInfo[varID].levInfo[levelID].nmiss = nmiss;
@@ -296,8 +296,8 @@ void *Sort(void *argument)
 		  offset   = gridsize*levelID;
 		  single   = vardata[varID] + offset;
 
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, single, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, single, nmiss);
 		}
 	    }
 	}
@@ -305,8 +305,8 @@ void *Sort(void *argument)
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   for ( varID = 0; varID < nvars; varID++ ) Free(vardata[varID]);
   Free(vardata);
diff --git a/src/Sorttimestamp.c b/src/Sorttimestamp.cc
similarity index 87%
rename from src/Sorttimestamp.c
rename to src/Sorttimestamp.cc
index b18fb8e..50e4fc6 100644
--- a/src/Sorttimestamp.c
+++ b/src/Sorttimestamp.cc
@@ -73,9 +73,9 @@ void *Sorttimestamp(void *argument)
   int xtsID = 0;
   for ( int fileID = 0; fileID < nfiles; fileID++ )
     {
-      int streamID1 = streamOpenRead(cdoStreamName(fileID));
+      int streamID1 = pstreamOpenRead(cdoStreamName(fileID));
 
-      int vlistID1 = streamInqVlist(streamID1);
+      int vlistID1 = pstreamInqVlist(streamID1);
       int taxisID1 = vlistInqTaxis(vlistID1);
 
       if ( fileID == 0 )
@@ -96,7 +96,7 @@ void *Sorttimestamp(void *argument)
       nvars = vlistNvars(vlistID1);
 
       int tsID = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 	{
 	  if ( xtsID >= nalloc )
 	    {
@@ -113,11 +113,11 @@ void *Sorttimestamp(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 	      gridID   = vlistInqVarGrid(vlistID1, varID);
 	      gridsize = gridInqSize(gridID);
 	      vars[xtsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	      streamReadRecord(streamID1, vars[xtsID][varID][levelID].ptr, &nmiss);
+	      pstreamReadRecord(streamID1, vars[xtsID][varID][levelID].ptr, &nmiss);
 	      vars[xtsID][varID][levelID].nmiss = nmiss;
 	    }
 
@@ -125,7 +125,7 @@ void *Sorttimestamp(void *argument)
 	  xtsID++;
 	}
 
-      streamClose(streamID1);
+      pstreamClose(streamID1);
     }
 
   int nts = xtsID;
@@ -148,9 +148,8 @@ void *Sorttimestamp(void *argument)
 
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(nfiles), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID2 = 0;
   for ( tsID = 0; tsID < nts; tsID++ )
@@ -176,7 +175,7 @@ void *Sorttimestamp(void *argument)
 
       taxisDefVdate(taxisID2, vdate[xtsID]);
       taxisDefVtime(taxisID2, vtime[xtsID]);
-      streamDefTimestep(streamID2, tsID2++);
+      pstreamDefTimestep(streamID2, tsID2++);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -186,8 +185,8 @@ void *Sorttimestamp(void *argument)
 	      if ( vars[xtsID][varID][levelID].ptr )
 		{
 		  nmiss = vars[xtsID][varID][levelID].nmiss;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, vars[xtsID][varID][levelID].ptr, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, vars[xtsID][varID][levelID].ptr, nmiss);
 		}
 	    }
 	}
@@ -199,7 +198,7 @@ void *Sorttimestamp(void *argument)
   if ( vdate ) Free(vdate);
   if ( vtime ) Free(vtime);
 
-  streamClose(streamID2);
+  pstreamClose(streamID2);
 
   cdoFinish();
 
diff --git a/src/Specinfo.c b/src/Specinfo.cc
similarity index 100%
rename from src/Specinfo.c
rename to src/Specinfo.cc
diff --git a/src/Spectral.c b/src/Spectral.cc
similarity index 90%
rename from src/Spectral.c
rename to src/Spectral.cc
index e31ee2e..8d1cb23 100644
--- a/src/Spectral.c
+++ b/src/Spectral.cc
@@ -57,18 +57,20 @@ void *Spectral(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int GP2SP  = cdoOperatorAdd("gp2sp",  0, 0, NULL);
   int GP2SPL = cdoOperatorAdd("gp2spl", 0, 0, NULL);
   int SP2GP  = cdoOperatorAdd("sp2gp",  0, 0, NULL);
   int SP2GPL = cdoOperatorAdd("sp2gpl", 0, 0, NULL);
   int SP2SP  = cdoOperatorAdd("sp2sp",  0, 0, NULL);
   int SPCUT  = cdoOperatorAdd("spcut",  0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -231,9 +233,8 @@ void *Spectral(void *argument)
 
   if ( gridID1 != -1 ) vlistChangeGrid(vlistID2, gridID1, gridID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
@@ -245,19 +246,18 @@ void *Spectral(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( vars[varID] )
 	    {
-	      streamReadRecord(streamID1, array1, &nmiss);
+	      pstreamReadRecord(streamID1, array1, &nmiss);
 	      if ( nmiss ) cdoAbort("Missing values unsupported for spectral data!");
 
 	      gridID1 = vlistInqVarGrid(vlistID1, varID);
@@ -270,20 +270,20 @@ void *Spectral(void *argument)
 	      else if ( operatorID == SPCUT )
 		speccut(gridID1, array1, array2, waves);
 
-	      streamDefRecord(streamID2, varID, levelID);
-	      streamWriteRecord(streamID2, array2, nmiss);  
+	      pstreamDefRecord(streamID2, varID, levelID);
+	      pstreamWriteRecord(streamID2, array2, nmiss);  
 	    }   
 	  else
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array1, &nmiss);
-		  streamWriteRecord(streamID2, array1, nmiss);
+		  pstreamReadRecord(streamID1, array1, &nmiss);
+		  pstreamWriteRecord(streamID2, array1, nmiss);
 		}
 	    }    
 	}
@@ -291,8 +291,8 @@ void *Spectral(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array2 ) Free(array2);
   if ( array1 ) Free(array1);
diff --git a/src/Spectrum.c b/src/Spectrum.cc
similarity index 93%
rename from src/Spectrum.c
rename to src/Spectrum.cc
index c5a44f2..7103dff 100644
--- a/src/Spectrum.c
+++ b/src/Spectrum.cc
@@ -177,23 +177,22 @@ void *Spectrum(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisCreate(TAXIS_ABSOLUTE);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars = vlistNvars(vlistID1);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -210,11 +209,11 @@ void *Spectrum(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 
 	  if ( nmiss > 0 ) cdoAbort("Missing values are not allowed!");
@@ -328,7 +327,7 @@ void *Spectrum(void *argument)
     {
       taxisDefVdate(taxisID2, vdate[0]);
       taxisDefVtime(taxisID2, vtime[0]);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -338,8 +337,8 @@ void *Spectrum(void *argument)
 	      if ( vars2[tsID][varID][levelID].ptr )
 		{
 		  nmiss = vars2[tsID][varID][levelID].nmiss;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, vars2[tsID][varID][levelID].ptr, 0);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, vars2[tsID][varID][levelID].ptr, 0);
 		}
 	    }
 	}
@@ -352,8 +351,8 @@ void *Spectrum(void *argument)
   if ( vdate ) Free(vdate);
   if ( vtime ) Free(vtime);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Split.c b/src/Split.cc
similarity index 89%
rename from src/Split.c
rename to src/Split.cc
index 74e3f8a..de3bbaa 100644
--- a/src/Split.c
+++ b/src/Split.cc
@@ -66,6 +66,7 @@ void *Split(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int SPLITCODE   = cdoOperatorAdd("splitcode",   0, 0, NULL);
   int SPLITPARAM  = cdoOperatorAdd("splitparam",  0, 0, NULL);
   int SPLITNAME   = cdoOperatorAdd("splitname",   0, 0, NULL);
@@ -73,6 +74,7 @@ void *Split(void *argument)
   int SPLITGRID   = cdoOperatorAdd("splitgrid",   0, 0, NULL);
   int SPLITZAXIS  = cdoOperatorAdd("splitzaxis",  0, 0, NULL);
   int SPLITTABNUM = cdoOperatorAdd("splittabnum", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -85,9 +87,9 @@ void *Split(void *argument)
       else cdoAbort("Unknown parameter: >%s<", operatorArgv()[0]); 
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nvars  = vlistNvars(vlistID1);
 
@@ -99,7 +101,7 @@ void *Split(void *argument)
 
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
   
   if ( operatorID == SPLITCODE )
     {
@@ -141,7 +143,7 @@ void *Split(void *argument)
 	    }
 
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  if ( codes[index] > 9999 )
@@ -161,7 +163,7 @@ void *Split(void *argument)
 	    }
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -206,7 +208,7 @@ void *Split(void *argument)
 	    }
 
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  cdiParamToString(params[index], paramstr, sizeof(paramstr));
@@ -216,7 +218,7 @@ void *Split(void *argument)
 	  gen_filename(filename, swap_obase, cdoStreamName(1)->args, filesuffix);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -259,14 +261,14 @@ void *Split(void *argument)
 		}
 	    }
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  sprintf(filename+nchars, "%03d", tabnums[index]);
 	  gen_filename(filename, swap_obase, cdoStreamName(1)->args, filesuffix);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -290,7 +292,7 @@ void *Split(void *argument)
 	    }
 
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  filename[nchars] = '\0';
@@ -299,7 +301,7 @@ void *Split(void *argument)
 	  gen_filename(filename, swap_obase, cdoStreamName(1)->args, filesuffix);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -346,14 +348,14 @@ void *Split(void *argument)
 		}
 	    }
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  sprintf(filename+nchars, "%06g", levels[index]);
 	  gen_filename(filename, swap_obase, cdoStreamName(1)->args, filesuffix);
    
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -386,14 +388,14 @@ void *Split(void *argument)
 		}
 	    }
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  sprintf(filename+nchars, "%02d", vlistGridIndex(vlistID1, gridIDs[index])+1);
 	  gen_filename(filename, swap_obase, cdoStreamName(1)->args, filesuffix);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -424,14 +426,14 @@ void *Split(void *argument)
 		}
 	    }
 	  vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 	  vlistIDs[index] = vlistID2;
 
 	  sprintf(filename+nchars, "%02d", vlistZaxisIndex(vlistID1, zaxisIDs[index])+1);
 	  gen_filename(filename, swap_obase, cdoStreamName(1)->args, filesuffix);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamIDs[index] = streamOpenWrite(fileargument, cdoFiletype());
+	  streamIDs[index] = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 	}
     }
@@ -444,7 +446,7 @@ void *Split(void *argument)
     {
       if ( uuid_attribute ) cdo_def_tracking_id(vlistIDs[index], uuid_attribute);
 
-      streamDefVlist(streamIDs[index], vlistIDs[index]);
+      pstreamDefVlist(streamIDs[index], vlistIDs[index]);
     }
 
   double *array = NULL;
@@ -457,14 +459,14 @@ void *Split(void *argument)
 
   int nrecs;
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( int index = 0; index < nsplit; index++ )
-	streamDefTimestep(streamIDs[index], tsID);
+	pstreamDefTimestep(streamIDs[index], tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  int index    = vlistInqIndex(vlistID1, varID, levelID);
 	  vlistID2 = vlistIDs[index];
@@ -473,26 +475,26 @@ void *Split(void *argument)
 	  /*
 	    printf("%d %d %d %d %d %d\n", index, vlistID2, varID, levelID, varID2, levelID2);
 	  */
-	  streamDefRecord(streamIDs[index], varID2, levelID2);
+	  pstreamDefRecord(streamIDs[index], varID2, levelID2);
 	  if ( lcopy )
 	    {
-	      streamCopyRecord(streamIDs[index], streamID1);
+	      pstreamCopyRecord(streamIDs[index], streamID1);
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
-	      streamWriteRecord(streamIDs[index], array, nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
+	      pstreamWriteRecord(streamIDs[index], array, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
 
   for ( int index = 0; index < nsplit; index++ )
     {
-      streamClose(streamIDs[index]);
+      pstreamClose(streamIDs[index]);
       vlistDestroy(vlistIDs[index]);
     }
  
diff --git a/src/Splitrec.c b/src/Splitrec.cc
similarity index 76%
rename from src/Splitrec.c
rename to src/Splitrec.cc
index afafa70..9ff6a4b 100644
--- a/src/Splitrec.c
+++ b/src/Splitrec.cc
@@ -44,9 +44,9 @@ void *Splitrec(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   int nrecs  = vlistNrecs(vlistID1);
 
@@ -55,7 +55,7 @@ void *Splitrec(void *argument)
 
   refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   if ( ! lcopy )
     {
@@ -66,17 +66,17 @@ void *Splitrec(void *argument)
 
   int index = 0;
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  vlistClearFlag(vlistID1);
 	  vlistDefFlag(vlistID1, varID, levelID, TRUE);
 
 	  int vlistID2 = vlistCreate();
-	  vlistCopyFlag(vlistID2, vlistID1);
+	  cdoVlistCopyFlag(vlistID2, vlistID1);
 
 	  index++;
 	  sprintf(filename+nchars, "%06d", index);
@@ -86,34 +86,34 @@ void *Splitrec(void *argument)
 	  if ( cdoVerbose ) cdoPrint("create file %s", filename);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  int streamID2 = streamOpenWrite(fileargument, cdoFiletype());
+	  int streamID2 = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 
-	  streamDefVlist(streamID2, vlistID2);
+	  pstreamDefVlist(streamID2, vlistID2);
 
 	  int varID2   = vlistFindVar(vlistID2, varID);
 	  int levelID2 = vlistFindLevel(vlistID2, varID, levelID);
 
-	  streamDefTimestep(streamID2, 0);
-	  streamDefRecord(streamID2, varID2, levelID2);
+	  pstreamDefTimestep(streamID2, 0);
+	  pstreamDefRecord(streamID2, varID2, levelID2);
 	  if ( lcopy )
 	    {
-	      streamCopyRecord(streamID2, streamID1);
+	      pstreamCopyRecord(streamID2, streamID1);
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 	    }
 
-	  streamClose(streamID2);
+	  pstreamClose(streamID2);
 	  vlistDestroy(vlistID2);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
 
   if ( ! lcopy )
     if ( array ) Free(array);
diff --git a/src/Splitsel.c b/src/Splitsel.cc
similarity index 84%
rename from src/Splitsel.c
rename to src/Splitsel.cc
index 1426037..df7cedb 100644
--- a/src/Splitsel.c
+++ b/src/Splitsel.cc
@@ -71,9 +71,9 @@ void *Splitsel(void *argument)
 
   if ( cdoVerbose ) cdoPrint("nsets = %f, noffset = %f, nskip = %f", ndates, noffset, nskip);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -86,7 +86,7 @@ void *Splitsel(void *argument)
 
   refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   //  if ( ! lcopy )
     {
@@ -130,7 +130,7 @@ void *Splitsel(void *argument)
   /* offset */
   for ( tsID = 0; tsID < noffset; tsID++ )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 )
 	{
 	  cdoWarning("noffset is larger than number of timesteps!");
@@ -140,10 +140,10 @@ void *Splitsel(void *argument)
       if ( tsID == 0 && nconst )
 	for ( int recID = 0; recID < nrecs; recID++ )
 	  {
-	    streamInqRecord(streamID1, &varID, &levelID);
+	    pstreamInqRecord(streamID1, &varID, &levelID);
 	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT )
               {
-                streamReadRecord(streamID1, vars[varID][levelID].ptr, &nmiss);
+                pstreamReadRecord(streamID1, vars[varID][levelID].ptr, &nmiss);
                 vars[varID][levelID].nmiss = (size_t) nmiss;
               }
           }
@@ -156,20 +156,20 @@ void *Splitsel(void *argument)
 	  
       if ( cdoVerbose ) cdoPrint("create file %s", filename);
       argument_t *fileargument = file_argument_new(filename);
-      int streamID2 = streamOpenWrite(fileargument, cdoFiletype());
+      int streamID2 = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
-      streamDefVlist(streamID2, vlistID2);
+      pstreamDefVlist(streamID2, vlistID2);
 
       int tsID2 = 0;
 
       for ( ; nsets < (int)(ndates*(index+1)); nsets++ ) 
 	{
-	  nrecs = streamInqTimestep(streamID1, tsID);
+	  nrecs = pstreamInqTimestep(streamID1, tsID);
 	  if ( nrecs == 0 ) break;
 
 	  taxisCopyTimestep(taxisID2, taxisID1);
-	  streamDefTimestep(streamID2, tsID2);
+	  pstreamDefTimestep(streamID2, tsID2);
 
 	  if ( tsID > 0 && tsID2 == 0 && nconst )
 	    {
@@ -180,9 +180,9 @@ void *Splitsel(void *argument)
 		      nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
 		      for ( levelID = 0; levelID < nlevel; levelID++ )
 			{
-			  streamDefRecord(streamID2, varID, levelID);
+			  pstreamDefRecord(streamID2, varID, levelID);
 			  nmiss = vars[varID][levelID].nmiss;
-			  streamWriteRecord(streamID2, vars[varID][levelID].ptr, nmiss);
+			  pstreamWriteRecord(streamID2, vars[varID][levelID].ptr, nmiss);
 			}
 		    }
 		}
@@ -191,16 +191,16 @@ void *Splitsel(void *argument)
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
 	      
-	      streamInqRecord(streamID1, &varID, &levelID);
-	      streamDefRecord(streamID2,  varID,  levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+	      pstreamDefRecord(streamID2,  varID,  levelID);
 	      if ( lcopy && !(tsID == 0 && nconst) )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array, &nmiss);
-		  streamWriteRecord(streamID2, array, nmiss);
+		  pstreamReadRecord(streamID1, array, &nmiss);
+		  pstreamWriteRecord(streamID2, array, nmiss);
 
 		  if ( tsID == 0 && nconst )
 		    {
@@ -219,20 +219,20 @@ void *Splitsel(void *argument)
 	  tsID2++;	  
 	}
       
-      streamClose(streamID2);
+      pstreamClose(streamID2);
       if ( nrecs == 0 ) break;
 
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       for ( ; i2 < (int)(nskip*(index+1)); i2++ )
 	{
-	  nrecs = streamInqTimestep(streamID1, tsID);
+	  nrecs = pstreamInqTimestep(streamID1, tsID);
 	  if ( nrecs == 0 ) break;
 	  tsID++;
 	}
 
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       index++;
@@ -240,7 +240,7 @@ void *Splitsel(void *argument)
 
  LABEL_END:
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
  
   if ( array ) Free(array);
 
diff --git a/src/Splittime.c b/src/Splittime.cc
similarity index 88%
rename from src/Splittime.c
rename to src/Splittime.cc
index 39a5eb6..b2bcc80 100644
--- a/src/Splittime.c
+++ b/src/Splittime.cc
@@ -77,10 +77,12 @@ void *Splittime(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int SPLITHOUR = cdoOperatorAdd("splithour", func_time, 10000, NULL);
   int SPLITDAY  = cdoOperatorAdd("splitday",  func_date,     1, NULL);
   int SPLITMON  = cdoOperatorAdd("splitmon",  func_date,   100, NULL);
   int SPLITSEAS = cdoOperatorAdd("splitseas", func_date,   100, NULL);
+  // clang-format on
 
   UNUSED(SPLITDAY);
   UNUSED(SPLITHOUR);
@@ -100,9 +102,9 @@ void *Splittime(void *argument)
   for ( int i = 0; i < MAX_STREAMS; i++ ) streamIDs[i] = -1;
   for ( int i = 0; i < MAX_STREAMS; i++ ) tsIDs[i] = 0;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -114,7 +116,7 @@ void *Splittime(void *argument)
 
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   //  if ( ! lcopy )
     {
@@ -153,7 +155,7 @@ void *Splittime(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       int vtime = taxisInqVtime(taxisID1);
@@ -205,16 +207,16 @@ void *Splittime(void *argument)
 	  if ( cdoVerbose ) cdoPrint("create file %s", filename);
 
 	  argument_t *fileargument = file_argument_new(filename);
-	  streamID2 = streamOpenWrite(fileargument, cdoFiletype());
+	  streamID2 = pstreamOpenWrite(fileargument, cdoFiletype());
 	  file_argument_free(fileargument);
 
-	  streamDefVlist(streamID2, vlistID2);
+	  pstreamDefVlist(streamID2, vlistID2);
 
 	  streamIDs[index] = streamID2;
 	}
 
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsIDs[index]);
+      pstreamDefTimestep(streamID2, tsIDs[index]);
 
       if ( tsID > 0 && tsIDs[index] == 0 && nconst )
 	{
@@ -225,9 +227,9 @@ void *Splittime(void *argument)
 		  nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
 		  for ( levelID = 0; levelID < nlevel; levelID++ )
 		    {
-		      streamDefRecord(streamID2, varID, levelID);
+		      pstreamDefRecord(streamID2, varID, levelID);
 		      nmiss = vars[varID][levelID].nmiss;
-		      streamWriteRecord(streamID2, vars[varID][levelID].ptr, nmiss);
+		      pstreamWriteRecord(streamID2, vars[varID][levelID].ptr, nmiss);
 		    }
 		}
 	    }
@@ -235,17 +237,17 @@ void *Splittime(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 
 	  if ( lcopy && !(tsID == 0 && nconst) )
 	    {
-	      streamCopyRecord(streamID2, streamID1);
+	      pstreamCopyRecord(streamID2, streamID1);
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 
 	      if ( tsID == 0 && nconst )
 		{
@@ -264,7 +266,7 @@ void *Splittime(void *argument)
       tsID++;
     }
 
-  streamClose(streamID1);
+  pstreamClose(streamID1);
  
   if ( array ) Free(array);
 
@@ -289,7 +291,7 @@ void *Splittime(void *argument)
   for ( index = 0; index < MAX_STREAMS; index++ )
     {
       streamID2 = streamIDs[index];
-      if ( streamID2 >= 0 ) streamClose(streamID2);
+      if ( streamID2 >= 0 ) pstreamClose(streamID2);
     }
 
   vlistDestroy(vlistID2);
diff --git a/src/Splityear.c b/src/Splityear.cc
similarity index 84%
rename from src/Splityear.c
rename to src/Splityear.cc
index 73ca61c..7b7c710 100644
--- a/src/Splityear.c
+++ b/src/Splityear.cc
@@ -58,17 +58,19 @@ void *Splityear(void *argument)
   
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int SPLITYEAR    = cdoOperatorAdd("splityear",     0, 10000, NULL);
   int SPLITYEARMON = cdoOperatorAdd("splityearmon",  0,   100, NULL);
+  // clang-format on
   
   int operatorID = cdoOperatorID();
   int operintval = cdoOperatorF2(operatorID);
 
   memset(cyear, 0, MAX_YEARS*sizeof(int));
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -80,7 +82,7 @@ void *Splityear(void *argument)
 
   const char *refname = cdoStreamName(0)->argv[cdoStreamName(0)->argc-1];
   filesuffix[0] = 0;
-  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), streamInqFiletype(streamID1), vlistID1, refname);
+  cdoGenFileSuffix(filesuffix, sizeof(filesuffix), pstreamInqFiletype(streamID1), vlistID1, refname);
 
   // if ( ! lcopy )
     {
@@ -124,7 +126,7 @@ void *Splityear(void *argument)
   mon1  = -1;
   int tsID  = 0;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
       cdiDecodeDate(vdate, &year2, &mon2, &day);
@@ -146,7 +148,7 @@ void *Splityear(void *argument)
 
 	      year1 = year2;
 
-	      if ( streamID2 >= 0 ) streamClose(streamID2);
+	      if ( streamID2 >= 0 ) pstreamClose(streamID2);
 
 	      sprintf(filename+nchars, "%04d", year1);
 	      if ( ic > 0 ) sprintf(filename+strlen(filename), "_%d", ic+1);
@@ -156,10 +158,10 @@ void *Splityear(void *argument)
 	      if ( cdoVerbose ) cdoPrint("create file %s", filename);
 
 	      argument_t *fileargument = file_argument_new(filename);
-	      streamID2 = streamOpenWrite(fileargument, cdoFiletype());
+	      streamID2 = pstreamOpenWrite(fileargument, cdoFiletype());
 	      file_argument_free(fileargument);
 
-	      streamDefVlist(streamID2, vlistID2);
+	      pstreamDefVlist(streamID2, vlistID2);
 	    }
 	  mon1 = mon2;
 	}
@@ -173,7 +175,7 @@ void *Splityear(void *argument)
 
 	      index1 = index2;
 
-	      if ( streamID2 >= 0 ) streamClose(streamID2);
+	      if ( streamID2 >= 0 ) pstreamClose(streamID2);
 
 	      sprintf(filename+nchars, "%04d", index1);
 	      //if ( ic > 0 ) sprintf(filename+strlen(filename), "_%d", ic+1);
@@ -183,15 +185,15 @@ void *Splityear(void *argument)
 	      if ( cdoVerbose ) cdoPrint("create file %s", filename);
 
 	      argument_t *fileargument = file_argument_new(filename);
-	      streamID2 = streamOpenWrite(fileargument, cdoFiletype());
+	      streamID2 = pstreamOpenWrite(fileargument, cdoFiletype());
 	      file_argument_free(fileargument);
 
-	      streamDefVlist(streamID2, vlistID2);
+	      pstreamDefVlist(streamID2, vlistID2);
 	    }
 	}
       
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID2);
+      pstreamDefTimestep(streamID2, tsID2);
 
       if ( tsID > 0 && tsID2 == 0 && nconst )
 	{
@@ -202,9 +204,9 @@ void *Splityear(void *argument)
 		  nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
 		  for ( levelID = 0; levelID < nlevel; levelID++ )
 		    {
-		      streamDefRecord(streamID2, varID, levelID);
+		      pstreamDefRecord(streamID2, varID, levelID);
 		      nmiss = vars[varID][levelID].nmiss;
-		      streamWriteRecord(streamID2, vars[varID][levelID].ptr, nmiss);
+		      pstreamWriteRecord(streamID2, vars[varID][levelID].ptr, nmiss);
 		    }
 		}
 	    }
@@ -212,17 +214,17 @@ void *Splityear(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 
 	  if ( lcopy && !(tsID == 0 && nconst) )
 	    {
-	      streamCopyRecord(streamID2, streamID1);
+	      pstreamCopyRecord(streamID2, streamID1);
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 
 	      if ( tsID == 0 && nconst )
 		{
@@ -241,8 +243,8 @@ void *Splityear(void *argument)
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
  
   if ( array ) Free(array);
 
diff --git a/src/StringUtilities.c b/src/StringUtilities.cc
similarity index 100%
rename from src/StringUtilities.c
rename to src/StringUtilities.cc
diff --git a/src/Subtrend.c b/src/Subtrend.cc
similarity index 68%
rename from src/Subtrend.c
rename to src/Subtrend.cc
index 448f937..748af3a 100644
--- a/src/Subtrend.c
+++ b/src/Subtrend.cc
@@ -35,13 +35,13 @@ void *Subtrend(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_DIM);
@@ -51,9 +51,8 @@ void *Subtrend(void *argument)
   int taxisID4 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -68,35 +67,34 @@ void *Subtrend(void *argument)
 
 
   int tsID = 0;
-  int nrecs = streamInqTimestep(streamID2, tsID);
+  int nrecs = pstreamInqTimestep(streamID2, tsID);
 
   for ( int recID = 0; recID < nrecs; recID++ )
     {
-      streamInqRecord(streamID2, &varID, &levelID);
-      streamReadRecord(streamID2, vars2[varID][levelID].ptr, &nmiss);
+      pstreamInqRecord(streamID2, &varID, &levelID);
+      pstreamReadRecord(streamID2, vars2[varID][levelID].ptr, &nmiss);
     }
 
   tsID = 0;
-  nrecs = streamInqTimestep(streamID3, tsID);
+  nrecs = pstreamInqTimestep(streamID3, tsID);
 
   for ( int recID = 0; recID < nrecs; recID++ )
     {
-      streamInqRecord(streamID3, &varID, &levelID);
-      streamReadRecord(streamID3, vars3[varID][levelID].ptr, &nmiss);
+      pstreamInqRecord(streamID3, &varID, &levelID);
+      pstreamReadRecord(streamID3, vars3[varID][levelID].ptr, &nmiss);
     }
 
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID4, taxisID1);
-
-      streamDefTimestep(streamID4, tsID);
+      pstreamDefTimestep(streamID4, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
 
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
@@ -111,8 +109,8 @@ void *Subtrend(void *argument)
 	  for ( int i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(field4.ptr[i], missval) ) nmiss++;
 
-	  streamDefRecord(streamID4, varID, levelID);
-	  streamWriteRecord(streamID4, field4.ptr, nmiss);
+	  pstreamDefRecord(streamID4, varID, levelID);
+	  pstreamWriteRecord(streamID4, field4.ptr, nmiss);
 	}
 
       tsID++;
@@ -124,10 +122,10 @@ void *Subtrend(void *argument)
   if ( field1.ptr ) Free(field1.ptr);
   if ( field4.ptr ) Free(field4.ptr);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Tee.c b/src/Tee.cc
similarity index 59%
rename from src/Tee.c
rename to src/Tee.cc
index 6fcdf2a..a8e9258 100644
--- a/src/Tee.c
+++ b/src/Tee.cc
@@ -31,13 +31,13 @@ void *Tee(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
   int vlistID2 = vlistDuplicate(vlistID1);
   int vlistID3 = vlistDuplicate(vlistID1);
@@ -48,53 +48,52 @@ void *Tee(void *argument)
   vlistDefTaxis(vlistID2, taxisID2);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  streamDefVlist(streamID2, vlistID2);
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      streamDefTimestep(streamID2, tsID);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{ 
 	  if ( lcopy )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 
-	      streamDefRecord(streamID2,  varID,  levelID);
-	      streamCopyRecord(streamID2, streamID1);
+	      pstreamDefRecord(streamID2,  varID,  levelID);
+	      pstreamCopyRecord(streamID2, streamID1);
 
-	      streamDefRecord(streamID3,  varID,  levelID);
-	      streamCopyRecord(streamID3, streamID1);
+	      pstreamDefRecord(streamID3,  varID,  levelID);
+	      pstreamCopyRecord(streamID3, streamID1);
 	    }
 	  else
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
-	      streamReadRecord(streamID1, array, &nmiss);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+	      pstreamReadRecord(streamID1, array, &nmiss);
 
-	      streamDefRecord(streamID2,  varID,  levelID);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamDefRecord(streamID2,  varID,  levelID);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 
-	      streamDefRecord(streamID3,  varID,  levelID);
-	      streamWriteRecord(streamID3, array, nmiss);
+	      pstreamDefRecord(streamID3,  varID,  levelID);
+	      pstreamWriteRecord(streamID3, array, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
-
-  streamClose(streamID2);
-  streamClose(streamID3);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID3);
 
   if ( array ) Free(array);
 
diff --git a/src/Templates.c b/src/Templates.cc
similarity index 65%
rename from src/Templates.c
rename to src/Templates.cc
index a9db63c..632e60a 100644
--- a/src/Templates.c
+++ b/src/Templates.cc
@@ -31,18 +31,18 @@ void *Template1(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   double *array = NULL;
   if ( ! lcopy )
@@ -52,32 +52,32 @@ void *Template1(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
 	  if ( lcopy )
 	    {
-	      streamCopyRecord(streamID2, streamID1);
+	      pstreamCopyRecord(streamID2, streamID1);
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, array, &nmiss);
-	      streamWriteRecord(streamID2, array, nmiss);
+	      pstreamReadRecord(streamID1, array, &nmiss);
+	      pstreamWriteRecord(streamID2, array, nmiss);
 	    }
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
@@ -97,42 +97,42 @@ void *Template2(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Test.c b/src/Test.cc
similarity index 73%
rename from src/Test.c
rename to src/Test.cc
index bd3dddd..fdd4ddb 100644
--- a/src/Test.c
+++ b/src/Test.cc
@@ -30,11 +30,11 @@ void *Test(void *argument)
   cdoInitialize(argument);
 
   /*
-  streamID1 = streamOpenRead(cdoStreamName(0));
-  streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  streamID1 = pstreamOpenRead(cdoStreamName(0));
+  streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   */
   cdoFinish();
 
@@ -51,13 +51,13 @@ void *Test2(void *argument)
   cdoInitialize(argument);
 
   /*
-  streamID1 = streamOpenRead(cdoStreamName(0));
-  streamID2 = streamOpenRead(cdoStreamName(1));
-  streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  streamID1 = pstreamOpenRead(cdoStreamName(0));
+  streamID2 = pstreamOpenRead(cdoStreamName(1));
+  streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   */
   cdoFinish();
 
@@ -75,18 +75,18 @@ void *Testdata(void *argument)
 
   int tsID2 = 0;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int taxisID1 = vlistInqTaxis(vlistID1);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   int vlistID2 = vlistDuplicate(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array = (double*) Malloc(gridsize*sizeof(double));
@@ -98,18 +98,17 @@ void *Testdata(void *argument)
   FILE *fp = fopen("testdata", "w");
 
   int tsID1 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID1)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID1)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID2);
+      pstreamDefTimestep(streamID2, tsID2);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2,  varID,  levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
 	  
-	  streamReadRecord(streamID1, array, &nmiss);
+	  pstreamReadRecord(streamID1, array, &nmiss);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  for ( int i = 0; i < gridsize; ++i )
@@ -129,7 +128,7 @@ void *Testdata(void *argument)
 		     i, (unsigned int)cval[4*i+0], (unsigned int)cval[4*i+1], (unsigned int)cval[4*i+2], (unsigned int)cval[4*i+3], ival[i], fval[i]);
 	    }
 
-	  streamWriteRecord(streamID2, array, nmiss);
+	  pstreamWriteRecord(streamID2, array, nmiss);
 
 	  fwrite(cval, 4, gridsize, fp);
 	}
@@ -139,8 +138,8 @@ void *Testdata(void *argument)
     }
   
   fclose(fp);
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   if ( array ) Free(array);
 
diff --git a/src/Tests.c b/src/Tests.cc
similarity index 87%
rename from src/Tests.c
rename to src/Tests.cc
index 74ad842..64bdc7d 100644
--- a/src/Tests.c
+++ b/src/Tests.cc
@@ -32,11 +32,13 @@ void *Tests(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int NORMAL    = cdoOperatorAdd("normal",    0, 0, NULL);
   int STUDENTT  = cdoOperatorAdd("studentt",  0, 0, "degree of freedom");
   int CHISQUARE = cdoOperatorAdd("chisquare", 0, 0, "degree of freedom");
   int BETA      = cdoOperatorAdd("beta",      0, 0, "p and q");
   int FISHER    = cdoOperatorAdd("fisher",    0, 0, "degree of freedom of nominator and of denominator");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -76,34 +78,32 @@ void *Tests(void *argument)
 	cdoAbort("both degrees must be positive!");
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);	  
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);	  
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  missval = vlistInqVarMissval(vlistID1, varID);
@@ -148,15 +148,15 @@ void *Tests(void *argument)
 	      cdoAbort("Internal problem, operator not implemented!");
 	    }
 
-	  streamDefRecord(streamID2,  varID,  levelID);
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamDefRecord(streamID2,  varID,  levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID1);
-  streamClose(streamID2);
+  pstreamClose(streamID1);
+  pstreamClose(streamID2);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Timcount.c b/src/Timcount.cc
similarity index 85%
rename from src/Timcount.c
rename to src/Timcount.cc
index e7396f4..2feb50f 100644
--- a/src/Timcount.c
+++ b/src/Timcount.cc
@@ -43,19 +43,21 @@ void *Timcount(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("timcount",  0, 31, NULL);
   cdoOperatorAdd("yearcount", 0, 10, NULL);
   cdoOperatorAdd("moncount",  0,  8, NULL);
   cdoOperatorAdd("daycount",  0,  6, NULL);
   cdoOperatorAdd("hourcount", 0,  4, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
   int cmplen = DATE_LEN - cdoOperatorF2(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars = vlistNvars(vlistID1);
@@ -68,9 +70,8 @@ void *Timcount(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nrecords = vlistNrecs(vlistID1);
   int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
@@ -90,7 +91,7 @@ void *Timcount(void *argument)
   while ( TRUE )
     {
       int nsets = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 	{
 	  int vdate = taxisInqVdate(taxisID1);
 	  int vtime = taxisInqVtime(taxisID1);
@@ -102,7 +103,7 @@ void *Timcount(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 
 	      if ( tsID == 0 )
 		{
@@ -120,7 +121,7 @@ void *Timcount(void *argument)
 		  vars1[varID][levelID].nmiss = gridsize;
 		}
 
-              streamReadRecord(streamID1, field.ptr, &nmiss);
+              pstreamReadRecord(streamID1, field.ptr, &nmiss);
               field.nmiss   = (size_t)nmiss;
               field.grid    = vars1[varID][levelID].grid;
 	      field.missval = vars1[varID][levelID].missval;
@@ -138,7 +139,7 @@ void *Timcount(void *argument)
 
       taxisDefVdate(taxisID2, vdate0);
       taxisDefVtime(taxisID2, vtime0);
-      streamDefTimestep(streamID2, otsID);
+      pstreamDefTimestep(streamID2, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
 	{
@@ -147,8 +148,8 @@ void *Timcount(void *argument)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[varID][levelID].ptr,  (int)vars1[varID][levelID].nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, vars1[varID][levelID].ptr,  (int)vars1[varID][levelID].nmiss);
 	}
 
       if ( nrecs == 0 ) break;
@@ -162,8 +163,8 @@ void *Timcount(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Timcumsum.c b/src/Timcumsum.cc
similarity index 64%
rename from src/Timcumsum.c
rename to src/Timcumsum.cc
index d2d8ac9..a426da9 100644
--- a/src/Timcumsum.c
+++ b/src/Timcumsum.cc
@@ -36,18 +36,17 @@ void *Timcumsum(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
@@ -59,45 +58,44 @@ void *Timcumsum(void *argument)
   field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
 
   int tsID  = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
     
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
 
-          field_type *pvar1 = &vars1[varID][levelID];
+          field_type *pvars1 = &vars1[varID][levelID];
               
-          gridsize = gridInqSize(pvar1->grid);
+          gridsize = gridInqSize(pvars1->grid);
 
           if ( tsID == 0 )
             {
-              streamReadRecord(streamID1, pvar1->ptr, &nmiss);
-              // pvar1->nmiss = (size_t)nmiss;
+              pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+              // pvars1->nmiss = (size_t)nmiss;
               if ( nmiss )
                 for ( int i = 0; i < gridsize; ++i )
-                  if ( DBL_IS_EQUAL(pvar1->ptr[i], pvar1->missval) ) pvar1->ptr[i] = 0;
+                  if ( DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval) ) pvars1->ptr[i] = 0;
             }
           else
             {
-              streamReadRecord(streamID1, field.ptr, &nmiss);
+              pstreamReadRecord(streamID1, field.ptr, &nmiss);
               // field.nmiss   = (size_t)nmiss;
               field.size    = gridsize;
-              field.grid    = pvar1->grid;
-              field.missval = pvar1->missval;
+              field.grid    = pvars1->grid;
+              field.missval = pvars1->missval;
 
               if ( nmiss )
                 for ( int i = 0; i < gridsize; ++i )
-                  if ( DBL_IS_EQUAL(field.ptr[i], pvar1->missval) ) field.ptr[i] = 0;
+                  if ( DBL_IS_EQUAL(field.ptr[i], pvars1->missval) ) field.ptr[i] = 0;
 
-              farfun(pvar1, field, func_sum);
+              farfun(pvars1, field, func_sum);
             }
           
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, pvar1->ptr, (int)pvar1->nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
         }
 
       tsID++;
@@ -105,8 +103,8 @@ void *Timcumsum(void *argument)
 
   field_free(vars1, vlistID1);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field.ptr ) Free(field.ptr);
 
diff --git a/src/Timpctl.c b/src/Timpctl.cc
similarity index 81%
rename from src/Timpctl.c
rename to src/Timpctl.cc
index d5b5339..1099c24 100644
--- a/src/Timpctl.c
+++ b/src/Timpctl.cc
@@ -49,13 +49,13 @@ void timpctl(int operatorID)
 
   int cmplen = DATE_LEN - cdoOperatorF2(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
   
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -71,9 +71,8 @@ void timpctl(int operatorID)
   int taxisID4 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -106,8 +105,8 @@ void timpctl(int operatorID)
   int otsID   = 0;
   while ( TRUE )
     {      
-      nrecs = streamInqTimestep(streamID2, otsID);
-      if ( nrecs != streamInqTimestep(streamID3, otsID) )
+      nrecs = pstreamInqTimestep(streamID2, otsID);
+      if ( nrecs != pstreamInqTimestep(streamID3, otsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", otsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
 
       int vdate2 = taxisInqVdate(taxisID2);
@@ -119,15 +118,15 @@ void timpctl(int operatorID)
       
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, vars1[varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, vars1[varID][levelID].ptr, &nmiss);
           vars1[varID][levelID].nmiss = nmiss;
         }
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars1[varID][levelID].grid;
 	  field.missval = vars1[varID][levelID].missval;
@@ -136,7 +135,7 @@ void timpctl(int operatorID)
         }
           
       int nsets = 0;
-      while ( nrecs && (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( nrecs && (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 	{
 	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
 	  int vdate1 = dtlist_get_vdate(dtlist, nsets);
@@ -149,13 +148,13 @@ void timpctl(int operatorID)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 	      if ( tsID == 0 )
 		{
 		  recVarID[recID]   = varID;
 		  recLevelID[recID] = levelID;
 		}
-	      streamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
+	      pstreamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
               vars1[varID][levelID].nmiss = nmiss;
 
 	      hsetAddVarLevelValues(hset, varID, levelID, &vars1[varID][levelID]);
@@ -177,7 +176,7 @@ void timpctl(int operatorID)
 	}
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID4, nsets);
-      streamDefTimestep(streamID4, otsID);
+      pstreamDefTimestep(streamID4, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
 	{
@@ -186,8 +185,8 @@ void timpctl(int operatorID)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID4, varID, levelID);
-	  streamWriteRecord(streamID4, vars1[varID][levelID].ptr, vars1[varID][levelID].nmiss);
+	  pstreamDefRecord(streamID4, varID, levelID);
+	  pstreamWriteRecord(streamID4, vars1[varID][levelID].ptr, vars1[varID][levelID].nmiss);
 	}
 
       if ( nrecs == 0 ) break;
@@ -204,10 +203,10 @@ void timpctl(int operatorID)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 }
 
 void *Timpctl(void *argument)
@@ -216,11 +215,13 @@ void *Timpctl(void *argument)
   
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("timpctl",  func_pctl, 31, NULL);
   cdoOperatorAdd("yearpctl", func_pctl, 10, NULL);
   cdoOperatorAdd("monpctl",  func_pctl,  8, NULL);
   cdoOperatorAdd("daypctl",  func_pctl,  6, NULL);
   cdoOperatorAdd("hourpctl", func_pctl,  4, NULL);
+  // clang-format on
 
   operatorID = cdoOperatorID();
   
diff --git a/src/Timselpctl.c b/src/Timselpctl.cc
similarity index 81%
rename from src/Timselpctl.c
rename to src/Timselpctl.cc
index 7c8499e..dfbb9a3 100644
--- a/src/Timselpctl.c
+++ b/src/Timselpctl.cc
@@ -56,13 +56,13 @@ void *Timselpctl(void *argument)
 
   if ( cdoVerbose ) cdoPrint("nsets = %d, noffset = %d, nskip = %d", ndates, noffset, nskip);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -76,9 +76,8 @@ void *Timselpctl(void *argument)
   int taxisID4 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -109,12 +108,12 @@ void *Timselpctl(void *argument)
 
   for ( tsID = 0; tsID < noffset; tsID++ )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -133,8 +132,8 @@ void *Timselpctl(void *argument)
 
   while ( TRUE )
     {
-      nrecs = streamInqTimestep(streamID2, otsID);
-      if ( nrecs != streamInqTimestep(streamID3, otsID) )
+      nrecs = pstreamInqTimestep(streamID2, otsID);
+      if ( nrecs != pstreamInqTimestep(streamID3, otsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", otsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
 
       int vdate2 = taxisInqVdate(taxisID2);
@@ -146,15 +145,15 @@ void *Timselpctl(void *argument)
       
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-          streamReadRecord(streamID2, vars1[varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+          pstreamReadRecord(streamID2, vars1[varID][levelID].ptr, &nmiss);
           vars1[varID][levelID].nmiss = nmiss;
         }
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-          streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+          pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars1[varID][levelID].grid;
           field.missval = vars1[varID][levelID].missval;
@@ -166,14 +165,14 @@ void *Timselpctl(void *argument)
       if ( nrecs )
 	for ( nsets = 0; nsets < ndates; nsets++ )
 	  {
-	    nrecs = streamInqTimestep(streamID1, tsID);
+	    nrecs = pstreamInqTimestep(streamID1, tsID);
 	    if ( nrecs == 0 ) break;
 
 	    dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
 
 	    for ( int recID = 0; recID < nrecs; recID++ )
 	      {
-		streamInqRecord(streamID1, &varID, &levelID);
+		pstreamInqRecord(streamID1, &varID, &levelID);
 
 		if ( tsID == 0 )
 		  {
@@ -181,7 +180,7 @@ void *Timselpctl(void *argument)
 		    recLevelID[recID] = levelID;
 		  }
 
-		streamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
+		pstreamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
 		vars1[varID][levelID].nmiss = nmiss;
                   
 		hsetAddVarLevelValues(hset, varID, levelID, &vars1[varID][levelID]);
@@ -202,7 +201,7 @@ void *Timselpctl(void *argument)
         }
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID4, nsets);
-      streamDefTimestep(streamID4, otsID);
+      pstreamDefTimestep(streamID4, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
 	{
@@ -211,8 +210,8 @@ void *Timselpctl(void *argument)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID4, varID, levelID);
-	  streamWriteRecord(streamID4, vars1[varID][levelID].ptr,  vars1[varID][levelID].nmiss);
+	  pstreamDefRecord(streamID4, varID, levelID);
+	  pstreamWriteRecord(streamID4, vars1[varID][levelID].ptr,  vars1[varID][levelID].nmiss);
 	}
 
       if ( nrecs == 0 ) break;
@@ -220,7 +219,7 @@ void *Timselpctl(void *argument)
 
       for ( int i = 0; i < nskip; i++ )
 	{
-	  nrecs = streamInqTimestep(streamID1, tsID);
+	  nrecs = pstreamInqTimestep(streamID1, tsID);
 	  if ( nrecs == 0 ) break;
 	  tsID++;
 	}
@@ -240,10 +239,10 @@ void *Timselpctl(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Timselstat.c b/src/Timselstat.c
deleted file mode 100644
index 7e7b967..0000000
--- a/src/Timselstat.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Timselstat    timselmin          Time range minimum
-      Timselstat    timselmax          Time range maximum
-      Timselstat    timselsum          Time range sum
-      Timselstat    timselmean         Time range mean
-      Timselstat    timselavg          Time range average
-      Timselstat    timselvar          Time range variance
-      Timselstat    timselvar1         Time range variance [Normalize by (n-1)]
-      Timselstat    timselstd          Time range standard deviation
-      Timselstat    timselstd1         Time range standard deviation [Normalize by (n-1)]
-*/
-
-
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "pstream.h"
-
-
-void *Timselstat(void *argument)
-{
-  int timestat_date = TIMESTAT_MEAN;
-  int nrecs = 0;
-  int varID, levelID;
-  int tsID;
-  int nsets;
-  int nmiss;
-  int nlevel;
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("timselmin",  func_min,  0, NULL);
-  cdoOperatorAdd("timselmax",  func_max,  0, NULL);
-  cdoOperatorAdd("timselsum",  func_sum,  0, NULL);
-  cdoOperatorAdd("timselmean", func_mean, 0, NULL);
-  cdoOperatorAdd("timselavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("timselvar",  func_var,  0, NULL);
-  cdoOperatorAdd("timselvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("timselstd",  func_std,  0, NULL);
-  cdoOperatorAdd("timselstd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  operatorInputArg("nsets <noffset <nskip>>");
-
-  int nargc  = operatorArgc();
-  int ndates = parameter2int(operatorArgv()[0]);
-  int noffset = 0, nskip = 0;
-  if ( nargc > 1 ) noffset = parameter2int(operatorArgv()[1]);
-  if ( nargc > 2 ) nskip   = parameter2int(operatorArgv()[2]);
-
-  if ( cdoVerbose ) cdoPrint("nsets = %d, noffset = %d, nskip = %d", ndates, noffset, nskip);
-
-  int lmean   = operfunc == func_mean || operfunc == func_avg;
-  int lstd    = operfunc == func_std || operfunc == func_std1;
-  int lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor = operfunc == func_std1 || operfunc == func_var1;
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  dtlist_type *dtlist = dtlist_new();
-  dtlist_set_stat(dtlist, timestat_date);
-  dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
-
-  int gridsize = vlistGridsizeMax(vlistID1);
-
-  field_type field;
-  field_init(&field);
-  field.ptr = (double*) Malloc(gridsize*sizeof(double));
-
-  field_type **samp1 = field_malloc(vlistID1, FIELD_NONE);
-  field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
-  field_type **vars2 = NULL;
-  if ( lvarstd ) vars2 = field_malloc(vlistID1, FIELD_PTR);
-
-  for ( tsID = 0; tsID < noffset; tsID++ )
-    {
-      nrecs = streamInqTimestep(streamID1, tsID);
-      if ( nrecs == 0 ) break;
-
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-
-	  if ( tsID == 0 )
-	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
-	    }
-	}
-    }
-
-  int otsID   = 0;
-  if ( tsID < noffset )
-    {
-      cdoWarning("noffset is larger than number of timesteps!");
-      goto LABEL_END;
-    }
-
-  while ( TRUE )
-    {
-      for ( nsets = 0; nsets < ndates; nsets++ )
-	{
-	  nrecs = streamInqTimestep(streamID1, tsID);
-	  if ( nrecs == 0 ) break;
-
-	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
-
-	  for ( int recID = 0; recID < nrecs; recID++ )
-	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
-
-	      if ( tsID == 0 )
-		{
-		  recVarID[recID]   = varID;
-		  recLevelID[recID] = levelID;
-		}
-
-	      gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-
-	      if ( nsets == 0 )
-		{
-		  streamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
-		  vars1[varID][levelID].nmiss = (size_t)nmiss;
-
-		  if ( nmiss > 0 || samp1[varID][levelID].ptr )
-		    {
-		      if ( samp1[varID][levelID].ptr == NULL )
-			samp1[varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-
-		      for ( int i = 0; i < gridsize; i++ )
-			if ( DBL_IS_EQUAL(vars1[varID][levelID].ptr[i],
-					  vars1[varID][levelID].missval) )
-			  samp1[varID][levelID].ptr[i] = 0;
-			else
-			  samp1[varID][levelID].ptr[i] = 1;
-		    }
-		}
-	      else
-		{
-		  streamReadRecord(streamID1, field.ptr, &nmiss);
-                  field.nmiss   = (size_t)nmiss;
-		  field.grid    = vars1[varID][levelID].grid;
-		  field.missval = vars1[varID][levelID].missval;
-
-		  if ( field.nmiss > 0 || samp1[varID][levelID].ptr )
-		    {
-		      if ( samp1[varID][levelID].ptr == NULL )
-			{
-			  samp1[varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-			  for ( int i = 0; i < gridsize; i++ )
-			    samp1[varID][levelID].ptr[i] = nsets;
-			}
-
-		      for ( int i = 0; i < gridsize; i++ )
-			if ( !DBL_IS_EQUAL(field.ptr[i], vars1[varID][levelID].missval) )
-			  samp1[varID][levelID].ptr[i]++;
-		    }
-
-		  if ( lvarstd )
-		    {
-		      farsumq(&vars2[varID][levelID], field);
-		      farsum(&vars1[varID][levelID], field);
-		    }
-		  else
-		    {
-		      farfun(&vars1[varID][levelID], field, operfunc);
-		    }
-		}
-	    }
-
-	  if ( nsets == 0 && lvarstd )
-	    for ( varID = 0; varID < nvars; varID++ )
-	      {
-		if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-		nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-		for ( levelID = 0; levelID < nlevel; levelID++ )
-		  farmoq(&vars2[varID][levelID], vars1[varID][levelID]);
-	      }
-
-	  tsID++;
-	}
-
-      if ( nrecs == 0 && nsets == 0 ) break;
-
-      if ( lmean )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( samp1[varID][levelID].ptr == NULL )
-		  farcdiv(&vars1[varID][levelID], (double)nsets);
-		else
-		  fardiv(&vars1[varID][levelID], samp1[varID][levelID]);
-	      }
-	  }
-      else if ( lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( samp1[varID][levelID].ptr == NULL )
-		  {
-		    if ( lstd )
-		      farcstd(&vars1[varID][levelID], vars2[varID][levelID], nsets, divisor);
-		    else
-		      farcvar(&vars1[varID][levelID], vars2[varID][levelID], nsets, divisor);
-		  }
-		else
-		  {
-		    if ( lstd )
-		      farstd(&vars1[varID][levelID], vars2[varID][levelID], samp1[varID][levelID], divisor);
-		    else
-		      farvar(&vars1[varID][levelID], vars2[varID][levelID], samp1[varID][levelID], divisor);
-		  }
-	      }
-	  }
-
-      dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
-      streamDefTimestep(streamID2, otsID);
-
-      for ( int recID = 0; recID < nrecords; recID++ )
-	{
-	  varID   = recVarID[recID];
-	  levelID = recLevelID[recID];
-
-	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[varID][levelID].ptr, (int)vars1[varID][levelID].nmiss);
-	}
-
-      if ( nrecs == 0 ) break;
-      otsID++;
-
-      for ( int i = 0; i < nskip; i++ )
-	{
-	  nrecs = streamInqTimestep(streamID1, tsID);
-	  if ( nrecs == 0 ) break;
-	  tsID++;
-	}
-
-      if ( nrecs == 0 ) break;
-    }
-
- LABEL_END:
-
-
-  field_free(vars1, vlistID1);
-  field_free(samp1, vlistID1);
-  if ( lvarstd ) field_free(vars2, vlistID1);
-
-  dtlist_delete(dtlist);
-
-  if ( field.ptr ) Free(field.ptr);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Timselstat.cc b/src/Timselstat.cc
new file mode 100644
index 0000000..aff9a7e
--- /dev/null
+++ b/src/Timselstat.cc
@@ -0,0 +1,325 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Timselstat    timselrange        Time selection range
+      Timselstat    timselmin          Time selection minimum
+      Timselstat    timselmax          Time selection maximum
+      Timselstat    timselsum          Time selection sum
+      Timselstat    timselmean         Time selection mean
+      Timselstat    timselavg          Time selection average
+      Timselstat    timselvar          Time selection variance
+      Timselstat    timselvar1         Time selection variance [Normalize by (n-1)]
+      Timselstat    timselstd          Time selection standard deviation
+      Timselstat    timselstd1         Time selection standard deviation [Normalize by (n-1)]
+*/
+
+
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "pstream.h"
+
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+void *Timselstat(void *argument)
+{
+  int timestat_date = TIMESTAT_MEAN;
+  int nrecs = 0;
+  int varID, levelID;
+  int tsID;
+  int nsets;
+  int nmiss;
+
+  cdoInitialize(argument);
+
+  // clang-format off
+  cdoOperatorAdd("timselrange", func_range, 0, NULL);
+  cdoOperatorAdd("timselmin",   func_min,   0, NULL);
+  cdoOperatorAdd("timselmax",   func_max,   0, NULL);
+  cdoOperatorAdd("timselsum",   func_sum,   0, NULL);
+  cdoOperatorAdd("timselmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("timselavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("timselvar",   func_var,   0, NULL);
+  cdoOperatorAdd("timselvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("timselstd",   func_std,   0, NULL);
+  cdoOperatorAdd("timselstd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+
+  operatorInputArg("nsets <noffset <nskip>>");
+
+  int nargc  = operatorArgc();
+  int ndates = parameter2int(operatorArgv()[0]);
+  int noffset = (nargc > 1) ? parameter2int(operatorArgv()[1]) : 0;
+  int nskip   = (nargc > 2) ? parameter2int(operatorArgv()[2]) : 0;
+  // clang-format on
+
+  if ( cdoVerbose ) cdoPrint("nsets = %d, noffset = %d, nskip = %d", ndates, noffset, nskip);
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  vlistDefTaxis(vlistID2, taxisID2);
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  dtlist_type *dtlist = dtlist_new();
+  dtlist_set_stat(dtlist, timestat_date);
+  dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+
+  field_type field;
+  field_init(&field);
+  field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
+
+  field_type **samp1 = field_malloc(vlistID1, FIELD_NONE);
+  field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
+  field_type **vars2 = NULL;
+  if ( lvarstd || lrange ) vars2 = field_malloc(vlistID1, FIELD_PTR);
+
+  for ( tsID = 0; tsID < noffset; tsID++ )
+    {
+      nrecs = pstreamInqTimestep(streamID1, tsID);
+      if ( nrecs == 0 ) break;
+
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+
+	  if ( tsID == 0 )
+	    {
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
+	    }
+	}
+    }
+
+  int otsID = 0;
+  if ( tsID < noffset )
+    {
+      cdoWarning("noffset is larger than number of timesteps!");
+      goto LABEL_END;
+    }
+
+  while ( TRUE )
+    {
+      for ( nsets = 0; nsets < ndates; nsets++ )
+	{
+	  nrecs = pstreamInqTimestep(streamID1, tsID);
+	  if ( nrecs == 0 ) break;
+
+	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
+
+	  for ( int recID = 0; recID < nrecs; recID++ )
+	    {
+	      pstreamInqRecord(streamID1, &varID, &levelID);
+
+	      if ( tsID == 0 )
+		{
+                  recinfo[recID].varID   = varID;
+                  recinfo[recID].levelID = levelID;
+		}
+
+              field_type *psamp1 = &samp1[varID][levelID];
+              field_type *pvars1 = &vars1[varID][levelID];
+              field_type *pvars2 = vars2 ? &vars2[varID][levelID] : NULL;
+
+	      int gridsize = pvars1->size;
+
+	      if ( nsets == 0 )
+		{
+		  pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+		  pvars1->nmiss = (size_t)nmiss;
+                  if ( lrange )
+                    {
+                      pvars2->nmiss = (size_t)nmiss;
+		      for ( int i = 0; i < gridsize; i++ )
+                        pvars2->ptr[i] = pvars1->ptr[i];
+                    }
+
+		  if ( nmiss > 0 || psamp1->ptr )
+		    {
+		      if ( psamp1->ptr == NULL )
+			psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+
+		      for ( int i = 0; i < gridsize; i++ )
+                        psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
+		    }
+		}
+	      else
+		{
+		  pstreamReadRecord(streamID1, field.ptr, &nmiss);
+                  field.nmiss   = (size_t)nmiss;
+		  field.grid    = pvars1->grid;
+		  field.missval = pvars1->missval;
+
+		  if ( field.nmiss > 0 || psamp1->ptr )
+		    {
+		      if ( psamp1->ptr == NULL )
+			{
+			  psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+			  for ( int i = 0; i < gridsize; i++ )
+			    psamp1->ptr[i] = nsets;
+			}
+
+		      for ( int i = 0; i < gridsize; i++ )
+			if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+			  psamp1->ptr[i]++;
+		    }
+
+		  if ( lvarstd )
+		    {
+		      farsumq(pvars2, field);
+		      farsum(pvars1, field);
+		    }
+                  else if ( lrange )
+                    {
+                      farmin(pvars2, field);
+                      farmax(pvars1, field);
+                    }
+		  else
+		    {
+		      farfun(pvars1, field, operfunc);
+		    }
+		}
+	    }
+
+	  if ( nsets == 0 && lvarstd )
+            for ( int recID = 0; recID < maxrecs; recID++ )
+              {
+                int varID   = recinfo[recID].varID;
+                int levelID = recinfo[recID].levelID;
+                field_type *pvars1 = &vars1[varID][levelID];
+                field_type *pvars2 = &vars2[varID][levelID];
+
+		if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+                farmoq(pvars2, *pvars1);
+	      }
+
+	  tsID++;
+	}
+
+      if ( nrecs == 0 && nsets == 0 ) break;
+
+      for ( int recID = 0; recID < maxrecs; recID++ )
+        {
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *psamp1 = &samp1[varID][levelID];
+          field_type *pvars1 = &vars1[varID][levelID];
+          field_type *pvars2 = vars2 ? &vars2[varID][levelID] : NULL;
+
+          if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+          if ( lmean )
+            {
+              if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+              else               farcdiv(pvars1, (double)nsets);
+            }
+          else if ( lvarstd )
+            {
+              if ( psamp1->ptr )
+                {
+                  if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                  else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                }
+              else
+                {
+                  if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                  else        farcvar(pvars1, *pvars2, nsets, divisor);
+                }
+            }
+          else if ( lrange )
+            {
+              farsub(pvars1, *pvars2);
+            }
+        }
+
+      dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
+      pstreamDefTimestep(streamID2, otsID);
+
+      for ( int recID = 0; recID < maxrecs; recID++ )
+	{
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *pvars1 = &vars1[varID][levelID];
+
+	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
+	}
+
+      if ( nrecs == 0 ) break;
+      otsID++;
+
+      for ( int i = 0; i < nskip; i++ )
+	{
+	  nrecs = pstreamInqTimestep(streamID1, tsID);
+	  if ( nrecs == 0 ) break;
+	  tsID++;
+	}
+
+      if ( nrecs == 0 ) break;
+    }
+
+ LABEL_END:
+
+
+  field_free(vars1, vlistID1);
+  field_free(samp1, vlistID1);
+  if ( lvarstd ) field_free(vars2, vlistID1);
+
+  dtlist_delete(dtlist);
+
+  Free(recinfo);
+
+  if ( field.ptr ) Free(field.ptr);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Timsort.c b/src/Timsort.cc
similarity index 86%
rename from src/Timsort.c
rename to src/Timsort.cc
index 17fcba6..12a3ad7 100644
--- a/src/Timsort.c
+++ b/src/Timsort.cc
@@ -57,23 +57,22 @@ void *Timsort(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisCreate(TAXIS_ABSOLUTE);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars = vlistNvars(vlistID1);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -90,11 +89,11 @@ void *Timsort(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 	}
 
@@ -143,7 +142,7 @@ void *Timsort(void *argument)
     {
       taxisDefVdate(taxisID2, vdate[tsID]);
       taxisDefVtime(taxisID2, vtime[tsID]);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
 	{
@@ -153,8 +152,8 @@ void *Timsort(void *argument)
 	      if ( vars[tsID][varID][levelID].ptr )
 		{
 		  nmiss = vars[tsID][varID][levelID].nmiss;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, vars[tsID][varID][levelID].ptr, nmiss);
 		}
 	    }
 	}
@@ -166,8 +165,8 @@ void *Timsort(void *argument)
   if ( vdate ) Free(vdate);
   if ( vtime ) Free(vtime);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Timstat.c b/src/Timstat.cc
similarity index 71%
rename from src/Timstat.c
rename to src/Timstat.cc
index 2fada79..a2a225c 100644
--- a/src/Timstat.c
+++ b/src/Timstat.cc
@@ -97,10 +97,10 @@ void *Timstat(void *argument)
   int nwpv; // number of words per value; real:1  complex:2
   char indate1[DATE_LEN+1], indate2[DATE_LEN+1];
   double vfrac = 1;
-  double missval;
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("timrange",  func_range, DATE_LEN, NULL);
   cdoOperatorAdd("timmin",    func_min,   DATE_LEN, NULL);
   cdoOperatorAdd("timmax",    func_max,   DATE_LEN, NULL);
@@ -160,7 +160,8 @@ void *Timstat(void *argument)
   bool lmean   = operfunc == func_mean || operfunc == func_avg;
   bool lstd    = operfunc == func_std || operfunc == func_std1;
   bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor  = operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
 
   if ( operfunc == func_mean )
     {
@@ -180,9 +181,9 @@ void *Timstat(void *argument)
 
   int cmplen = DATE_LEN - comparelen;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   if ( cmplen == 0 ) vlistDefNtsteps(vlistID2, 1);
@@ -205,9 +206,8 @@ void *Timstat(void *argument)
   else if ( comparelen == YEAR_LEN ) freq = "year";
   if ( freq ) cdiDefAttTxt(vlistID2, CDI_GLOBAL, "frequency", (int)strlen(freq), freq);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   if ( cdoDiag )
     {
@@ -217,7 +217,7 @@ void *Timstat(void *argument)
       strcat(filename, "_");
       strcat(filename, cdoStreamName(1)->args);
       argument_t *fileargument = file_argument_new(filename);
-      streamID3 = streamOpenWrite(fileargument, cdoFiletype());
+      streamID3 = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
       vlistID3 = vlistDuplicate(vlistID1);
@@ -234,7 +234,7 @@ void *Timstat(void *argument)
       taxisID3 = taxisDuplicate(taxisID1);
       vlistDefTaxis(vlistID3, taxisID3);
 
-      streamDefVlist(streamID3, vlistID3);
+      pstreamDefVlist(streamID3, vlistID3);
     }
 
   recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
@@ -243,8 +243,8 @@ void *Timstat(void *argument)
   dtlist_set_stat(dtlist, timestat_date);
   dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
 
-  int gridsize = vlistGridsizeMax(vlistID1);
-  if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+  if ( vlistNumber(vlistID1) != CDI_REAL ) gridsizemax *= 2;
 
   int FIELD_MEMTYPE = 0;
   if ( CDO_Memtype == MEMTYPE_FLOAT ) FIELD_MEMTYPE = MEMTYPE_FLOAT;
@@ -253,12 +253,12 @@ void *Timstat(void *argument)
   field_init(&field);
   field.memtype = FIELD_MEMTYPE;
   if ( FIELD_MEMTYPE == MEMTYPE_FLOAT )
-    field.ptrf = (float*) Malloc(gridsize*sizeof(float));
+    field.ptrf = (float*) Malloc(gridsizemax*sizeof(float));
   else
-    field.ptr = (double*) Malloc(gridsize*sizeof(double));
+    field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
 
-  field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
   field_type **samp1 = field_malloc(vlistID1, FIELD_NONE);
+  field_type **vars1 = field_malloc(vlistID1, FIELD_PTR);
   field_type **vars2 = NULL;
   if ( lvarstd || lrange ) vars2 = field_malloc(vlistID1, FIELD_PTR);
 
@@ -267,7 +267,7 @@ void *Timstat(void *argument)
   while ( TRUE )
     {
       int nsets = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 	{
 	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
 	  int vdate = dtlist_get_vdate(dtlist, nsets);
@@ -280,7 +280,7 @@ void *Timstat(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 
 	      if ( tsID == 0 )
 		{
@@ -288,74 +288,70 @@ void *Timstat(void *argument)
                   recinfo[recID].levelID = levelID;
 		}
 
-              field_type *pvar1 = &vars1[varID][levelID];
-              
-	      nwpv     = pvar1->nwpv;
-	      gridsize = gridInqSize(pvar1->grid);
+              field_type *psamp1 = &samp1[varID][levelID];
+              field_type *pvars1 = &vars1[varID][levelID];
+              field_type *pvars2 = vars2 ? &vars2[varID][levelID] : NULL;
+
+	      nwpv     = pvars1->nwpv;
+	      int gridsize = pvars1->size;
 
 	      if ( nsets == 0 )
 		{
-		  streamReadRecord(streamID1, pvar1->ptr, &nmiss);
-		  pvar1->nmiss = (size_t)nmiss;
+		  pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+		  pvars1->nmiss = (size_t)nmiss;
                   if ( lrange )
                     {
-                      field_type *pvar2 = &vars2[varID][levelID];
+                      pvars2->nmiss = (size_t)nmiss;
 		      for ( int i = 0; i < nwpv*gridsize; i++ )
-                        pvar2->ptr[i] = pvar1->ptr[i];
-                      pvar2->nmiss = (size_t)nmiss;
+                        pvars2->ptr[i] = pvars1->ptr[i];
                     }
 
-		  if ( nmiss > 0 || samp1[varID][levelID].ptr )
+		  if ( nmiss > 0 || psamp1->ptr )
 		    {
-		      if ( samp1[varID][levelID].ptr == NULL )
-			samp1[varID][levelID].ptr = (double*) Malloc(nwpv*gridsize*sizeof(double));
+		      if ( psamp1->ptr == NULL )
+			psamp1->ptr = (double*) Malloc(nwpv*gridsize*sizeof(double));
 
 		      for ( int i = 0; i < nwpv*gridsize; i++ )
-			if ( DBL_IS_EQUAL(pvar1->ptr[i], pvar1->missval) )
-			  samp1[varID][levelID].ptr[i] = 0;
-			else
-			  samp1[varID][levelID].ptr[i] = 1;
+                        psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
 		    }
 		}
 	      else
 		{
                   if ( CDO_Memtype == MEMTYPE_FLOAT )
-                    streamReadRecordF(streamID1, field.ptrf, &nmiss);
+                    pstreamReadRecordF(streamID1, field.ptrf, &nmiss);
                   else
-                    streamReadRecord(streamID1, field.ptr, &nmiss);
+                    pstreamReadRecord(streamID1, field.ptr, &nmiss);
                   field.nmiss   = (size_t)nmiss;
 		  field.size    = gridsize;
-		  field.grid    = pvar1->grid;
-		  field.missval = pvar1->missval;
-		  if ( field.nmiss > 0 || samp1[varID][levelID].ptr )
+		  field.grid    = pvars1->grid;
+		  field.missval = pvars1->missval;
+		  if ( field.nmiss > 0 || psamp1->ptr )
 		    {
-		      if ( samp1[varID][levelID].ptr == NULL )
+		      if ( psamp1->ptr == NULL )
 			{
-			  samp1[varID][levelID].ptr = (double*) Malloc(nwpv*gridsize*sizeof(double));
+			  psamp1->ptr = (double*) Malloc(nwpv*gridsize*sizeof(double));
 			  for ( int i = 0; i < nwpv*gridsize; i++ )
-			    samp1[varID][levelID].ptr[i] = nsets;
+			    psamp1->ptr[i] = nsets;
 			}
 
 		      for ( int i = 0; i < nwpv*gridsize; i++ )
-			if ( !DBL_IS_EQUAL(field.ptr[i], pvar1->missval) )
-			  samp1[varID][levelID].ptr[i]++;
+			if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+			  psamp1->ptr[i]++;
 		    }
 
 		  if ( lvarstd )
 		    {
-                      field_type *pvar2 = &vars2[varID][levelID];
-		      farsumq(pvar2, field);
-		      farsum(pvar1, field);
+		      farsumq(pvars2, field);
+		      farsum(pvars1, field);
 		    }
                   else if ( lrange )
                     {
-                      field_type *pvar2 = &vars2[varID][levelID];
-                      farmin(pvar2, field);
-                      farmax(pvar1, field);
+                      farmin(pvars2, field);
+                      farmax(pvars1, field);
                     }
 		  else
 		    {
-		      farfun(pvar1, field, operfunc);
+		      farfun(pvars1, field, operfunc);
 		    }
 		}
 	    }
@@ -365,12 +361,12 @@ void *Timstat(void *argument)
               {
                 int varID   = recinfo[recID].varID;
                 int levelID = recinfo[recID].levelID;
-                field_type *pvar1 = &vars1[varID][levelID];
-                field_type *pvar2 = &vars2[varID][levelID];
+                field_type *pvars1 = &vars1[varID][levelID];
+                field_type *pvars2 = &vars2[varID][levelID];
 
 		if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-                farmoq(pvar2, *pvar1);
+                farmoq(pvars2, *pvars1);
 	      }
 
 	  vdate0 = vdate;
@@ -381,53 +377,39 @@ void *Timstat(void *argument)
 
       if ( nrecs == 0 && nsets == 0 ) break;
 
-      if ( lmean )
-        for ( int recID = 0; recID < maxrecs; recID++ )
-          {
-            int varID   = recinfo[recID].varID;
-            int levelID = recinfo[recID].levelID;
-            field_type *pvar1 = &vars1[varID][levelID];
-
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-            if ( samp1[varID][levelID].ptr == NULL )
-              farcdiv(pvar1, (double)nsets);
-            else
-              fardiv(pvar1, samp1[varID][levelID]);
-	  }
-      else if ( lvarstd )
-        for ( int recID = 0; recID < maxrecs; recID++ )
-          {
-            int varID   = recinfo[recID].varID;
-            int levelID = recinfo[recID].levelID;
-            field_type *pvar1 = &vars1[varID][levelID];
-            field_type *pvar2 = &vars2[varID][levelID];
-
-            if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-            if ( samp1[varID][levelID].ptr == NULL )
-              {
-                if ( lstd ) farcstd(pvar1, *pvar2, nsets, divisor);
-                else        farcvar(pvar1, *pvar2, nsets, divisor);
-              }
-            else
-              {
-                if ( lstd ) farstd(pvar1, *pvar2, samp1[varID][levelID], divisor);
-                else        farvar(pvar1, *pvar2, samp1[varID][levelID], divisor);
-	      }
-	  }
-      else if ( lrange )
-        for ( int recID = 0; recID < maxrecs; recID++ )
-          {
-            int varID   = recinfo[recID].varID;
-            int levelID = recinfo[recID].levelID;
-            field_type *pvar1 = &vars1[varID][levelID];
-            field_type *pvar2 = &vars2[varID][levelID];
-
-            if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-            farsub(pvar1, *pvar2);
-	  }
+      for ( int recID = 0; recID < maxrecs; recID++ )
+        {
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *psamp1 = &samp1[varID][levelID];
+          field_type *pvars1 = &vars1[varID][levelID];
+          field_type *pvars2 = vars2 ? &vars2[varID][levelID] : NULL;
+
+          if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+          if ( lmean )
+            {
+              if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+              else               farcdiv(pvars1, (double)nsets);
+            }
+          else if ( lvarstd )
+            {
+              if ( psamp1->ptr )
+                {
+                  if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                  else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                }
+              else
+                {
+                  if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                  else        farcvar(pvars1, *pvars2, nsets, divisor);
+                }
+            }
+          else if ( lrange )
+            {
+              farsub(pvars1, *pvars2);
+            }
+        }
 
       if ( cdoVerbose )
 	{
@@ -442,21 +424,22 @@ void *Timstat(void *argument)
           {
             int varID   = recinfo[recID].varID;
             int levelID = recinfo[recID].levelID;
-            field_type *pvar1 = &vars1[varID][levelID];
+            field_type *psamp1 = &samp1[varID][levelID];
+            field_type *pvars1 = &vars1[varID][levelID];
 
 	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-            nwpv     = pvar1->nwpv;
-            gridsize = gridInqSize(pvar1->grid);
-            missval  = pvar1->missval;
-            if ( samp1[varID][levelID].ptr )
+            int nwpv     = pvars1->nwpv;
+            int gridsize = gridInqSize(pvars1->grid);
+            double missval = pvars1->missval;
+            if ( psamp1->ptr )
               {
                 int irun = 0;
                 for ( int i = 0; i < nwpv*gridsize; ++i )
                   {
-                    if ( (samp1[varID][levelID].ptr[i] / nsets) < vfrac )
+                    if ( (psamp1->ptr[i] / nsets) < vfrac )
                       {
-                        pvar1->ptr[i] = missval;
+                        pvars1->ptr[i] = missval;
                         irun++;
                       }
                   }
@@ -465,44 +448,45 @@ void *Timstat(void *argument)
                   {
                     nmiss = 0;
                     for ( int i = 0; i < nwpv*gridsize; ++i )
-                      if ( DBL_IS_EQUAL(pvar1->ptr[i], missval) ) nmiss++;
-                    pvar1->nmiss = (size_t)nmiss;
+                      if ( DBL_IS_EQUAL(pvars1->ptr[i], missval) ) nmiss++;
+                    pvars1->nmiss = (size_t)nmiss;
                   }
 	      }
 	  }
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
-      streamDefTimestep(streamID2, otsID);
+      pstreamDefTimestep(streamID2, otsID);
 
       if ( cdoDiag )
 	{
 	  dtlist_stat_taxisDefTimestep(dtlist, taxisID3, nsets);
-	  streamDefTimestep(streamID3, otsID);
+	  pstreamDefTimestep(streamID3, otsID);
 	}
 
       for ( int recID = 0; recID < maxrecs; recID++ )
 	{
           int varID   = recinfo[recID].varID;
           int levelID = recinfo[recID].levelID;
-          field_type *pvar1 = &vars1[varID][levelID];
+          field_type *psamp1 = &samp1[varID][levelID];
+          field_type *pvars1 = &vars1[varID][levelID];
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, pvar1->ptr, (int)pvar1->nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
           
 	  if ( cdoDiag )
 	    {
               double *sampptr = field.ptr;
-	      if ( samp1[varID][levelID].ptr ) sampptr = samp1[varID][levelID].ptr;
+	      if ( psamp1->ptr ) sampptr = psamp1->ptr;
               else
                 {
-                  gridsize = gridInqSize(pvar1->grid);
+                  int gridsize = pvars1->size;
                   for ( int i = 0; i < gridsize; ++i ) sampptr[i] = nsets;
                 }
 
-              streamDefRecord(streamID3, varID, levelID);
-              streamWriteRecord(streamID3, sampptr, 0);
+              pstreamDefRecord(streamID3, varID, levelID);
+              pstreamWriteRecord(streamID3, sampptr, 0);
 	    }
 	}
 
@@ -517,9 +501,9 @@ void *Timstat(void *argument)
 
   dtlist_delete(dtlist);
 
-  if ( cdoDiag ) streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  if ( cdoDiag ) pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field.ptr ) Free(field.ptr);
   Free(recinfo);
diff --git a/src/Timstat2.c b/src/Timstat2.cc
similarity index 89%
rename from src/Timstat2.c
rename to src/Timstat2.cc
index 3524b59..acb876e 100644
--- a/src/Timstat2.c
+++ b/src/Timstat2.cc
@@ -115,8 +115,10 @@ void *Timstat2(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("timcor",   func_cor,   0, NULL);
   cdoOperatorAdd("timcovar", func_covar, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
@@ -124,11 +126,11 @@ void *Timstat2(void *argument)
   if      ( operfunc == func_cor   ) nwork = 5;
   else if ( operfunc == func_covar ) nwork = 3;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -144,9 +146,8 @@ void *Timstat2(void *argument)
   int taxisID3 = taxisDuplicate(taxisID1);
  
   vlistDefTaxis(vlistID3, taxisID3);
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
  
   gridsize = vlistGridsizeMax(vlistID1);
 
@@ -180,19 +181,19 @@ void *Timstat2(void *argument)
     }
  
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
 
-      nrecs2 = streamInqTimestep(streamID2, tsID);
+      nrecs2 = pstreamInqTimestep(streamID2, tsID);
       if ( nrecs != nrecs2 )
         cdoWarning("Input streams have different number of records!");
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -205,8 +206,8 @@ void *Timstat2(void *argument)
 	  missval1 = vlistInqVarMissval(vlistID1, varID);
 	  missval2 = vlistInqVarMissval(vlistID2, varID);
 
-	  streamReadRecord(streamID1, array1, &nmiss);
-	  streamReadRecord(streamID2, array2, &nmiss);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
+	  pstreamReadRecord(streamID2, array2, &nmiss);
 
 	  if ( operfunc == func_cor )
 	    {
@@ -246,7 +247,7 @@ void *Timstat2(void *argument)
   tsID = 0;
   taxisDefVdate(taxisID3, vdate);
   taxisDefVtime(taxisID3, vtime);
-  streamDefTimestep(streamID3, tsID);
+  pstreamDefTimestep(streamID3, tsID);
 
   for ( int recID = 0; recID < nrecs3; recID++ )
     {
@@ -272,8 +273,8 @@ void *Timstat2(void *argument)
 			       work[varID][levelID][2]);
 	}
 
-      streamDefRecord(streamID3, varID, levelID);
-      streamWriteRecord(streamID3, work[varID][levelID][0], nmiss);
+      pstreamDefRecord(streamID3, varID, levelID);
+      pstreamWriteRecord(streamID3, work[varID][levelID][0], nmiss);
     }
 
   for ( varID = 0; varID < nvars; varID++ )
@@ -294,9 +295,9 @@ void *Timstat2(void *argument)
   Free(nofvals);
   Free(work);
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 )     Free(array1);
   if ( array2 )     Free(array2);
diff --git a/src/Timstat3.c b/src/Timstat3.cc
similarity index 93%
rename from src/Timstat3.c
rename to src/Timstat3.cc
index 0ae65cc..347b72b 100644
--- a/src/Timstat3.c
+++ b/src/Timstat3.cc
@@ -51,11 +51,12 @@ void *Timstat3(void *argument)
   int reached_eof[NIN];
   int n_in = NIN;
 
-
   cdoInitialize(argument);
 
+  // clang-format off
   int VARQUOT2TEST  = cdoOperatorAdd("varquot2test",  0, 0, NULL);
   int MEANDIFF2TEST = cdoOperatorAdd("meandiff2test", 0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -75,12 +76,12 @@ void *Timstat3(void *argument)
 
   for ( is = 0; is < NIN; ++is )
     {
-      streamID[is] = streamOpenRead(cdoStreamName(is));
+      streamID[is] = pstreamOpenRead(cdoStreamName(is));
 
-      vlistID[is] = streamInqVlist(streamID[is]);
+      vlistID[is] = pstreamInqVlist(streamID[is]);
       if ( is > 0 )
 	{
-	  vlistID2 = streamInqVlist(streamID[is]);
+	  vlistID2 = pstreamInqVlist(streamID[is]);
 	  vlistCompare(vlistID[0], vlistID2, CMP_ALL);
 	}
     }
@@ -98,9 +99,8 @@ void *Timstat3(void *argument)
   int taxisID3 = taxisDuplicate(taxisID1);
  
   vlistDefTaxis(vlistID3, taxisID3);
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   for ( int i = 0; i < NIN; ++i ) reached_eof[i] = 0;
 
@@ -161,7 +161,7 @@ void *Timstat3(void *argument)
 	{
 	  if ( reached_eof[is] ) continue;
 
-	  nrecs = streamInqTimestep(streamID[is], tsID);
+	  nrecs = pstreamInqTimestep(streamID[is], tsID);
 	  if ( nrecs == 0 )
 	    {
 	      reached_eof[is] = 1;
@@ -173,7 +173,7 @@ void *Timstat3(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID[is], &varID, &levelID);
+	      pstreamInqRecord(streamID[is], &varID, &levelID);
 
 	      gridsize = gridInqSize(vlistInqVarGrid(vlistID[is], varID));
 
@@ -185,7 +185,7 @@ void *Timstat3(void *argument)
 		  recLevelID[recID] = levelID;	     	     
 		}	 
 
-	      streamReadRecord(streamID[is], in[is].ptr, &nmiss);
+	      pstreamReadRecord(streamID[is], in[is].ptr, &nmiss);
 	      in[is].nmiss = (size_t) nmiss;
               
 	      for ( int i = 0; i < gridsize; ++i )
@@ -214,7 +214,7 @@ void *Timstat3(void *argument)
 
   taxisDefVdate(taxisID3, vdate);
   taxisDefVtime(taxisID3, vtime);
-  streamDefTimestep(streamID3, 0);
+  pstreamDefTimestep(streamID3, 0);
 
   for ( int recID = 0; recID < nrecs3; recID++ )
     {
@@ -304,8 +304,8 @@ void *Timstat3(void *argument)
       for ( int i = 0; i < gridsize; i++ )
 	if ( DBL_IS_EQUAL(out[0].ptr[i], missval1) ) nmiss++;
 
-      streamDefRecord(streamID3, varID, levelID);
-      streamWriteRecord(streamID3, out[0].ptr, nmiss);
+      pstreamDefRecord(streamID3, varID, levelID);
+      pstreamWriteRecord(streamID3, out[0].ptr, nmiss);
     }
 
   for ( varID = 0; varID < nvars; varID++ )
@@ -327,9 +327,9 @@ void *Timstat3(void *argument)
   for ( int iw = 0; iw < NIWORK; iw++ ) Free(iwork[iw]);
 
 
-  streamClose(streamID3);
+  pstreamClose(streamID3);
   for ( is = 0; is < NIN; ++is )
-    streamClose(streamID[is]);
+    pstreamClose(streamID[is]);
 
   for ( int i = 0; i < NIN; ++i ) Free(in[i].ptr);
   for ( int i = 0; i < NOUT; ++i ) Free(out[i].ptr);
diff --git a/src/Tinfo.c b/src/Tinfo.cc
similarity index 98%
rename from src/Tinfo.c
rename to src/Tinfo.cc
index 0a9a31f..7da4631 100644
--- a/src/Tinfo.c
+++ b/src/Tinfo.cc
@@ -218,7 +218,6 @@ void *Tinfo(void *argument)
   int vdate_first = 0, vtime_first = 0;
   int vdate0 = 0, vtime0 = 0;
   int vdate = 0, vtime = 0;
-  int nrecs;
   int tsID = 0, ntimeout;
   int calendar;
   int year0, month0, day0;
@@ -241,9 +240,9 @@ void *Tinfo(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   fprintf(stdout, "\n");
 
@@ -316,7 +315,7 @@ void *Tinfo(void *argument)
       fprintf(stdout, "\n");
 
       tsID = 0;
-      while ( (nrecs = streamInqTimestep(streamID, tsID)) )
+      while ( pstreamInqTimestep(streamID, tsID) )
 	{  
 	  vdate = taxisInqVdate(taxisID);
 	  vtime = taxisInqVtime(taxisID);
@@ -426,7 +425,7 @@ void *Tinfo(void *argument)
 	}
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   fprintf(stdout, "\n");
 
diff --git a/src/Tocomplex.c b/src/Tocomplex.cc
similarity index 81%
rename from src/Tocomplex.c
rename to src/Tocomplex.cc
index 217a0e8..b1fab11 100644
--- a/src/Tocomplex.c
+++ b/src/Tocomplex.cc
@@ -35,9 +35,9 @@ void *Tocomplex(void *argument)
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars = vlistNvars(vlistID2);
@@ -57,9 +57,8 @@ void *Tocomplex(void *argument)
   vlistDefTaxis(vlistID2, taxisID2);
 
   if ( cdoFiletype() != CDI_FILETYPE_EXT ) cdoAbort("Complex numbers need EXTRA format; used CDO option -f ext!");
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
@@ -67,19 +66,19 @@ void *Tocomplex(void *argument)
       
   int tsID  = 0;
   int tsID2 = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID2++);
+      pstreamDefTimestep(streamID2, tsID2++);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 	      
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  if ( operatorID == RETOCOMPLEX )
 	    {
@@ -98,14 +97,14 @@ void *Tocomplex(void *argument)
 		}
 	    }
 
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
        
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
   if ( array2 ) Free(array2);
diff --git a/src/Transpose.c b/src/Transpose.cc
similarity index 83%
rename from src/Transpose.c
rename to src/Transpose.cc
index 2fff013..15b86f7 100644
--- a/src/Transpose.c
+++ b/src/Transpose.cc
@@ -66,9 +66,9 @@ void *Transpose(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int ngrids = vlistNgrids(vlistID1);
@@ -91,9 +91,8 @@ void *Transpose(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -101,27 +100,28 @@ void *Transpose(void *argument)
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  int gridID = vlistInqVarGrid(vlistID1, varID);
           transxy(gridID, array1, array2);
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   Free(array1);
   Free(array2);
diff --git a/src/Trend.c b/src/Trend.cc
similarity index 83%
rename from src/Trend.c
rename to src/Trend.cc
index 98be674..b3f743e 100644
--- a/src/Trend.c
+++ b/src/Trend.cc
@@ -40,9 +40,9 @@ void *Trend(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   vlistDefNtsteps(vlistID2, 1);
@@ -57,11 +57,11 @@ void *Trend(void *argument)
   for ( varID = 0; varID < nvars; varID++ )
     vlistDefVarDatatype(vlistID2, varID, CDI_DATATYPE_FLT64);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
-  streamDefVlist(streamID3, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID3, vlistID2);
 
   int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
   int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
@@ -78,7 +78,7 @@ void *Trend(void *argument)
     work[w] = field_calloc(vlistID1, FIELD_PTR);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
@@ -87,7 +87,7 @@ void *Trend(void *argument)
       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -95,7 +95,7 @@ void *Trend(void *argument)
 	      recLevelID[recID] = levelID;
 	    }
 
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
 
 	  double missval  = vlistInqVarMissval(vlistID1, varID);
 	  int gridID   = vlistInqVarGrid(vlistID1, varID);
@@ -118,8 +118,8 @@ void *Trend(void *argument)
 
   taxisDefVdate(taxisID2, vdate);
   taxisDefVtime(taxisID2, vtime);
-  streamDefTimestep(streamID2, 0);
-  streamDefTimestep(streamID3, 0);
+  pstreamDefTimestep(streamID2, 0);
+  pstreamDefTimestep(streamID3, 0);
 
   for ( int recID = 0; recID < nrecords; recID++ )
     {
@@ -149,15 +149,15 @@ void *Trend(void *argument)
       for ( int i = 0; i < gridsize; i++ )
 	if ( DBL_IS_EQUAL(field1.ptr[i], missval) ) nmiss++;
 
-      streamDefRecord(streamID2, varID, levelID);
-      streamWriteRecord(streamID2, field1.ptr, nmiss);
+      pstreamDefRecord(streamID2, varID, levelID);
+      pstreamWriteRecord(streamID2, field1.ptr, nmiss);
 
       nmiss = 0;
       for ( int i = 0; i < gridsize; i++ )
 	if ( DBL_IS_EQUAL(field2.ptr[i], missval) ) nmiss++;
 
-      streamDefRecord(streamID3, varID, levelID);
-      streamWriteRecord(streamID3, field2.ptr, nmiss);
+      pstreamDefRecord(streamID3, varID, levelID);
+      pstreamWriteRecord(streamID3, field2.ptr, nmiss);
     }
 
 
@@ -169,9 +169,9 @@ void *Trend(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Trms.c b/src/Trms.cc
similarity index 89%
rename from src/Trms.c
rename to src/Trms.cc
index 2784429..319ca67 100644
--- a/src/Trms.c
+++ b/src/Trms.cc
@@ -82,11 +82,11 @@ void *Trms(void *argument)
 
   bool needWeights = true;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   double slon = 0;
   double slat = 0;
@@ -109,7 +109,7 @@ void *Trms(void *argument)
   if ( pvarID == -1 ) cdoAbort("pressure variable missing!");
 
   int vlistID3 = vlistCreate();
-  vlistCopyFlag(vlistID3, vlistID1);
+  cdoVlistCopyFlag(vlistID3, vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID3 = taxisDuplicate(taxisID1);
@@ -151,9 +151,8 @@ void *Trms(void *argument)
 
   if ( vctsize == 0 ) cdoAbort("VCT missing!");
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   double **vardata1 = (double**) Malloc(nvars*sizeof(double*));
   double **vardata2 = (double**) Malloc(nvars*sizeof(double*));
@@ -186,30 +185,28 @@ void *Trms(void *argument)
   field3.grid = gridID3;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
-      nrecs = streamInqTimestep(streamID2, tsID);
+      nrecs = pstreamInqTimestep(streamID2, tsID);
 
       taxisCopyTimestep(taxisID3, taxisID1);
-
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single   = vardata1[varID] + offset;
 
-	  streamReadRecord(streamID1, single, &nmiss);
+	  pstreamReadRecord(streamID1, single, &nmiss);
 	  if ( nmiss ) cdoAbort("Missing values unsupported for this operator!");
 
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
 	  single   = vardata2[varID] + offset;
-
-	  streamReadRecord(streamID2, single, &nmiss);
+	  pstreamReadRecord(streamID2, single, &nmiss);
 	  if ( nmiss ) cdoAbort("Missing values unsupported for this operator!");
 	}
 
@@ -257,15 +254,16 @@ void *Trms(void *argument)
 
 	  trms(field1, field2, dp, &field3);
 
-	  streamDefRecord(streamID3, varID, 0);
-	  streamWriteRecord(streamID3, &sglval, field3.nmiss);
+	  pstreamDefRecord(streamID3, varID, 0);
+	  pstreamWriteRecord(streamID3, &sglval, field3.nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID3);
 
diff --git a/src/Tstepcount.c b/src/Tstepcount.cc
similarity index 87%
rename from src/Tstepcount.c
rename to src/Tstepcount.cc
index 0391c74..1fefdbb 100644
--- a/src/Tstepcount.c
+++ b/src/Tstepcount.cc
@@ -72,9 +72,9 @@ void *Tstepcount(void *argument)
 
   if ( operatorArgc() == 1 ) refval = parameter2double(operatorArgv()[0]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   vlistDefNtsteps(vlistID2, 1);
@@ -89,12 +89,11 @@ void *Tstepcount(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       if ( tsID >= nalloc )
 	{
@@ -109,11 +108,11 @@ void *Tstepcount(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridID   = vlistInqVarGrid(vlistID1, varID);
 	  gridsize = gridInqSize(gridID);
 	  vars[tsID][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars[tsID][varID][levelID].ptr, &nmiss);
 	  vars[tsID][varID][levelID].nmiss = nmiss;
 	}
 
@@ -158,7 +157,7 @@ void *Tstepcount(void *argument)
 
   taxisDefVdate(taxisID2, vdate);
   taxisDefVtime(taxisID2, vtime);
-  streamDefTimestep(streamID2, 0);
+  pstreamDefTimestep(streamID2, 0);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
@@ -169,13 +168,13 @@ void *Tstepcount(void *argument)
 
       for ( levelID = 0; levelID < nlevel; levelID++ )
 	{
-	  streamDefRecord(streamID2, varID, levelID);
+	  pstreamDefRecord(streamID2, varID, levelID);
 
 	  nmiss = 0;
 	  for ( int i = 0; i < gridsize; i++ )
 	    if ( DBL_IS_EQUAL(vars[0][varID][levelID].ptr[i], missval) ) nmiss++;
 
-	  streamWriteRecord(streamID2, vars[0][varID][levelID].ptr, nmiss);
+	  pstreamWriteRecord(streamID2, vars[0][varID][levelID].ptr, nmiss);
 	}
     }
 
@@ -183,8 +182,8 @@ void *Tstepcount(void *argument)
 
   if ( vars ) Free(vars);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Vargen.c b/src/Vargen.cc
similarity index 95%
rename from src/Vargen.c
rename to src/Vargen.cc
index 3e4fa29..4d79bd4 100644
--- a/src/Vargen.c
+++ b/src/Vargen.cc
@@ -26,7 +26,7 @@
 
 
 #if defined(HAVE_CONFIG_H)
-#  include "config.h" // ENABLE_DATA
+#include "config.h" // ENABLE_DATA
 #endif
 
 #include <cdi.h>
@@ -40,23 +40,23 @@
 
 
 #if defined(ENABLE_DATA)
-  static const double etopo_scale  = 3;
-  static const double etopo_offset = 11000;
-  static const unsigned short etopo[] = {
+static const double etopo_scale  = 3;
+static const double etopo_offset = 11000;
+static const unsigned short etopo[] = {
 #include "etopo.h"
-  };
+};
 
-  static const double temp_scale  =  500;
-  static const double temp_offset = -220;
-  static const unsigned short temp[] = {
+static const double temp_scale  =  500;
+static const double temp_offset = -220;
+static const unsigned short temp[] = {
 #include "temp.h"
-  };
+};
 
-  static const double mask_scale  =  1;
-  static const double mask_offset =  0;
-  static const unsigned short mask[] = {
+static const double mask_scale  =  1;
+static const double mask_offset =  0;
+static const unsigned short mask[] = {
 #include "mask.h"
-  };
+};
 #endif
 
 /*  some Constants for creating temperatur and pressure for the standard atmosphere */
@@ -244,6 +244,7 @@ void *Vargen(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int RANDOM  = cdoOperatorAdd("random",  0, 0, "grid description file or name, <seed>");
   int SINCOS  = cdoOperatorAdd("sincos",  0, 0, "grid description file or name");
   int COSHILL = cdoOperatorAdd("coshill", 0, 0, "grid description file or name");
@@ -253,6 +254,7 @@ void *Vargen(void *argument)
   int TEMP    = cdoOperatorAdd("temp",    0, 0, NULL);
   int MASK    = cdoOperatorAdd("mask",    0, 0, NULL);
   int STDATM  = cdoOperatorAdd("stdatm",  0, 0, "height levels [m]");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
@@ -399,9 +401,9 @@ void *Vargen(void *argument)
        operatorID == TOPO || operatorID == TEMP || operatorID == MASK || operatorID == STDATM )
     vlistDefNtsteps(vlistID, 1);
 
-  int streamID = streamOpenWrite(cdoStreamName(0), cdoFiletype());
+  int streamID = pstreamOpenWrite(cdoStreamName(0), cdoFiletype());
 
-  streamDefVlist(streamID, vlistID);
+  pstreamDefVlist(streamID, vlistID);
 
   int gridsize = gridInqSize(gridID);
   int datasize = gridsize;
@@ -432,14 +434,14 @@ void *Vargen(void *argument)
       int vtime = 0;
       taxisDefVdate(taxisID, vdate);
       taxisDefVtime(taxisID, vtime);
-      streamDefTimestep(streamID, tsID);
+      pstreamDefTimestep(streamID, tsID);
 
       for ( varID = 0; varID < nvars; varID++ )
         {
           nlevels = zaxisInqSize(vlistInqVarZaxis(vlistID, varID));
           for ( levelID = 0; levelID < nlevels; levelID++ )
             {
-              streamDefRecord(streamID, varID, levelID);
+              pstreamDefRecord(streamID, varID, levelID);
 
               if ( operatorID == RANDOM )
                 {
@@ -533,12 +535,12 @@ void *Vargen(void *argument)
                   remap_nn_reg2d(nlon, nlat, data, gridID, array);
                 }
 
-              streamWriteRecord(streamID, array, 0);
+              pstreamWriteRecord(streamID, array, 0);
             }
         }
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   vlistDestroy(vlistID);
 
diff --git a/src/Varrms.c b/src/Varrms.cc
similarity index 82%
rename from src/Varrms.c
rename to src/Varrms.cc
index 22986d5..82824b4 100644
--- a/src/Varrms.c
+++ b/src/Varrms.cc
@@ -45,11 +45,11 @@ void *Varrms(void *argument)
 
   bool needWeights = true;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   double slon = 0;
   double slat = 0;
@@ -65,7 +65,7 @@ void *Varrms(void *argument)
     vlistDefFlag(vlistID1, varID, 0, TRUE);
 
   int vlistID3 = vlistCreate();
-  vlistCopyFlag(vlistID3, vlistID1);
+  cdoVlistCopyFlag(vlistID3, vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID3 = taxisDuplicate(taxisID1);
@@ -83,9 +83,8 @@ void *Varrms(void *argument)
   vlistChangeGridIndex(vlistID3, index, gridID3);
   if ( ngrids > 1 ) cdoAbort("Too many different grids!");
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   double **vardata1 = (double**) Malloc(nvars*sizeof(double*));
   double **vardata2 = (double**) Malloc(nvars*sizeof(double*));
@@ -114,30 +113,28 @@ void *Varrms(void *argument)
   field3.grid = gridID3;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
-      nrecs = streamInqTimestep(streamID2, tsID);
+      nrecs = pstreamInqTimestep(streamID2, tsID);
 
       taxisCopyTimestep(taxisID3, taxisID1);
-
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  offset   = gridsize*levelID;
 	  single   = vardata1[varID] + offset;
 
-	  streamReadRecord(streamID1, single, &nmiss);
+	  pstreamReadRecord(streamID1, single, &nmiss);
 	  if ( nmiss ) cdoAbort("Missing values unsupported for this operator!");
 
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
-	  single   = vardata2[varID] + offset;
-
-	  streamReadRecord(streamID2, single, &nmiss);
+	  single = vardata2[varID] + offset;
+	  pstreamReadRecord(streamID2, single, &nmiss);
 	  if ( nmiss ) cdoAbort("this operator does not work with missing values!");
 	}
 
@@ -164,15 +161,16 @@ void *Varrms(void *argument)
 
 	  varrms(field1, field2, &field3);
 
-	  streamDefRecord(streamID3, varID, 0);
-	  streamWriteRecord(streamID3, &sglval, field3.nmiss);
+	  pstreamDefRecord(streamID3, varID, 0);
+	  pstreamWriteRecord(streamID3, &sglval, field3.nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID3);
 
diff --git a/src/Verifygrid.c b/src/Verifygrid.cc
similarity index 90%
rename from src/Verifygrid.c
rename to src/Verifygrid.cc
index b643d52..a2103ab 100644
--- a/src/Verifygrid.c
+++ b/src/Verifygrid.cc
@@ -90,7 +90,7 @@ static
 void quick_sort_of_subarray_by_lat(double * array, int subarray_start, int subarray_end)
 {
   int subarray_length = (subarray_end - subarray_start) / 2 + 1;     
-  double subarray[subarray_length];
+  double *subarray = (double*) Malloc(subarray_length*sizeof(double));
   int subarray_index = 0;
   
   for(int index = subarray_start + 1; index <= subarray_end + 1; index += 2){	 
@@ -105,7 +105,9 @@ void quick_sort_of_subarray_by_lat(double * array, int subarray_start, int subar
   for(int index = subarray_start + 1; index <= subarray_end + 1; index += 2){
     array[index] = subarray[subarray_index];
     subarray_index += 1;	  
-  }            
+  }
+
+  Free(subarray);
 }
 
 
@@ -123,7 +125,7 @@ double determinant(double matrix[3][3])
 }
 
 static
-void find_unit_normal(double a[3], double b[3], double c[3], double * unit_normal)
+void find_unit_normal(double a[3], double b[3], double c[3], double *unit_normal)
 {  
   /* Calculates the unit normal for a plane defined on three points a, b, c in Euclidean space. */
 
@@ -153,6 +155,47 @@ void find_unit_normal(double a[3], double b[3], double c[3], double * unit_norma
 }
 
 static
+int find_coordinate_to_ignore(double *cell_corners_xyz)
+{
+  double corner_coordinates[3];
+  double second_corner_coordinates[3];
+  double third_corner_coordinates[3];
+
+  /* Takes the first three corners/vertices of the cell and calculates the unit normal via determinants. */
+      
+  corner_coordinates[0] = cell_corners_xyz[0];
+  corner_coordinates[1] = cell_corners_xyz[1];
+  corner_coordinates[2] = cell_corners_xyz[2];
+
+  second_corner_coordinates[0] = cell_corners_xyz[3 + 0];
+  second_corner_coordinates[1] = cell_corners_xyz[3 + 1];
+  second_corner_coordinates[2] = cell_corners_xyz[3 + 2];
+
+  third_corner_coordinates[0] = cell_corners_xyz[6 + 0];
+  third_corner_coordinates[1] = cell_corners_xyz[6 + 1];
+  third_corner_coordinates[2] = cell_corners_xyz[6 + 2];
+      
+  double surface_normal_of_the_cell[3];
+  find_unit_normal(corner_coordinates, second_corner_coordinates, third_corner_coordinates, surface_normal_of_the_cell);
+
+  /* The surface normal is used to choose the coordinate to ignore. */
+
+  double abs_x = fabs(surface_normal_of_the_cell[0]);
+  double abs_y = fabs(surface_normal_of_the_cell[1]);
+  double abs_z = fabs(surface_normal_of_the_cell[2]);
+
+  int coordinate_to_ignore = 3;
+
+  if (abs_x > abs_y){
+    if (abs_x > abs_z) coordinate_to_ignore = 1;
+  } else {
+    if (abs_y > abs_z) coordinate_to_ignore = 2;
+  }
+
+  return coordinate_to_ignore;
+}
+
+static
 int no_of_duplicates_in_this_list_of_vertices(double cell_corners[], int array_length)
 {
   /* Returns the number of coordinate duplicates found in a list of Cartesian coordinates, the cell corners or vertices. */
@@ -311,25 +354,20 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
   */
   
   double center_point_xyz[3];
-  double cell_corners_xyz_open_cell[ncorner * 3];
+  double *cell_corners_xyz_open_cell = (double*) Malloc(3*ncorner*sizeof(double));
   
   double corner_coordinates[3];
-  double second_corner_coordinates[3];
-  double third_corner_coordinates[3];
-  double surface_normal_of_the_cell[3];
   double center_point_plane_projection[2];
 
   int no_of_cells_with_duplicates = 0;
+  int no_usable_cells = 0;
   int no_convex_cells = 0;
   int no_clockwise_cells = 0;
   int no_counterclockwise_cells = 0;
   int no_of_cells_with_center_points_out_of_bounds = 0;
-  int coordinate_to_ignore = 0;
   int no_unique_center_points = 1;
-  
-  double *p_surface_normal_of_the_cell = &surface_normal_of_the_cell[0];
 
-  int no_cells_with_a_specific_no_of_corners[ncorner];
+  int *no_cells_with_a_specific_no_of_corners = (int*) Malloc(ncorner*sizeof(int));
 
   for ( int i = 0; i < ncorner; i++ )
     no_cells_with_a_specific_no_of_corners[i] = 0;
@@ -452,10 +490,12 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
           
           continue;
         }
+
+      no_usable_cells++;
       
       /* Checks if there are any duplicate vertices in the list of corners. Note that the last (additional) corner has not been set yet. */
 
-      int marked_duplicate_indices[actual_number_of_corners];
+      int *marked_duplicate_indices = (int*) Malloc(actual_number_of_corners*sizeof(int));
       for ( int i = 0; i < actual_number_of_corners; i++ ) marked_duplicate_indices[i] = 0;
 
       int no_duplicates = 0;
@@ -476,7 +516,7 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
 
       /* Writes the unique corner vertices in a new array. */
 
-      double cell_corners_xyz_without_duplicates[(actual_number_of_corners - no_duplicates) * 3];
+      double *cell_corners_xyz_without_duplicates = (double*) Malloc(3*(actual_number_of_corners - no_duplicates)*sizeof(double));
       
       int unique_corner_number = 0;
       
@@ -495,6 +535,8 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
       
       actual_number_of_corners = actual_number_of_corners - no_duplicates;
 
+      if ( no_duplicates != 0 ) no_of_cells_with_duplicates += 1;
+
       /* If there are less than three corners in the cell left after removing duplicates, it is unusable and considered degenerate. No area can be computed. */
       
       if ( actual_number_of_corners < 3 )
@@ -504,12 +546,10 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
 
           continue;
         }
-      
-      if ( no_duplicates != 0 ) no_of_cells_with_duplicates += 1;
 
       /* We are creating a closed polygon/cell by setting the additional last corner to be the same as the first one. */
 
-      double cell_corners_xyz[(actual_number_of_corners + 1) * 3];
+      double *cell_corners_xyz = (double*) Malloc(3*(actual_number_of_corners + 1)*sizeof(double));
 
       for ( int corner_no = 0; corner_no < actual_number_of_corners; corner_no++ )
         {
@@ -523,42 +563,16 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
       cell_corners_xyz[actual_number_of_corners * 3 + 1] = cell_corners_xyz[1];
       cell_corners_xyz[actual_number_of_corners * 3 + 2] = cell_corners_xyz[2];
 
-      /* Takes the first three corners/vertices of the cell and calculates the unit normal via determinants. */
-      
-      corner_coordinates[0] = cell_corners_xyz[0];
-      corner_coordinates[1] = cell_corners_xyz[1];
-      corner_coordinates[2] = cell_corners_xyz[2];
-
-      second_corner_coordinates[0] = cell_corners_xyz[3 + 0];
-      second_corner_coordinates[1] = cell_corners_xyz[3 + 1];
-      second_corner_coordinates[2] = cell_corners_xyz[3 + 2];
-
-      third_corner_coordinates[0] = cell_corners_xyz[6 + 0];
-      third_corner_coordinates[1] = cell_corners_xyz[6 + 1];
-      third_corner_coordinates[2] = cell_corners_xyz[6 + 2];
-      
-      find_unit_normal(corner_coordinates, second_corner_coordinates, third_corner_coordinates, p_surface_normal_of_the_cell);
-
-      /* The surface normal is used to choose the coordinate to ignore. */
-
-      double abs_x = fabs(surface_normal_of_the_cell[0]);
-      double abs_y = fabs(surface_normal_of_the_cell[1]);
-      double abs_z = fabs(surface_normal_of_the_cell[2]);
-
-      coordinate_to_ignore = 3;
-
-      if (abs_x > abs_y){
-	if (abs_x > abs_z) coordinate_to_ignore = 1;
-      } else {
-	if (abs_y > abs_z) coordinate_to_ignore = 2;
-      }
+      int coordinate_to_ignore = find_coordinate_to_ignore(cell_corners_xyz);
      
       /* The remaining two-dimensional coordinates are extracted into one array for all the cell's corners and into one array for the center point. */
 
-      double cell_corners_plane_projection[(actual_number_of_corners +1) * 2];
+      double *cell_corners_plane_projection = (double*) Malloc(2*(actual_number_of_corners +1)*sizeof(double));
       
-      /* The following projection on the plane that two coordinate axes lie on changes the arrangement of the polygon vertices if the coordinate to be ignored along the third axis is smaller than 0.
-	 In this case, the result of the computation of the orientation of vertices needs to be inverted. Clockwise becomes counterclockwise and vice versa. */
+      /* The following projection on the plane that two coordinate axes lie on changes the arrangement of
+         the polygon vertices if the coordinate to be ignored along the third axis is smaller than 0.
+	 In this case, the result of the computation of the orientation of vertices needs to be inverted.
+         Clockwise becomes counterclockwise and vice versa. */
 
       bool invert_result = false;
       if ( cell_corners_xyz[coordinate_to_ignore - 1] < 0 ) invert_result = true;
@@ -630,10 +644,16 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
             printf(" %g/%g ", grid_corner_lon[cell_no * ncorner + corner_no], grid_corner_lat[cell_no * ncorner + corner_no]);
           printf("\n");
         }
+
+      Free(cell_corners_plane_projection);
+      Free(cell_corners_xyz);
+      Free(cell_corners_xyz_without_duplicates);
+      Free(marked_duplicate_indices);
     }
 
   int no_nonunique_cells = gridsize - no_unique_center_points;
-  int no_nonconvex_cells =  (int) gridsize - no_convex_cells;
+  int no_nonconvex_cells = (int) gridsize - no_convex_cells;
+  int no_nonusable_cells = (int) gridsize - no_usable_cells;
 
   for ( int i = 2; i < ncorner; i++ )
     if ( no_cells_with_a_specific_no_of_corners[i] )
@@ -642,6 +662,9 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
   if ( no_of_cells_with_duplicates )
     cdoPrintBlue("%9d cells have duplicate vertices", no_of_cells_with_duplicates);
 
+  if ( no_nonusable_cells )
+    cdoPrintRed("%9d cells have unusable vertices", no_nonusable_cells);
+
   if ( no_nonunique_cells )
     cdoPrintRed("%9d cells are not unique", no_nonunique_cells);
   
@@ -654,7 +677,10 @@ void verify_grid(int gridtype, int gridsize, int gridno, int ngrids, int ncorner
   if ( no_of_cells_with_center_points_out_of_bounds )
     cdoPrintRed("%9d cells have their center points located outside their boundaries", no_of_cells_with_center_points_out_of_bounds);
 
-  cdoPrint("");
+  // cdoPrint("");
+
+  Free(no_cells_with_a_specific_no_of_corners);
+  Free(cell_corners_xyz_open_cell);
 }
 
 
@@ -668,9 +694,9 @@ void *Verifygrid(void *argument)
 
   int operatorID = cdoOperatorID();
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
 
   int ngrids = vlistNgrids(vlistID);
   for ( int gridno = 0; gridno < ngrids; ++gridno )
@@ -768,11 +794,11 @@ void *Verifygrid(void *argument)
             cdoPrintBlue("Grid consists of %d points (type: %s)", gridsize, gridNamePtr(gridtype));
           else
             cdoPrintBlue("Grid no %u (of %u) consists of %d points (type: %s)", gridno + 1, ngrids, gridsize, gridNamePtr(gridtype));
-          cdoPrint("");
+          // cdoPrint("");
         }
     }
 
-  streamClose(streamID);
+  pstreamClose(streamID);
   
   cdoFinish();
 
diff --git a/src/Vertcum.c b/src/Vertcum.cc
similarity index 87%
rename from src/Vertcum.c
rename to src/Vertcum.cc
index 090c3e0..fba71d5 100644
--- a/src/Vertcum.c
+++ b/src/Vertcum.cc
@@ -64,20 +64,22 @@ void *Vertcum(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
                   cdoOperatorAdd("vertcum",    0,  0, NULL);
   int VERTCUMHL = cdoOperatorAdd("vertcumhl",  0,  0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars = vlistNvars(vlistID1);
-  int *varnmiss[nvars];
-  double **vardata1[nvars];
-  double **vardata2[nvars];
+  int **varnmiss = (int**) Malloc(nvars*sizeof(int*));
+  double ***vardata1 = (double***) Malloc(nvars*sizeof(double**));
+  double ***vardata2 = (double***) Malloc(nvars*sizeof(double**));
 
   int zaxisIDhl = -1;
 
@@ -105,9 +107,10 @@ void *Vertcum(void *argument)
                       zaxisInqVct(zaxisID, vct);
 
                       zaxisIDhl = zaxisCreate(ZAXIS_HYBRID_HALF, nlevshl);
-                      double levels[nlevshl];
+                      double *levels = (double*) Malloc(nlevshl*sizeof(double));
                       for ( levelID = 0; levelID < nlevshl; ++levelID ) levels[levelID] = levelID+1;
                       zaxisDefLevels(zaxisIDhl, levels);
+                      Free(levels);
                       zaxisDefVct(zaxisIDhl, nvct, vct);
                       vlistChangeZaxisIndex(vlistID2, i, zaxisIDhl);
                     }
@@ -141,21 +144,19 @@ void *Vertcum(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-          streamReadRecord(streamID1, vardata1[varID][levelID], &varnmiss[varID][levelID]);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+          pstreamReadRecord(streamID1, vardata1[varID][levelID], &varnmiss[varID][levelID]);
         }
 
       for ( varID = 0; varID < nvars; ++varID )
@@ -211,8 +212,8 @@ void *Vertcum(void *argument)
               for ( int i = 0; i < gridsize; ++i )
                 if ( DBL_IS_EQUAL(single[i], missval) ) nmiss++;
 
-              streamDefRecord(streamID2, varID, levelID);
-              streamWriteRecord(streamID2, single, nmiss);
+              pstreamDefRecord(streamID2, varID, levelID);
+              pstreamWriteRecord(streamID2, single, nmiss);
 	    }
 	}
 
@@ -230,8 +231,12 @@ void *Vertcum(void *argument)
       Free(varnmiss[varID]);
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  Free(vardata1);
+  Free(vardata2);
+  Free(varnmiss);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Vertintap.c b/src/Vertintap.cc
similarity index 92%
rename from src/Vertintap.c
rename to src/Vertintap.cc
index 460663c..5927ee8 100644
--- a/src/Vertintap.c
+++ b/src/Vertintap.cc
@@ -85,12 +85,14 @@ void *Vertintap(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   int AP2PL     = cdoOperatorAdd("ap2pl",     func_pl, type_lin, "pressure levels in pascal");
   int AP2PLX    = cdoOperatorAdd("ap2plx",    func_pl, type_lin, "pressure levels in pascal");
   int AP2HL     = cdoOperatorAdd("ap2hl",     func_hl, type_lin, "height levels in meter");
   int AP2HLX    = cdoOperatorAdd("ap2hlx",    func_hl, type_lin, "height levels in meter");
   int AP2PL_LP  = cdoOperatorAdd("ap2pl_lp",  func_pl, type_log, "pressure levels in pascal");
   int AP2PLX_LP = cdoOperatorAdd("ap2plx_lp", func_pl, type_log, "pressure levels in pascal");
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc   = cdoOperatorF1(operatorID);
@@ -144,9 +146,9 @@ void *Vertintap(void *argument)
       plev  = (double *) lista_dataptr(flista);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -221,11 +223,11 @@ void *Vertintap(void *argument)
         }
     }
   
-  bool vars[nvars];
-  double *vardata1[nvars];
-  double *vardata2[nvars];
-  int *varnmiss[nvars];
-  bool varinterp[nvars];
+  bool *vars = (bool*) Malloc(nvars*sizeof(bool));
+  bool *varinterp = (bool*) Malloc(nvars*sizeof(bool));
+  double **vardata1 = (double**) Malloc(nvars*sizeof(double*));
+  double **vardata2 = (double**) Malloc(nvars*sizeof(double*));
+  int **varnmiss = (int**) Malloc(nvars*sizeof(int*));
 
   int maxlev = nhlevh > nplev ? nhlevh : nplev;
 
@@ -237,7 +239,7 @@ void *Vertintap(void *argument)
     {
       int nlev = zaxisInqSize(zaxisIDh);
       if ( nlev != nhlev ) cdoAbort("Internal error, wrong number of height level!");
-      double levels[nlev];
+      double *levels = (double*) Malloc(nlev*sizeof(double));
       zaxisInqLevels(zaxisIDh, levels);
 
       for ( int ilev = 0; ilev < nlev; ++ilev )
@@ -248,6 +250,8 @@ void *Vertintap(void *argument)
 	      break;
 	    }
 	}
+
+      Free(levels);
     }
 
   if ( zaxisIDh != -1 && gridsize > 0 )
@@ -262,7 +266,7 @@ void *Vertintap(void *argument)
 
   if ( operfunc == func_hl )
     {
-      double phlev[nplev];
+      double *phlev =(double*) Malloc(nplev*sizeof(double));
       height2pressure(phlev, plev, nplev);
 
       if ( cdoVerbose )
@@ -270,6 +274,7 @@ void *Vertintap(void *argument)
 	  cdoPrint("level = %d   height = %g   pressure = %g", i+1, plev[i], phlev[i]);
 
       memcpy(plev, phlev, nplev*sizeof(double));
+      Free(phlev);
     }
 
   if ( opertype == type_log )
@@ -316,12 +321,12 @@ void *Vertintap(void *argument)
 	vlistDefVarTsteptype(vlistID2, varID, TSTEP_INSTANT);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( varID = 0; varID < nvars; ++varID )
 	{
@@ -332,11 +337,11 @@ void *Vertintap(void *argument)
 	}
 
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  /*
 	  zaxisID  = vlistInqVarZaxis(vlistID1, varID);
 	  nlevel   = zaxisInqSize(zaxisID);
@@ -349,7 +354,7 @@ void *Vertintap(void *argument)
 	  offset   = gridsize*levelID;
 	  single1  = vardata1[varID] + offset;
 
-	  streamReadRecord(streamID1, single1, &varnmiss[varID][levelID]);
+	  pstreamReadRecord(streamID1, single1, &varnmiss[varID][levelID]);
 
 	  vars[varID] = true;
 	}
@@ -444,8 +449,8 @@ void *Vertintap(void *argument)
 		{
 		  offset   = gridsize*levelID;
 		  single2  = vardata2[varID] + offset;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, single2, varnmiss[varID][levelID]);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, single2, varnmiss[varID][levelID]);
 		}
 	    }
 	}
@@ -453,8 +458,8 @@ void *Vertintap(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
@@ -470,6 +475,12 @@ void *Vertintap(void *argument)
   if ( dpress     ) Free(dpress);
   if ( vct        ) Free(vct);
 
+  Free(vars);
+  Free(varinterp);
+  Free(vardata1);
+  Free(vardata2);
+  Free(varnmiss);
+
   lista_destroy(flista);
 
   cdoFinish();
diff --git a/src/Vertintml.c b/src/Vertintml.cc
similarity index 97%
rename from src/Vertintml.c
rename to src/Vertintml.cc
index 696d132..f816046 100644
--- a/src/Vertintml.c
+++ b/src/Vertintml.cc
@@ -74,7 +74,7 @@ void *Vertintml(void *argument)
   char varname[CDI_MAX_NAME], stdname[CDI_MAX_NAME];
   double minval, maxval;
   double *sgeopot = NULL;
-  gribcode_t gribcodes = {0};
+  gribcode_t gribcodes = {};
   lista_t *flista = lista_new(FLT_LISTA);
 
   cdoInitialize(argument);
@@ -139,9 +139,9 @@ void *Vertintml(void *argument)
       plev  = (double *) lista_dataptr(flista);
     }
   
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -443,21 +443,20 @@ void *Vertintml(void *argument)
       if ( !(suma>0&&sumb>0) ) cdoWarning("VCT is empty!");
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       for ( varID = 0; varID < nvars; ++varID ) vars[varID] = false;
 
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  //gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  int zaxisID  = vlistInqVarZaxis(vlistID1, varID);
 	  int nlevel   = zaxisInqSize(zaxisID);
@@ -474,7 +473,7 @@ void *Vertintml(void *argument)
 	  size_t offset  = gridsize*levelID;
 	  double *single = vardata1[varID] + offset;
 
-	  streamReadRecord(streamID1, single, &varnmiss[varID][levelID]);
+	  pstreamReadRecord(streamID1, single, &varnmiss[varID][levelID]);
 	  vars[varID] = true;
 	}
 
@@ -613,8 +612,8 @@ void *Vertintml(void *argument)
 		  //gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 		  size_t offset  = gridsize*levelID;
 		  double *single = vardata2[varID] + offset;
-		  streamDefRecord(streamID2, varID, levelID);
-		  streamWriteRecord(streamID2, single, varnmiss[varID][levelID]);
+		  pstreamDefRecord(streamID2, varID, levelID);
+		  pstreamWriteRecord(streamID2, single, varnmiss[varID][levelID]);
 		}
 	    }
 	}
@@ -622,8 +621,8 @@ void *Vertintml(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( varID = 0; varID < nvars; varID++ )
     {
diff --git a/src/Vertstat.c b/src/Vertstat.cc
similarity index 83%
rename from src/Vertstat.c
rename to src/Vertstat.cc
index 185e884..bf55642 100644
--- a/src/Vertstat.c
+++ b/src/Vertstat.cc
@@ -18,6 +18,7 @@
 /*
    This module contains the following operators:
 
+      Vertstat   vertrange       Vertical range
       Vertstat   vertmin         Vertical minimum
       Vertstat   vertmax         Vertical maximum
       Vertstat   vertsum         Vertical sum
@@ -169,31 +170,35 @@ void *Vertstat(void *argument)
 
   cdoInitialize(argument);
 
-                 cdoOperatorAdd("vertmin",  func_min,  0, NULL);
-                 cdoOperatorAdd("vertmax",  func_max,  0, NULL);
-                 cdoOperatorAdd("vertsum",  func_sum,  0, NULL);
-  int VERTINT  = cdoOperatorAdd("vertint",  func_sum,  1, NULL);
-                 cdoOperatorAdd("vertmean", func_mean, 1, NULL);
-                 cdoOperatorAdd("vertavg",  func_avg,  1, NULL);
-                 cdoOperatorAdd("vertvar",  func_var,  1, NULL);
-                 cdoOperatorAdd("vertvar1", func_var1, 1, NULL);
-                 cdoOperatorAdd("vertstd",  func_std,  1, NULL);
-                 cdoOperatorAdd("vertstd1", func_std1, 1, NULL);
+  // clang-format off
+                 cdoOperatorAdd("vertrange", func_range, 0, NULL);
+                 cdoOperatorAdd("vertmin",   func_min,   0, NULL);
+                 cdoOperatorAdd("vertmax",   func_max,   0, NULL);
+                 cdoOperatorAdd("vertsum",   func_sum,   0, NULL);
+  int VERTINT  = cdoOperatorAdd("vertint",   func_sum,   1, NULL);
+                 cdoOperatorAdd("vertmean",  func_mean,  1, NULL);
+                 cdoOperatorAdd("vertavg",   func_avg,   1, NULL);
+                 cdoOperatorAdd("vertvar",   func_var,   1, NULL);
+                 cdoOperatorAdd("vertvar1",  func_var1,  1, NULL);
+                 cdoOperatorAdd("vertstd",   func_std,   1, NULL);
+                 cdoOperatorAdd("vertstd1",  func_std1,  1, NULL);
 
   int operatorID   = cdoOperatorID();
   int operfunc     = cdoOperatorF1(operatorID);
   bool needWeights = cdoOperatorF2(operatorID);
 
+  bool lrange  = operfunc == func_range;
   bool lmean   = operfunc == func_mean || operfunc == func_avg;
   bool lstd    = operfunc == func_std || operfunc == func_std1;
   bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor  = operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
 
   //int applyWeights = lmean;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   vlistClearFlag(vlistID1);
   int nvars = vlistNvars(vlistID1);
@@ -201,7 +206,7 @@ void *Vertstat(void *argument)
     vlistDefFlag(vlistID1, varID, 0, TRUE);
 
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
@@ -212,7 +217,7 @@ void *Vertstat(void *argument)
 
   int nzaxis = vlistNzaxis(vlistID1);
   int nlev, zaxisID;
-  vert_t vert[nzaxis];
+  vert_t *vert = (vert_t*) Malloc(nzaxis*sizeof(vert_t));
   if ( needWeights )
     {
       bool genbounds = false;
@@ -246,9 +251,8 @@ void *Vertstat(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
 
@@ -259,7 +263,7 @@ void *Vertstat(void *argument)
   field_type *vars1 = (field_type*) Malloc(nvars*sizeof(field_type));
   field_type *samp1 = (field_type*) Malloc(nvars*sizeof(field_type));
   field_type *vars2 = NULL;
-  if ( lvarstd )
+  if ( lvarstd || lrange )
     vars2 = (field_type*) Malloc(nvars*sizeof(field_type));
 
   for ( varID = 0; varID < nvars; varID++ )
@@ -281,7 +285,7 @@ void *Vertstat(void *argument)
       samp1[varID].nmiss   = 0;
       samp1[varID].missval = missval;
       samp1[varID].ptr     = NULL;
-      if ( lvarstd )
+      if ( lvarstd || lrange )
 	{
 	  field_init(&vars2[varID]);
 	  vars2[varID].grid    = gridID;
@@ -292,16 +296,17 @@ void *Vertstat(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
           vars1[varID].nsamp++;
+          if ( lrange ) vars2[varID].nsamp++;
 	  gridsize = gridInqSize(vars1[varID].grid);
 	  zaxisID  = vars1[varID].zaxis;
 	  nlev = zaxisInqSize(zaxisID);
@@ -331,8 +336,14 @@ void *Vertstat(void *argument)
 
 	  if ( levelID == 0 )
 	    {
-	      streamReadRecord(streamID1, vars1[varID].ptr, &nmiss);
+	      pstreamReadRecord(streamID1, vars1[varID].ptr, &nmiss);
 	      vars1[varID].nmiss = (size_t)nmiss;
+              if ( lrange )
+                {
+                  vars2[varID].nmiss = (size_t)nmiss;
+                  for ( int i = 0; i < gridsize; i++ )
+                    vars2[varID].ptr[i] = vars1[varID].ptr[i];
+                }
 
 	      if ( operatorID == VERTINT && IS_NOT_EQUAL(layer_thickness, 1.0) ) farcmul(&vars1[varID], layer_thickness);
 	      if ( lmean && IS_NOT_EQUAL(layer_weight, 1.0) ) farcmul(&vars1[varID], layer_weight);
@@ -364,7 +375,7 @@ void *Vertstat(void *argument)
 	    }
 	  else
 	    {
-	      streamReadRecord(streamID1, field.ptr, &nmiss);
+	      pstreamReadRecord(streamID1, field.ptr, &nmiss);
               field.nmiss   = (size_t)nmiss;
 	      field.grid    = vars1[varID].grid;
 	      field.missval = vars1[varID].missval;
@@ -399,6 +410,11 @@ void *Vertstat(void *argument)
                       farsum(&vars1[varID], field);
                     }
 		}
+              else if ( lrange )
+                {
+                  farmin(&vars2[varID], field);
+                  farmax(&vars1[varID], field);
+                }
 	      else
 		{
 		  farfun(&vars1[varID], field, operfunc);
@@ -434,9 +450,13 @@ void *Vertstat(void *argument)
 			farvar(&vars1[varID], vars2[varID], samp1[varID], divisor);
 		    }
 		}
+              else if ( lrange )
+                {
+                  farsub(&vars1[varID], vars2[varID]);
+                }
 
-	      streamDefRecord(streamID2, varID, 0);
-	      streamWriteRecord(streamID2, vars1[varID].ptr, (int)vars1[varID].nmiss);
+	      pstreamDefRecord(streamID2, varID, 0);
+	      pstreamWriteRecord(streamID2, vars1[varID].ptr, (int)vars1[varID].nmiss);
 	      vars1[varID].nsamp = 0;
 	    }
 	}
@@ -461,8 +481,10 @@ void *Vertstat(void *argument)
     for ( int index = 0; index < nzaxis; ++index )
       if ( vert[index].numlevel > 1 )  Free(vert[index].weights);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  Free(vert);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   vlistDestroy(vlistID2);
 
diff --git a/src/Vertwind.c b/src/Vertwind.cc
similarity index 89%
rename from src/Vertwind.c
rename to src/Vertwind.cc
index b5049d5..73f9bbc 100644
--- a/src/Vertwind.c
+++ b/src/Vertwind.cc
@@ -45,9 +45,9 @@ void *Vertwind(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
 
   vlist_check_gridsize(vlistID1);
 
@@ -142,7 +142,7 @@ void *Vertwind(void *argument)
     vlistDefFlag(vlistID1, omegaID, levelID, TRUE);
 
   int vlistID2 = vlistCreate();
-  vlistCopyFlag(vlistID2, vlistID1);
+  cdoVlistCopyFlag(vlistID2, vlistID1);
   vlistDefVarCode(vlistID2, 0, 40);
   vlistDefVarName(vlistID2, 0, "W");
   vlistDefVarLongname(vlistID2, 0, "Vertical velocity");
@@ -153,30 +153,30 @@ void *Vertwind(void *argument)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
      
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  size_t offset = (size_t)levelID*gridsize;
 
 	  if      ( varID == tempID )
-	    streamReadRecord(streamID1, temp+offset, &nmiss);
+	    pstreamReadRecord(streamID1, temp+offset, &nmiss);
 	  else if ( varID == sqID )
-	    streamReadRecord(streamID1, sq+offset, &nmiss);
+	    pstreamReadRecord(streamID1, sq+offset, &nmiss);
 	  else if ( varID == omegaID )
-	    streamReadRecord(streamID1, omega+offset, &nmiss);
+	    pstreamReadRecord(streamID1, omega+offset, &nmiss);
 	  else if ( varID == psID && zaxisInqType(zaxisID) == ZAXIS_HYBRID )
-	    streamReadRecord(streamID1, ps_prog, &nmiss);
+	    pstreamReadRecord(streamID1, ps_prog, &nmiss);
 	}
 
       if ( zaxisInqType(zaxisID) == ZAXIS_HYBRID )
@@ -219,15 +219,15 @@ void *Vertwind(void *argument)
             if ( DBL_IS_EQUAL(wms[offset+i],missval_out) )
 	      nmiss_out++;
 
-	  streamDefRecord(streamID2, 0, levelID);
-	  streamWriteRecord(streamID2, wms+offset, nmiss_out);
+	  pstreamDefRecord(streamID2, 0, levelID);
+	  pstreamWriteRecord(streamID2, wms+offset, nmiss_out);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
  
   vlistDestroy(vlistID2);
 
diff --git a/src/Wct.c b/src/Wct.cc
similarity index 85%
rename from src/Wct.c
rename to src/Wct.cc
index 8446ee5..9760f47 100644
--- a/src/Wct.c
+++ b/src/Wct.cc
@@ -90,11 +90,11 @@ void *Wct(void *argument)
   cdoInitialize(argument);
   cdoOperatorAdd("wct", 0, 0, NULL);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
 
@@ -127,28 +127,28 @@ void *Wct(void *argument)
   vlistDefVarLongname(vlistID3, varID3, WCT_LONGNAME);
   vlistDefVarUnits(vlistID3, varID3, WCT_UNITS);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
 
-  streamDefVlist(streamID3, vlistID3);
+  pstreamDefVlist(streamID3, vlistID3);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
-      nrecs2 = streamInqTimestep(streamID2, tsID);
+      nrecs2 = pstreamInqTimestep(streamID2, tsID);
       if ( nrecs2 == 0 )
         cdoAbort("Input streams have different number of timesteps!");
 
       taxisCopyTimestep(taxisID3, taxisID1);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID1, &levelID1);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID1, &levelID1);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
           
-	  streamInqRecord(streamID2, &varID2, &levelID2);
-	  streamReadRecord(streamID2, field2.ptr, &nmiss);
+	  pstreamInqRecord(streamID2, &varID2, &levelID2);
+	  pstreamReadRecord(streamID2, field2.ptr, &nmiss);
           field2.nmiss = (size_t) nmiss;
 	  
 	  if ( varID1 != varID2 || levelID1 != levelID2 )
@@ -165,16 +165,16 @@ void *Wct(void *argument)
 
 	  farexpr(&field1, field2, windchillTemperature);
 	  
-	  streamDefRecord(streamID3, varID3, levelID1);
-	  streamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
+	  pstreamDefRecord(streamID3, varID3, levelID1);
+	  pstreamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field1.ptr ) Free(field1.ptr);
   if ( field2.ptr ) Free(field2.ptr);
diff --git a/src/Wind.c b/src/Wind.cc
similarity index 91%
rename from src/Wind.c
rename to src/Wind.cc
index 7aff47c..43d82ae 100644
--- a/src/Wind.c
+++ b/src/Wind.cc
@@ -57,17 +57,19 @@ void *Wind(void *argument)
 
   bool lcopy = UNCHANGED_RECORD;
 
+  // clang-format off
   int UV2DV  = cdoOperatorAdd("uv2dv",  0, 0, NULL);
   int UV2DVL = cdoOperatorAdd("uv2dvl", 0, 0, NULL);
   int DV2UV  = cdoOperatorAdd("dv2uv",  0, 0, NULL);
   int DV2UVL = cdoOperatorAdd("dv2uvl", 0, 0, NULL);
   int DV2PS  = cdoOperatorAdd("dv2ps",  0, 0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -293,9 +295,9 @@ void *Wind(void *argument)
 	}
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
@@ -314,19 +316,18 @@ void *Wind(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( (varID1 != -1 && varID2 != -1) && (varID == varID1 || varID == varID2) )
 	    {
-	      streamReadRecord(streamID1, array1, &nmiss);
+	      pstreamReadRecord(streamID1, array1, &nmiss);
 	      if ( nmiss ) cdoAbort("Missing values unsupported for spectral data!");
 
 	      gridsize = gridInqSize(gridID1);
@@ -339,15 +340,15 @@ void *Wind(void *argument)
 	    }   
 	  else
 	    {
-	      streamDefRecord(streamID2, varID, levelID);
+	      pstreamDefRecord(streamID2, varID, levelID);
 	      if ( lcopy )
 		{
-		  streamCopyRecord(streamID2, streamID1);
+		  pstreamCopyRecord(streamID2, streamID1);
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, array1, &nmiss);
-		  streamWriteRecord(streamID2, array1, nmiss);
+		  pstreamReadRecord(streamID1, array1, &nmiss);
+		  pstreamWriteRecord(streamID2, array1, nmiss);
 		}
 	    }
 	}
@@ -370,14 +371,14 @@ void *Wind(void *argument)
 	      for ( levelID = 0; levelID < nlev; levelID++ )
 		{
 		  offset = gridsize*levelID;
-		  streamDefRecord(streamID2, varID2, levelID);
-		  streamWriteRecord(streamID2, ovar2+offset, 0);
+		  pstreamDefRecord(streamID2, varID2, levelID);
+		  pstreamWriteRecord(streamID2, ovar2+offset, 0);
 		}
 	      for ( levelID = 0; levelID < nlev; levelID++ )
 		{
 		  offset = gridsize*levelID;
-		  streamDefRecord(streamID2, varID1, levelID);
-		  streamWriteRecord(streamID2, ovar1+offset, 0);
+		  pstreamDefRecord(streamID2, varID1, levelID);
+		  pstreamWriteRecord(streamID2, ovar1+offset, 0);
 		}
 	    }
 	  else if ( operatorID == DV2UV || operatorID == DV2UVL )
@@ -385,14 +386,14 @@ void *Wind(void *argument)
 	      for ( levelID = 0; levelID < nlev; levelID++ )
 		{
 		  offset = gridsize*levelID;
-		  streamDefRecord(streamID2, varID1, levelID);
-		  streamWriteRecord(streamID2, ovar1+offset, 0);
+		  pstreamDefRecord(streamID2, varID1, levelID);
+		  pstreamWriteRecord(streamID2, ovar1+offset, 0);
 		}
 	      for ( levelID = 0; levelID < nlev; levelID++ )
 		{
 		  offset = gridsize*levelID;
-		  streamDefRecord(streamID2, varID2, levelID);
-		  streamWriteRecord(streamID2, ovar2+offset, 0);
+		  pstreamDefRecord(streamID2, varID2, levelID);
+		  pstreamWriteRecord(streamID2, ovar2+offset, 0);
 		}
 	    }
 	}
@@ -400,8 +401,8 @@ void *Wind(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array1 ) Free(array1);
 
diff --git a/src/WindTrans.c b/src/WindTrans.cc
similarity index 96%
rename from src/WindTrans.c
rename to src/WindTrans.cc
index 3226c1f..41d4fd5 100644
--- a/src/WindTrans.c
+++ b/src/WindTrans.cc
@@ -242,9 +242,9 @@ void *DestaggerUV()
 
   if ( cdoDebugExt ) cdoPrint("destagGridOffsets = (%01.1f,%01.1f)", destagGridOffsets[0],destagGridOffsets[1]);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -460,7 +460,7 @@ void *DestaggerUV()
       ovar = (double *) Malloc(gridsize*sizeof(double));
     } // end of  if (!lcopy)
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
   if ( varID1stg != CDI_UNDEFID && varID2stg != CDI_UNDEFID )
     {
@@ -468,14 +468,14 @@ void *DestaggerUV()
       vlistChangeVarGrid(vlistID2, varID2stg, gridID0);   // set the variable onto the non-staggered grid
     }
 
-  streamDefVlist(streamID2, vlistID2);  // from this point the stream is using a different vlistID !!!!!
-  vlistID2 = streamInqVlist(streamID2); // refresh it
+  pstreamDefVlist(streamID2, vlistID2);  // from this point the stream is using a different vlistID !!!!!
+  vlistID2 = pstreamInqVlist(streamID2); // refresh it
   
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       if ( !lcopy && cdoDebugExt )
         {
@@ -485,7 +485,7 @@ void *DestaggerUV()
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
           int param = vlistInqVarParam(vlistID1, varID);
           int pnum, pcat, pdis;
           cdiDecodeParam(param, &pnum, &pcat, &pdis);
@@ -531,7 +531,7 @@ void *DestaggerUV()
               if (UorV>=0)  // re-check again since it could mean that current record with U or V is not staggered
                 {
                   int nmiss;
-                  streamReadRecord(streamID1, ivar, &nmiss);
+                  pstreamReadRecord(streamID1, ivar, &nmiss);
                   // read the original record with staggered u or v
                   gridsize = gridInqSize(gridID1);
 
@@ -557,25 +557,25 @@ void *DestaggerUV()
                   // cdo uvDestag: Grid info: (dxU; dyU) = (0.00; 0.05); (dxV; dyV) = (0.05; 0.00)
                   if ( cdoDebugExt>=20 ) cdoPrint("Setting GRID id from: %d => to: %d", vlistInqVarGrid(vlistID1, varID), vlistInqVarGrid(vlistID2, varID) );
 
-                  streamDefRecord(streamID2, varID, levelID);
-                  streamWriteRecord(streamID2, ovar, nmiss);
+                  pstreamDefRecord(streamID2, varID, levelID);
+                  pstreamWriteRecord(streamID2, ovar, nmiss);
                 }
               else
                 {   // copy the record to the output unchanged...
-                  streamDefRecord(streamID2, varID, levelID);
+                  pstreamDefRecord(streamID2, varID, levelID);
                   if ( cdoDebugExt>=20 )
                     cdoPrint("Stream-copy data record:    %05d (timestep:%d); Var.id [%4d]; (code=%3d; ltype=%3d; level=%4d; levelID=%3d)",
                              recID, tsID, varID, code, ltype, level, levelID);
-                  streamCopyRecord(streamID2, streamID1);
+                  pstreamCopyRecord(streamID2, streamID1);
                 }
             }  // end of: if (!lcopy)
           else
             {   // copy the record to the output unchanged...
-              streamDefRecord(streamID2, varID, levelID);
+              pstreamDefRecord(streamID2, varID, levelID);
               if ( cdoDebugExt>=20 )
                 cdoPrint("Stream-copy data record:    %05d (timestep:%d); Var.id [%4d]; (code=%3d; ltype=%3d; level=%4d; levelID=%3d)",
                          recID, tsID, varID, code, ltype, level, levelID);
-              streamCopyRecord(streamID2, streamID1);
+              pstreamCopyRecord(streamID2, streamID1);
             }
 
         } // end of for ( recID = ...
@@ -583,8 +583,8 @@ void *DestaggerUV()
         tsID++;
     } // end of while ( (nrecs ...
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( ivar ) Free(ivar);
   if ( ovar ) Free(ovar);
@@ -1103,9 +1103,9 @@ void *TransformUV(int operatorID)
 	chcodes[i] = parameter2int(operatorArgv()[i]);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int nvars = vlistNvars(vlistID1);
@@ -1190,24 +1190,23 @@ void *TransformUV(int operatorID)
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2); // from this point the stream is using a different vlistID !!!!!
-  vlistID2 = streamInqVlist(streamID2); // refresh it
+  pstreamDefVlist(streamID2, vlistID2); // from this point the stream is using a different vlistID !!!!!
+  vlistID2 = pstreamInqVlist(streamID2); // refresh it
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       if ( cdoDebugExt )
         cdoPrint("About to read U & V data to memory. Other data will be stream-copied to the output file.");
 
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID1, &varID, &levelID);
+          pstreamInqRecord(streamID1, &varID, &levelID);
           code    = vlistInqVarCode(vlistID1, varID);
           zaxisID = vlistInqVarZaxis(vlistID1, varID);
           ltype   = zaxis2ltype(zaxisID);
@@ -1218,12 +1217,12 @@ void *TransformUV(int operatorID)
               recVarID[recID]   = -1;  // We will NOT record/store this field in memory
               recLevelID[recID] = -1;
               // We will stream-copy this data
-              streamDefRecord(streamID2, varID, levelID);
+              pstreamDefRecord(streamID2, varID, levelID);
               //if ( cdoDebugExt>10 ) cdoPrint("Copying data record.. %05d (timestep:%05d)", recID, tsID);
               if ( cdoDebugExt>=20 )
                 cdoPrint("Stream-copy data record:    %05d (timestep:%d); Var.id [%4d]; (code=%3d; ltype=%3d; level=%4d; levelID=%3d)",
                          recID, tsID, varID, code, ltype, level, levelID);
-              streamCopyRecord(streamID2, streamID1);  // cannot do this ! We have to set the flag uvGridRelative = 0
+              pstreamCopyRecord(streamID2, streamID1);  // cannot do this ! We have to set the flag uvGridRelative = 0
             }
           else
             {
@@ -1235,7 +1234,7 @@ void *TransformUV(int operatorID)
               if ( cdoDebugExt>=10 )
                 cdoPrint("Memmory-read data record:   %05d (timestep:%d); Var.id [%4d]; (code=%3d; ltype=%3d; level=%4d; levelID=%3d)",
                          recID, tsID, varID, code, ltype, level, levelID);
-              streamReadRecord(streamID1, single, &varnmiss[varID][levelID]);
+              pstreamReadRecord(streamID1, single, &varnmiss[varID][levelID]);
               if ( varnmiss[varID][levelID] )
                 cdoAbort("Missing values unsupported for this operator!");
             }
@@ -1414,16 +1413,16 @@ void *TransformUV(int operatorID)
               offset   = gridsize*levelID;
               single   = vardata[varID] + offset;
 
-              streamDefRecord(streamID2, varID,  levelID);
-              streamWriteRecord(streamID2, single, varnmiss[varID][levelID]);
+              pstreamDefRecord(streamID2, varID,  levelID);
+              pstreamWriteRecord(streamID2, single, varnmiss[varID][levelID]);
             }
         }
 
       tsID++;
-    } // end of while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+    } // end of while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
   
   if ( gridIDcurvl != -1 )
     gridDestroy(gridIDcurvl);  // at the end must Free the allocated curvilinear grid definition...
@@ -1447,10 +1446,12 @@ void *WindTrans(void *argument)
 {
   cdoInitialize(argument);
 
-  UVDESTAG        = cdoOperatorAdd("uvDestag",  0, 0, NULL);
-  ROTUVNORTH      = cdoOperatorAdd("rotuvNorth",  0, 0, NULL);
-  ROTUVN          = cdoOperatorAdd("rotuvN",  0, 0, NULL);
-  PROJUVLATLON    = cdoOperatorAdd("projuvLatLon",  0, 0, NULL);  // Cylindrical Equidistant projection
+  // clang-format off
+  UVDESTAG     = cdoOperatorAdd("uvDestag",  0, 0, NULL);
+  ROTUVNORTH   = cdoOperatorAdd("rotuvNorth",  0, 0, NULL);
+  ROTUVN       = cdoOperatorAdd("rotuvN",  0, 0, NULL);
+  PROJUVLATLON = cdoOperatorAdd("projuvLatLon",  0, 0, NULL);  // Cylindrical Equidistant projection
+  // clang-format on
 
   int operatorID = cdoOperatorID();
 
diff --git a/src/Writegrid.c b/src/Writegrid.cc
similarity index 93%
rename from src/Writegrid.c
rename to src/Writegrid.cc
index 086a327..e410adf 100644
--- a/src/Writegrid.c
+++ b/src/Writegrid.cc
@@ -32,9 +32,9 @@ void *Writegrid(void *argument)
 {
   cdoInitialize(argument);
 
-  int streamID = streamOpenRead(cdoStreamName(0));
+  int streamID = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID = streamInqVlist(streamID);
+  int vlistID = pstreamInqVlist(streamID);
   int gridID  = vlistGrid(vlistID, 0);
 
   int gridtype = gridInqType(gridID);
@@ -61,7 +61,7 @@ void *Writegrid(void *argument)
       
   writeNCgrid(cdoStreamName(1)->args, gridID, mask);
 
-  streamClose(streamID);
+  pstreamClose(streamID);
 
   if ( mask ) Free(mask);
 
diff --git a/src/Writerandom.c b/src/Writerandom.cc
similarity index 81%
rename from src/Writerandom.c
rename to src/Writerandom.cc
index 5e8f9fa..b88469f 100644
--- a/src/Writerandom.c
+++ b/src/Writerandom.cc
@@ -36,27 +36,26 @@ void *Writerandom(void *argument)
 
   cdoInitialize(argument);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
+      pstreamDefTimestep(streamID2, tsID);
 
-      streamDefTimestep(streamID2, tsID);
-
-      double **recdata    = (double**) Malloc(nrecs*sizeof(double*));
+      double **recdata = (double**) Malloc(nrecs*sizeof(double*));
       int *recvarID   = (int*) Malloc(nrecs*sizeof(int));
       int *reclevelID = (int*) Malloc(nrecs*sizeof(int));
       int *recnmiss   = (int*) Malloc(nrecs*sizeof(int));
@@ -64,12 +63,12 @@ void *Writerandom(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
 	  recvarID[recID] = varID;
 	  reclevelID[recID] = levelID;
 	  recdata[recID] = (double*) Malloc(gridsize*sizeof(double));
-	  streamReadRecord(streamID1, recdata[recID], &recnmiss[recID]);
+	  pstreamReadRecord(streamID1, recdata[recID], &recnmiss[recID]);
 	}
 
       for ( int recID = 0; recID < nrecs; recID++ ) recindex[recID] = -1;
@@ -104,8 +103,8 @@ void *Writerandom(void *argument)
 	  varID    = recvarID[rindex];
 	  levelID  = reclevelID[rindex];
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, recdata[rindex], recnmiss[rindex]);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, recdata[rindex], recnmiss[rindex]);
 	}
 
       for ( int recID = 0; recID < nrecs; recID++ ) Free(recdata[recID]);
@@ -119,8 +118,8 @@ void *Writerandom(void *argument)
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/XTimstat.c b/src/XTimstat.cc
similarity index 84%
rename from src/XTimstat.c
rename to src/XTimstat.cc
index 3d1eca8..d55f397 100644
--- a/src/XTimstat.c
+++ b/src/XTimstat.cc
@@ -104,7 +104,7 @@ void *cdoReadTimestep(void *rarg)
 
   for ( int recID = 0; recID < nrecs; ++recID )
     {
-      streamInqRecord(streamID, &varID, &levelID);
+      pstreamInqRecord(streamID, &varID, &levelID);
 
       if ( tsIDnext == 1 && recinfo )
         {
@@ -113,16 +113,16 @@ void *cdoReadTimestep(void *rarg)
         }
 
       if ( CDO_Memtype == MEMTYPE_FLOAT )
-        streamReadRecordF(streamID, (float*)input_vars[varID][levelID].ptr2, &nmiss);
+        pstreamReadRecordF(streamID, (float*)input_vars[varID][levelID].ptr2, &nmiss);
       else
-        streamReadRecord(streamID, (double*)input_vars[varID][levelID].ptr2, &nmiss);
+        pstreamReadRecord(streamID, (double*)input_vars[varID][levelID].ptr2, &nmiss);
       
       input_vars[varID][levelID].nmiss2 = nmiss;
     }
 
   // timer_stop(timer_read);
 
-  num_recs = streamInqTimestep(streamID, tsIDnext);
+  num_recs = pstreamInqTimestep(streamID, tsIDnext);
 
   return ((void *) &num_recs);
 }
@@ -158,7 +158,6 @@ void *XTimstat(void *argument)
 {
   enum {HOUR_LEN=4, DAY_LEN=6, MON_LEN=8, YEAR_LEN=10};
   int timestat_date = TIMESTAT_MEAN;
-  int gridsize;
   int vdate = 0, vtime = 0;
   int vdate0 = 0, vtime0 = 0;
   int varID;
@@ -169,10 +168,10 @@ void *XTimstat(void *argument)
   int nwpv; // number of words per value; real:1  complex:2
   char indate1[DATE_LEN+1], indate2[DATE_LEN+1];
   double vfrac = 1;
-  double missval;
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("xtimmin",    func_min,   DATE_LEN, NULL);
   cdoOperatorAdd("xtimmax",    func_max,   DATE_LEN, NULL);
   cdoOperatorAdd("xtimsum",    func_sum,   DATE_LEN, NULL);
@@ -209,6 +208,7 @@ void *XTimstat(void *argument)
   bool lstd    = operfunc == func_std || operfunc == func_std1;
   bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
   int divisor  = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
 
   if ( operfunc == func_mean )
     {
@@ -228,10 +228,10 @@ void *XTimstat(void *argument)
 
   int cmplen = DATE_LEN - comparelen;
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  //int streamID1 = streamOpenRead(cdoStreamName(0)->args);
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  //int streamID1 = pstreamOpenRead(cdoStreamName(0)->args);
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   if ( cmplen == 0 ) vlistDefNtsteps(vlistID2, 1);
@@ -253,9 +253,8 @@ void *XTimstat(void *argument)
   else if ( comparelen == YEAR_LEN ) freq = "year";
   if ( freq ) cdiDefAttTxt(vlistID2, CDI_GLOBAL, "frequency", (int)strlen(freq), freq);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   if ( cdoDiag )
     {
@@ -264,7 +263,7 @@ void *XTimstat(void *argument)
       strcat(filename, "_");
       strcat(filename, cdoStreamName(1)->args);
       argument_t *fileargument = file_argument_new(filename);
-      streamID3 = streamOpenWrite(fileargument, cdoFiletype());
+      streamID3 = pstreamOpenWrite(fileargument, cdoFiletype());
       file_argument_free(fileargument);
 
       vlistID3 = vlistDuplicate(vlistID1);
@@ -281,15 +280,15 @@ void *XTimstat(void *argument)
       taxisID3 = taxisDuplicate(taxisID1);
       vlistDefTaxis(vlistID3, taxisID3);
 
-      streamDefVlist(streamID3, vlistID3);
+      pstreamDefVlist(streamID3, vlistID3);
     }
 
   dtlist_type *dtlist = dtlist_new();
   dtlist_set_stat(dtlist, timestat_date);
   dtlist_set_calendar(dtlist, taxisInqCalendar(taxisID1));
 
-  gridsize = vlistGridsizeMax(vlistID1);
-  if ( vlistNumber(vlistID1) != CDI_REAL ) gridsize *= 2;
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+  if ( vlistNumber(vlistID1) != CDI_REAL ) gridsizemax *= 2;
 
   int FIELD_MEMTYPE = 0;
   if ( CDO_Memtype == MEMTYPE_FLOAT ) FIELD_MEMTYPE = FIELD_FLT;
@@ -320,7 +319,7 @@ void *XTimstat(void *argument)
 
   int tsID  = 0;
   int otsID = 0;
-  int nrecs = streamInqTimestep(streamID1, tsID);
+  int nrecs = pstreamInqTimestep(streamID1, tsID);
   int maxrecs = nrecs;
   recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
   
@@ -373,25 +372,22 @@ void *XTimstat(void *argument)
                   int varID    = recinfo[recID].varID;
                   int levelID  = recinfo[recID].levelID;
 
-                  field_type *pvar1 = &vars1[varID][levelID];
+                  field_type *pvars1 = &vars1[varID][levelID];
                   field_type *pinput_var = &input_vars[varID][levelID];
 
-                  int nwpv     = pvar1->nwpv;
-                  int gridsize = pvar1->size;
+                  int nwpv     = pvars1->nwpv;
+                  int gridsize = pvars1->size;
                   int nmiss    = pinput_var->nmiss;
 
-                  farcpy(pvar1, *pinput_var);
-                  pvar1->nmiss = nmiss;
+                  farcpy(pvars1, *pinput_var);
+                  pvars1->nmiss = nmiss;
                   if ( nmiss > 0 || samp1[varID][levelID].ptr )
                     {
                       if ( samp1[varID][levelID].ptr == NULL )
                         samp1[varID][levelID].ptr = (double*) malloc(nwpv*gridsize*sizeof(double));
                       
                       for ( int i = 0; i < nwpv*gridsize; i++ )
-                        if ( DBL_IS_EQUAL(pvar1->ptr[i], pvar1->missval) )
-                          samp1[varID][levelID].ptr[i] = 0;
-                        else
-                          samp1[varID][levelID].ptr[i] = 1;
+                        samp1[varID][levelID].ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
                     }
                 }
             }
@@ -405,11 +401,11 @@ void *XTimstat(void *argument)
                   int varID    = recinfo[recID].varID;
                   int levelID  = recinfo[recID].levelID;
                   
-                  field_type *pvar1 = &vars1[varID][levelID];
+                  field_type *pvars1 = &vars1[varID][levelID];
                   field_type *pinput_var = &input_vars[varID][levelID];
 
-                  int nwpv     = pvar1->nwpv;
-                  int gridsize = pvar1->size;
+                  int nwpv     = pvars1->nwpv;
+                  int gridsize = pvars1->size;
                   int nmiss    = pinput_var->nmiss;
 
                   if ( nmiss > 0 || samp1[varID][levelID].ptr )
@@ -422,19 +418,19 @@ void *XTimstat(void *argument)
                         }
                           
                       for ( int i = 0; i < nwpv*gridsize; i++ )
-                        if ( !DBL_IS_EQUAL(pinput_var->ptr[i], pvar1->missval) )
+                        if ( !DBL_IS_EQUAL(pinput_var->ptr[i], pvars1->missval) )
                           samp1[varID][levelID].ptr[i]++;
                     }
                   
 		  if ( lvarstd )
 		    {
-                      field_type *pvar2 = &vars2[varID][levelID];
-		      farsumq(pvar2, *pinput_var);
-		      farsum(pvar1, *pinput_var);
+                      field_type *pvars2 = &vars2[varID][levelID];
+		      farsumq(pvars2, *pinput_var);
+		      farsum(pvars1, *pinput_var);
 		    }
 		  else
 		    {
-		      farfun(pvar1, *pinput_var, operfunc);
+		      farfun(pvars1, *pinput_var, operfunc);
 		    }
                 }
             }
@@ -444,12 +440,12 @@ void *XTimstat(void *argument)
               {
                 int varID   = recinfo[recID].varID;
                 int levelID = recinfo[recID].levelID;
-                field_type *pvar1 = &vars1[varID][levelID];
-                field_type *pvar2 = &vars2[varID][levelID];
+                field_type *pvars1 = &vars1[varID][levelID];
+                field_type *pvars2 = &vars2[varID][levelID];
 
 		if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-                farmoq(pvar2, *pvar1);
+                farmoq(pvars2, *pvars1);
 	      }
 
 	  vdate0 = vdate;
@@ -469,14 +465,14 @@ void *XTimstat(void *argument)
             {
               int varID   = recinfo[recID].varID;
               int levelID = recinfo[recID].levelID;
-              field_type *pvar1 = &vars1[varID][levelID];
+              field_type *pvars1 = &vars1[varID][levelID];
 
               if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
               if ( samp1[varID][levelID].ptr == NULL )
-                farcdiv(pvar1, (double)nsets);
+                farcdiv(pvars1, (double)nsets);
               else
-                fardiv(pvar1, samp1[varID][levelID]);
+                fardiv(pvars1, samp1[varID][levelID]);
             }
         }
       else if ( lvarstd )
@@ -485,20 +481,20 @@ void *XTimstat(void *argument)
             {
               int varID   = recinfo[recID].varID;
               int levelID = recinfo[recID].levelID;
-              field_type *pvar1 = &vars1[varID][levelID];
-              field_type *pvar2 = &vars2[varID][levelID];
+              field_type *pvars1 = &vars1[varID][levelID];
+              field_type *pvars2 = &vars2[varID][levelID];
 
               if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
               if ( samp1[varID][levelID].ptr == NULL )
                 {
-                  if ( lstd ) farcstd(pvar1, *pvar2, nsets, divisor);
-                  else        farcvar(pvar1, *pvar2, nsets, divisor);
+                  if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                  else        farcvar(pvars1, *pvars2, nsets, divisor);
                 }
               else
                 {
-                  if ( lstd ) farstd(pvar1, *pvar2, samp1[varID][levelID], divisor);
-                  else        farvar(pvar1, *pvar2, samp1[varID][levelID], divisor);
+                  if ( lstd ) farstd(pvars1, *pvars2, samp1[varID][levelID], divisor);
+                  else        farvar(pvars1, *pvars2, samp1[varID][levelID], divisor);
                 }
             }
         }
@@ -516,13 +512,13 @@ void *XTimstat(void *argument)
           {
             int varID   = recinfo[recID].varID;
             int levelID = recinfo[recID].levelID;
-            field_type *pvar1 = &vars1[varID][levelID];
+            field_type *pvars1 = &vars1[varID][levelID];
 
 	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-            nwpv     = pvar1->nwpv;
-            gridsize = gridInqSize(pvar1->grid);
-            missval  = pvar1->missval;
+            nwpv     = pvars1->nwpv;
+            int gridsize = pvars1->size;
+            double missval = pvars1->missval;
             if ( samp1[varID][levelID].ptr )
               {
                 int irun = 0;
@@ -530,7 +526,7 @@ void *XTimstat(void *argument)
                   {
                     if ( (samp1[varID][levelID].ptr[i] / nsets) < vfrac )
                       {
-                        pvar1->ptr[i] = missval;
+                        pvars1->ptr[i] = missval;
                         irun++;
                       }
                   }
@@ -539,38 +535,38 @@ void *XTimstat(void *argument)
                   {
                     nmiss = 0;
                     for ( int i = 0; i < nwpv*gridsize; ++i )
-                      if ( DBL_IS_EQUAL(pvar1->ptr[i], missval) ) nmiss++;
-                    pvar1->nmiss = nmiss;
+                      if ( DBL_IS_EQUAL(pvars1->ptr[i], missval) ) nmiss++;
+                    pvars1->nmiss = nmiss;
                   }
 	      }
 	  }
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
-      streamDefTimestep(streamID2, otsID);
+      pstreamDefTimestep(streamID2, otsID);
 
       if ( cdoDiag )
 	{
 	  dtlist_stat_taxisDefTimestep(dtlist, taxisID3, nsets);
-	  streamDefTimestep(streamID3, otsID);
+	  pstreamDefTimestep(streamID3, otsID);
 	}
 
       for ( int recID = 0; recID < maxrecs; recID++ )
 	{
           int varID   = recinfo[recID].varID;
           int levelID = recinfo[recID].levelID;
-          field_type *pvar1 = &vars1[varID][levelID];
+          field_type *pvars1 = &vars1[varID][levelID];
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-          streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, pvar1->ptr,  pvar1->nmiss);
+          pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr,  pvars1->nmiss);
               
           if ( cdoDiag )
             {
               if ( samp1[varID][levelID].ptr )
                 {
-                  streamDefRecord(streamID3, varID, levelID);
-                  streamWriteRecord(streamID3, samp1[varID][levelID].ptr, 0);
+                  pstreamDefRecord(streamID3, varID, levelID);
+                  pstreamWriteRecord(streamID3, samp1[varID][levelID].ptr, 0);
                 }
             }
 	}
@@ -590,7 +586,7 @@ void *XTimstat(void *argument)
 
   if ( cdoDiag ) pstreamClose(streamID3);
   pstreamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/YAR.c b/src/YAR.cc
similarity index 97%
rename from src/YAR.c
rename to src/YAR.cc
index 67b55da..face097 100644
--- a/src/YAR.c
+++ b/src/YAR.cc
@@ -776,11 +776,11 @@ void *YAR(void *argument)
   field_init(&field1);
   field_init(&field2);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
   int gridID2 = cdoDefineGrid(operatorArgv()[0]);
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -798,9 +798,9 @@ void *YAR(void *argument)
       vlistChangeGridIndex(vlistID2, index, gridID2);
     }
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
 
-  streamDefVlist(streamID2, vlistID2);
+  pstreamDefVlist(streamID2, vlistID2);
 
   int gridsize = vlistGridsizeMax(vlistID1);
   double *array1 = (double*) Malloc(gridsize*sizeof(double));
@@ -809,15 +809,15 @@ void *YAR(void *argument)
   double *array2 = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 	       
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, array1, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, array1, &nmiss);
 
 	  gridID1 = vlistInqVarGrid(vlistID1, varID);
 	  missval = vlistInqVarMissval(vlistID1, varID);
@@ -839,14 +839,14 @@ void *YAR(void *argument)
 
 	  nmiss = field2.nmiss;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, array2, nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, array2, nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( array2 ) Free(array2);
   if ( array1 ) Free(array1);
diff --git a/src/Ydayarith.c b/src/Ydayarith.cc
similarity index 84%
rename from src/Ydayarith.c
rename to src/Ydayarith.cc
index f10961e..0a8b509 100644
--- a/src/Ydayarith.c
+++ b/src/Ydayarith.cc
@@ -51,11 +51,11 @@ void *Ydayarith(void *argument)
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -73,16 +73,15 @@ void *Ydayarith(void *argument)
   int taxisID3 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int nvars = vlistNvars(vlistID2);
 
   for ( int dayoy = 0; dayoy < MAX_DOY ; dayoy++ ) vardata2[dayoy] = NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID2);
 
@@ -109,12 +108,12 @@ void *Ydayarith(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
           size_t gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 	  size_t offset   = gridsize*levelID;
 
-	  streamReadRecord(streamID2, vardata2[dayoy][varID]+offset, &nmiss);
+	  pstreamReadRecord(streamID2, vardata2[dayoy][varID]+offset, &nmiss);
 	  varnmiss2[dayoy][varID][levelID] = nmiss;
 	}
 
@@ -123,7 +122,7 @@ void *Ydayarith(void *argument)
 
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       int vdate = taxisInqVdate(taxisID1);
 
@@ -137,12 +136,12 @@ void *Ydayarith(void *argument)
 
       taxisCopyTimestep(taxisID3, taxisID1);
 
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
 
           size_t gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
@@ -160,15 +159,15 @@ void *Ydayarith(void *argument)
 	  farfun(&field1, field2, operfunc);
 
           nmiss = (int) field1.nmiss;
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, field1.ptr, nmiss);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, field1.ptr, nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
     if ( vardata2[dayoy] )
diff --git a/src/Ydaypctl.c b/src/Ydaypctl.cc
similarity index 83%
rename from src/Ydaypctl.c
rename to src/Ydaypctl.cc
index dd9719c..0469ed7 100644
--- a/src/Ydaypctl.c
+++ b/src/Ydaypctl.cc
@@ -62,13 +62,13 @@ void *Ydaypctl(void *argument)
       nsets[dayoy] = 0;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -83,9 +83,8 @@ void *Ydaypctl(void *argument)
   if ( taxisHasBounds(taxisID4) ) taxisDeleteBounds(taxisID4);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -100,9 +99,9 @@ void *Ydaypctl(void *argument)
   field.ptr = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
-      if ( nrecs != streamInqTimestep(streamID3, tsID) )
+      if ( nrecs != pstreamInqTimestep(streamID3, tsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", tsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
       
       vdate = taxisInqVdate(taxisID2);
@@ -141,14 +140,14 @@ void *Ydaypctl(void *argument)
       
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, vars1[dayoy][varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, vars1[dayoy][varID][levelID].ptr, &nmiss);
           vars1[dayoy][varID][levelID].nmiss = nmiss;
         }
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars1[dayoy][varID][levelID].grid;
 	  field.missval = vars1[dayoy][varID][levelID].missval;
@@ -160,7 +159,7 @@ void *Ydaypctl(void *argument)
     }
   
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
@@ -185,7 +184,7 @@ void *Ydaypctl(void *argument)
         
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -193,7 +192,7 @@ void *Ydaypctl(void *argument)
 	      recLevelID[recID] = levelID;
 	    }
 
-	  streamReadRecord(streamID1, vars1[dayoy][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars1[dayoy][varID][levelID].ptr, &nmiss);
 	  vars1[dayoy][varID][levelID].nmiss = nmiss;
 	      
 	  hsetAddVarLevelValues(hsets[dayoy], varID, levelID, &vars1[dayoy][varID][levelID]);
@@ -222,7 +221,7 @@ void *Ydaypctl(void *argument)
 
 	taxisDefVdate(taxisID4, vdates1[dayoy]);
 	taxisDefVtime(taxisID4, vtimes1[dayoy]);
-	streamDefTimestep(streamID4, otsID);
+	pstreamDefTimestep(streamID4, otsID);
 
 	for ( int recID = 0; recID < nrecords; recID++ )
 	  {
@@ -231,8 +230,8 @@ void *Ydaypctl(void *argument)
 
 	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	    streamDefRecord(streamID4, varID, levelID);
-	    streamWriteRecord(streamID4, vars1[dayoy][varID][levelID].ptr, vars1[dayoy][varID][levelID].nmiss);
+	    pstreamDefRecord(streamID4, varID, levelID);
+	    pstreamWriteRecord(streamID4, vars1[dayoy][varID][levelID].ptr, vars1[dayoy][varID][levelID].nmiss);
 	  }
 
 	otsID++;
@@ -252,10 +251,10 @@ void *Ydaypctl(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Ydaystat.c b/src/Ydaystat.c
deleted file mode 100644
index 672f735..0000000
--- a/src/Ydaystat.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Ydaystat   ydaymin         Multi-year daily minimum
-      Ydaystat   ydaymax         Multi-year daily maximum
-      Ydaystat   ydaysum         Multi-year daily sum
-      Ydaystat   ydaymean        Multi-year daily mean
-      Ydaystat   ydayavg         Multi-year daily average
-      Ydaystat   ydayvar         Multi-year daily variance
-      Ydaystat   ydayvar1        Multi-year daily variance [Normalize by (n-1)]
-      Ydaystat   ydaystd         Multi-year daily standard deviation
-      Ydaystat   ydaystd1        Multi-year daily standard deviation [Normalize by (n-1)]
-*/
-
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "pstream.h"
-
-
-#define  MAX_DOY       373
-
-
-void *Ydaystat(void *argument)
-{
-  int varID, levelID;
-  int year, month, day;
-  int nrecs;
-  int nsets[MAX_DOY];
-  int nmiss;
-  int nlevel;
-  int vdates[MAX_DOY], vtimes[MAX_DOY];
-  field_type **vars1[MAX_DOY], **vars2[MAX_DOY], **samp1[MAX_DOY];
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("ydaymin",  func_min,  0, NULL);
-  cdoOperatorAdd("ydaymax",  func_max,  0, NULL);
-  cdoOperatorAdd("ydaysum",  func_sum,  0, NULL);
-  cdoOperatorAdd("ydaymean", func_mean, 0, NULL);
-  cdoOperatorAdd("ydayavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("ydayvar",  func_var,  0, NULL);
-  cdoOperatorAdd("ydayvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("ydaystd",  func_std,  0, NULL);
-  cdoOperatorAdd("ydaystd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  bool lmean   = operfunc == func_mean || operfunc == func_avg;
-  bool lstd    = operfunc == func_std || operfunc == func_std1;
-  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor  = operfunc == func_std1 || operfunc == func_var1;
-
-  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
-    {
-      vars1[dayoy] = NULL;
-      vars2[dayoy] = NULL;
-      samp1[dayoy] = NULL;
-      nsets[dayoy] = 0;
-    }
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  int gridsize = vlistGridsizeMax(vlistID1);
-
-  field_type field;
-  field_init(&field);
-  field.ptr = (double*) Malloc(gridsize*sizeof(double));
-
-  int tsID = 0;
-  int otsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
-    {
-      int vdate = taxisInqVdate(taxisID1);
-      int vtime = taxisInqVtime(taxisID1);
-
-      if ( cdoVerbose ) cdoPrint("process timestep: %d %d %d", tsID+1, vdate, vtime);
-
-      cdiDecodeDate(vdate, &year, &month, &day);
-
-      int dayoy = 0;
-      if ( month >= 1 && month <= 12 ) dayoy = (month-1)*31 + day;
-
-      if ( dayoy < 0 || dayoy >= MAX_DOY )
-	cdoAbort("Day of year %d out of range (date=%d)!", dayoy, vdate);
-
-      vdates[dayoy] = vdate;
-      vtimes[dayoy] = vtime;
-
-      if ( vars1[dayoy] == NULL )
-	{
-	  vars1[dayoy] = field_malloc(vlistID1, FIELD_PTR);
-	  samp1[dayoy] = field_malloc(vlistID1, FIELD_NONE);
-	  if ( lvarstd )
-	    vars2[dayoy] = field_malloc(vlistID1, FIELD_PTR);
-	}
-
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-
-	  if ( tsID == 0 )
-	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
-	    }
-
-	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-
-	  if ( nsets[dayoy] == 0 )
-	    {
-	      streamReadRecord(streamID1, vars1[dayoy][varID][levelID].ptr, &nmiss);
-	      vars1[dayoy][varID][levelID].nmiss = (size_t)nmiss;
-
-	      if ( nmiss > 0 || samp1[dayoy][varID][levelID].ptr )
-		{
-		  if ( samp1[dayoy][varID][levelID].ptr == NULL )
-		    samp1[dayoy][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-
-		  for ( int i = 0; i < gridsize; i++ )
-		    if ( DBL_IS_EQUAL(vars1[dayoy][varID][levelID].ptr[i],
-				      vars1[dayoy][varID][levelID].missval) )
-		      samp1[dayoy][varID][levelID].ptr[i] = 0;
-		    else
-		      samp1[dayoy][varID][levelID].ptr[i] = 1;
-		}
-	    }
-	  else
-	    {
-	      streamReadRecord(streamID1, field.ptr, &nmiss);
-              field.nmiss   = (size_t)nmiss;
-	      field.grid    = vars1[dayoy][varID][levelID].grid;
-	      field.missval = vars1[dayoy][varID][levelID].missval;
-
-	      if ( field.nmiss > 0 || samp1[dayoy][varID][levelID].ptr )
-		{
-		  if ( samp1[dayoy][varID][levelID].ptr == NULL )
-		    {
-		      samp1[dayoy][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-		      for ( int i = 0; i < gridsize; i++ )
-			samp1[dayoy][varID][levelID].ptr[i] = nsets[dayoy];
-		    }
-		  
-		  for ( int i = 0; i < gridsize; i++ )
-		    if ( !DBL_IS_EQUAL(field.ptr[i], vars1[dayoy][varID][levelID].missval) )
-		      samp1[dayoy][varID][levelID].ptr[i]++;
-		}
-
-	      if ( lvarstd )
-		{
-		  farsumq(&vars2[dayoy][varID][levelID], field);
-		  farsum(&vars1[dayoy][varID][levelID], field);
-		}
-	      else
-		{
-		  farfun(&vars1[dayoy][varID][levelID], field, operfunc);
-		}
-	    }
-	}
-
-      if ( nsets[dayoy] == 0 && lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      farmoq(&vars2[dayoy][varID][levelID], vars1[dayoy][varID][levelID]);
-	  }
-
-      nsets[dayoy]++;
-      tsID++;
-    }
-
-  // set the year to the minimum of years found on output timestep
-  int outyear = 1e9;
-  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
-    if ( nsets[dayoy] )
-      {
-        cdiDecodeDate(vdates[dayoy], &year, &month, &day);
-        if ( year < outyear ) outyear = year;
-      }
-  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
-    if ( nsets[dayoy] )
-      {
-        cdiDecodeDate(vdates[dayoy], &year, &month, &day);
-        if ( year > outyear ) vdates[dayoy] = cdiEncodeDate(outyear, month, day);
-        //  printf("vdates[%d] = %d  nsets = %d\n", dayoy, vdates[dayoy], nsets[dayoy]);
-      }
-
-  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
-    if ( nsets[dayoy] )
-      {
-	if ( lmean )
-	  for ( varID = 0; varID < nvars; varID++ )
-	    {
-	      if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	      nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	      for ( levelID = 0; levelID < nlevel; levelID++ )
-		{
-		  if ( samp1[dayoy][varID][levelID].ptr == NULL )
-		    farcdiv(&vars1[dayoy][varID][levelID], (double)nsets[dayoy]);
-		  else
-		    fardiv(&vars1[dayoy][varID][levelID], samp1[dayoy][varID][levelID]);
-		}
-	    }
-	else if ( lvarstd )
-	  for ( varID = 0; varID < nvars; varID++ )
-	    {
-	      if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	      nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	      for ( levelID = 0; levelID < nlevel; levelID++ )
-		{
-		  if ( samp1[dayoy][varID][levelID].ptr == NULL )
-		    {
-		      if ( lstd )
-			farcstd(&vars1[dayoy][varID][levelID], vars2[dayoy][varID][levelID], nsets[dayoy], divisor);
-		      else
-			farcvar(&vars1[dayoy][varID][levelID], vars2[dayoy][varID][levelID], nsets[dayoy], divisor);
-		    }
-		  else
-		    {
-		      if ( lstd )
-			farstd(&vars1[dayoy][varID][levelID], vars2[dayoy][varID][levelID], samp1[dayoy][varID][levelID], divisor);
-		      else
-			farvar(&vars1[dayoy][varID][levelID], vars2[dayoy][varID][levelID], samp1[dayoy][varID][levelID], divisor);
-		    }
-		}
-	    }
-
-	taxisDefVdate(taxisID2, vdates[dayoy]);
-	taxisDefVtime(taxisID2, vtimes[dayoy]);
-	streamDefTimestep(streamID2, otsID);
-
-	for ( int recID = 0; recID < nrecords; recID++ )
-	  {
-	    varID   = recVarID[recID];
-	    levelID = recLevelID[recID];
-
-	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	    streamDefRecord(streamID2, varID, levelID);
-	    streamWriteRecord(streamID2, vars1[dayoy][varID][levelID].ptr,
-			      (int)vars1[dayoy][varID][levelID].nmiss);
-	  }
-
-	otsID++;
-      }
-
-  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
-    {
-      if ( vars1[dayoy] != NULL )
-	{
-	  field_free(vars1[dayoy], vlistID1);
-	  field_free(samp1[dayoy], vlistID1);
-	  if ( lvarstd ) field_free(vars2[dayoy], vlistID1);
-	}
-    }
-
-  if ( field.ptr ) Free(field.ptr);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Ydaystat.cc b/src/Ydaystat.cc
new file mode 100644
index 0000000..dcc0f62
--- /dev/null
+++ b/src/Ydaystat.cc
@@ -0,0 +1,325 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Ydaystat   ydayrange       Multi-year daily range
+      Ydaystat   ydaymin         Multi-year daily minimum
+      Ydaystat   ydaymax         Multi-year daily maximum
+      Ydaystat   ydaysum         Multi-year daily sum
+      Ydaystat   ydaymean        Multi-year daily mean
+      Ydaystat   ydayavg         Multi-year daily average
+      Ydaystat   ydayvar         Multi-year daily variance
+      Ydaystat   ydayvar1        Multi-year daily variance [Normalize by (n-1)]
+      Ydaystat   ydaystd         Multi-year daily standard deviation
+      Ydaystat   ydaystd1        Multi-year daily standard deviation [Normalize by (n-1)]
+*/
+
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "pstream.h"
+
+
+#define  MAX_DOY       373
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+void *Ydaystat(void *argument)
+{
+  int varID, levelID;
+  int year, month, day;
+  int nrecs;
+  int dayoy_nsets[MAX_DOY];
+  int nmiss;
+  int vdates[MAX_DOY], vtimes[MAX_DOY];
+  field_type **vars1[MAX_DOY], **vars2[MAX_DOY], **samp1[MAX_DOY];
+
+  cdoInitialize(argument);
+
+  // clang-format off
+  cdoOperatorAdd("ydayrange", func_range, 0, NULL);
+  cdoOperatorAdd("ydaymin",   func_min,   0, NULL);
+  cdoOperatorAdd("ydaymax",   func_max,   0, NULL);
+  cdoOperatorAdd("ydaysum",   func_sum,   0, NULL);
+  cdoOperatorAdd("ydaymean",  func_mean,  0, NULL);
+  cdoOperatorAdd("ydayavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("ydayvar",   func_var,   0, NULL);
+  cdoOperatorAdd("ydayvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("ydaystd",   func_std,   0, NULL);
+  cdoOperatorAdd("ydaystd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
+
+  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
+    {
+      vars1[dayoy] = NULL;
+      vars2[dayoy] = NULL;
+      samp1[dayoy] = NULL;
+      dayoy_nsets[dayoy] = 0;
+    }
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
+  vlistDefTaxis(vlistID2, taxisID2);
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+
+  field_type field;
+  field_init(&field);
+  field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
+
+  int tsID = 0;
+  int otsID = 0;
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
+    {
+      int vdate = taxisInqVdate(taxisID1);
+      int vtime = taxisInqVtime(taxisID1);
+
+      if ( cdoVerbose ) cdoPrint("process timestep: %d %d %d", tsID+1, vdate, vtime);
+
+      cdiDecodeDate(vdate, &year, &month, &day);
+
+      int dayoy = 0;
+      if ( month >= 1 && month <= 12 ) dayoy = (month-1)*31 + day;
+
+      if ( dayoy < 0 || dayoy >= MAX_DOY )
+	cdoAbort("Day of year %d out of range (date=%d)!", dayoy, vdate);
+
+      vdates[dayoy] = vdate;
+      vtimes[dayoy] = vtime;
+
+      if ( vars1[dayoy] == NULL )
+	{
+	  vars1[dayoy] = field_malloc(vlistID1, FIELD_PTR);
+	  samp1[dayoy] = field_malloc(vlistID1, FIELD_NONE);
+	  if ( lvarstd || lrange )
+	    vars2[dayoy] = field_malloc(vlistID1, FIELD_PTR);
+	}
+
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+
+	  if ( tsID == 0 )
+	    {
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
+	    }
+
+          field_type *psamp1 = &samp1[dayoy][varID][levelID];
+          field_type *pvars1 = &vars1[dayoy][varID][levelID];
+          field_type *pvars2 = vars2[dayoy] ? &vars2[dayoy][varID][levelID] : NULL;
+          int nsets = dayoy_nsets[dayoy];
+
+	  int gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
+
+	  if ( nsets == 0 )
+	    {
+	      pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	      pvars1->nmiss = (size_t)nmiss;
+              if ( lrange )
+                {
+                  pvars2->nmiss = pvars1->nmiss;
+                  for ( int i = 0; i < gridsize; i++ )
+                    pvars2->ptr[i] = pvars1->ptr[i];
+                }
+
+	      if ( nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+
+		  for ( int i = 0; i < gridsize; i++ )
+                    psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
+		}
+	    }
+	  else
+	    {
+	      pstreamReadRecord(streamID1, field.ptr, &nmiss);
+              field.nmiss   = (size_t)nmiss;
+	      field.grid    = pvars1->grid;
+	      field.missval = pvars1->missval;
+
+	      if ( field.nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    {
+		      psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+		      for ( int i = 0; i < gridsize; i++ )
+			psamp1->ptr[i] = nsets;
+		    }
+		  
+		  for ( int i = 0; i < gridsize; i++ )
+		    if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+		      psamp1->ptr[i]++;
+		}
+
+	      if ( lvarstd )
+		{
+		  farsumq(pvars2, field);
+		  farsum(pvars1, field);
+		}
+              else if ( lrange )
+                {
+                  farmin(pvars2, field);
+                  farmax(pvars1, field);
+                }
+	      else
+		{
+		  farfun(pvars1, field, operfunc);
+		}
+	    }
+	}
+
+      if ( dayoy_nsets[dayoy] == 0 && lvarstd )
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[dayoy][varID][levelID];
+            field_type *pvars2 = &vars2[dayoy][varID][levelID];
+
+	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            farmoq(pvars2, *pvars1);
+	  }
+
+      dayoy_nsets[dayoy]++;
+      tsID++;
+    }
+
+  // set the year to the minimum of years found on output timestep
+  int outyear = 1e9;
+  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
+    if ( dayoy_nsets[dayoy] )
+      {
+        cdiDecodeDate(vdates[dayoy], &year, &month, &day);
+        if ( year < outyear ) outyear = year;
+      }
+  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
+    if ( dayoy_nsets[dayoy] )
+      {
+        cdiDecodeDate(vdates[dayoy], &year, &month, &day);
+        if ( year > outyear ) vdates[dayoy] = cdiEncodeDate(outyear, month, day);
+        //  printf("vdates[%d] = %d  nsets = %d\n", dayoy, vdates[dayoy], nsets[dayoy]);
+      }
+
+  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
+    if ( dayoy_nsets[dayoy] )
+      {
+        int nsets = dayoy_nsets[dayoy];
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *psamp1 = &samp1[dayoy][varID][levelID];
+            field_type *pvars1 = &vars1[dayoy][varID][levelID];
+            field_type *pvars2 = vars2[dayoy] ? &vars2[dayoy][varID][levelID] : NULL;
+
+            if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            if ( lmean )
+              {
+                if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+                else               farcdiv(pvars1, (double)nsets);
+              }
+            else if ( lvarstd )
+              {
+                if ( psamp1->ptr )
+                  {
+                    if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                    else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                  }
+                else
+                  {
+                    if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                    else        farcvar(pvars1, *pvars2, nsets, divisor);
+                  }
+              }
+            else if ( lrange )
+              {
+                farsub(pvars1, *pvars2);
+              }
+          }
+
+	taxisDefVdate(taxisID2, vdates[dayoy]);
+	taxisDefVtime(taxisID2, vtimes[dayoy]);
+	pstreamDefTimestep(streamID2, otsID);
+
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[dayoy][varID][levelID];
+
+	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	    pstreamDefRecord(streamID2, varID, levelID);
+	    pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
+	  }
+
+	otsID++;
+      }
+
+  for ( int dayoy = 0; dayoy < MAX_DOY; dayoy++ )
+    {
+      if ( vars1[dayoy] != NULL )
+	{
+	  field_free(vars1[dayoy], vlistID1);
+	  field_free(samp1[dayoy], vlistID1);
+	  if ( lvarstd ) field_free(vars2[dayoy], vlistID1);
+	}
+    }
+
+  if ( field.ptr ) Free(field.ptr);
+
+  Free(recinfo);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Ydrunpctl.c b/src/Ydrunpctl.cc
similarity index 85%
rename from src/Ydrunpctl.c
rename to src/Ydrunpctl.cc
index b355476..dbf8f44 100644
--- a/src/Ydrunpctl.c
+++ b/src/Ydrunpctl.cc
@@ -72,13 +72,13 @@ void *Ydrunpctl(void *argument)
       nsets[dayoy] = 0;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -96,9 +96,8 @@ void *Ydrunpctl(void *argument)
   int calendar = taxisInqCalendar(taxisID1);
   int dpy      = calendar_dpy(calendar);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -122,9 +121,9 @@ void *Ydrunpctl(void *argument)
     }
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
-      if ( nrecs != streamInqTimestep(streamID3, tsID) )
+      if ( nrecs != pstreamInqTimestep(streamID3, tsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", tsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
       
       vdate = taxisInqVdate(taxisID2);
@@ -164,14 +163,14 @@ void *Ydrunpctl(void *argument)
       
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, vars2[dayoy][varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, vars2[dayoy][varID][levelID].ptr, &nmiss);
           vars2[dayoy][varID][levelID].nmiss = nmiss;
         }
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars2[dayoy][varID][levelID].grid;
 	  field.missval = vars2[dayoy][varID][levelID].missval;
@@ -184,7 +183,7 @@ void *Ydrunpctl(void *argument)
   
   for ( tsID = 0; tsID < ndates; tsID++ )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 )
 	cdoAbort("File has less then %d timesteps!", ndates);
 
@@ -193,7 +192,7 @@ void *Ydrunpctl(void *argument)
 	
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -201,7 +200,7 @@ void *Ydrunpctl(void *argument)
 	      recLevelID[recID] = levelID;
 	    }
 	  
-	  streamReadRecord(streamID1, vars1[tsID][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars1[tsID][varID][levelID].ptr, &nmiss);
 	  vars1[tsID][varID][levelID].nmiss = nmiss;
 	}
     }
@@ -248,7 +247,7 @@ void *Ydrunpctl(void *argument)
 	  vars1[inp] = vars1[inp+1];
 	}
 
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       datetime[ndates-1].date = taxisInqVdate(taxisID1);
@@ -256,9 +255,9 @@ void *Ydrunpctl(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  
-	  streamReadRecord(streamID1, vars1[ndates-1][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars1[ndates-1][varID][levelID].ptr, &nmiss);
 	  vars1[ndates-1][varID][levelID].nmiss = nmiss;
 	}
 
@@ -302,7 +301,7 @@ void *Ydrunpctl(void *argument)
 
 	taxisDefVdate(taxisID4, vdates1[dayoy]);
 	taxisDefVtime(taxisID4, vtimes1[dayoy]);
-	streamDefTimestep(streamID4, otsID);
+	pstreamDefTimestep(streamID4, otsID);
 
 	for ( int recID = 0; recID < nrecords; recID++ )
 	  {
@@ -311,9 +310,9 @@ void *Ydrunpctl(void *argument)
 
 	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	    streamDefRecord(streamID4, varID, levelID);
-	    streamWriteRecord(streamID4, vars2[dayoy][varID][levelID].ptr,
-			      vars2[dayoy][varID][levelID].nmiss);
+	    pstreamDefRecord(streamID4, varID, levelID);
+	    pstreamWriteRecord(streamID4, vars2[dayoy][varID][levelID].ptr,
+                               vars2[dayoy][varID][levelID].nmiss);
 	  }
 
 	otsID++;
@@ -346,10 +345,10 @@ void *Ydrunpctl(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Ydrunstat.c b/src/Ydrunstat.cc
similarity index 76%
rename from src/Ydrunstat.c
rename to src/Ydrunstat.cc
index 9e88fbc..280b5a3 100644
--- a/src/Ydrunstat.c
+++ b/src/Ydrunstat.cc
@@ -38,6 +38,11 @@
 
 #define NDAY 373
 
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
 
 typedef struct {
   int       vdate[NDAY];
@@ -53,7 +58,7 @@ YDAY_STATS;
 static YDAY_STATS *ydstatCreate(int vlistID);
 static void ydstatDestroy(YDAY_STATS *stats);
 static void ydstatUpdate(YDAY_STATS *stats, int vdate, int vtime, 
-  field_type **vars1, field_type **vars2, int nsets, int operfunc);
+                         field_type **vars1, field_type **vars2, int nsets, int operfunc);
 static void ydstatFinalize(YDAY_STATS *stats, int operfunc);
 
 
@@ -65,20 +70,20 @@ void *Ydrunstat(void *argument)
   int tsID;
   int inp, its;
   int nmiss;
-  int vdate, vtime;
-  int dayoy;
     
   cdoInitialize(argument);
 
-  cdoOperatorAdd("ydrunmin",  func_min,  0, NULL);
-  cdoOperatorAdd("ydrunmax",  func_max,  0, NULL);
-  cdoOperatorAdd("ydrunsum",  func_sum,  0, NULL);
-  cdoOperatorAdd("ydrunmean", func_mean, 0, NULL);
-  cdoOperatorAdd("ydrunavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("ydrunvar",  func_var,  0, NULL);
-  cdoOperatorAdd("ydrunvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("ydrunstd",  func_std,  0, NULL);
-  cdoOperatorAdd("ydrunstd1", func_std1, 0, NULL);
+  // clang-format off
+  cdoOperatorAdd("ydrunmin",   func_min,   0, NULL);
+  cdoOperatorAdd("ydrunmax",   func_max,   0, NULL);
+  cdoOperatorAdd("ydrunsum",   func_sum,   0, NULL);
+  cdoOperatorAdd("ydrunmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("ydrunavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("ydrunvar",   func_var,   0, NULL);
+  cdoOperatorAdd("ydrunvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("ydrunstd",   func_std,   0, NULL);
+  cdoOperatorAdd("ydrunstd1",  func_std1,  0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -88,9 +93,9 @@ void *Ydrunstat(void *argument)
 
   bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
   
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -101,14 +106,12 @@ void *Ydrunstat(void *argument)
   int calendar = taxisInqCalendar(taxisID1);
   int dpy      = calendar_dpy(calendar);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
-  int nrecords = vlistNrecs(vlistID1);
+  int maxrecs = vlistNrecs(vlistID1);
 
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
 
   cdo_datetime_t *datetime = (cdo_datetime_t*) Malloc((ndates+1)*sizeof(cdo_datetime_t));
   
@@ -127,7 +130,7 @@ void *Ydrunstat(void *argument)
   
   for ( tsID = 0; tsID < ndates; tsID++ )
     {
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 )
 	cdoAbort("File has less then %d timesteps!", ndates);
 
@@ -136,31 +139,34 @@ void *Ydrunstat(void *argument)
 	
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
 	    }
 	  
-	  streamReadRecord(streamID1, vars1[tsID][varID][levelID].ptr, &nmiss);
-	  vars1[tsID][varID][levelID].nmiss = nmiss;
+          field_type *pvars1 = &vars1[tsID][varID][levelID];
+          field_type *pvars2 = (vars2 && vars2[tsID]) ? &vars2[tsID][varID][levelID] : NULL;
+
+	  pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	  pvars1->nmiss = nmiss;
 
 	  if ( lvarstd )
 	    {
-	      farmoq(&vars2[tsID][varID][levelID], vars1[tsID][varID][levelID]);
-	      for ( inp = 0; inp < tsID; inp++ )
+	      farmoq(pvars2, *pvars1);
+	      for ( int inp = 0; inp < tsID; inp++ )
 		{
-		  farsumq(&vars2[inp][varID][levelID], vars1[tsID][varID][levelID]);
-		  farsum(&vars1[inp][varID][levelID], vars1[tsID][varID][levelID]);
+		  farsumq(&vars2[inp][varID][levelID], *pvars1);
+		  farsum(&vars1[inp][varID][levelID], *pvars1);
 		}
 	    }
 	  else
 	    {
-	      for ( inp = 0; inp < tsID; inp++ )
+	      for ( int inp = 0; inp < tsID; inp++ )
 		{
-		  farfun(&vars1[inp][varID][levelID], vars1[tsID][varID][levelID], operfunc);
+		  farfun(&vars1[inp][varID][levelID], *pvars1, operfunc);
 		}
 	    }
 	}
@@ -170,8 +176,8 @@ void *Ydrunstat(void *argument)
     {
       datetime_avg(dpy, ndates, datetime);
       
-      vdate = datetime[ndates].date;
-      vtime = datetime[ndates].time;
+      int vdate = datetime[ndates].date;
+      int vtime = datetime[ndates].time;
       
       if ( lvarstd )   
         ydstatUpdate(stats, vdate, vtime, vars1[0], vars2[0], ndates, operfunc);
@@ -191,7 +197,7 @@ void *Ydrunstat(void *argument)
 	    vars2[inp] = vars2[inp+1];
 	}
 
-      nrecs = streamInqTimestep(streamID1, tsID);
+      nrecs = pstreamInqTimestep(streamID1, tsID);
       if ( nrecs == 0 ) break;
 
       datetime[ndates-1].date = taxisInqVdate(taxisID1);
@@ -199,25 +205,28 @@ void *Ydrunstat(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 	  
-	  streamReadRecord(streamID1, vars1[ndates-1][varID][levelID].ptr, &nmiss);
-	  vars1[ndates-1][varID][levelID].nmiss = nmiss;
+          field_type *pvars1 = &vars1[ndates-1][varID][levelID];
+          field_type *pvars2 = (vars2 && vars2[ndates-1]) ? &vars2[ndates-1][varID][levelID] : NULL;
+
+	  pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	  pvars1->nmiss = nmiss;
 
 	  if ( lvarstd )
 	    {
 	      for ( inp = 0; inp < ndates-1; inp++ )
 		{
-		  farsumq(&vars2[inp][varID][levelID], vars1[ndates-1][varID][levelID]);
-		  farsum(&vars1[inp][varID][levelID], vars1[ndates-1][varID][levelID]);
+		  farsumq(&vars2[inp][varID][levelID], *pvars1);
+		  farsum(&vars1[inp][varID][levelID], *pvars1);
 		}
-	      farmoq(&vars2[ndates-1][varID][levelID], vars1[ndates-1][varID][levelID]);
+	      farmoq(pvars2, *pvars1);
 	    }
 	  else
 	    {
 	      for ( inp = 0; inp < ndates-1; inp++ )
 		{
-		  farfun(&vars1[inp][varID][levelID], vars1[ndates-1][varID][levelID], operfunc);
+		  farfun(&vars1[inp][varID][levelID], *pvars1, operfunc);
 		}
 	    }
 	}
@@ -229,13 +238,13 @@ void *Ydrunstat(void *argument)
   // set the year to the minimum of years found on output timestep
   int outyear = 1e9;
   int year, month, day;
-  for ( dayoy = 0; dayoy < NDAY; dayoy++ )
+  for ( int dayoy = 0; dayoy < NDAY; dayoy++ )
     if ( stats->nsets[dayoy] )
       {
 	cdiDecodeDate(stats->vdate[dayoy], &year, &month, &day);
 	if ( year < outyear ) outyear = year;
       }
-  for ( dayoy = 0; dayoy < NDAY; dayoy++ )
+  for ( int dayoy = 0; dayoy < NDAY; dayoy++ )
     if ( stats->nsets[dayoy] )
       {
 	cdiDecodeDate(stats->vdate[dayoy], &year, &month, &day);
@@ -247,23 +256,23 @@ void *Ydrunstat(void *argument)
 
   int otsID = 0;
 
-  for ( dayoy = 0; dayoy < NDAY; dayoy++ )
+  for ( int dayoy = 0; dayoy < NDAY; dayoy++ )
     if ( stats->nsets[dayoy] )
       {
 	taxisDefVdate(taxisID2, stats->vdate[dayoy]);
 	taxisDefVtime(taxisID2, stats->vtime[dayoy]);
-	streamDefTimestep(streamID2, otsID);
+	pstreamDefTimestep(streamID2, otsID);
 
-	for ( int recID = 0; recID < nrecords; recID++ )
-	  {
-	    varID   = recVarID[recID];
-	    levelID = recLevelID[recID];
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &stats->vars1[dayoy][varID][levelID];
 
 	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	    streamDefRecord(streamID2, varID, levelID);
-	    streamWriteRecord(streamID2, stats->vars1[dayoy][varID][levelID].ptr,
-			      stats->vars1[dayoy][varID][levelID].nmiss);
+	    pstreamDefRecord(streamID2, varID, levelID);
+	    pstreamWriteRecord(streamID2, pvars1->ptr, pvars1->nmiss);
 	  }
 
 	otsID++;
@@ -281,11 +290,10 @@ void *Ydrunstat(void *argument)
 
   if ( datetime ) Free(datetime);
 
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
+  Free(recinfo);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
@@ -294,12 +302,10 @@ void *Ydrunstat(void *argument)
 
 static
 YDAY_STATS *ydstatCreate(int vlistID)
-{
-  int dayoy;
-  
+{  
   YDAY_STATS *stats = (YDAY_STATS*) Malloc(sizeof(YDAY_STATS));
   
-  for ( dayoy = 0; dayoy < NDAY; dayoy++ )
+  for ( int dayoy = 0; dayoy < NDAY; dayoy++ )
     {
       stats->vdate[dayoy] = 0;
       stats->vtime[dayoy] = 0;
@@ -307,6 +313,7 @@ YDAY_STATS *ydstatCreate(int vlistID)
       stats->vars2[dayoy] = NULL;
       stats->nsets[dayoy] = 0;
     }
+
   stats->vlist = vlistID;
   
   return stats;
@@ -315,13 +322,13 @@ YDAY_STATS *ydstatCreate(int vlistID)
 static
 void ydstatDestroy(YDAY_STATS *stats)
 {
-  int dayoy, varID, levelID, nvars, nlevels;
+  int varID, levelID, nlevels;
   
   if ( stats != NULL )
     {
-      nvars = vlistNvars(stats->vlist);
+      int nvars = vlistNvars(stats->vlist);
       
-      for ( dayoy = 0; dayoy < NDAY; dayoy++ )
+      for ( int dayoy = 0; dayoy < NDAY; dayoy++ )
         {
           if ( stats->vars1[dayoy] != NULL )
             {
@@ -354,14 +361,13 @@ static
 void ydstatUpdate(YDAY_STATS *stats, int vdate, int vtime, 
 		  field_type **vars1, field_type **vars2, int nsets, int operfunc)
 {
-  int varID, levelID, nvars, nlevels;
+  int varID, levelID, nlevels;
   int gridsize;
   int year, month, day, dayoy;
-  int lvarstd;
 
-  lvarstd = vars2 != NULL;
+  bool lvarstd = vars2 != NULL;
 
-  nvars = vlistNvars(stats->vlist);
+  int nvars = vlistNvars(stats->vlist);
 
   cdiDecodeDate(vdate, &year, &month, &day);
 
@@ -424,11 +430,11 @@ void ydstatUpdate(YDAY_STATS *stats, int vdate, int vtime,
 static
 void ydstatFinalize(YDAY_STATS *stats, int operfunc)
 {
-  int varID, levelID, nvars, nlevels;
+  int varID, levelID, nlevels;
   int dayoy;
   int divisor = operfunc == func_std1 || operfunc == func_var1;
 
-  nvars = vlistNvars(stats->vlist);
+  int nvars = vlistNvars(stats->vlist);
   
   for ( dayoy = 0; dayoy < NDAY; dayoy++ )
     if ( stats->nsets[dayoy] )
diff --git a/src/Yearmonstat.c b/src/Yearmonstat.cc
similarity index 89%
rename from src/Yearmonstat.c
rename to src/Yearmonstat.cc
index fcbb29b..71091ab 100644
--- a/src/Yearmonstat.c
+++ b/src/Yearmonstat.cc
@@ -49,24 +49,25 @@ void *Yearmonstat(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("yearmonmean",  func_mean, 0, NULL);
   cdoOperatorAdd("yearmonavg",   func_avg,  0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
   int taxisID2 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID2, taxisID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -94,7 +95,7 @@ void *Yearmonstat(void *argument)
     {
       nsets = 0;
       dsets = 0;
-      while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+      while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
 	{
 	  dtlist_taxisInqTimestep(dtlist, taxisID1, nsets);
 	  vdate = dtlist_get_vdate(dtlist, nsets);
@@ -120,7 +121,7 @@ void *Yearmonstat(void *argument)
 
 	  for ( int recID = 0; recID < nrecs; recID++ )
 	    {
-	      streamInqRecord(streamID1, &varID, &levelID);
+	      pstreamInqRecord(streamID1, &varID, &levelID);
 
 	      if ( tsID == 0 )
 		{
@@ -132,7 +133,7 @@ void *Yearmonstat(void *argument)
 
 	      if ( nsets == 0 )
 		{
-		  streamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
+		  pstreamReadRecord(streamID1, vars1[varID][levelID].ptr, &nmiss);
 		  vars1[varID][levelID].nmiss = (size_t) nmiss;
 
 		  farcmul(&vars1[varID][levelID], dpm);
@@ -151,7 +152,7 @@ void *Yearmonstat(void *argument)
 		}
 	      else
 		{
-		  streamReadRecord(streamID1, field.ptr, &nmiss);
+		  pstreamReadRecord(streamID1, field.ptr, &nmiss);
                   field.nmiss   = (size_t) nmiss;
 		  field.grid    = vars1[varID][levelID].grid;
 		  field.missval = vars1[varID][levelID].missval;
@@ -207,7 +208,7 @@ void *Yearmonstat(void *argument)
 	}
 
       dtlist_stat_taxisDefTimestep(dtlist, taxisID2, nsets);
-      streamDefTimestep(streamID2, otsID);
+      pstreamDefTimestep(streamID2, otsID);
 
       for ( int recID = 0; recID < nrecords; recID++ )
 	{
@@ -216,8 +217,8 @@ void *Yearmonstat(void *argument)
 
 	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[varID][levelID].ptr,  (int)vars1[varID][levelID].nmiss);
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, vars1[varID][levelID].ptr,  (int)vars1[varID][levelID].nmiss);
 	}
 
       if ( nrecs == 0 ) break;
@@ -235,8 +236,8 @@ void *Yearmonstat(void *argument)
 
   dtlist_delete(dtlist);
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Yhourarith.c b/src/Yhourarith.cc
similarity index 85%
rename from src/Yhourarith.c
rename to src/Yhourarith.cc
index 2c99b2a..1415a1f 100644
--- a/src/Yhourarith.c
+++ b/src/Yhourarith.cc
@@ -79,11 +79,11 @@ void *Yhourarith(void *argument)
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -101,16 +101,15 @@ void *Yhourarith(void *argument)
   int taxisID3 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int nvars  = vlistNvars(vlistID2);
 
   for ( houroy = 0; houroy < MAX_HOUR ; ++houroy ) vardata2[houroy] = NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
       vdate = taxisInqVdate(taxisID2);
       vtime = taxisInqVtime(taxisID2);
@@ -131,12 +130,12 @@ void *Yhourarith(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 	  offset   = gridsize*levelID;
 
-	  streamReadRecord(streamID2, vardata2[houroy][varID]+offset, &nmiss);
+	  pstreamReadRecord(streamID2, vardata2[houroy][varID]+offset, &nmiss);
 	  varnmiss2[houroy][varID][levelID] = nmiss;
 	}
 
@@ -145,7 +144,7 @@ void *Yhourarith(void *argument)
 
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
@@ -154,13 +153,12 @@ void *Yhourarith(void *argument)
       if ( vardata2[houroy] == NULL ) cdoAbort("Hour of year %d not found!", houroy);
 
       taxisCopyTimestep(taxisID3, taxisID1);
-
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
 	  field1.grid    = vlistInqVarGrid(vlistID1, varID);
 	  field1.missval = vlistInqVarMissval(vlistID1, varID);
@@ -174,16 +172,16 @@ void *Yhourarith(void *argument)
 
 	  farfun(&field1, field2, operfunc);
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
 	}
 
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( houroy = 0; houroy < MAX_HOUR; ++houroy )
     if ( vardata2[houroy] )
diff --git a/src/Yhourstat.c b/src/Yhourstat.c
deleted file mode 100644
index 8879795..0000000
--- a/src/Yhourstat.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Yhourstat   yhourmin         Multi-year hourly minimum
-      Yhourstat   yhourmax         Multi-year hourly maximum
-      Yhourstat   yhoursum         Multi-year hourly sum
-      Yhourstat   yhourmean        Multi-year hourly mean
-      Yhourstat   yhouravg         Multi-year hourly average
-      Yhourstat   yhourvar         Multi-year hourly variance
-      Yhourstat   yhourvar1        Multi-year hourly variance [Normalize by (n-1)]
-      Yhourstat   yhourstd         Multi-year hourly standard deviation
-      Yhourstat   yhourstd1        Multi-year hourly standard deviation [Normalize by (n-1)]
-*/
-
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "pstream.h"
-
-
-#define  MAX_HOUR  9301  /* 31*12*25 + 1 */
-
-static
-int hour_of_year(int vdate, int vtime)
-{
-  int year, month, day, houroy;
-  int hour, minute, second;
-
-  cdiDecodeDate(vdate, &year, &month, &day);
-  cdiDecodeTime(vtime, &hour, &minute, &second);
-      
-  if ( month >= 1 && month <= 12 && day >= 1 && day <=31 && hour >= 0 && hour < 24 )
-    houroy = ((month-1)*31 + day - 1)*25 + hour + 1;
-  else
-    houroy = 0;
-
-  if ( houroy < 0 || houroy >= MAX_HOUR )
-    {
-      char vdatestr[32], vtimestr[32];
-      date2str(vdate, vdatestr, sizeof(vdatestr));
-      time2str(vtime, vtimestr, sizeof(vtimestr));
-      cdoAbort("Hour of year %d out of range (%s %s)!", houroy, vdatestr, vtimestr);
-    }
-
-  return houroy;
-}
-
-
-void *Yhourstat(void *argument)
-{
-  int i;
-  int varID;
-  int vdate, vtime;
-  int houroy;
-  int nrecs;
-  int levelID;
-  int nsets[MAX_HOUR];
-  int nmiss;
-  int nlevel;
-  int vdates[MAX_HOUR], vtimes[MAX_HOUR];
-  field_type **vars1[MAX_HOUR], **vars2[MAX_HOUR], **samp1[MAX_HOUR];
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("yhourmin",  func_min,  0, NULL);
-  cdoOperatorAdd("yhourmax",  func_max,  0, NULL);
-  cdoOperatorAdd("yhoursum",  func_sum,  0, NULL);
-  cdoOperatorAdd("yhourmean", func_mean, 0, NULL);
-  cdoOperatorAdd("yhouravg",  func_avg,  0, NULL);
-  cdoOperatorAdd("yhourvar",  func_var,  0, NULL);
-  cdoOperatorAdd("yhourvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("yhourstd",  func_std,  0, NULL);
-  cdoOperatorAdd("yhourstd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  bool lmean   = operfunc == func_mean || operfunc == func_avg;
-  bool lstd    = operfunc == func_std || operfunc == func_std1;
-  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor = operfunc == func_std1 || operfunc == func_var1;
-
-  for ( houroy = 0; houroy < MAX_HOUR; ++houroy )
-    {
-      vars1[houroy] = NULL;
-      vars2[houroy] = NULL;
-      samp1[houroy] = NULL;
-      nsets[houroy] = 0;
-    }
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  int gridsize = vlistGridsizeMax(vlistID1);
-
-  field_type field;
-  field_init(&field);
-  field.ptr = (double*) Malloc(gridsize*sizeof(double));
-
-  int tsID = 0;
-  int otsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
-    {
-      vdate = taxisInqVdate(taxisID1);
-      vtime = taxisInqVtime(taxisID1);
-
-      if ( cdoVerbose ) cdoPrint("process timestep: %d %d %d", tsID+1, vdate, vtime);
-
-      houroy = hour_of_year(vdate, vtime);
-
-      vdates[houroy] = vdate;
-      vtimes[houroy] = vtime;
-
-      if ( vars1[houroy] == NULL )
-	{
-	  vars1[houroy] = field_malloc(vlistID1, FIELD_PTR);
-	  samp1[houroy] = field_malloc(vlistID1, FIELD_NONE);
-	  if ( lvarstd )
-	    vars2[houroy] = field_malloc(vlistID1, FIELD_PTR);
-	}
-
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-
-	  if ( tsID == 0 )
-	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
-	    }
-
-	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-
-	  if ( nsets[houroy] == 0 )
-	    {
-	      streamReadRecord(streamID1, vars1[houroy][varID][levelID].ptr, &nmiss);
-	      vars1[houroy][varID][levelID].nmiss = (size_t) nmiss;
-
-	      if ( nmiss > 0 || samp1[houroy][varID][levelID].ptr )
-		{
-		  if ( samp1[houroy][varID][levelID].ptr == NULL )
-		    samp1[houroy][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-
-		  for ( i = 0; i < gridsize; i++ )
-		    if ( DBL_IS_EQUAL(vars1[houroy][varID][levelID].ptr[i],
-				      vars1[houroy][varID][levelID].missval) )
-		      samp1[houroy][varID][levelID].ptr[i] = 0;
-		    else
-		      samp1[houroy][varID][levelID].ptr[i] = 1;
-		}
-	    }
-	  else
-	    {
-	      streamReadRecord(streamID1, field.ptr, &nmiss);
-              field.nmiss   = (size_t) nmiss;
-	      field.grid    = vars1[houroy][varID][levelID].grid;
-	      field.missval = vars1[houroy][varID][levelID].missval;
-
-	      if ( field.nmiss > 0 || samp1[houroy][varID][levelID].ptr )
-		{
-		  if ( samp1[houroy][varID][levelID].ptr == NULL )
-		    {
-		      samp1[houroy][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-		      for ( i = 0; i < gridsize; i++ )
-			samp1[houroy][varID][levelID].ptr[i] = nsets[houroy];
-		    }
-		  
-		  for ( i = 0; i < gridsize; i++ )
-		    if ( !DBL_IS_EQUAL(field.ptr[i], vars1[houroy][varID][levelID].missval) )
-		      samp1[houroy][varID][levelID].ptr[i]++;
-		}
-
-	      if ( lvarstd )
-		{
-		  farsumq(&vars2[houroy][varID][levelID], field);
-		  farsum(&vars1[houroy][varID][levelID], field);
-		}
-	      else
-		{
-		  farfun(&vars1[houroy][varID][levelID], field, operfunc);
-		}
-	    }
-	}
-
-      if ( nsets[houroy] == 0 && lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      farmoq(&vars2[houroy][varID][levelID], vars1[houroy][varID][levelID]);
-	  }
-
-      nsets[houroy]++;
-      tsID++;
-    }
-
-  for ( houroy = 0; houroy < MAX_HOUR; ++houroy )
-    if ( nsets[houroy] )
-      {
-	if ( lmean )
-	  for ( varID = 0; varID < nvars; varID++ )
-	    {
-	      if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	      nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	      for ( levelID = 0; levelID < nlevel; levelID++ )
-		{
-		  if ( samp1[houroy][varID][levelID].ptr == NULL )
-		    farcdiv(&vars1[houroy][varID][levelID], (double)nsets[houroy]);
-		  else
-		    fardiv(&vars1[houroy][varID][levelID], samp1[houroy][varID][levelID]);
-		}
-	    }
-	else if ( lvarstd )
-	  for ( varID = 0; varID < nvars; varID++ )
-	    {
-	      if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	      nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	      for ( levelID = 0; levelID < nlevel; levelID++ )
-		{
-		  if ( samp1[houroy][varID][levelID].ptr == NULL )
-		    {
-		      if ( lstd )
-			farcstd(&vars1[houroy][varID][levelID], vars2[houroy][varID][levelID], nsets[houroy], divisor);
-		      else
-			farcvar(&vars1[houroy][varID][levelID], vars2[houroy][varID][levelID], nsets[houroy], divisor);
-		    }
-		  else
-		    {
-		      if ( lstd )
-			farstd(&vars1[houroy][varID][levelID], vars2[houroy][varID][levelID], samp1[houroy][varID][levelID], divisor);
-		      else
-			farvar(&vars1[houroy][varID][levelID], vars2[houroy][varID][levelID], samp1[houroy][varID][levelID], divisor);
-		    }
-		}
-	    }
-
-	taxisDefVdate(taxisID2, vdates[houroy]);
-	taxisDefVtime(taxisID2, vtimes[houroy]);
-	streamDefTimestep(streamID2, otsID);
-
-	for ( int recID = 0; recID < nrecords; recID++ )
-	  {
-	    varID    = recVarID[recID];
-	    levelID  = recLevelID[recID];
-
-	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	    streamDefRecord(streamID2, varID, levelID);
-	    streamWriteRecord(streamID2, vars1[houroy][varID][levelID].ptr,
-			      (int)vars1[houroy][varID][levelID].nmiss);
-	  }
-
-	otsID++;
-      }
-
-  for ( houroy = 0; houroy < MAX_HOUR; ++houroy )
-    {
-      if ( vars1[houroy] != NULL )
-	{
-	  field_free(samp1[houroy], vlistID1);
-	  field_free(vars1[houroy], vlistID1);
-	  if ( lvarstd ) field_free(vars2[houroy], vlistID1);
-	}
-    }
-
-  if ( field.ptr ) Free(field.ptr);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Yhourstat.cc b/src/Yhourstat.cc
new file mode 100644
index 0000000..4a647ca
--- /dev/null
+++ b/src/Yhourstat.cc
@@ -0,0 +1,329 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Yhourstat   yhourrange       Multi-year hourly range
+      Yhourstat   yhourmin         Multi-year hourly minimum
+      Yhourstat   yhourmax         Multi-year hourly maximum
+      Yhourstat   yhoursum         Multi-year hourly sum
+      Yhourstat   yhourmean        Multi-year hourly mean
+      Yhourstat   yhouravg         Multi-year hourly average
+      Yhourstat   yhourvar         Multi-year hourly variance
+      Yhourstat   yhourvar1        Multi-year hourly variance [Normalize by (n-1)]
+      Yhourstat   yhourstd         Multi-year hourly standard deviation
+      Yhourstat   yhourstd1        Multi-year hourly standard deviation [Normalize by (n-1)]
+*/
+
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "pstream.h"
+
+
+#define  MAX_HOUR  9301  /* 31*12*25 + 1 */
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+static
+int hour_of_year(int vdate, int vtime)
+{
+  int year, month, day, houroy;
+  int hour, minute, second;
+
+  cdiDecodeDate(vdate, &year, &month, &day);
+  cdiDecodeTime(vtime, &hour, &minute, &second);
+      
+  if ( month >= 1 && month <= 12 && day >= 1 && day <=31 && hour >= 0 && hour < 24 )
+    houroy = ((month-1)*31 + day - 1)*25 + hour + 1;
+  else
+    houroy = 0;
+
+  if ( houroy < 0 || houroy >= MAX_HOUR )
+    {
+      char vdatestr[32], vtimestr[32];
+      date2str(vdate, vdatestr, sizeof(vdatestr));
+      time2str(vtime, vtimestr, sizeof(vtimestr));
+      cdoAbort("Hour of year %d out of range (%s %s)!", houroy, vdatestr, vtimestr);
+    }
+
+  return houroy;
+}
+
+
+void *Yhourstat(void *argument)
+{
+  int varID;
+  int nrecs;
+  int levelID;
+  int houroy_nsets[MAX_HOUR];
+  int nmiss;
+  int vdates[MAX_HOUR], vtimes[MAX_HOUR];
+  field_type **vars1[MAX_HOUR], **vars2[MAX_HOUR], **samp1[MAX_HOUR];
+
+  cdoInitialize(argument);
+
+  // clang-format off
+  cdoOperatorAdd("yhourrange", func_range, 0, NULL);
+  cdoOperatorAdd("yhourmin",   func_min,   0, NULL);
+  cdoOperatorAdd("yhourmax",   func_max,   0, NULL);
+  cdoOperatorAdd("yhoursum",   func_sum,   0, NULL);
+  cdoOperatorAdd("yhourmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("yhouravg",   func_avg,   0, NULL);
+  cdoOperatorAdd("yhourvar",   func_var,   0, NULL);
+  cdoOperatorAdd("yhourvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("yhourstd",   func_std,   0, NULL);
+  cdoOperatorAdd("yhourstd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
+
+  for ( int houroy = 0; houroy < MAX_HOUR; ++houroy )
+    {
+      vars1[houroy] = NULL;
+      vars2[houroy] = NULL;
+      samp1[houroy] = NULL;
+      houroy_nsets[houroy] = 0;
+    }
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
+  vlistDefTaxis(vlistID2, taxisID2);
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+
+  field_type field;
+  field_init(&field);
+  field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
+
+  int tsID = 0;
+  int otsID = 0;
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
+    {
+      int vdate = taxisInqVdate(taxisID1);
+      int vtime = taxisInqVtime(taxisID1);
+
+      if ( cdoVerbose ) cdoPrint("process timestep: %d %d %d", tsID+1, vdate, vtime);
+
+      int houroy = hour_of_year(vdate, vtime);
+
+      vdates[houroy] = vdate;
+      vtimes[houroy] = vtime;
+
+      if ( vars1[houroy] == NULL )
+	{
+	  vars1[houroy] = field_malloc(vlistID1, FIELD_PTR);
+	  samp1[houroy] = field_malloc(vlistID1, FIELD_NONE);
+	  if ( lvarstd || lrange )
+	    vars2[houroy] = field_malloc(vlistID1, FIELD_PTR);
+	}
+
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+
+	  if ( tsID == 0 )
+	    {
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
+	    }
+
+          field_type *psamp1 = &samp1[houroy][varID][levelID];
+          field_type *pvars1 = &vars1[houroy][varID][levelID];
+          field_type *pvars2 = vars2[houroy] ? &vars2[houroy][varID][levelID] : NULL;
+          int nsets = houroy_nsets[houroy];
+
+	  int gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
+
+	  if ( nsets == 0 )
+	    {
+	      pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	      pvars1->nmiss = (size_t) nmiss;
+              if ( lrange )
+                {
+                  pvars2->nmiss = pvars1->nmiss;
+                  for ( int i = 0; i < gridsize; i++ )
+                    pvars2->ptr[i] = pvars1->ptr[i];
+                }
+
+	      if ( nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+
+		  for ( int i = 0; i < gridsize; i++ )
+                    psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
+		}
+	    }
+	  else
+	    {
+	      pstreamReadRecord(streamID1, field.ptr, &nmiss);
+              field.nmiss   = (size_t) nmiss;
+	      field.grid    = pvars1->grid;
+	      field.missval = pvars1->missval;
+
+	      if ( field.nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    {
+		      psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+		      for ( int i = 0; i < gridsize; i++ )
+			psamp1->ptr[i] = nsets;
+		    }
+		  
+		  for ( int i = 0; i < gridsize; i++ )
+		    if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+		      psamp1->ptr[i]++;
+		}
+
+	      if ( lvarstd )
+		{
+		  farsumq(pvars2, field);
+		  farsum(pvars1, field);
+		}
+              else if ( lrange )
+                {
+                  farmin(pvars2, field);
+                  farmax(pvars1, field);
+                }
+	      else
+		{
+		  farfun(pvars1, field, operfunc);
+		}
+	    }
+	}
+
+      if ( houroy_nsets[houroy] == 0 && lvarstd )
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[houroy][varID][levelID];
+            field_type *pvars2 = &vars2[houroy][varID][levelID];
+
+	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            farmoq(pvars2, *pvars1);
+	  }
+
+      houroy_nsets[houroy]++;
+      tsID++;
+    }
+
+  for ( int houroy = 0; houroy < MAX_HOUR; ++houroy )
+    if ( houroy_nsets[houroy] )
+      {
+        int nsets = houroy_nsets[houroy];
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *psamp1 = &samp1[houroy][varID][levelID];
+            field_type *pvars1 = &vars1[houroy][varID][levelID];
+            field_type *pvars2 = vars2[houroy] ? &vars2[houroy][varID][levelID] : NULL;
+
+            if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            if ( lmean )
+              {
+                if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+                else               farcdiv(pvars1, (double)nsets);
+              }
+            else if ( lvarstd )
+              {
+                if ( psamp1->ptr )
+                  {
+                    if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                    else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                  }
+                else
+                  {
+                    if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                    else        farcvar(pvars1, *pvars2, nsets, divisor);
+                  }
+              }
+            else if ( lrange )
+              {
+                farsub(pvars1, *pvars2);
+              }
+          }
+
+	taxisDefVdate(taxisID2, vdates[houroy]);
+	taxisDefVtime(taxisID2, vtimes[houroy]);
+	pstreamDefTimestep(streamID2, otsID);
+
+	for ( int recID = 0; recID < maxrecs; recID++ )
+	  {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[houroy][varID][levelID];
+
+	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	    pstreamDefRecord(streamID2, varID, levelID);
+	    pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
+	  }
+
+	otsID++;
+      }
+
+  for ( int houroy = 0; houroy < MAX_HOUR; ++houroy )
+    {
+      if ( vars1[houroy] != NULL )
+	{
+	  field_free(samp1[houroy], vlistID1);
+	  field_free(vars1[houroy], vlistID1);
+	  if ( lvarstd ) field_free(vars2[houroy], vlistID1);
+	}
+    }
+
+  if ( field.ptr ) Free(field.ptr);
+
+  Free(recinfo);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Ymonarith.c b/src/Ymonarith.cc
similarity index 81%
rename from src/Ymonarith.c
rename to src/Ymonarith.cc
index c708841..13371d2 100644
--- a/src/Ymonarith.c
+++ b/src/Ymonarith.cc
@@ -22,10 +22,10 @@
       Ymonarith  ymonsub         Subtract multi-year monthly time series
       Ymonarith  ymonmul         Multiply multi-year monthly time series
       Ymonarith  ymondiv         Divide multi-year monthly time series
-      Ymonarith  yseasadd        Add multi-year seasonal time series
-      Ymonarith  yseassub        Subtract multi-year seasonal time series
-      Ymonarith  yseasmul        Multiply multi-year seasonal time series
-      Ymonarith  yseasdiv        Divide multi-year seasonal time series
+      Ymonarith  ymonadd         Add multi-year monthly time series
+      Ymonarith  ymonsub         Subtract multi-year monthly time series
+      Ymonarith  ymonmul         Multiply multi-year monthly time series
+      Ymonarith  ymondiv         Divide multi-year monthly time series
 */
 
 #include <cdi.h>
@@ -51,6 +51,7 @@ void *Ymonarith(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("ymonadd",  func_add, MONTHLY, NULL);
   cdoOperatorAdd("ymonsub",  func_sub, MONTHLY, NULL);
   cdoOperatorAdd("ymonmul",  func_mul, MONTHLY, NULL);
@@ -59,16 +60,17 @@ void *Ymonarith(void *argument)
   cdoOperatorAdd("yseassub", func_sub, SEASONAL, NULL);
   cdoOperatorAdd("yseasmul", func_mul, SEASONAL, NULL);
   cdoOperatorAdd("yseasdiv", func_div, SEASONAL, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
   int opertype = cdoOperatorF2(operatorID);
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
   int vlistID3 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -86,9 +88,8 @@ void *Ymonarith(void *argument)
   int taxisID3 = taxisDuplicate(taxisID1);
   vlistDefTaxis(vlistID3, taxisID3);
 
-  int streamID3 = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(streamID3, vlistID3);
+  int streamID3 = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(streamID3, vlistID3);
 
   int nvars  = vlistNvars(vlistID2);
 
@@ -97,7 +98,7 @@ void *Ymonarith(void *argument)
   for ( mon = 0; mon < MAX_MON ; mon++ ) vardata2[mon] = NULL;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
       vdate = taxisInqVdate(taxisID2);
 
@@ -128,12 +129,12 @@ void *Ymonarith(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID2, &varID, &levelID);
+	  pstreamInqRecord(streamID2, &varID, &levelID);
 
 	  gridsize = gridInqSize(vlistInqVarGrid(vlistID2, varID));
 	  offset   = gridsize*levelID;
 
-	  streamReadRecord(streamID2, vardata2[mon][varID]+offset, &nmiss);
+	  pstreamReadRecord(streamID2, vardata2[mon][varID]+offset, &nmiss);
 	  varnmiss2[mon][varID][levelID] = nmiss;
 	}
 
@@ -142,7 +143,7 @@ void *Ymonarith(void *argument)
 
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
 
@@ -161,12 +162,12 @@ void *Ymonarith(void *argument)
 	}
 
       taxisCopyTimestep(taxisID3, taxisID1);
-      streamDefTimestep(streamID3, tsID);
+      pstreamDefTimestep(streamID3, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
           field1.nmiss = (size_t) nmiss;
 	  field1.grid    = vlistInqVarGrid(vlistID1, varID);
 	  field1.missval = vlistInqVarMissval(vlistID1, varID);
@@ -181,15 +182,15 @@ void *Ymonarith(void *argument)
 
 	  farfun(&field1, field2, operfunc);
 
-	  streamDefRecord(streamID3, varID, levelID);
-	  streamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
+	  pstreamDefRecord(streamID3, varID, levelID);
+	  pstreamWriteRecord(streamID3, field1.ptr, (int)field1.nmiss);
 	}
       tsID++;
     }
 
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   for ( mon = 0; mon < MAX_MON ; mon++ ) 
     if ( vardata2[mon] )
diff --git a/src/Ymonpctl.c b/src/Ymonpctl.cc
similarity index 83%
rename from src/Ymonpctl.c
rename to src/Ymonpctl.cc
index c561c94..39ffa1e 100644
--- a/src/Ymonpctl.c
+++ b/src/Ymonpctl.cc
@@ -67,13 +67,13 @@ void *Ymonpctl(void *argument)
       nsets[month] = 0;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -88,9 +88,8 @@ void *Ymonpctl(void *argument)
   if ( taxisHasBounds(taxisID4) ) taxisDeleteBounds(taxisID4);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -105,9 +104,9 @@ void *Ymonpctl(void *argument)
   field.ptr = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
-      if ( nrecs != streamInqTimestep(streamID3, tsID) )
+      if ( nrecs != pstreamInqTimestep(streamID3, tsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", tsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
       
       vdate = taxisInqVdate(taxisID2);
@@ -140,14 +139,14 @@ void *Ymonpctl(void *argument)
       
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, vars1[month][varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, vars1[month][varID][levelID].ptr, &nmiss);
           vars1[month][varID][levelID].nmiss = nmiss;
         }
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars1[month][varID][levelID].grid;
 	  field.missval = vars1[month][varID][levelID].missval;
@@ -159,7 +158,7 @@ void *Ymonpctl(void *argument)
     }
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
@@ -178,7 +177,7 @@ void *Ymonpctl(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -186,7 +185,7 @@ void *Ymonpctl(void *argument)
 	      recLevelID[recID] = levelID;
 	    }
 
-	  streamReadRecord(streamID1, vars1[month][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars1[month][varID][levelID].ptr, &nmiss);
 	  vars1[month][varID][levelID].nmiss = nmiss;
 
 	  hsetAddVarLevelValues(hsets[month], varID, levelID, &vars1[month][varID][levelID]);
@@ -215,7 +214,7 @@ void *Ymonpctl(void *argument)
 
 	taxisDefVdate(taxisID4, vdates1[month]);
 	taxisDefVtime(taxisID4, vtimes1[month]);
-	streamDefTimestep(streamID4, otsID);
+	pstreamDefTimestep(streamID4, otsID);
 
 	for ( int recID = 0; recID < nrecords; recID++ )
 	  {
@@ -224,8 +223,8 @@ void *Ymonpctl(void *argument)
 
 	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	    streamDefRecord(streamID4, varID, levelID);
-	    streamWriteRecord(streamID4, vars1[month][varID][levelID].ptr, vars1[month][varID][levelID].nmiss);
+	    pstreamDefRecord(streamID4, varID, levelID);
+	    pstreamWriteRecord(streamID4, vars1[month][varID][levelID].ptr, vars1[month][varID][levelID].nmiss);
 	  }
 
 	otsID++;
@@ -245,10 +244,10 @@ void *Ymonpctl(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Ymonstat.c b/src/Ymonstat.c
deleted file mode 100644
index 1ae7634..0000000
--- a/src/Ymonstat.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Ymonstat   ymonmin         Multi-year monthly minimum
-      Ymonstat   ymonmax         Multi-year monthly maximum
-      Ymonstat   ymonsum         Multi-year monthly sum
-      Ymonstat   ymonmean        Multi-year monthly mean
-      Ymonstat   ymonavg         Multi-year monthly average
-      Ymonstat   ymonvar         Multi-year monthly variance
-      Ymonstat   ymonvar1        Multi-year monthly variance [Normalize by (n-1)]
-      Ymonstat   ymonstd         Multi-year monthly standard deviation
-      Ymonstat   ymonstd1        Multi-year monthly standard deviation [Normalize by (n-1)]
-*/
-
-
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "pstream.h"
-
-
-#define  NMONTH     17
-
-/*
-static
-int cmpint(const void *s1, const void *s2)
-{
-  int cmp = 0;
-  const int *x = s1;
-  const int *y = s2;
-
-  if      ( *x < *y ) cmp = -1;
-  else if ( *x > *y ) cmp =  1;
-
-  return cmp;
-}
-*/
-
-void *Ymonstat(void *argument)
-{
-  int i;
-  int varID;
-  int vdate, vtime;
-  int year, month, day;
-  int nrecs;
-  int levelID;
-  int nsets[NMONTH];
-  int nmiss;
-  int nlevel;
-  int vdates[NMONTH], vtimes[NMONTH];
-  int mon[NMONTH];
-  int nmon = 0;
-  field_type **vars1[NMONTH], **vars2[NMONTH], **samp1[NMONTH];
-  field_type field;
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("ymonmin",  func_min,  0, NULL);
-  cdoOperatorAdd("ymonmax",  func_max,  0, NULL);
-  cdoOperatorAdd("ymonsum",  func_sum,  0, NULL);
-  cdoOperatorAdd("ymonmean", func_mean, 0, NULL);
-  cdoOperatorAdd("ymonavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("ymonvar",  func_var,  0, NULL);
-  cdoOperatorAdd("ymonvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("ymonstd",  func_std,  0, NULL);
-  cdoOperatorAdd("ymonstd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  bool lmean   = operfunc == func_mean || operfunc == func_avg;
-  bool lstd    = operfunc == func_std || operfunc == func_std1;
-  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor  = operfunc == func_std1 || operfunc == func_var1;
-
-  for ( month = 0; month < NMONTH; month++ )
-    {
-      vars1[month] = NULL;
-      vars2[month] = NULL;
-      samp1[month] = NULL;
-      nsets[month] = 0;
-    }
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  int gridsize = vlistGridsizeMax(vlistID1);
-  field_init(&field);
-  field.ptr = (double*) Malloc(gridsize*sizeof(double));
-
-  int tsID = 0;
-  int otsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
-    {
-      vdate = taxisInqVdate(taxisID1);
-      vtime = taxisInqVtime(taxisID1);
-
-      if ( cdoVerbose ) cdoPrint("process timestep: %d %d %d", tsID+1, vdate, vtime);
-
-      cdiDecodeDate(vdate, &year, &month, &day);
-      if ( month < 0 || month >= NMONTH )
-	cdoAbort("month %d out of range!", month);
-
-      vdates[month] = vdate;
-      vtimes[month] = vtime;
-      // mon[month] = vdate;
-
-      if ( vars1[month] == NULL )
-	{
-	  mon[nmon++] = month;
-	  vars1[month] = field_malloc(vlistID1, FIELD_PTR);
-	  samp1[month] = field_malloc(vlistID1, FIELD_NONE);
-	  if ( lvarstd )
-	    vars2[month] = field_malloc(vlistID1, FIELD_PTR);
-	}
-
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-
-	  if ( tsID == 0 )
-	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
-	    }
-
-	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-
-	  if ( nsets[month] == 0 )
-	    {
-	      streamReadRecord(streamID1, vars1[month][varID][levelID].ptr, &nmiss);
-	      vars1[month][varID][levelID].nmiss = (size_t) nmiss;
-
-	      if ( nmiss > 0 || samp1[month][varID][levelID].ptr )
-		{
-		  if ( samp1[month][varID][levelID].ptr == NULL )
-		    samp1[month][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-
-		  for ( i = 0; i < gridsize; i++ )
-		    if ( DBL_IS_EQUAL(vars1[month][varID][levelID].ptr[i],
-				      vars1[month][varID][levelID].missval) )
-		      samp1[month][varID][levelID].ptr[i] = 0;
-		    else
-		      samp1[month][varID][levelID].ptr[i] = 1;
-		}
-	    }
-	  else
-	    {
-	      streamReadRecord(streamID1, field.ptr, &nmiss);
-              field.nmiss   = (size_t) nmiss;
-	      field.grid    = vars1[month][varID][levelID].grid;
-	      field.missval = vars1[month][varID][levelID].missval;
-
-	      if ( field.nmiss > 0 || samp1[month][varID][levelID].ptr )
-		{
-		  if ( samp1[month][varID][levelID].ptr == NULL )
-		    {
-		      samp1[month][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-		      for ( i = 0; i < gridsize; i++ )
-			samp1[month][varID][levelID].ptr[i] = nsets[month];
-		    }
-		  
-		  for ( i = 0; i < gridsize; i++ )
-		    if ( !DBL_IS_EQUAL(field.ptr[i], vars1[month][varID][levelID].missval) )
-		      samp1[month][varID][levelID].ptr[i]++;
-		}
-
-	      if ( lvarstd )
-		{
-		  farsumq(&vars2[month][varID][levelID], field);
-		  farsum(&vars1[month][varID][levelID], field);
-		}
-	      else
-		{
-		  farfun(&vars1[month][varID][levelID], field, operfunc);
-		}
-	    }
-	}
-
-      if ( nsets[month] == 0 && lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      farmoq(&vars2[month][varID][levelID], vars1[month][varID][levelID]);
-	  }
-
-      nsets[month]++;
-      tsID++;
-    }
-
-  if ( nmon == 12 )
-    {
-      int smon = 0;
-      for ( month = 1; month <= 12; month++ ) if ( nsets[month] ) smon++;
-      if ( smon == 12 ) for ( month = 1; month <= 12; month++ ) mon[month-1] = month;
-    }
-
-  /* sort output time steps */
-  /*
-  nmon = 0;
-  for ( month = 0; month < NMONTH; month++ )
-    {
-      if ( nsets[month] == 0 )
-	for ( i = month+1; i < NMONTH; i++ ) mon[i-1] = mon[i];
-      else
-	nmon++;
-    }
-
-  qsort(mon, nmon, sizeof(int), cmpint);
-	      
-  for ( i = 0; i < nmon; i++ )
-    {
-      cdiDecodeDate(mon[i], &year, &month, &day);
-      mon[i] = month;
-    }
-  */
-  for ( i = 0; i < nmon; i++ )
-    {
-      month = mon[i];
-      if ( nsets[month] == 0 ) cdoAbort("Internal problem, nsets[%d] not defined!", month);
-
-      if ( lmean )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( samp1[month][varID][levelID].ptr == NULL )
-		  farcdiv(&vars1[month][varID][levelID], (double)nsets[month]);
-		else
-		  fardiv(&vars1[month][varID][levelID], samp1[month][varID][levelID]);
-	      }
-	  }
-      else if ( lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      {
-		if ( samp1[month][varID][levelID].ptr == NULL )
-		  {
-		    if ( lstd )
-		      farcstd(&vars1[month][varID][levelID], vars2[month][varID][levelID], nsets[month], divisor);
-		    else
-		      farcvar(&vars1[month][varID][levelID], vars2[month][varID][levelID], nsets[month], divisor);
-		  }
-		else
-		  {
-		    if ( lstd )
-		      farstd(&vars1[month][varID][levelID], vars2[month][varID][levelID], samp1[month][varID][levelID], divisor);
-		    else
-		      farvar(&vars1[month][varID][levelID], vars2[month][varID][levelID], samp1[month][varID][levelID], divisor);
-		  }
-	      }
-	  }
-
-      taxisDefVdate(taxisID2, vdates[month]);
-      taxisDefVtime(taxisID2, vtimes[month]);
-      streamDefTimestep(streamID2, otsID);
-
-      for ( int recID = 0; recID < nrecords; recID++ )
-	{
-	  varID    = recVarID[recID];
-	  levelID  = recLevelID[recID];
-	  
-	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	  streamDefRecord(streamID2, varID, levelID);
-	  streamWriteRecord(streamID2, vars1[month][varID][levelID].ptr,
-			    (int)vars1[month][varID][levelID].nmiss);
-	}
-
-      otsID++;
-    }
-
-  for ( month = 0; month < NMONTH; month++ )
-    {
-      if ( vars1[month] != NULL )
-	{
-	  field_free(vars1[month], vlistID1);
-	  field_free(samp1[month], vlistID1);
-	  if ( lvarstd ) field_free(vars2[month], vlistID1);
-	}
-    }
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  if ( field.ptr ) Free(field.ptr);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Ymonstat.cc b/src/Ymonstat.cc
new file mode 100644
index 0000000..9c876b0
--- /dev/null
+++ b/src/Ymonstat.cc
@@ -0,0 +1,353 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Ymonstat   ymonrange       Multi-year monthly range
+      Ymonstat   ymonmin         Multi-year monthly minimum
+      Ymonstat   ymonmax         Multi-year monthly maximum
+      Ymonstat   ymonsum         Multi-year monthly sum
+      Ymonstat   ymonmean        Multi-year monthly mean
+      Ymonstat   ymonavg         Multi-year monthly average
+      Ymonstat   ymonvar         Multi-year monthly variance
+      Ymonstat   ymonvar1        Multi-year monthly variance [Normalize by (n-1)]
+      Ymonstat   ymonstd         Multi-year monthly standard deviation
+      Ymonstat   ymonstd1        Multi-year monthly standard deviation [Normalize by (n-1)]
+*/
+
+
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "pstream.h"
+
+
+#define  NMONTH     17
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+/*
+static
+int cmpint(const void *s1, const void *s2)
+{
+  int cmp = 0;
+  const int *x = s1;
+  const int *y = s2;
+
+  if      ( *x < *y ) cmp = -1;
+  else if ( *x > *y ) cmp =  1;
+
+  return cmp;
+}
+*/
+
+void *Ymonstat(void *argument)
+{
+  int varID;
+  int year, month, day;
+  int nrecs;
+  int levelID;
+  int month_nsets[NMONTH];
+  int nmiss;
+  int vdates[NMONTH], vtimes[NMONTH];
+  int mon[NMONTH];
+  int nmon = 0;
+  field_type **vars1[NMONTH], **vars2[NMONTH], **samp1[NMONTH];
+  field_type field;
+
+  cdoInitialize(argument);
+
+  // clang-format off
+  cdoOperatorAdd("ymonrange", func_range, 0, NULL);
+  cdoOperatorAdd("ymonmin",   func_min,   0, NULL);
+  cdoOperatorAdd("ymonmax",   func_max,   0, NULL);
+  cdoOperatorAdd("ymonsum",   func_sum,   0, NULL);
+  cdoOperatorAdd("ymonmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("ymonavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("ymonvar",   func_var,   0, NULL);
+  cdoOperatorAdd("ymonvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("ymonstd",   func_std,   0, NULL);
+  cdoOperatorAdd("ymonstd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
+
+  for ( month = 0; month < NMONTH; month++ )
+    {
+      vars1[month] = NULL;
+      vars2[month] = NULL;
+      samp1[month] = NULL;
+      month_nsets[month] = 0;
+    }
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
+  vlistDefTaxis(vlistID2, taxisID2);
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+  field_init(&field);
+  field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
+
+  int tsID = 0;
+  int otsID = 0;
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
+    {
+      int vdate = taxisInqVdate(taxisID1);
+      int vtime = taxisInqVtime(taxisID1);
+
+      if ( cdoVerbose ) cdoPrint("process timestep: %d %d %d", tsID+1, vdate, vtime);
+
+      cdiDecodeDate(vdate, &year, &month, &day);
+      if ( month < 0 || month >= NMONTH )
+	cdoAbort("month %d out of range!", month);
+
+      vdates[month] = vdate;
+      vtimes[month] = vtime;
+      // mon[month] = vdate;
+
+      if ( vars1[month] == NULL )
+	{
+	  mon[nmon++] = month;
+	  vars1[month] = field_malloc(vlistID1, FIELD_PTR);
+	  samp1[month] = field_malloc(vlistID1, FIELD_NONE);
+	  if ( lvarstd || lrange )
+	    vars2[month] = field_malloc(vlistID1, FIELD_PTR);
+	}
+
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+
+	  if ( tsID == 0 )
+	    {
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
+	    }
+
+          field_type *psamp1 = &samp1[month][varID][levelID];
+          field_type *pvars1 = &vars1[month][varID][levelID];
+          field_type *pvars2 = vars2[month] ? &vars2[month][varID][levelID] : NULL;
+          int nsets = month_nsets[month];
+
+          int gridsize = pvars1->size;
+
+	  if ( nsets == 0 )
+	    {
+	      pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	      pvars1->nmiss = (size_t) nmiss;
+              if ( lrange )
+                {
+                  pvars2->nmiss = pvars1->nmiss;
+                  for ( int i = 0; i < gridsize; i++ )
+                    pvars2->ptr[i] = pvars1->ptr[i];
+                }
+
+	      if ( nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+
+		  for ( int i = 0; i < gridsize; i++ )
+                    psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
+		}
+	    }
+	  else
+	    {
+	      pstreamReadRecord(streamID1, field.ptr, &nmiss);
+              field.nmiss   = (size_t) nmiss;
+	      field.grid    = pvars1->grid;
+	      field.missval = pvars1->missval;
+
+	      if ( field.nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    {
+		      psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+		      for ( int i = 0; i < gridsize; i++ )
+			psamp1->ptr[i] = nsets;
+		    }
+		  
+		  for ( int i = 0; i < gridsize; i++ )
+		    if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+		      psamp1->ptr[i]++;
+		}
+
+	      if ( lvarstd )
+		{
+		  farsumq(pvars2, field);
+		  farsum(pvars1, field);
+		}
+              else if ( lrange )
+                {
+                  farmin(pvars2, field);
+                  farmax(pvars1, field);
+                }
+	      else
+		{
+		  farfun(pvars1, field, operfunc);
+		}
+	    }
+	}
+
+      if ( month_nsets[month] == 0 && lvarstd )
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[month][varID][levelID];
+            field_type *pvars2 = &vars2[month][varID][levelID];
+
+	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            farmoq(pvars2, *pvars1);
+	  }
+
+      month_nsets[month]++;
+      tsID++;
+    }
+
+  if ( nmon == 12 )
+    {
+      int smon = 0;
+      for ( month = 1; month <= 12; month++ ) if ( month_nsets[month] ) smon++;
+      if ( smon == 12 ) for ( month = 1; month <= 12; month++ ) mon[month-1] = month;
+    }
+
+  /* sort output time steps */
+  /*
+  nmon = 0;
+  for ( month = 0; month < NMONTH; month++ )
+    {
+      if ( month_nsets[month] == 0 )
+	for ( i = month+1; i < NMONTH; i++ ) mon[i-1] = mon[i];
+      else
+	nmon++;
+    }
+
+  qsort(mon, nmon, sizeof(int), cmpint);
+	      
+  for ( i = 0; i < nmon; i++ )
+    {
+      cdiDecodeDate(mon[i], &year, &month, &day);
+      mon[i] = month;
+    }
+  */
+  for ( int i = 0; i < nmon; i++ )
+    {
+      month = mon[i];
+      if ( month_nsets[month] == 0 ) cdoAbort("Internal problem, nsets[%d] not defined!", month);
+
+      int nsets = month_nsets[month];
+      for ( int recID = 0; recID < maxrecs; recID++ )
+        {
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *psamp1 = &samp1[month][varID][levelID];
+          field_type *pvars1 = &vars1[month][varID][levelID];
+          field_type *pvars2 = vars2[month] ? &vars2[month][varID][levelID] : NULL;
+
+          if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+          if ( lmean )
+            {
+              if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+              else               farcdiv(pvars1, (double)nsets);
+            }
+          else if ( lvarstd )
+            {
+              if ( psamp1->ptr )
+                {
+                  if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                  else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                }
+              else
+                {
+                  if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                  else        farcvar(pvars1, *pvars2, nsets, divisor);
+                }
+            }
+          else if ( lrange )
+            {
+              farsub(pvars1, *pvars2);
+            }
+        }
+
+      taxisDefVdate(taxisID2, vdates[month]);
+      taxisDefVtime(taxisID2, vtimes[month]);
+      pstreamDefTimestep(streamID2, otsID);
+
+      for ( int recID = 0; recID < maxrecs; recID++ )
+	{
+          int varID   = recinfo[recID].varID;
+          int levelID = recinfo[recID].levelID;
+          field_type *pvars1 = &vars1[month][varID][levelID];
+	  
+	  if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	  pstreamDefRecord(streamID2, varID, levelID);
+	  pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
+	}
+
+      otsID++;
+    }
+
+  for ( month = 0; month < NMONTH; month++ )
+    {
+      if ( vars1[month] != NULL )
+	{
+	  field_free(vars1[month], vlistID1);
+	  field_free(samp1[month], vlistID1);
+	  if ( lvarstd ) field_free(vars2[month], vlistID1);
+	}
+    }
+
+  if ( field.ptr ) Free(field.ptr);
+
+  Free(recinfo);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Yseaspctl.c b/src/Yseaspctl.cc
similarity index 83%
rename from src/Yseaspctl.c
rename to src/Yseaspctl.cc
index cdfd255..b764f8f 100644
--- a/src/Yseaspctl.c
+++ b/src/Yseaspctl.cc
@@ -18,7 +18,7 @@
 /*
    This module contains the following operators:
 
-      Yseaspctl  yseaspctl       Multi-year seasonally percentiles
+      Yseaspctl  yseaspctl       Multi-year seasonal percentiles
 */
 
 #include <cdi.h>
@@ -74,13 +74,13 @@ void *Yseaspctl(void *argument)
       datetime2[seas].vtime = 0;
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-  int streamID2 = streamOpenRead(cdoStreamName(1));
-  int streamID3 = streamOpenRead(cdoStreamName(2));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+  int streamID2 = pstreamOpenRead(cdoStreamName(1));
+  int streamID3 = pstreamOpenRead(cdoStreamName(2));
 
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = streamInqVlist(streamID2);
-  int vlistID3 = streamInqVlist(streamID3);
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = pstreamInqVlist(streamID2);
+  int vlistID3 = pstreamInqVlist(streamID3);
   int vlistID4 = vlistDuplicate(vlistID1);
 
   vlistCompare(vlistID1, vlistID2, CMP_ALL);
@@ -95,9 +95,8 @@ void *Yseaspctl(void *argument)
   if ( taxisHasBounds(taxisID4) ) taxisDeleteBounds(taxisID4);
   vlistDefTaxis(vlistID4, taxisID4);
 
-  int streamID4 = streamOpenWrite(cdoStreamName(3), cdoFiletype());
-
-  streamDefVlist(streamID4, vlistID4);
+  int streamID4 = pstreamOpenWrite(cdoStreamName(3), cdoFiletype());
+  pstreamDefVlist(streamID4, vlistID4);
 
   int nvars    = vlistNvars(vlistID1);
   int nrecords = vlistNrecs(vlistID1);
@@ -112,9 +111,9 @@ void *Yseaspctl(void *argument)
   field.ptr = (double*) Malloc(gridsize*sizeof(double));
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID2, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID2, tsID)) )
     {
-      if ( nrecs != streamInqTimestep(streamID3, tsID) )
+      if ( nrecs != pstreamInqTimestep(streamID3, tsID) )
         cdoAbort("Number of records at time step %d of %s and %s differ!", tsID+1, cdoStreamName(1)->args, cdoStreamName(2)->args);
       
       vdate = taxisInqVdate(taxisID2);
@@ -147,14 +146,14 @@ void *Yseaspctl(void *argument)
       
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID2, &varID, &levelID);
-	  streamReadRecord(streamID2, vars1[seas][varID][levelID].ptr, &nmiss);
+          pstreamInqRecord(streamID2, &varID, &levelID);
+	  pstreamReadRecord(streamID2, vars1[seas][varID][levelID].ptr, &nmiss);
           vars1[seas][varID][levelID].nmiss = nmiss;
         }
       for ( int recID = 0; recID < nrecs; recID++ )
         {
-          streamInqRecord(streamID3, &varID, &levelID);
-	  streamReadRecord(streamID3, field.ptr, &nmiss);
+          pstreamInqRecord(streamID3, &varID, &levelID);
+	  pstreamReadRecord(streamID3, field.ptr, &nmiss);
           field.nmiss   = nmiss;
           field.grid    = vars1[seas][varID][levelID].grid;
 	  field.missval = vars1[seas][varID][levelID].missval;
@@ -166,7 +165,7 @@ void *Yseaspctl(void *argument)
     }
 
   tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       vdate = taxisInqVdate(taxisID1);
       vtime = taxisInqVtime(taxisID1);
@@ -189,7 +188,7 @@ void *Yseaspctl(void *argument)
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
 
 	  if ( tsID == 0 )
 	    {
@@ -197,7 +196,7 @@ void *Yseaspctl(void *argument)
 	      recLevelID[recID] = levelID;
 	    }
 
-	  streamReadRecord(streamID1, vars1[seas][varID][levelID].ptr, &nmiss);
+	  pstreamReadRecord(streamID1, vars1[seas][varID][levelID].ptr, &nmiss);
 	  vars1[seas][varID][levelID].nmiss = nmiss;
 	  
 	  hsetAddVarLevelValues(hsets[seas], varID, levelID, &vars1[seas][varID][levelID]);
@@ -226,7 +225,7 @@ void *Yseaspctl(void *argument)
 
 	taxisDefVdate(taxisID4, datetime1[seas].vdate);
 	taxisDefVtime(taxisID4, datetime1[seas].vtime);
-	streamDefTimestep(streamID4, otsID);
+	pstreamDefTimestep(streamID4, otsID);
 
 	for ( int recID = 0; recID < nrecords; recID++ )
 	  {
@@ -235,8 +234,8 @@ void *Yseaspctl(void *argument)
 
 	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
 
-	    streamDefRecord(streamID4, varID, levelID);
-	    streamWriteRecord(streamID4, vars1[seas][varID][levelID].ptr, vars1[seas][varID][levelID].nmiss);
+	    pstreamDefRecord(streamID4, varID, levelID);
+	    pstreamWriteRecord(streamID4, vars1[seas][varID][levelID].ptr, vars1[seas][varID][levelID].nmiss);
 	  }
 
 	otsID++;
@@ -256,10 +255,10 @@ void *Yseaspctl(void *argument)
   if ( recVarID   ) Free(recVarID);
   if ( recLevelID ) Free(recLevelID);
 
-  streamClose(streamID4);
-  streamClose(streamID3);
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID4);
+  pstreamClose(streamID3);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   cdoFinish();
 
diff --git a/src/Yseasstat.c b/src/Yseasstat.c
deleted file mode 100644
index 09c247d..0000000
--- a/src/Yseasstat.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-/*
-   This module contains the following operators:
-
-      Yseasstat  yseasmin        Multi-year seasonally minimum
-      Yseasstat  yseasmax        Multi-year seasonally maximum
-      Yseasstat  yseassum        Multi-year seasonally sum
-      Yseasstat  yseasmean       Multi-year seasonally mean
-      Yseasstat  yseasavg        Multi-year seasonally average
-      Yseasstat  yseasvar        Multi-year seasonally variance
-      Yseasstat  yseasvar1       Multi-year seasonally variance [Normalize by (n-1)]
-      Yseasstat  yseasstd        Multi-year seasonally standard deviation
-      Yseasstat  yseasstd1       Multi-year seasonally standard deviation [Normalize by (n-1)]
-*/
-
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "pstream.h"
-#include "util.h"
-
-
-#define  NSEAS       4
-
-typedef struct {
-  int vdate;
-  int vtime;
-}
-date_time_t;
-
-void set_date(int vdate_new, int vtime_new, date_time_t *datetime)
-{
-  int year, month, day;
-  cdiDecodeDate(vdate_new, &year, &month, &day);
-  if ( month == 12 ) vdate_new = cdiEncodeDate(year-1, month, day);
-
-  if ( vdate_new > datetime->vdate )
-    {
-      datetime->vdate = vdate_new;
-      datetime->vtime = vtime_new;
-    }
-}
-
-
-void *Yseasstat(void *argument)
-{
-  int i;
-  int varID;
-  int vdate, vtime;
-  int year, month, day, seas;
-  int nrecs;
-  int levelID;
-  int nsets[NSEAS];
-  int nmiss;
-  int nlevel;
-  date_time_t datetime[NSEAS];
-  field_type **vars1[NSEAS], **vars2[NSEAS], **samp1[NSEAS];
-
-  cdoInitialize(argument);
-
-  cdoOperatorAdd("yseasmin",  func_min,  0, NULL);
-  cdoOperatorAdd("yseasmax",  func_max,  0, NULL);
-  cdoOperatorAdd("yseassum",  func_sum,  0, NULL);
-  cdoOperatorAdd("yseasmean", func_mean, 0, NULL);
-  cdoOperatorAdd("yseasavg",  func_avg,  0, NULL);
-  cdoOperatorAdd("yseasvar",  func_var,  0, NULL);
-  cdoOperatorAdd("yseasvar1", func_var1, 0, NULL);
-  cdoOperatorAdd("yseasstd",  func_std,  0, NULL);
-  cdoOperatorAdd("yseasstd1", func_std1, 0, NULL);
-
-  int operatorID = cdoOperatorID();
-  int operfunc = cdoOperatorF1(operatorID);
-
-  for ( seas = 0; seas < NSEAS; seas++ )
-    {
-      vars1[seas]  = NULL;
-      vars2[seas]  = NULL;
-      samp1[seas]  = NULL;
-      nsets[seas]  = 0;
-      datetime[seas].vdate = 0;
-      datetime[seas].vtime = 0;
-    }
-
-  bool lmean   = operfunc == func_mean || operfunc == func_avg;
-  bool lstd    = operfunc == func_std || operfunc == func_std1;
-  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
-  int divisor  = operfunc == func_std1 || operfunc == func_var1;
-
-  int streamID1 = streamOpenRead(cdoStreamName(0));
-
-  int vlistID1 = streamInqVlist(streamID1);
-  int vlistID2 = vlistDuplicate(vlistID1);
-
-  int taxisID1 = vlistInqTaxis(vlistID1);
-  int taxisID2 = taxisDuplicate(taxisID1);
-  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
-  vlistDefTaxis(vlistID2, taxisID2);
-
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
-
-  int nvars    = vlistNvars(vlistID1);
-  int nrecords = vlistNrecs(vlistID1);
-
-  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
-  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
-
-  int gridsize = vlistGridsizeMax(vlistID1);
-
-  field_type field;
-  field_init(&field);
-  field.ptr = (double*) Malloc(gridsize*sizeof(double));
-
-  int tsID = 0;
-  int otsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
-    {
-      vdate = taxisInqVdate(taxisID1);
-      vtime = taxisInqVtime(taxisID1);
-      cdiDecodeDate(vdate, &year, &month, &day);
-
-      seas = month_to_season(month); 
-
-      set_date(vdate, vtime, &datetime[seas]);
-
-      if ( vars1[seas] == NULL )
-	{
-	  vars1[seas] = field_malloc(vlistID1, FIELD_PTR);
-	  samp1[seas] = field_malloc(vlistID1, FIELD_NONE);
-	  if ( lvarstd )
-	    vars2[seas] = field_malloc(vlistID1, FIELD_PTR);
-	}
-
-      for ( int recID = 0; recID < nrecs; recID++ )
-	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-
-	  if ( tsID == 0 )
-	    {
-	      recVarID[recID]   = varID;
-	      recLevelID[recID] = levelID;
-	    }
-
-	  gridsize = gridInqSize(vlistInqVarGrid(vlistID1, varID));
-
-	  if ( nsets[seas] == 0 )
-	    {
-	      streamReadRecord(streamID1, vars1[seas][varID][levelID].ptr, &nmiss);
-	      vars1[seas][varID][levelID].nmiss = (size_t)nmiss;
-
-	      if ( nmiss > 0 || samp1[seas][varID][levelID].ptr )
-		{
-		  if ( samp1[seas][varID][levelID].ptr == NULL )
-		    samp1[seas][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-
-		  for ( i = 0; i < gridsize; i++ )
-		    if ( DBL_IS_EQUAL(vars1[seas][varID][levelID].ptr[i],
-				      vars1[seas][varID][levelID].missval) )
-		      samp1[seas][varID][levelID].ptr[i] = 0;
-		    else
-		      samp1[seas][varID][levelID].ptr[i] = 1;
-		}
-	    }
-	  else
-	    {
-	      streamReadRecord(streamID1, field.ptr, &nmiss);
-              field.nmiss   = (size_t)nmiss;
-	      field.grid    = vars1[seas][varID][levelID].grid;
-	      field.missval = vars1[seas][varID][levelID].missval;
-
-	      if ( field.nmiss > 0 || samp1[seas][varID][levelID].ptr )
-		{
-		  if ( samp1[seas][varID][levelID].ptr == NULL )
-		    {
-		      samp1[seas][varID][levelID].ptr = (double*) Malloc(gridsize*sizeof(double));
-		      for ( i = 0; i < gridsize; i++ )
-			samp1[seas][varID][levelID].ptr[i] = nsets[seas];
-		    }
-		  
-		  for ( i = 0; i < gridsize; i++ )
-		    if ( !DBL_IS_EQUAL(field.ptr[i], vars1[seas][varID][levelID].missval) )
-		      samp1[seas][varID][levelID].ptr[i]++;
-		}
-
-	      if ( lvarstd )
-		{
-		  farsumq(&vars2[seas][varID][levelID], field);
-		  farsum(&vars1[seas][varID][levelID], field);
-		}
-	      else
-		{
-		  farfun(&vars1[seas][varID][levelID], field, operfunc);
-		}
-	    }
-	}
-
-      if ( nsets[seas] == 0 && lvarstd )
-	for ( varID = 0; varID < nvars; varID++ )
-	  {
-	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	    nlevel   = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	    for ( levelID = 0; levelID < nlevel; levelID++ )
-	      farmoq(&vars2[seas][varID][levelID], vars1[seas][varID][levelID]);
-	  }
-
-      nsets[seas]++;
-      tsID++;
-    }
-
-  for ( seas = 0; seas < NSEAS; seas++ )
-    if ( nsets[seas] )
-      {
-	if ( lmean )
-	  for ( varID = 0; varID < nvars; varID++ )
-	    {
-	      if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	      nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	      for ( levelID = 0; levelID < nlevel; levelID++ )
-		{
-		  if ( samp1[seas][varID][levelID].ptr == NULL )
-		    farcdiv(&vars1[seas][varID][levelID], (double)nsets[seas]);
-		  else
-		    fardiv(&vars1[seas][varID][levelID], samp1[seas][varID][levelID]);
-		}
-	    }
-	else if ( lvarstd )
-	  for ( varID = 0; varID < nvars; varID++ )
-	    {
-	      if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-	      nlevel = zaxisInqSize(vlistInqVarZaxis(vlistID1, varID));
-	      for ( levelID = 0; levelID < nlevel; levelID++ )
-		{
-		  if ( samp1[seas][varID][levelID].ptr == NULL )
-		    {
-		      if ( lstd )
-			farcstd(&vars1[seas][varID][levelID], vars2[seas][varID][levelID], nsets[seas], divisor);
-		      else
-			farcvar(&vars1[seas][varID][levelID], vars2[seas][varID][levelID], nsets[seas], divisor);
-		    }
-		  else
-		    {
-		      if ( lstd )
-			farstd(&vars1[seas][varID][levelID], vars2[seas][varID][levelID], samp1[seas][varID][levelID], divisor);
-		      else
-			farvar(&vars1[seas][varID][levelID], vars2[seas][varID][levelID], samp1[seas][varID][levelID], divisor);
-		    }
-		}
-	    }
-
-	taxisDefVdate(taxisID2, datetime[seas].vdate);
-	taxisDefVtime(taxisID2, datetime[seas].vtime);
-	streamDefTimestep(streamID2, otsID);
-
-	for ( int recID = 0; recID < nrecords; recID++ )
-	  {
-	    varID    = recVarID[recID];
-	    levelID  = recLevelID[recID];
-
-	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
-
-	    streamDefRecord(streamID2, varID, levelID);
-	    streamWriteRecord(streamID2, vars1[seas][varID][levelID].ptr,
-			      (int)vars1[seas][varID][levelID].nmiss);
-	  }
-
-	otsID++;
-      }
-
-  for ( seas = 0; seas < NSEAS; seas++ )
-    {
-      if ( vars1[seas] != NULL )
-	{
-	  field_free(vars1[seas], vlistID1);
-	  field_free(samp1[seas], vlistID1);
-	  if ( lvarstd ) Free(vars2[seas]);
-	}
-    }
-
-  if ( field.ptr ) Free(field.ptr);
-
-  if ( recVarID   ) Free(recVarID);
-  if ( recLevelID ) Free(recLevelID);
-
-  streamClose(streamID2);
-  streamClose(streamID1);
-
-  cdoFinish();
-
-  return 0;
-}
diff --git a/src/Yseasstat.cc b/src/Yseasstat.cc
new file mode 100644
index 0000000..2c90529
--- /dev/null
+++ b/src/Yseasstat.cc
@@ -0,0 +1,325 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+/*
+   This module contains the following operators:
+
+      Yseasstat  yseasrange      Multi-year seasonal range
+      Yseasstat  yseasmin        Multi-year seasonal minimum
+      Yseasstat  yseasmax        Multi-year seasonal maximum
+      Yseasstat  yseassum        Multi-year seasonal sum
+      Yseasstat  yseasmean       Multi-year seasonal mean
+      Yseasstat  yseasavg        Multi-year seasonal average
+      Yseasstat  yseasvar        Multi-year seasonal variance
+      Yseasstat  yseasvar1       Multi-year seasonal variance [Normalize by (n-1)]
+      Yseasstat  yseasstd        Multi-year seasonal standard deviation
+      Yseasstat  yseasstd1       Multi-year seasonal standard deviation [Normalize by (n-1)]
+*/
+
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "pstream.h"
+#include "util.h"
+
+
+#define  NSEAS       4
+
+typedef struct {
+  int vdate;
+  int vtime;
+}
+date_time_t;
+
+typedef struct {
+  short varID;
+  short levelID;
+} recinfo_t;
+
+
+void set_date(int vdate_new, int vtime_new, date_time_t *datetime)
+{
+  int year, month, day;
+  cdiDecodeDate(vdate_new, &year, &month, &day);
+  if ( month == 12 ) vdate_new = cdiEncodeDate(year-1, month, day);
+
+  if ( vdate_new > datetime->vdate )
+    {
+      datetime->vdate = vdate_new;
+      datetime->vtime = vtime_new;
+    }
+}
+
+
+void *Yseasstat(void *argument)
+{
+  int varID;
+  int year, month, day;
+  int nrecs;
+  int levelID;
+  int seas_nsets[NSEAS];
+  int nmiss;
+  date_time_t datetime[NSEAS];
+  field_type **vars1[NSEAS], **vars2[NSEAS], **samp1[NSEAS];
+
+  cdoInitialize(argument);
+
+  // clang-format off
+  cdoOperatorAdd("yseasrange", func_range, 0, NULL);
+  cdoOperatorAdd("yseasmin",   func_min,   0, NULL);
+  cdoOperatorAdd("yseasmax",   func_max,   0, NULL);
+  cdoOperatorAdd("yseassum",   func_sum,   0, NULL);
+  cdoOperatorAdd("yseasmean",  func_mean,  0, NULL);
+  cdoOperatorAdd("yseasavg",   func_avg,   0, NULL);
+  cdoOperatorAdd("yseasvar",   func_var,   0, NULL);
+  cdoOperatorAdd("yseasvar1",  func_var1,  0, NULL);
+  cdoOperatorAdd("yseasstd",   func_std,   0, NULL);
+  cdoOperatorAdd("yseasstd1",  func_std1,  0, NULL);
+
+  int operatorID = cdoOperatorID();
+  int operfunc = cdoOperatorF1(operatorID);
+
+  bool lrange  = operfunc == func_range;
+  bool lmean   = operfunc == func_mean || operfunc == func_avg;
+  bool lstd    = operfunc == func_std || operfunc == func_std1;
+  bool lvarstd = operfunc == func_std || operfunc == func_var || operfunc == func_std1 || operfunc == func_var1;
+  int  divisor = operfunc == func_std1 || operfunc == func_var1;
+  // clang-format on
+
+  for ( int seas = 0; seas < NSEAS; seas++ )
+    {
+      vars1[seas]  = NULL;
+      vars2[seas]  = NULL;
+      samp1[seas]  = NULL;
+      seas_nsets[seas]  = 0;
+      datetime[seas].vdate = 0;
+      datetime[seas].vtime = 0;
+    }
+
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
+
+  int vlistID1 = pstreamInqVlist(streamID1);
+  int vlistID2 = vlistDuplicate(vlistID1);
+
+  int taxisID1 = vlistInqTaxis(vlistID1);
+  int taxisID2 = taxisDuplicate(taxisID1);
+  if ( taxisHasBounds(taxisID2) ) taxisDeleteBounds(taxisID2);
+  vlistDefTaxis(vlistID2, taxisID2);
+
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
+
+  int maxrecs = vlistNrecs(vlistID1);
+
+  recinfo_t *recinfo = (recinfo_t *) Malloc(maxrecs*sizeof(recinfo_t));
+
+  int gridsizemax = vlistGridsizeMax(vlistID1);
+
+  field_type field;
+  field_init(&field);
+  field.ptr = (double*) Malloc(gridsizemax*sizeof(double));
+
+  int tsID = 0;
+  int otsID = 0;
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
+    {
+      int vdate = taxisInqVdate(taxisID1);
+      int vtime = taxisInqVtime(taxisID1);
+      cdiDecodeDate(vdate, &year, &month, &day);
+
+      int seas = month_to_season(month);
+
+      set_date(vdate, vtime, &datetime[seas]);
+
+      if ( vars1[seas] == NULL )
+	{
+	  vars1[seas] = field_malloc(vlistID1, FIELD_PTR);
+	  samp1[seas] = field_malloc(vlistID1, FIELD_NONE);
+	  if ( lvarstd || lrange )
+	    vars2[seas] = field_malloc(vlistID1, FIELD_PTR);
+	}
+
+      for ( int recID = 0; recID < nrecs; recID++ )
+	{
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+
+	  if ( tsID == 0 )
+	    {
+              recinfo[recID].varID   = varID;
+              recinfo[recID].levelID = levelID;
+	    }
+
+          field_type *psamp1 = &samp1[seas][varID][levelID];
+          field_type *pvars1 = &vars1[seas][varID][levelID];
+          field_type *pvars2 = vars2[seas] ? &vars2[seas][varID][levelID] : NULL;
+          int nsets = seas_nsets[seas];
+
+	  int gridsize = pvars1->size;
+
+	  if ( nsets == 0 )
+	    {
+	      pstreamReadRecord(streamID1, pvars1->ptr, &nmiss);
+	      pvars1->nmiss = (size_t)nmiss;
+              if ( lrange )
+                {
+                  pvars2->nmiss = pvars1->nmiss;
+                  for ( int i = 0; i < gridsize; i++ )
+                    pvars2->ptr[i] = pvars1->ptr[i];
+                }
+
+	      if ( nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+
+		  for ( int i = 0; i < gridsize; i++ )
+                    psamp1->ptr[i] = !DBL_IS_EQUAL(pvars1->ptr[i], pvars1->missval);
+		}
+	    }
+	  else
+	    {
+	      pstreamReadRecord(streamID1, field.ptr, &nmiss);
+              field.nmiss   = (size_t)nmiss;
+	      field.grid    = pvars1->grid;
+	      field.missval = pvars1->missval;
+
+	      if ( field.nmiss > 0 || psamp1->ptr )
+		{
+		  if ( psamp1->ptr == NULL )
+		    {
+		      psamp1->ptr = (double*) Malloc(gridsize*sizeof(double));
+		      for ( int i = 0; i < gridsize; i++ )
+			psamp1->ptr[i] = nsets;
+		    }
+		  
+		  for ( int i = 0; i < gridsize; i++ )
+		    if ( !DBL_IS_EQUAL(field.ptr[i], pvars1->missval) )
+		      psamp1->ptr[i]++;
+		}
+
+	      if ( lvarstd )
+		{
+		  farsumq(pvars2, field);
+		  farsum(pvars1, field);
+		}
+              else if ( lrange )
+                {
+                  farmin(pvars2, field);
+                  farmax(pvars1, field);
+                }
+	      else
+		{
+		  farfun(pvars1, field, operfunc);
+		}
+	    }
+	}
+
+      if ( seas_nsets[seas] == 0 && lvarstd )
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[seas][varID][levelID];
+            field_type *pvars2 = &vars2[seas][varID][levelID];
+
+	    if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            farmoq(pvars2, *pvars1);
+	  }
+
+      seas_nsets[seas]++;
+      tsID++;
+    }
+
+  for ( int seas = 0; seas < NSEAS; seas++ )
+    if ( seas_nsets[seas] )
+      {
+        int nsets = seas_nsets[seas];
+        for ( int recID = 0; recID < maxrecs; recID++ )
+          {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *psamp1 = &samp1[seas][varID][levelID];
+            field_type *pvars1 = &vars1[seas][varID][levelID];
+            field_type *pvars2 = vars2[seas] ? &vars2[seas][varID][levelID] : NULL;
+
+            if ( vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+            if ( lmean )
+              {
+                if ( psamp1->ptr ) fardiv(pvars1, *psamp1);
+                else               farcdiv(pvars1, (double)nsets);
+              }
+            else if ( lvarstd )
+              {
+                if ( psamp1->ptr )
+                  {
+                    if ( lstd ) farstd(pvars1, *pvars2, *psamp1, divisor);
+                    else        farvar(pvars1, *pvars2, *psamp1, divisor);
+                  }
+                else
+                  {
+                    if ( lstd ) farcstd(pvars1, *pvars2, nsets, divisor);
+                    else        farcvar(pvars1, *pvars2, nsets, divisor);
+                  }
+              }
+            else if ( lrange )
+              {
+                farsub(pvars1, *pvars2);
+              }
+          }
+
+	taxisDefVdate(taxisID2, datetime[seas].vdate);
+	taxisDefVtime(taxisID2, datetime[seas].vtime);
+	pstreamDefTimestep(streamID2, otsID);
+
+	for ( int recID = 0; recID < maxrecs; recID++ )
+	  {
+            int varID   = recinfo[recID].varID;
+            int levelID = recinfo[recID].levelID;
+            field_type *pvars1 = &vars1[seas][varID][levelID];
+
+	    if ( otsID && vlistInqVarTsteptype(vlistID1, varID) == TSTEP_CONSTANT ) continue;
+
+	    pstreamDefRecord(streamID2, varID, levelID);
+	    pstreamWriteRecord(streamID2, pvars1->ptr, (int)pvars1->nmiss);
+	  }
+
+	otsID++;
+      }
+
+  for ( int seas = 0; seas < NSEAS; seas++ )
+    {
+      if ( vars1[seas] != NULL )
+	{
+	  field_free(vars1[seas], vlistID1);
+	  field_free(samp1[seas], vlistID1);
+	  if ( lvarstd ) Free(vars2[seas]);
+	}
+    }
+
+  if ( field.ptr ) Free(field.ptr);
+
+  Free(recinfo);
+
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
+
+  cdoFinish();
+
+  return 0;
+}
diff --git a/src/Zonstat.c b/src/Zonstat.cc
similarity index 88%
rename from src/Zonstat.c
rename to src/Zonstat.cc
index 0664a6d..0a3421f 100644
--- a/src/Zonstat.c
+++ b/src/Zonstat.cc
@@ -50,6 +50,7 @@ void *Zonstat(void *argument)
 
   cdoInitialize(argument);
 
+  // clang-format off
   cdoOperatorAdd("zonmin",   func_min,   0, NULL);
   cdoOperatorAdd("zonmax",   func_max,   0, NULL);
   cdoOperatorAdd("zonrange", func_range, 0, NULL);
@@ -61,6 +62,7 @@ void *Zonstat(void *argument)
   cdoOperatorAdd("zonstd",   func_std,   0, NULL);
   cdoOperatorAdd("zonstd1",  func_std1,  0, NULL);
   cdoOperatorAdd("zonpctl",  func_pctl,  0, NULL);
+  // clang-format on
 
   int operatorID = cdoOperatorID();
   int operfunc = cdoOperatorF1(operatorID);
@@ -73,9 +75,9 @@ void *Zonstat(void *argument)
       percentile_check_number(pn);
     }
 
-  int streamID1 = streamOpenRead(cdoStreamName(0));
+  int streamID1 = pstreamOpenRead(cdoStreamName(0));
 
-  int vlistID1 = streamInqVlist(streamID1);
+  int vlistID1 = pstreamInqVlist(streamID1);
   int vlistID2 = vlistDuplicate(vlistID1);
 
   int taxisID1 = vlistInqTaxis(vlistID1);
@@ -128,9 +130,8 @@ void *Zonstat(void *argument)
   for ( index = 0; index < ngrids; index++ )
     vlistChangeGridIndex(vlistID2, index, gridID2);
 
-  int streamID2 = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(streamID2, vlistID2);
+  int streamID2 = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(streamID2, vlistID2);
 
   gridID1 = vlistInqVarGrid(vlistID1, 0);
   int nlatmax = gridInqYsize(gridID1); /* max nlat ? */
@@ -145,16 +146,15 @@ void *Zonstat(void *argument)
   field2.grid = gridID2;
 
   int tsID = 0;
-  while ( (nrecs = streamInqTimestep(streamID1, tsID)) )
+  while ( (nrecs = pstreamInqTimestep(streamID1, tsID)) )
     {
       taxisCopyTimestep(taxisID2, taxisID1);
-
-      streamDefTimestep(streamID2, tsID);
+      pstreamDefTimestep(streamID2, tsID);
 
       for ( int recID = 0; recID < nrecs; recID++ )
 	{
-	  streamInqRecord(streamID1, &varID, &levelID);
-	  streamReadRecord(streamID1, field1.ptr, &nmiss);
+	  pstreamInqRecord(streamID1, &varID, &levelID);
+	  pstreamReadRecord(streamID1, field1.ptr, &nmiss);
 
           field1.nmiss   = (size_t) nmiss;
 	  field1.grid    = vlistInqVarGrid(vlistID1, varID);
@@ -174,14 +174,15 @@ void *Zonstat(void *argument)
 		zonfun(field1, &field2, operfunc);
 	    }
 
-	  streamDefRecord(streamID2, varID,  levelID);
-	  streamWriteRecord(streamID2, field2.ptr, (int)field2.nmiss);
+	  pstreamDefRecord(streamID2, varID,  levelID);
+	  pstreamWriteRecord(streamID2, field2.ptr, (int)field2.nmiss);
 	}
+
       tsID++;
     }
 
-  streamClose(streamID2);
-  streamClose(streamID1);
+  pstreamClose(streamID2);
+  pstreamClose(streamID1);
 
   if ( field1.ptr ) Free(field1.ptr);
   if ( field2.ptr ) Free(field2.ptr);
diff --git a/src/after_dvtrans.c b/src/after_dvtrans.cc
similarity index 100%
rename from src/after_dvtrans.c
rename to src/after_dvtrans.cc
diff --git a/src/after_fctrans.c b/src/after_fctrans.cc
similarity index 100%
rename from src/after_fctrans.c
rename to src/after_fctrans.cc
diff --git a/src/after_namelist.c b/src/after_namelist.cc
similarity index 100%
rename from src/after_namelist.c
rename to src/after_namelist.cc
diff --git a/src/after_sptrans.c b/src/after_sptrans.cc
similarity index 100%
rename from src/after_sptrans.c
rename to src/after_sptrans.cc
diff --git a/src/after_vertint.c b/src/after_vertint.cc
similarity index 99%
rename from src/after_vertint.c
rename to src/after_vertint.cc
index 2b63867..f512b13 100644
--- a/src/after_vertint.c
+++ b/src/after_vertint.cc
@@ -380,7 +380,7 @@ void interp_Z(const double *restrict geop, const double *restrict gz, double *pz
 
 
 /*
- * 3d vertical interpolation routine (see vert_interp_lev() in src/Intlevel.c)
+ * 3d vertical interpolation routine (see vert_interp_lev() in src/Intlevel.cc)
  */
 void vert_interp_lev3d(int gridsize, double missval, double *vardata1, double *vardata2,
 		       int nlev2, int *lev_idx1, int *lev_idx2, double *lev_wgt1, double *lev_wgt2)
@@ -451,7 +451,7 @@ void vert_interp_lev3d(int gridsize, double missval, double *vardata1, double *v
  * wrt. the given gridsize. They can directly be used to read values from 3d
  * data fields.
  *
- * 3d version of vert_gen_weights() (src/Intlevel.c)
+ * 3d version of vert_gen_weights() (src/Intlevel.cc)
  */
 void vert_gen_weights3d(bool expol, int nlev1, int gridsize, double *lev1, int nlev2, double *lev2,
 			int *lev_idx1, int *lev_idx2, double *lev_wgt1, double *lev_wgt2)
@@ -543,7 +543,7 @@ void vert_gen_weights3d(bool expol, int nlev1, int gridsize, double *lev1, int n
  * wrt. the given gridsize. They can directly be used to read values from 3d
  * data fields.
  *
- * 3d1d version of vert_gen_weights() (src/Intlevel.c)
+ * 3d1d version of vert_gen_weights() (src/Intlevel.cc)
  */
 void vert_gen_weights3d1d(bool expol, int nlev1, int gridsize, double *lev1, int nlev2, double *lev2,
 			  int *lev_idx1, int *lev_idx2, double *lev_wgt1, double *lev_wgt2)
diff --git a/src/afterburner.h b/src/afterburner.h
index 887b581..a5c98cf 100644
--- a/src/afterburner.h
+++ b/src/afterburner.h
@@ -12,17 +12,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
-#include <errno.h>
-#include <ctype.h>
-#include <math.h>
-#include <float.h>
-#include <time.h>
-#include <pwd.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <limits.h>
 
 #ifndef _ERROR_H
 #  include "error.h"
diff --git a/src/afterburnerlib.c b/src/afterburnerlib.cc
similarity index 99%
rename from src/afterburnerlib.c
rename to src/afterburnerlib.cc
index 0a6f964..450e724 100644
--- a/src/afterburnerlib.c
+++ b/src/afterburnerlib.cc
@@ -8,6 +8,8 @@
 #if defined(CDO)
 #include "cdo_int.h"
 #include "pstream_write.h"
+#define  streamDefRecord          pstreamDefRecord
+#define  streamWriteRecord        pstreamWriteRecord
 #else
 #define  OPENMP4  201307
 #if defined(_OPENMP) && defined(OPENMP4) && _OPENMP >= OPENMP4
diff --git a/src/array.c b/src/array.cc
similarity index 100%
rename from src/array.c
rename to src/array.cc
diff --git a/src/cdo.c b/src/cdo.cc
similarity index 96%
rename from src/cdo.c
rename to src/cdo.cc
index ab178da..695d034 100644
--- a/src/cdo.c
+++ b/src/cdo.cc
@@ -39,6 +39,8 @@
 #endif
 #include <unistd.h>         /* sysconf, gethostname */
 
+#include <thread>
+
 #if defined(SX)
 #define RLIM_T  long long
 #else
@@ -71,6 +73,8 @@
 
 #define MAX_NUM_VARNAMES 256
 
+#include <string>
+
 static int Debug = 0;
 static int Version = 0;
 static int Help = 0;
@@ -194,11 +198,17 @@ void cdo_version(void)
 #if defined(USER_NAME) && defined(HOST_NAME) && defined(SYSTEM_TYPE)
   fprintf(stderr, "Compiled: by %s on %s (%s) %s %s\n", USER_NAME, HOST_NAME, SYSTEM_TYPE, __DATE__, __TIME__);
 #endif
-#if defined(COMPILER)
-  fprintf(stderr, "Compiler: %s\n", COMPILER);
+#if defined(CXX_COMPILER)
+  fprintf(stderr, "CXX Compiler: %s\n", CXX_COMPILER);
+#endif
+#if defined(CXX_VERSION)
+  fprintf(stderr, "CXX version : %s\n", CXX_VERSION);
 #endif
-#if defined(COMP_VERSION)
-  fprintf(stderr, " version: %s\n", COMP_VERSION);
+#if defined(C_COMPILER)
+  fprintf(stderr, "C Compiler: %s\n", C_COMPILER);
+#endif
+#if defined(C_VERSION)
+  fprintf(stderr, "C version : %s\n", C_VERSION);
 #endif
 
   printFeatures();
@@ -324,50 +334,47 @@ void cdo_init_is_tty(void)
 }
 
 static
-void cdoPrintHelp(const char *phelp[]/*, char *xoperator*/)
+void cdoPrintHelp(std::vector<std::string> help/*, char *xoperator*/)
 {
-  if ( phelp == NULL )
+  if (help.empty())
     fprintf(stderr, "No help available for this operator!\n");
   else
     {
       bool lprint;
-      while ( *phelp )
+      for(unsigned long i =  0; i < help.size(); i++)
         {
-          lprint = !(*phelp[0] == '\0' && *(phelp+1) && *(phelp+1)[0] == ' ');
+          lprint = !(help[i][0] == '\0'  && help[i+1][0] == ' ');
           
           if ( lprint )
             {
               if ( COLOR_STDOUT )
                 {
-                  if ( (strcmp(*phelp, "NAME")        == 0) ||
-                       (strcmp(*phelp, "SYNOPSIS")    == 0) ||
-                       (strcmp(*phelp, "DESCRIPTION") == 0) ||
-                       (strcmp(*phelp, "OPERATORS")   == 0) ||
-                       (strcmp(*phelp, "NAMELIST")    == 0) ||
-                       (strcmp(*phelp, "PARAMETER")   == 0) ||
-                       (strcmp(*phelp, "ENVIRONMENT") == 0) ||
-                       (strcmp(*phelp, "NOTE")        == 0) ||
-                       (strcmp(*phelp, "EXAMPLES")    == 0) )
+                  if ( (help[i].compare( "NAME")        == 0) ||
+                       (help[i].compare( "SYNOPSIS")    == 0) ||
+                       (help[i].compare( "DESCRIPTION") == 0) ||
+                       (help[i].compare( "OPERATORS")   == 0) ||
+                       (help[i].compare( "NAMELIST")    == 0) ||
+                       (help[i].compare( "PARAMETER")   == 0) ||
+                       (help[i].compare( "ENVIRONMENT") == 0) ||
+                       (help[i].compare( "NOTE")        == 0) ||
+                       (help[i].compare( "EXAMPLES")    == 0) )
                     {
                       set_text_color(stdout, BRIGHT, BLACK);
-                      fprintf(stdout, "%s", *phelp);
+                      fprintf(stdout, "%s", help[i].c_str());
                       reset_text_color(stdout);
                       fprintf(stdout, "\n");
                     }
                   else
-                    fprintf(stdout, "%s\n", *phelp);
+                    fprintf(stdout, "%s\n", help[i].c_str());
                 }
               else
                 {
-                  fprintf(stdout, "%s\n", *phelp);
+                  fprintf(stdout, "%s\n", help[i].c_str());
                 }
             }
-
-          phelp++;
         }
     }
 }
-
 static
 void cdoSetDebug(int level)
 {
@@ -924,6 +931,9 @@ void print_system_info()
 #if defined(_OPENMP)
   fprintf(stderr, "OPENMP VERSION      = %d\n", _OPENMP);
 #endif
+#if defined(__cplusplus)
+  fprintf(stderr, "__cplusplus         = %ld\n", __cplusplus);
+#endif
 #if defined(__GNUC__)
   fprintf(stderr, "GNUC VERSION        = %d\n", __GNUC__);
 #endif
@@ -1163,12 +1173,12 @@ int parse_options_long(int argc, char *argv[])
           //cdo_usage();
           //fprintf(stderr, "Illegal option!\n");
           return -1;
-          break;
+          // break;
         case ':':
           //cdo_usage();
           //fprintf(stderr, "Option requires an argument!\n");
           return -1;
-          break;
+          // break;
         case 0:
           if ( lnetcdf_hdr_pad )
             {
@@ -1448,7 +1458,7 @@ int main(int argc, char *argv[])
   int lstop = FALSE;
   int noff = 0;
   int status = 0;
-  char *operatorArg = NULL;
+  const char *operatorArg = NULL;
   argument_t *argument = NULL;
 
   cdo_init_is_tty();
@@ -1469,7 +1479,7 @@ int main(int argc, char *argv[])
   if ( noff ) setDefaultFileType(Progname+noff, 0);
 
   get_env_vars();
-
+  init_modules();
   status = parse_options_long(argc, argv);
 
   if ( status != 0 ) return -1;
@@ -1491,6 +1501,11 @@ int main(int argc, char *argv[])
 
   if ( Debug ) print_pthread_info();
 
+  if ( Debug )
+    {
+      //      fprintf(stderr, "C++ max thread      = %u\n", std::thread::hardware_concurrency());
+    }
+
 #if defined(_OPENMP)
   if ( numThreads <= 0 ) numThreads = 1;
   omp_set_num_threads(numThreads);
@@ -1591,7 +1606,14 @@ int main(int argc, char *argv[])
 
       timer_start(timer_total);
 
+#ifdef CUSTOM_MODULES
+      load_custom_modules("custom_modules");
       operatorModule(operatorName)(argument);
+      close_library_handles();
+#else
+      operatorModule(operatorName)(argument);
+
+#endif
 
       timer_stop(timer_total);
 
diff --git a/src/cdo_getopt.c b/src/cdo_getopt.cc
similarity index 100%
rename from src/cdo_getopt.c
rename to src/cdo_getopt.cc
diff --git a/src/cdo_history.c b/src/cdo_history.cc
similarity index 100%
rename from src/cdo_history.c
rename to src/cdo_history.cc
diff --git a/src/cdo_pthread.c b/src/cdo_pthread.cc
similarity index 100%
rename from src/cdo_pthread.c
rename to src/cdo_pthread.cc
diff --git a/src/cdo_read.c b/src/cdo_read.cc
similarity index 60%
rename from src/cdo_read.c
rename to src/cdo_read.cc
index d7b9b22..ebed97f 100644
--- a/src/cdo_read.c
+++ b/src/cdo_read.cc
@@ -1,6 +1,7 @@
 #include <cdi.h>
 #include "cdo_int.h"
 
+
 bool *cdo_read_timestepmask(const char *maskfile, int *n)
 {
   *n = 0;
@@ -58,3 +59,43 @@ bool *cdo_read_timestepmask(const char *maskfile, int *n)
 
   return imask;
 }
+
+
+bool *cdo_read_mask(const char *maskfile, int *n)
+{
+  *n = 0;
+
+  int streamID = streamOpenRead(maskfile);
+  if ( streamID == CDI_UNDEFID ) cdoAbort("Open failed on %s!", maskfile);
+
+  int vlistID = streamInqVlist(streamID);
+
+  int nvars = vlistNvars(vlistID);
+  if ( nvars > 1 ) cdoAbort("Mask %s contains more than one variable!", maskfile);
+
+  int gridsize = gridInqSize(vlistInqVarGrid(vlistID, 0));
+
+  int nlev = zaxisInqSize(vlistInqVarZaxis(vlistID, 0));
+  if ( nlev > 1 ) cdoAbort("Mask %s has more than one level!", maskfile);
+
+  *n = gridsize;
+  bool *imask = (bool*) Malloc(gridsize*sizeof(bool));
+  double *dmask = (double*) Malloc(gridsize*sizeof(double));
+
+  int nrecs = streamInqTimestep(streamID, 0);
+  if ( nrecs != 1 ) cdoAbort("Internal error; unexprected number of records!");
+
+  int varID, levelID;
+  int nmiss;
+  streamInqRecord(streamID, &varID, &levelID);
+  streamReadRecord(streamID, dmask, &nmiss);
+
+  for ( int i = 0; i < gridsize; ++i )
+    imask[i] = IS_NOT_EQUAL(dmask[i], 0);
+      
+      Free(dmask);
+  
+  streamClose(streamID);
+
+  return imask;
+}
diff --git a/src/cdo_task.c b/src/cdo_task.cc
similarity index 99%
rename from src/cdo_task.c
rename to src/cdo_task.cc
index ffab144..fb81dae 100644
--- a/src/cdo_task.c
+++ b/src/cdo_task.cc
@@ -83,6 +83,8 @@ void *cdo_task(void *task)
 
   pthread_mutex_unlock(&(task_info->work_mtx));
   pthread_exit(NULL);
+
+  return NULL;
 }
 #endif
 
diff --git a/src/cdo_vlist.c b/src/cdo_vlist.cc
similarity index 100%
rename from src/cdo_vlist.c
rename to src/cdo_vlist.cc
diff --git a/src/cdotest.c b/src/cdotest.cc
similarity index 100%
rename from src/cdotest.c
rename to src/cdotest.cc
diff --git a/src/cmortable_parser.c b/src/cmortable_parser.cc
similarity index 100%
rename from src/cmortable_parser.c
rename to src/cmortable_parser.cc
diff --git a/src/color.c b/src/color.cc
similarity index 100%
rename from src/color.c
rename to src/color.cc
diff --git a/src/commandline.c b/src/commandline.cc
similarity index 100%
rename from src/commandline.c
rename to src/commandline.cc
diff --git a/src/config.h.in b/src/config.h.in
index 36906aa..c527e4d 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -3,11 +3,17 @@
 /* CDO version */
 #undef CDO
 
-/* Compiler */
-#undef COMPILER
+/* CXX Compiler */
+#undef CXX_COMPILER
 
-/* Compiler version */
-#undef COMP_VERSION
+/* CXX Compiler version */
+#undef CXX_VERSION
+
+/* C Compiler */
+#undef C_COMPILER
+
+/* C Compiler version */
+#undef C_VERSION
 
 /* Define to 1 for DATA support */
 #undef ENABLE_DATA
@@ -21,6 +27,9 @@
 /* Define to 1 if you have the <curl/curl.h> header file. */
 #undef HAVE_CURL_CURL_H
 
+/* define if the compiler supports basic C++11 syntax */
+#undef HAVE_CXX11
+
 /* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
    */
 #undef HAVE_DECL_ISNAN
diff --git a/src/constants.c b/src/constants.cc
similarity index 100%
rename from src/constants.c
rename to src/constants.cc
diff --git a/src/convert_units.c b/src/convert_units.cc
similarity index 100%
rename from src/convert_units.c
rename to src/convert_units.cc
diff --git a/src/datetime.c b/src/datetime.cc
similarity index 100%
rename from src/datetime.c
rename to src/datetime.cc
diff --git a/src/ecacore.c b/src/ecacore.cc
similarity index 88%
rename from src/ecacore.c
rename to src/ecacore.cc
index 139da3e..4ca931e 100644
--- a/src/ecacore.c
+++ b/src/ecacore.cc
@@ -58,9 +58,9 @@ void eca1(const ECA_REQUEST_1 *request)
   
   cmplen = DATE_LEN - cdoOperatorF2(operatorID);
 
-  istreamID = streamOpenRead(cdoStreamName(0));
+  istreamID = pstreamOpenRead(cdoStreamName(0));
 
-  ivlistID = streamInqVlist(istreamID);
+  ivlistID = pstreamInqVlist(istreamID);
   ovlistID = vlistCreate();
   
   gridID  = vlistInqVarGrid(ivlistID, FIRST_VAR_ID);
@@ -103,9 +103,8 @@ void eca1(const ECA_REQUEST_1 *request)
   taxisDefRtime(otaxisID, 0);
   vlistDefTaxis(ovlistID, otaxisID);
 
-  ostreamID = streamOpenWrite(cdoStreamName(1), cdoFiletype());
-
-  streamDefVlist(ostreamID, ovlistID);
+  ostreamID = pstreamOpenWrite(cdoStreamName(1), cdoFiletype());
+  pstreamDefVlist(ostreamID, ovlistID);
 
   nrecords   = vlistNrecs(ivlistID);
   recVarID   = (int*) Malloc(nrecords*sizeof(int));
@@ -186,7 +185,7 @@ void eca1(const ECA_REQUEST_1 *request)
   while ( TRUE )
     {
       nsets = 0;
-      while ( (nrecs = streamInqTimestep(istreamID, itsID)) > 0 )
+      while ( (nrecs = pstreamInqTimestep(istreamID, itsID)) > 0 )
         {
           ivdate = taxisInqVdate(itaxisID);
           ivtime = taxisInqVtime(itaxisID);
@@ -198,7 +197,7 @@ void eca1(const ECA_REQUEST_1 *request)
 
           for ( int recID = 0; recID < nrecs; recID++ )
             {
-              streamInqRecord(istreamID, &varID, &levelID);
+              pstreamInqRecord(istreamID, &varID, &levelID);
 
               if ( itsID == 0 )
                 {
@@ -225,7 +224,7 @@ void eca1(const ECA_REQUEST_1 *request)
                   if ( IS_SET(request->var2.h3) ) var23[levelID].nmiss = gridsize; 
                 }
 
-              streamReadRecord(istreamID, field1.ptr, &nmiss);
+              pstreamReadRecord(istreamID, field1.ptr, &nmiss);
               field1.nmiss   = (size_t)nmiss;
               field1.grid    = var12[levelID].grid;
               field1.missval = var12[levelID].missval;
@@ -321,7 +320,7 @@ void eca1(const ECA_REQUEST_1 *request)
 
       taxisDefVdate(otaxisID, ovdate);
       taxisDefVtime(otaxisID, ovtime);
-      streamDefTimestep(ostreamID, otsID);
+      pstreamDefTimestep(ostreamID, otsID);
 
       if ( otsID && vlistInqVarTsteptype(ivlistID, FIRST_VAR_ID) == TSTEP_CONSTANT ) continue;
 
@@ -335,8 +334,8 @@ void eca1(const ECA_REQUEST_1 *request)
 
 	  farsel(var, samp1[levelID]);
 
-	  streamDefRecord(ostreamID, varID, levelID);
-	  streamWriteRecord(ostreamID, var->ptr, var->nmiss);
+	  pstreamDefRecord(ostreamID, varID, levelID);
+	  pstreamWriteRecord(ostreamID, var->ptr, var->nmiss);
 	}
 
       if ( IS_SET(request->var2.h2) || IS_SET(request->var2.h3) )
@@ -351,8 +350,8 @@ void eca1(const ECA_REQUEST_1 *request)
                   
 	      farsel(var, samp1[levelID]);
                   
-	      streamDefRecord(ostreamID, varID, levelID);
-	      streamWriteRecord(ostreamID, var->ptr, var->nmiss);
+	      pstreamDefRecord(ostreamID, varID, levelID);
+	      pstreamWriteRecord(ostreamID, var->ptr, var->nmiss);
 	    }
         }
 
@@ -395,8 +394,8 @@ void eca1(const ECA_REQUEST_1 *request)
   if ( IS_SET(recVarID) )   Free(recVarID);
   if ( IS_SET(recLevelID) ) Free(recLevelID);
 
-  streamClose(ostreamID);
-  streamClose(istreamID);
+  pstreamClose(ostreamID);
+  pstreamClose(istreamID);
 }
 
 
@@ -426,11 +425,11 @@ void eca2(const ECA_REQUEST_2 *request)
   
   cmplen = DATE_LEN - cdoOperatorF2(operatorID);
 
-  istreamID1 = streamOpenRead(cdoStreamName(0));
-  istreamID2 = streamOpenRead(cdoStreamName(1));
+  istreamID1 = pstreamOpenRead(cdoStreamName(0));
+  istreamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  ivlistID1 = streamInqVlist(istreamID1);
-  ivlistID2 = streamInqVlist(istreamID2);
+  ivlistID1 = pstreamInqVlist(istreamID1);
+  ivlistID2 = pstreamInqVlist(istreamID2);
   ovlistID  = vlistCreate();
   
   vlistCompare(ivlistID1, ivlistID2, CMP_ALL);
@@ -476,9 +475,8 @@ void eca2(const ECA_REQUEST_2 *request)
   taxisDefRtime(otaxisID, 0);
   vlistDefTaxis(ovlistID, otaxisID);
 
-  ostreamID = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(ostreamID, ovlistID);
+  ostreamID = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(ostreamID, ovlistID);
 
   nrecords   = vlistNrecs(ivlistID1);
   recVarID   = (int*) Malloc(nrecords*sizeof(int));
@@ -562,9 +560,9 @@ void eca2(const ECA_REQUEST_2 *request)
   while ( TRUE )
     {
       nsets = 0;
-      while ( (nrecs = streamInqTimestep(istreamID1, itsID)) > 0 )
+      while ( (nrecs = pstreamInqTimestep(istreamID1, itsID)) > 0 )
         {
-	  if ( !streamInqTimestep(istreamID2, itsID) )
+	  if ( !pstreamInqTimestep(istreamID2, itsID) )
 	    cdoAbort("Input streams have different number of time steps!");
 
           ivdate = taxisInqVdate(itaxisID1);
@@ -577,8 +575,8 @@ void eca2(const ECA_REQUEST_2 *request)
 
           for ( int recID = 0; recID < nrecs; recID++ )
             {
-              streamInqRecord(istreamID1, &varID, &levelID);
-              streamInqRecord(istreamID2, &varID, &levelID);
+              pstreamInqRecord(istreamID1, &varID, &levelID);
+              pstreamInqRecord(istreamID2, &varID, &levelID);
 
               if ( itsID == 0 )
                 {
@@ -614,12 +612,12 @@ void eca2(const ECA_REQUEST_2 *request)
                     var22[levelID].nmiss = gridsize;
                 }
 
-              streamReadRecord(istreamID1, field1.ptr, &nmiss);
+              pstreamReadRecord(istreamID1, field1.ptr, &nmiss);
               field1.nmiss   = (size_t)nmiss;
               field1.grid    = gridID;
               field1.missval = missval1;
               
-              streamReadRecord(istreamID2, field2.ptr, &nmiss);
+              pstreamReadRecord(istreamID2, field2.ptr, &nmiss);
               field2.nmiss   = (size_t)nmiss;
               field2.grid    = gridID;
               field2.missval = missval2;
@@ -710,7 +708,7 @@ void eca2(const ECA_REQUEST_2 *request)
 
       taxisDefVdate(otaxisID, ovdate);
       taxisDefVtime(otaxisID, ovtime);
-      streamDefTimestep(ostreamID, otsID);
+      pstreamDefTimestep(ostreamID, otsID);
 
       if ( otsID && vlistInqVarTsteptype(ivlistID1, FIRST_VAR_ID) == TSTEP_CONSTANT ) continue;
 
@@ -725,8 +723,8 @@ void eca2(const ECA_REQUEST_2 *request)
 	  farsel(var, samp1[levelID]);
 	  farsel(var, samp2[levelID]);
               
-	  streamDefRecord(ostreamID, varID, levelID);
-	  streamWriteRecord(ostreamID, var->ptr, var->nmiss);
+	  pstreamDefRecord(ostreamID, varID, levelID);
+	  pstreamWriteRecord(ostreamID, var->ptr, var->nmiss);
 	}
       if ( IS_SET(request->var2.h2) )
 	{
@@ -738,8 +736,8 @@ void eca2(const ECA_REQUEST_2 *request)
 	      farsel(var, samp1[levelID]);
 	      farsel(var, samp2[levelID]);
                   
-	      streamDefRecord(ostreamID, varID, levelID);
-	      streamWriteRecord(ostreamID, var->ptr, var->nmiss);
+	      pstreamDefRecord(ostreamID, varID, levelID);
+	      pstreamWriteRecord(ostreamID, var->ptr, var->nmiss);
 	    }
         }
 
@@ -784,9 +782,9 @@ void eca2(const ECA_REQUEST_2 *request)
   if ( IS_SET(recVarID) )   Free(recVarID);
   if ( IS_SET(recLevelID) ) Free(recLevelID);
 
-  streamClose(ostreamID);
-  streamClose(istreamID2);
-  streamClose(istreamID1);
+  pstreamClose(ostreamID);
+  pstreamClose(istreamID2);
+  pstreamClose(istreamID1);
 }
 
 
@@ -817,11 +815,11 @@ void eca3(const ECA_REQUEST_3 *request)
   
   cmplen = DATE_LEN - cdoOperatorF2(operatorID);
 
-  istreamID1 = streamOpenRead(cdoStreamName(0));
-  istreamID2 = streamOpenRead(cdoStreamName(1));
+  istreamID1 = pstreamOpenRead(cdoStreamName(0));
+  istreamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  ivlistID1 = streamInqVlist(istreamID1);
-  ivlistID2 = streamInqVlist(istreamID2);
+  ivlistID1 = pstreamInqVlist(istreamID1);
+  ivlistID2 = pstreamInqVlist(istreamID2);
   ovlistID  = vlistCreate();
   
   vlistCompare(ivlistID1, ivlistID2, CMP_ALL);
@@ -853,9 +851,8 @@ void eca3(const ECA_REQUEST_3 *request)
   taxisDefRtime(otaxisID, 0);
   vlistDefTaxis(ovlistID, otaxisID);
 
-  ostreamID = streamOpenWrite(cdoStreamName(2), cdoFiletype());
-
-  streamDefVlist(ostreamID, ovlistID);
+  ostreamID = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(ostreamID, ovlistID);
 
   nrecords   = vlistNrecs(ivlistID1);
   recVarID   = (int*) Malloc(nrecords*sizeof(int));
@@ -893,9 +890,9 @@ void eca3(const ECA_REQUEST_3 *request)
   while ( TRUE )
     {
       nsets = 0;
-      while ( (nrecs = streamInqTimestep(istreamID1, itsID)) > 0 )
+      while ( (nrecs = pstreamInqTimestep(istreamID1, itsID)) > 0 )
         {
-	  if ( !streamInqTimestep(istreamID2, itsID) )
+	  if ( !pstreamInqTimestep(istreamID2, itsID) )
 	    cdoAbort("Input streams have different number of time steps!");
             
           ivdate1 = taxisInqVdate(itaxisID1);
@@ -915,8 +912,8 @@ void eca3(const ECA_REQUEST_3 *request)
 
           for ( int recID = 0; recID < nrecs; recID++ )
             {
-              streamInqRecord(istreamID1, &varID, &levelID);
-              streamInqRecord(istreamID2, &varID, &levelID);
+              pstreamInqRecord(istreamID1, &varID, &levelID);
+              pstreamInqRecord(istreamID2, &varID, &levelID);
 
               if ( itsID == 0 )
                 {
@@ -936,12 +933,12 @@ void eca3(const ECA_REQUEST_3 *request)
                   var2[levelID].nmiss = gridsize;
                 }
 
-              streamReadRecord(istreamID1, field1.ptr, &nmiss);
+              pstreamReadRecord(istreamID1, field1.ptr, &nmiss);
               field1.nmiss   = (size_t)nmiss;
               field1.grid    = var1[levelID].grid;
               field1.missval = var1[levelID].missval;
 
-              streamReadRecord(istreamID2, field2.ptr, &nmiss);
+              pstreamReadRecord(istreamID2, field2.ptr, &nmiss);
               field2.nmiss   = (size_t)nmiss;
               field2.grid    = var1[levelID].grid;
               field2.missval = var1[levelID].missval;
@@ -963,15 +960,15 @@ void eca3(const ECA_REQUEST_3 *request)
 
       taxisDefVdate(otaxisID, ovdate);
       taxisDefVtime(otaxisID, ovtime);
-      streamDefTimestep(ostreamID, otsID);
+      pstreamDefTimestep(ostreamID, otsID);
 
       if ( otsID && vlistInqVarTsteptype(ivlistID1, FIRST_VAR_ID) == TSTEP_CONSTANT ) continue;
 
       varID = 0;
       for ( levelID = 0; levelID < nlevels; levelID++ )
 	{
-	  streamDefRecord(ostreamID, varID, levelID);
-	  streamWriteRecord(ostreamID, var1[levelID].ptr, var1[levelID].nmiss);
+	  pstreamDefRecord(ostreamID, varID, levelID);
+	  pstreamWriteRecord(ostreamID, var1[levelID].ptr, var1[levelID].nmiss);
 	}
 
       if ( nrecs == 0 ) break;
@@ -992,9 +989,9 @@ void eca3(const ECA_REQUEST_3 *request)
   if ( IS_SET(recVarID) )   Free(recVarID);
   if ( IS_SET(recLevelID) ) Free(recLevelID);
 
-  streamClose(ostreamID);
-  streamClose(istreamID2);
-  streamClose(istreamID1);
+  pstreamClose(ostreamID);
+  pstreamClose(istreamID2);
+  pstreamClose(istreamID1);
 }
 
 
@@ -1003,72 +1000,52 @@ void eca4(const ECA_REQUEST_4 *request)
   const int operatorID = cdoOperatorID();
 
   int nmiss;
-  int cmplen;
-  char indate1[DATE_LEN+1], indate2[DATE_LEN+1];
-  int gridsize, gridtype;
-  double *yvals;
+  int yearcnt = 0;
+  int nrecs;
+  int varID, levelID;
+  int resetAtJan = FALSE, resetAtJul = FALSE;
+  int isFirstYear = TRUE;
   int ivdate = 0, ivtime = 0;
   int ovdate = 0, ovtime = 0;
-  int month, yearcnt = 0;
-  int nrecs, nrecords;
-  int gridID, zaxisID, varID, ovarID1, ovarID2, levelID;
-  int itsID;
-  int otsID;
-  long nsets;
-  int i;
-  int istreamID1, istreamID2, ostreamID;
-  int ivlistID1, ivlistID2, ovlistID, itaxisID, otaxisID;
-  int nlevels;
-  int *recVarID, *recLevelID;
-  double missval;
-  field_type *startCount          , *endCount;
+  char indate1[DATE_LEN+1], indate2[DATE_LEN+1];
   field_type *startDateWithHist[2], *endDateWithHist[2];
-  field_type *gslDuration, *gslFirstDay;
-  field_type fieldGt, fieldLt, mask;
-  int resetAtJan = FALSE, resetAtJul = FALSE;
-  int isFirstYear = TRUE;
 
-  cmplen = DATE_LEN - cdoOperatorF2(operatorID);
+  int cmplen = DATE_LEN - cdoOperatorF2(operatorID);
 
-  istreamID1 = streamOpenRead(cdoStreamName(0));
-  istreamID2 = streamOpenRead(cdoStreamName(1));
+  int istreamID1 = pstreamOpenRead(cdoStreamName(0));
+  int istreamID2 = pstreamOpenRead(cdoStreamName(1));
 
-  ivlistID1 = streamInqVlist(istreamID1);
-  ivlistID2 = streamInqVlist(istreamID2);
-  ovlistID = vlistCreate();
+  int ivlistID1 = pstreamInqVlist(istreamID1);
+  int ivlistID2 = pstreamInqVlist(istreamID2);
+  int ovlistID = vlistCreate();
 
-  gridID = vlistInqVarGrid(ivlistID1, FIRST_VAR_ID);
-  if ( gridID != vlistInqVarGrid(ivlistID2, FIRST_VAR_ID) ) cdoAbort("Grid sizes of the input fields do not match!");
+  int gridID = vlistInqVarGrid(ivlistID1, FIRST_VAR_ID);
+  if ( gridInqSize(gridID) != gridInqSize(vlistInqVarGrid(ivlistID2, FIRST_VAR_ID)) )
+    cdoAbort("Grid sizes of the input fields do not match!");
 
-  zaxisID = vlistInqVarZaxis(ivlistID1, FIRST_VAR_ID);
-  missval = vlistInqVarMissval(ivlistID1, FIRST_VAR_ID);
+  int zaxisID = vlistInqVarZaxis(ivlistID1, FIRST_VAR_ID);
+  double missval = vlistInqVarMissval(ivlistID1, FIRST_VAR_ID);
 
-  ovarID1 = vlistDefVar(ovlistID, gridID, zaxisID, TSTEP_INSTANT);
+  int ovarID1 = vlistDefVar(ovlistID, gridID, zaxisID, TSTEP_INSTANT);
 
   vlistDefVarMissval(ovlistID, ovarID1, missval);
 
-  if ( IS_SET(request->name) )
-    vlistDefVarName(ovlistID, ovarID1, request->name);
-  if ( IS_SET(request->longname) ) 
-    vlistDefVarLongname(ovlistID, ovarID1, request->longname);
-  if ( IS_SET(request->units) ) 
-    vlistDefVarUnits(ovlistID, ovarID1, request->units);
+  if ( IS_SET(request->name) )      vlistDefVarName(ovlistID, ovarID1, request->name);
+  if ( IS_SET(request->longname) )  vlistDefVarLongname(ovlistID, ovarID1, request->longname);
+  if ( IS_SET(request->units) )     vlistDefVarUnits(ovlistID, ovarID1, request->units);
 
-  ovarID2 = vlistDefVar(ovlistID, gridID, zaxisID, TSTEP_INSTANT);
+  int ovarID2 = vlistDefVar(ovlistID, gridID, zaxisID, TSTEP_INSTANT);
   
   vlistDefVarMissval(ovlistID, ovarID2, missval);
 
-  if ( IS_SET(request->name2) ) 
-    vlistDefVarName(ovlistID, ovarID2, request->name2);
-  if ( IS_SET(request->longname2) ) 
-    vlistDefVarLongname(ovlistID, ovarID2, request->longname2);
-  if ( IS_SET(request->units2) ) 
-    vlistDefVarUnits(ovlistID, ovarID2, request->units2);
+  if ( IS_SET(request->name2) )      vlistDefVarName(ovlistID, ovarID2, request->name2);
+  if ( IS_SET(request->longname2) )  vlistDefVarLongname(ovlistID, ovarID2, request->longname2);
+  if ( IS_SET(request->units2) )     vlistDefVarUnits(ovlistID, ovarID2, request->units2);
 
   if ( cdoOperatorF2(operatorID) == 16 ) vlistDefNtsteps(ovlistID, 1);
 
-  itaxisID = vlistInqTaxis(ivlistID1);
-  otaxisID = taxisCreate(TAXIS_RELATIVE);
+  int itaxisID = vlistInqTaxis(ivlistID1);
+  int otaxisID = taxisCreate(TAXIS_RELATIVE);
   taxisDefTunit(otaxisID, TUNIT_MINUTE);
   //  taxisDefCalendar(otaxisID, CALENDAR_PROLEPTIC);
   taxisDefCalendar(otaxisID, taxisInqCalendar(itaxisID));
@@ -1076,48 +1053,61 @@ void eca4(const ECA_REQUEST_4 *request)
   taxisDefRtime(otaxisID, 0);
   vlistDefTaxis(ovlistID, otaxisID);
 
-  ostreamID = streamOpenWrite(cdoStreamName(2), cdoFiletype());
+  int ostreamID = pstreamOpenWrite(cdoStreamName(2), cdoFiletype());
+  pstreamDefVlist(ostreamID, ovlistID);
 
-  streamDefVlist(ostreamID, ovlistID);
+  int nrecords    = vlistNrecs(ivlistID1);
+  int *recVarID   = (int*) Malloc(nrecords*sizeof(int));
+  int *recLevelID = (int*) Malloc(nrecords*sizeof(int));
 
-  nrecords    = vlistNrecs(ivlistID1);
-  recVarID    = (int*) Malloc(nrecords*sizeof(int));
-  recLevelID  = (int*) Malloc(nrecords*sizeof(int));
-
-  gridtype = gridInqType(gridID);
-  if ( gridtype != GRID_UNSTRUCTURED && gridtype != GRID_CURVILINEAR ) 
+  bool lyvals = true;
+  int gridtype = gridInqType(gridID);
+  if ( gridtype == GRID_LONLAT || gridtype == GRID_GAUSSIAN || gridtype == GRID_PROJECTION )
+    {
+      gridID = gridToCurvilinear(gridID, 1);
+    }
+  else if ( gridtype == GRID_GME )
     {
-      if ( gridtype == GRID_GME )
-        gridID = gridToUnstructured(gridID, 1);
-      else
-        gridID = gridToCurvilinear(gridID, 1);
+      gridID = gridToUnstructured(gridID, 1);
     }
-  gridsize    = gridInqSize(gridID);
+  else
+    {
+      lyvals = false;
+    }
+  int gridsize  = gridInqSize(gridID);
   /* for later check on northern\southern hemisphere */
-  yvals   = (double*) Malloc(gridsize*sizeof(double));
-  gridInqYvals(gridID,yvals);
+  double *yvals = (double*) Malloc(gridsize*sizeof(double));
+  if ( lyvals )
+    {
+      gridInqYvals(gridID, yvals);
+    }
+  else
+    {
+      for ( int i = 0; i < gridsize; ++i ) yvals[i] = 20; // Northern hemisphere
+    }
 
   /* Two fields are needed because of the definition of gsl for northern and
   * southern hemisphere                                                      */
+  field_type fieldGt, fieldLt;
   field_init(&fieldGt);
   field_init(&fieldLt);
   fieldGt.ptr = (double*) Malloc(gridsize*sizeof(double));
   fieldLt.ptr = (double*) Malloc(gridsize*sizeof(double));
 
   /* field for the land-water-distribution */
+  field_type mask;
   field_init(&mask);
   mask.ptr    = (double*) Malloc(gridsize*sizeof(double));
 
-  nlevels     = zaxisInqSize(zaxisID);
+  int nlevels = zaxisInqSize(zaxisID);
 
-  startCount  = (field_type*) Malloc(nlevels*sizeof(field_type));
-  endCount    = (field_type*) Malloc(nlevels*sizeof(field_type));
-  gslDuration = (field_type*) Malloc(nlevels*sizeof(field_type));
-  gslFirstDay = (field_type*) Malloc(nlevels*sizeof(field_type));
+  field_type *startCount  = (field_type*) Malloc(nlevels*sizeof(field_type));
+  field_type *endCount    = (field_type*) Malloc(nlevels*sizeof(field_type));
+  field_type *gslDuration = (field_type*) Malloc(nlevels*sizeof(field_type));
+  field_type *gslFirstDay = (field_type*) Malloc(nlevels*sizeof(field_type));
 
   /* because of the different definitions for northern and southern hemisphere,
-   * the values of the last year have to be present
-   * THE LAST YEAR HAS THE INDEX 1 */
+   * the values of the last year have to be present THE LAST YEAR HAS THE INDEX 1 */
   for ( int h = 0; h < 2; h++ )
   {
     startDateWithHist[h] = (field_type*) Malloc(nlevels*sizeof(field_type));
@@ -1174,13 +1164,13 @@ void eca4(const ECA_REQUEST_4 *request)
     }
   }
 
-  itsID   = 0;
-  otsID   = 0;
+  int itsID   = 0;
+  int otsID   = 0;
 
-  if ( streamInqTimestep(istreamID2, itsID) )
+  if ( pstreamInqTimestep(istreamID2, itsID) )
     {
-      streamInqRecord(istreamID2, &varID, &levelID);
-      streamReadRecord(istreamID2, mask.ptr, &nmiss);
+      pstreamInqRecord(istreamID2, &varID, &levelID);
+      pstreamReadRecord(istreamID2, mask.ptr, &nmiss);
       mask.nmiss   = (size_t)nmiss;
       mask.grid    = gridID;
       mask.missval = vlistInqVarMissval(ivlistID2, 0);
@@ -1191,13 +1181,13 @@ void eca4(const ECA_REQUEST_4 *request)
 
   while ( TRUE )
     {
-      nsets = 0;
-      while ( (nrecs = streamInqTimestep(istreamID1, itsID)) > 0 )
+      long nsets = 0;
+      while ( (nrecs = pstreamInqTimestep(istreamID1, itsID)) > 0 )
         {
           ivdate = taxisInqVdate(itaxisID);
           ivtime = taxisInqVtime(itaxisID);
 
-          month = (ivdate % 10000) / 100;
+          int month = (ivdate % 10000) / 100;
           if ( month < 1 || month > 12 ) cdoAbort("month %d out of range!", month);
 
           if ( nsets == 0 ) SET_DATE(indate2, ivdate, ivtime);
@@ -1211,7 +1201,7 @@ void eca4(const ECA_REQUEST_4 *request)
 
           for ( int recID = 0; recID < nrecs; recID++ )
             {
-              streamInqRecord(istreamID1, &varID, &levelID);
+              pstreamInqRecord(istreamID1, &varID, &levelID);
 
               if ( itsID == 0 )
                 {
@@ -1222,7 +1212,7 @@ void eca4(const ECA_REQUEST_4 *request)
 
               if ( nsets == 0 )
                 {
-                  for ( i = 0; i < gridsize; i++ )
+                  for ( int i = 0; i < gridsize; i++ )
                     {
                       gslDuration[levelID].ptr[i]          = missval;
                       gslFirstDay[levelID].ptr[i]          = missval;
@@ -1239,7 +1229,7 @@ void eca4(const ECA_REQUEST_4 *request)
               /* init the history ONCE */
               if ( 0 == itsID )
                 {
-                  for ( i = 0; i < gridsize; i++ )
+                  for ( int i = 0; i < gridsize; i++ )
                     {
                       startDateWithHist[1][levelID].ptr[i] = missval;
                       endDateWithHist[1][levelID].ptr[i]   = missval;
@@ -1248,7 +1238,7 @@ void eca4(const ECA_REQUEST_4 *request)
                   endDateWithHist[1][levelID].nmiss   = gridsize;
                 }
 
-              streamReadRecord(istreamID1, fieldGt.ptr, &nmiss);
+              pstreamReadRecord(istreamID1, fieldGt.ptr, &nmiss);
               fieldGt.nmiss   = (size_t)nmiss;
               memcpy(fieldLt.ptr, fieldGt.ptr, gridsize*sizeof(double));
               fieldLt.nmiss   = fieldGt.nmiss;
@@ -1262,7 +1252,7 @@ void eca4(const ECA_REQUEST_4 *request)
               if ( 1 == month && !resetAtJan )
               {
                 /* reset northern startCount */
-                for ( i = 0; i < gridsize; i++ )
+                for ( int i = 0; i < gridsize; i++ )
                   {
                     if ( yvals[i] >= 0.0 )
                       if ( !DBL_IS_EQUAL(startCount[levelID].ptr[i], missval) )
@@ -1272,7 +1262,7 @@ void eca4(const ECA_REQUEST_4 *request)
                       }
                   }
                 /* reset southern endCount */
-                for ( i = 0; i < gridsize; i++ )
+                for ( int i = 0; i < gridsize; i++ )
                   {
                     if ( yvals[i] < 0.0 )
                       if ( !DBL_IS_EQUAL(endCount[levelID].ptr[i], missval) )
@@ -1295,7 +1285,7 @@ void eca4(const ECA_REQUEST_4 *request)
 #endif
                   {
                     /* reset northern endCount  */
-                    for ( i = 0; i < gridsize; i++ )
+                    for ( int i = 0; i < gridsize; i++ )
                       {
                         if ( yvals[i] >= 0.0 )
                           {
@@ -1312,7 +1302,7 @@ void eca4(const ECA_REQUEST_4 *request)
 #endif
                   {
                     /* reset southern startCount */
-                    for ( i = 0; i < gridsize; i++ )
+                    for ( int i = 0; i < gridsize; i++ )
                     {
                       if ( yvals[i] < 0.0 )
                       {
@@ -1353,7 +1343,7 @@ void eca4(const ECA_REQUEST_4 *request)
 
               if ( month < 7 )
                 {
-                  for ( i = 0; i < gridsize; i++ )
+                  for ( int i = 0; i < gridsize; i++ )
                     /* dictinct between northern and southern sphere */
                     /* start with south */
                     if ( yvals[i] < 0 )
@@ -1386,7 +1376,7 @@ void eca4(const ECA_REQUEST_4 *request)
                 }
               else
                 {
-                  for ( i = 0; i < gridsize; i++ )
+                  for ( int i = 0; i < gridsize; i++ )
                   {
                     if ( yvals[i] < 0 )
                     {
@@ -1539,7 +1529,6 @@ void eca4(const ECA_REQUEST_4 *request)
   if ( IS_SET(recVarID) )   Free(recVarID);
   if ( IS_SET(recLevelID) ) Free(recLevelID);
 
-  streamClose(ostreamID);
-  streamClose(istreamID1);
-
+  pstreamClose(ostreamID);
+  pstreamClose(istreamID1);
 }
diff --git a/src/ecautil.c b/src/ecautil.cc
similarity index 97%
rename from src/ecautil.c
rename to src/ecautil.cc
index c6e04dd..03d1fb6 100644
--- a/src/ecautil.c
+++ b/src/ecautil.cc
@@ -617,16 +617,16 @@ void writeGslStream(int ostreamID, int otaxisID, int otsID,
 
   taxisDefVdate(otaxisID, vdate);
   taxisDefVtime(otaxisID, vtime);
-  streamDefTimestep(ostreamID, otsID);
+  pstreamDefTimestep(ostreamID, otsID);
 
   for ( int levelID = 0; levelID < nlevels; levelID++ )
     {
-      streamDefRecord(ostreamID, ovarID1, levelID);
-      streamWriteRecord(ostreamID, gslDuration[levelID].ptr, gslDuration[levelID].nmiss);
+      pstreamDefRecord(ostreamID, ovarID1, levelID);
+      pstreamWriteRecord(ostreamID, gslDuration[levelID].ptr, gslDuration[levelID].nmiss);
     }
   for ( int levelID = 0; levelID < nlevels; levelID++ )
     {
-      streamDefRecord(  ostreamID, ovarID2, levelID);
-      streamWriteRecord(ostreamID, gslFirstDay[levelID].ptr, gslFirstDay[levelID].nmiss);
+      pstreamDefRecord(  ostreamID, ovarID2, levelID);
+      pstreamWriteRecord(ostreamID, gslFirstDay[levelID].ptr, gslFirstDay[levelID].nmiss);
     }
 }
diff --git a/src/exception.c b/src/exception.cc
similarity index 100%
rename from src/exception.c
rename to src/exception.cc
diff --git a/src/expr.c b/src/expr.cc
similarity index 98%
rename from src/expr.c
rename to src/expr.cc
index 1e998a9..513cbcb 100644
--- a/src/expr.c
+++ b/src/expr.cc
@@ -1171,8 +1171,18 @@ nodeType *ex_ifelse(int init, nodeType *p1, nodeType *p2, nodeType *p3)
       nlev2 = p2->param.nlev;
       missval2 = p2->param.missval;
       pdata2 = p2->param.data;
-      if ( ngp2 > 1 && ngp2 != ngp1 )
-	cdoAbort("expr?expr:expr: Number of grid points differ (ngp1 = %ld, ngp2 = %ld)", ngp1, ngp2);
+
+      if ( ngp2 > 1 && ngp2 != ngp )
+        {
+          if ( ngp == 1 )
+            {
+              ngp = ngp2;
+              px = p2;
+            }
+          else
+            cdoAbort("expr?expr:expr: Number of grid points differ (ngp1 = %ld, ngp2 = %ld)", ngp1, ngp2);
+        }
+
       if ( nlev2 > 1 && nlev2 != nlev )
 	{
 	  if ( nlev == 1 )
@@ -1200,8 +1210,18 @@ nodeType *ex_ifelse(int init, nodeType *p1, nodeType *p2, nodeType *p3)
       nlev3 = p3->param.nlev;
       missval3 = p3->param.missval;
       pdata3 = p3->param.data;
-      if ( ngp3 > 1 && ngp3 != ngp1 )
-	cdoAbort("expr?expr:expr: Number of grid points differ (ngp1 = %ld, ngp3 = %ld)", ngp1, ngp3);
+
+      if ( ngp3 > 1 && ngp3 != ngp )
+        {
+          if ( ngp == 1 )
+            {
+              ngp = ngp3;
+              px = p3;
+            }
+          else
+            cdoAbort("expr?expr:expr: Number of grid points differ (ngp1 = %ld, ngp3 = %ld)", ngp1, ngp3);
+        }
+
       if ( nlev3 > 1 && nlev3 != nlev )
 	{
 	  if ( nlev == 1 )
@@ -1232,8 +1252,8 @@ nodeType *ex_ifelse(int init, nodeType *p1, nodeType *p2, nodeType *p3)
 
       for ( size_t k = 0; k < nlev; ++k )
         {
+          size_t loff1 = (nlev1 == 1) ? 0 : k*ngp1;
           size_t loff  = k*ngp;
-          size_t loff1 = (nlev1 == 1) ? 0 : loff;
           size_t loff2 = (nlev2 == 1) ? 0 : loff;
           size_t loff3 = (nlev3 == 1) ? 0 : loff;
 
@@ -1242,16 +1262,18 @@ nodeType *ex_ifelse(int init, nodeType *p1, nodeType *p2, nodeType *p3)
           const double *restrict idat3 = pdata3+loff3;
           double *restrict odat = p->param.data+loff;
 
+          double ival1 = idat1[0];
           double ival2 = idat2[0];
           double ival3 = idat3[0];
           for ( size_t i = 0; i < ngp; ++i ) 
             {
+              if ( ngp1 > 1 ) ival1 = idat1[i];
               if ( ngp2 > 1 ) ival2 = idat2[i];
               if ( ngp3 > 1 ) ival3 = idat3[i];
 
-              if ( nmiss1 && DBL_IS_EQUAL(idat1[i], missval1) )
+              if ( nmiss1 && DBL_IS_EQUAL(ival1, missval1) )
                 odat[i] = missval1;
-              else if ( IS_NOT_EQUAL(idat1[i], 0) )
+              else if ( IS_NOT_EQUAL(ival1, 0) )
                 odat[i] = DBL_IS_EQUAL(ival2, missval2) ? missval1 : ival2;
               else
                 odat[i] = DBL_IS_EQUAL(ival3, missval3) ? missval1 : ival3;
diff --git a/src/expr.h b/src/expr.h
index df84380..b7fc437 100644
--- a/src/expr.h
+++ b/src/expr.h
@@ -19,9 +19,6 @@
 #include <stdbool.h>
 
 #ifdef __cplusplus
-#ifndef register
-#define register
-#endif
 #ifndef fileno
 int fileno(FILE *stream);
 #endif
diff --git a/src/expr_fun.c b/src/expr_fun.cc
similarity index 100%
rename from src/expr_fun.c
rename to src/expr_fun.cc
diff --git a/src/expr_lex.c b/src/expr_lex.cc
similarity index 87%
rename from src/expr_lex.c
rename to src/expr_lex.cc
index 5572444..bf0929b 100644
--- a/src/expr_lex.c
+++ b/src/expr_lex.cc
@@ -1,6 +1,6 @@
-#line 2 "expr_lex.c"
+#line 2 "expr_lex.cc"
 
-#line 4 "expr_lex.c"
+#line 4 "expr_lex.cc"
 
 #define  YY_INT_ALIGNED short int
 
@@ -9,7 +9,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -88,25 +88,13 @@ typedef unsigned int flex_uint32_t;
 
 #endif /* ! FLEXINT_H */
 
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
@@ -219,12 +207,12 @@ struct yy_buffer_state
 	/* Size of input buffer in bytes, not including room for EOB
 	 * characters.
 	 */
-	yy_size_t yy_buf_size;
+	int yy_buf_size;
 
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	yy_size_t yy_n_chars;
+	int yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -303,7 +291,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
 
 void *yyalloc (yy_size_t ,yyscan_t yyscanner );
 void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
@@ -347,23 +335,20 @@ typedef int yy_state_type;
 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
 static int yy_get_next_buffer (yyscan_t yyscanner );
-#if defined(__GNUC__) && __GNUC__ >= 3
-__attribute__((__noreturn__))
-#endif
-static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
+static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
 	yyg->yytext_ptr = yy_bp; \
-	yyleng = (size_t) (yy_cp - yy_bp); \
+	yyleng = (int) (yy_cp - yy_bp); \
 	yyg->yy_hold_char = *yy_cp; \
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 22
-#define YY_END_OF_BUFFER 23
+#define YY_NUM_RULES 25
+#define YY_END_OF_BUFFER 26
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,33 +356,38 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_acclist[123] =
+static yyconst flex_int16_t yy_acclist[164] =
     {   0,
-        4,    4,   23,   21,   22,   20,   21,   22,   20,   22,
-       21,   22,    1,   21,   22,   21,   22,   10,   21,   22,
-        4,   10,   21,   22,    4,   21,   22,   15,   21,   22,
-       10,   21,   22,   14,   21,   22,    9,   21,   22,16391,
-        4,    9,   21,   22,16391,    9,   21,   22,16391,    9,
-       21,   22,16391,    9,   21,   22,16391,    9,   21,   22,
-    16391,   21,   22,   20,   17,    1,   18,    4,    4,    4,
-        4,   13,   16,   12, 8199,    8,    9,16391,    4,    9,
-    16391,    9,16391,    9,16391,    9,16391,   19,    4,    4,
-       11,    8,    4,    9,16391,    3,    9,16391,    9,16391,
-
-        9,16391,    9,16391,    4,    2,    9,16391,    9,16391,
-        9,16391,    9,16391,    9,16391,    6, 8199,    9,16391,
-        5, 8199
+        4,    4,   26,   24,   25,   23,   24,   25,   23,   25,
+       24,   25,    1,   24,   25,   24,   25,   11,   24,   25,
+        4,   11,   24,   25,    4,   24,   25,   22,   24,   25,
+       16,   24,   25,   11,   24,   25,   15,   24,   25,   21,
+       24,   25,    9,   10,   24,   25,16391,    4,    9,   10,
+       24,   25,16391,    9,   10,   24,   25,16391,    9,   10,
+       24,   25,16391,    9,   10,   24,   25,16391,    9,   10,
+       24,   25,16391,   24,   25,   23,   18,    1,   19,    4,
+        4,    4,    4,   10,    4,   10,   10,   14,   17,   13,
+     8199,    8,    9,   10,16391,    9,   10,16391,    4,    9,
+
+       10,16391,    9,   10,16391,    9,   10,16391,    9,   10,
+    16391,   20,    4,   10,   10,    4,   10,   12,    8,    4,
+        4,    9,   10,16391,    3,    9,   10,16391,    9,   10,
+    16391,    9,   10,16391,    9,   10,16391,    4,   10,    4,
+        2,    9,   10,16391,    9,   10,16391,    9,   10,16391,
+        9,   10,16391,    9,   10,16391,    6, 8199,    9,   10,
+    16391,    5, 8199
     } ;
 
-static yyconst flex_int16_t yy_accept[67] =
+static yyconst flex_int16_t yy_accept[76] =
     {   0,
         1,    2,    3,    4,    6,    9,   11,   13,   16,   18,
-       21,   25,   28,   31,   34,   37,   41,   46,   50,   54,
-       58,   62,   64,   65,   66,   67,   68,   69,   70,   70,
-       71,   72,   72,   73,   74,   75,   75,   76,   77,   79,
-       79,   82,   84,   86,   88,   89,   89,   90,   91,   92,
-       93,   96,   99,  101,  103,  105,  106,  109,  111,  113,
-      115,  117,  119,  121,  123,  123
+       21,   25,   28,   31,   34,   37,   40,   43,   48,   54,
+       59,   64,   69,   74,   76,   77,   78,   79,   80,   81,
+       82,   82,   83,   84,   85,   87,   88,   89,   90,   91,
+       91,   92,   93,   96,   99,   99,  103,  106,  109,  112,
+      113,  113,  114,  115,  116,  118,  119,  120,  121,  125,
+      129,  132,  135,  138,  140,  141,  145,  148,  151,  154,
+      157,  159,  162,  164,  164
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -407,15 +397,15 @@ static yyconst YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    4,    5,    1,    6,    1,    1,    7,    1,    8,
         9,    9,   10,    9,   10,   11,    9,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,    9,    9,   13,
-       14,   15,    9,    1,   16,   16,   16,   17,   18,   16,
-       16,   16,   19,   16,   16,   17,   20,   16,   16,   21,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-        1,    1,    1,    9,   22,    1,   16,   16,   16,   17,
-
-       23,   16,   16,   16,   24,   16,   16,   17,   25,   26,
-       27,   28,   16,   29,   16,   30,   16,   31,   16,   16,
-       16,   16,    9,   32,    9,    1,    1,    1,    1,    1,
+       12,   12,   12,   12,   12,   12,   12,   13,    9,   14,
+       15,   16,   17,    1,   18,   18,   18,   19,   20,   18,
+       18,   18,   21,   18,   18,   19,   22,   18,   18,   23,
+       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
+        1,    1,    1,    9,   24,    1,   18,   18,   18,   19,
+
+       25,   18,   18,   18,   26,   18,   18,   19,   27,   28,
+       29,   30,   18,   31,   18,   32,   18,   33,   18,   18,
+       18,   18,    9,   34,    9,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -432,82 +422,80 @@ static yyconst YY_CHAR yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst YY_CHAR yy_meta[33] =
+static yyconst YY_CHAR yy_meta[35] =
     {   0,
         1,    1,    2,    3,    1,    1,    1,    3,    1,    1,
-        3,    3,    1,    1,    1,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    1
+        4,    5,    1,    1,    1,    1,    1,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[69] =
+static yyconst flex_uint16_t yy_base[80] =
     {   0,
-        0,    0,  140,  152,   31,   34,  125,    0,  131,  152,
-       27,   40,  122,   99,   95,   38,   51,   60,   31,   44,
-       55,   60,   72,  152,    0,  152,   65,  152,   69,   68,
-        0,   77,   69,  152,  152,   86,  152,    0,   83,   57,
-       30,   86,   87,   90,  152,   48,   49,   89,  152,    0,
-       93,   98,  102,  106,  107,  152,  110,  113,  114,  119,
-      118,  152,  125,  152,  152,  145,  147,   44
+        0,    0,  134,  135,   33,   36,  118,    0,  125,  135,
+       29,   31,  135,  116,  115,  114,  135,   49,   51,   34,
+      104,   96,  101,   91,   62,  135,    0,  135,   55,  135,
+       35,   57,   59,  112,  111,   71,  106,  135,  135,   64,
+      135,    0,    0,    0,  109,   73,   66,   94,   92,  135,
+      106,   75,  105,  104,   76,  135,    0,   78,    0,    0,
+       94,   86,   84,   87,  135,    0,   64,   60,   83,   48,
+      135,   50,  135,  135,   97,  100,  104,  106,   46
     } ;
 
-static yyconst flex_int16_t yy_def[69] =
+static yyconst flex_int16_t yy_def[80] =
     {   0,
-       65,    1,   65,   65,   65,   65,   65,   66,   65,   65,
-       65,   65,   65,   65,   65,   67,   67,   67,   18,   18,
-       18,   65,   65,   65,   66,   65,   65,   65,   65,   65,
-       12,   65,   65,   65,   65,   65,   65,   68,   18,   65,
-       18,   18,   18,   18,   65,   65,   65,   65,   65,   68,
-       18,   18,   18,   18,   18,   65,   18,   18,   18,   18,
-       18,   65,   18,   65,    0,   65,   65,   65
+       74,    1,   74,   74,   74,   74,   74,   75,   74,   74,
+       74,   76,   74,   74,   74,   74,   74,   77,   77,   19,
+       19,   19,   19,   74,   74,   74,   75,   74,   74,   74,
+       74,   74,   76,   78,   78,   78,   74,   74,   74,   74,
+       74,   79,   19,   19,   74,   19,   19,   19,   19,   74,
+       74,   74,   78,   78,   78,   74,   79,   74,   19,   19,
+       19,   19,   19,   78,   74,   19,   19,   19,   19,   19,
+       74,   19,   74,    0,   74,   74,   74,   74,   74
     } ;
 
-static yyconst flex_uint16_t yy_nxt[185] =
+static yyconst flex_uint16_t yy_nxt[170] =
     {   0,
         4,    5,    6,    5,    7,    8,    9,   10,   10,   10,
-       11,   12,   13,   14,   15,   16,   17,   18,   16,   19,
-       16,   16,   18,   16,   16,   16,   16,   20,   21,   16,
-       16,   22,   23,   23,   23,   23,   23,   23,   27,   65,
-       65,   36,   39,   28,   29,   37,   51,   50,   38,   29,
-       30,   31,   42,   65,   36,   39,   28,   32,   37,   47,
-       47,   38,   32,   36,   65,   28,   39,   37,   48,   40,
-       38,   41,   43,   23,   23,   23,   27,   44,   46,   27,
-       47,   28,   29,   49,   28,   29,   40,   29,   48,   36,
-       29,   45,   65,   37,   39,   65,   65,   39,   39,   65,
-
-       48,   39,   65,   52,   39,   56,   53,   65,   35,   39,
-       54,   65,   34,   39,   55,   65,   65,   39,   39,   65,
-       57,   39,   65,   65,   39,   39,   62,   65,   65,   39,
-       39,   58,   64,   59,   65,   33,   39,   26,   24,   65,
-       63,   65,   60,   65,   61,   25,   65,   25,   25,   39,
-       39,    3,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   65,   65,   65
+       11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
+       18,   21,   18,   18,   20,   18,   18,   18,   18,   22,
+       23,   18,   18,   24,   25,   25,   25,   25,   25,   25,
+       29,   32,   33,   45,   51,   46,   52,   30,   31,   35,
+       36,   57,   40,   31,   40,   36,   41,   73,   41,   42,
+       43,   42,   43,   25,   25,   25,   29,   40,   29,   32,
+       33,   41,   72,   30,   31,   30,   31,   35,   36,   31,
+       45,   31,   55,   36,   46,   60,   52,   55,   61,   58,
+       71,   59,   70,   30,   64,   69,   65,   27,   53,   27,
+
+       27,   27,   27,   34,   34,   34,   44,   44,   44,   44,
+       54,   54,   68,   67,   66,   53,   53,   52,   63,   62,
+       58,   56,   53,   53,   50,   49,   48,   47,   39,   38,
+       37,   28,   26,   74,    3,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74
     } ;
 
-static yyconst flex_int16_t yy_chk[185] =
+static yyconst flex_int16_t yy_chk[170] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    5,    5,    5,    6,    6,    6,   11,   41,
-       19,   16,   19,   11,   11,   16,   41,   68,   16,   11,
-       12,   12,   19,   20,   17,   20,   12,   12,   17,   46,
-       47,   17,   12,   18,   21,   47,   21,   18,   40,   18,
-       18,   18,   20,   23,   23,   23,   27,   21,   29,   30,
-       29,   27,   27,   33,   30,   30,   32,   27,   32,   36,
-       30,   22,   39,   36,   39,   42,   43,   42,   43,   44,
-
-       48,   44,   51,   42,   51,   48,   42,   52,   15,   52,
-       43,   53,   14,   53,   44,   54,   55,   54,   55,   57,
-       53,   57,   58,   59,   58,   59,   60,   61,   60,   61,
-       60,   54,   63,   55,   63,   13,   63,    9,    7,    3,
-       61,    0,   58,    0,   59,   66,    0,   66,   66,   67,
-       67,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   65,   65,   65
+        1,    1,    1,    1,    5,    5,    5,    6,    6,    6,
+       11,   12,   12,   20,   31,   20,   31,   11,   11,   12,
+       12,   79,   18,   11,   19,   12,   18,   72,   19,   18,
+       18,   19,   19,   25,   25,   25,   29,   40,   32,   33,
+       33,   40,   70,   29,   29,   32,   32,   33,   33,   29,
+       36,   32,   36,   33,   46,   47,   52,   55,   47,   58,
+       69,   46,   68,   52,   55,   67,   58,   75,   64,   75,
+
+       75,   75,   75,   76,   76,   76,   77,   77,   77,   77,
+       78,   78,   63,   62,   61,   54,   53,   51,   49,   48,
+       45,   37,   35,   34,   24,   23,   22,   21,   16,   15,
+       14,    9,    7,    3,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74
     } ;
 
 #define YY_TRAILING_MASK 0x2000
@@ -551,7 +539,7 @@ goto find_rule; \
    LPH [A-Za-z_] Alphabetic character
    LPHDGT [A-Za-z0-9_] Alphanumeric character
    XPN [eE][+-]?[0-9]+ Real number Exponent */
-#line 555 "expr_lex.c"
+#line 543 "expr_lex.cc"
 
 #define INITIAL 0
 
@@ -580,8 +568,8 @@ struct yyguts_t
     size_t yy_buffer_stack_max; /**< capacity of stack. */
     YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
     char yy_hold_char;
-    yy_size_t yy_n_chars;
-    yy_size_t yyleng_r;
+    int yy_n_chars;
+    int yyleng_r;
     char *yy_c_buf_p;
     int yy_init;
     int yy_start;
@@ -645,7 +633,7 @@ FILE *yyget_out (yyscan_t yyscanner );
 
 void yyset_out  (FILE * _out_str ,yyscan_t yyscanner );
 
-yy_size_t yyget_leng (yyscan_t yyscanner );
+			int yyget_leng (yyscan_t yyscanner );
 
 char *yyget_text (yyscan_t yyscanner );
 
@@ -710,7 +698,7 @@ static int input (yyscan_t yyscanner );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -734,7 +722,7 @@ static int input (yyscan_t yyscanner );
 	else \
 		{ \
 		errno=0; \
-		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+		while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
 			{ \
 			if( errno != EINTR) \
 				{ \
@@ -844,7 +832,7 @@ YY_DECL
 #line 36 "expr_lex.l"
 
 
-#line 848 "expr_lex.c"
+#line 836 "expr_lex.cc"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -870,14 +858,14 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 66 )
+				if ( yy_current_state >= 75 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 			*yyg->yy_state_ptr++ = yy_current_state;
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 152 );
+		while ( yy_base[yy_current_state] != 135 );
 
 yy_find_action:
 		yy_current_state = *--yyg->yy_state_ptr;
@@ -994,73 +982,91 @@ YY_RULE_SETUP
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 80 "expr_lex.l"
+#line 79 "expr_lex.l"
 {
-                return *yytext;
+                yylval->varnm = strdup(yytext);
+                return VARIABLE;
              }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 84 "expr_lex.l"
-return LEG;
+#line 85 "expr_lex.l"
+{
+                return *yytext;
+             }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 85 "expr_lex.l"
-return GE;
+#line 89 "expr_lex.l"
+return LEG;
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 86 "expr_lex.l"
-return LE;
+#line 90 "expr_lex.l"
+return GE;
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 87 "expr_lex.l"
-return GT;
+#line 91 "expr_lex.l"
+return LE;
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 88 "expr_lex.l"
-return LT;
+#line 92 "expr_lex.l"
+return GT;
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 89 "expr_lex.l"
-return EQ;
+#line 93 "expr_lex.l"
+return LT;
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 90 "expr_lex.l"
-return NE;
+#line 94 "expr_lex.l"
+return EQ;
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 91 "expr_lex.l"
-return AND;
+#line 95 "expr_lex.l"
+return NE;
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 92 "expr_lex.l"
-return OR;
+#line 96 "expr_lex.l"
+return AND;
 	YY_BREAK
 case 20:
-/* rule 20 can match eol */
 YY_RULE_SETUP
-#line 94 "expr_lex.l"
-;       /* ignore whitespace */
+#line 97 "expr_lex.l"
+return OR;
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 96 "expr_lex.l"
-yyerror(NULL, NULL, "Unknown character");
+#line 98 "expr_lex.l"
+return QUESTION;
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 97 "expr_lex.l"
+#line 99 "expr_lex.l"
+return COLON;
+	YY_BREAK
+case 23:
+/* rule 23 can match eol */
+YY_RULE_SETUP
+#line 101 "expr_lex.l"
+;       /* ignore whitespace */
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 103 "expr_lex.l"
+yyerror(NULL, NULL, "Unknown character");
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 104 "expr_lex.l"
 ECHO;
 	YY_BREAK
-#line 1064 "expr_lex.c"
+#line 1070 "expr_lex.cc"
 			case YY_STATE_EOF(INITIAL):
 				yyterminate();
 
@@ -1248,7 +1254,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
 	else
 		{
-			yy_size_t num_to_read =
+			int num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
@@ -1288,9 +1294,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+	if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
+		int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
@@ -1324,10 +1330,10 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 66 )
+			if ( yy_current_state >= 75 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 		*yyg->yy_state_ptr++ = yy_current_state;
 		}
 
@@ -1348,11 +1354,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 66 )
+		if ( yy_current_state >= 75 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 65);
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+	yy_is_jam = (yy_current_state == 74);
 	if ( ! yy_is_jam )
 		*yyg->yy_state_ptr++ = yy_current_state;
 
@@ -1389,7 +1395,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
 		else
 			{ /* need more input */
-			yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
+			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
 			++yyg->yy_c_buf_p;
 
 			switch ( yy_get_next_buffer( yyscanner ) )
@@ -1413,7 +1419,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( yywrap(yyscanner ) )
-						return EOF;
+						return 0;
 
 					if ( ! yyg->yy_did_buffer_switch_on_eof )
 						YY_NEW_FILE;
@@ -1669,7 +1675,7 @@ void yypop_buffer_state (yyscan_t yyscanner)
  */
 static void yyensure_buffer_stack (yyscan_t yyscanner)
 {
-	yy_size_t num_to_alloc;
+	int num_to_alloc;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
 	if (!yyg->yy_buffer_stack) {
@@ -1678,7 +1684,7 @@ static void yyensure_buffer_stack (yyscan_t yyscanner)
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 		 * immediate realloc on the next call.
          */
-		num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
 		yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								, yyscanner);
@@ -1725,7 +1731,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscann
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
-		return 0;
+		return NULL;
 
 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
 	if ( ! b )
@@ -1734,7 +1740,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscann
 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
 	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
+	b->yy_input_file = NULL;
 	b->yy_n_chars = b->yy_buf_size;
 	b->yy_is_interactive = 0;
 	b->yy_at_bol = 1;
@@ -1757,7 +1763,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscann
 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
 {
     
-	return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
+	return yy_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@@ -1767,7 +1773,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len , yyscan_t yyscanner)
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
 {
 	YY_BUFFER_STATE b;
 	char *buf;
@@ -1775,7 +1781,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len
 	yy_size_t i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
+	n = (yy_size_t) _yybytes_len + 2;
 	buf = (char *) yyalloc(n ,yyscanner );
 	if ( ! buf )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -1801,7 +1807,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
+static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
@@ -1884,7 +1890,7 @@ FILE *yyget_out  (yyscan_t yyscanner)
 /** Get the length of the current token.
  * @param yyscanner The scanner object.
  */
-yy_size_t yyget_leng  (yyscan_t yyscanner)
+int yyget_leng  (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
     return yyleng;
@@ -2055,10 +2061,10 @@ static int yy_init_globals (yyscan_t yyscanner)
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    yyg->yy_buffer_stack = 0;
+    yyg->yy_buffer_stack = NULL;
     yyg->yy_buffer_stack_top = 0;
     yyg->yy_buffer_stack_max = 0;
-    yyg->yy_c_buf_p = (char *) 0;
+    yyg->yy_c_buf_p = NULL;
     yyg->yy_init = 0;
     yyg->yy_start = 0;
 
@@ -2076,8 +2082,8 @@ static int yy_init_globals (yyscan_t yyscanner)
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -2150,7 +2156,7 @@ void *yyalloc (yy_size_t  size , yyscan_t yyscanner)
 {
 	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 	(void)yyg;
-	return (void *) malloc( size );
+	return malloc(size);
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
@@ -2165,7 +2171,7 @@ void *yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
 	 * any pointer type to void*, and deal with argument conversions
 	 * as though doing an assignment.
 	 */
-	return (void *) realloc( (char *) ptr, size );
+	return realloc(ptr, size);
 }
 
 void yyfree (void * ptr , yyscan_t yyscanner)
@@ -2177,7 +2183,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 97 "expr_lex.l"
+#line 104 "expr_lex.l"
 
 
 
diff --git a/src/expr_yacc.c b/src/expr_yacc.cc
similarity index 86%
rename from src/expr_yacc.c
rename to src/expr_yacc.cc
index d1a5384..b5a9650 100644
--- a/src/expr_yacc.c
+++ b/src/expr_yacc.cc
@@ -62,7 +62,7 @@
 
 
 /* Copy the first part of user declarations.  */
-#line 2 "expr_yacc.y" /* yacc.c:339  */
+#line 4 "expr_yacc.y" /* yacc.c:339  */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -91,7 +91,7 @@ nodeType *expr_com(const char *cname, char *vname);
 void freeNode(nodeType *p);
 
 
-#line 95 "expr_yacc.c" /* yacc.c:339  */
+#line 95 "expr_yacc.cc" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -110,9 +110,9 @@ void freeNode(nodeType *p);
 #endif
 
 /* In a future release of Bison, this section will be replaced
-   by #include "expr_yacc.h".  */
-#ifndef YY_YY_EXPR_YACC_H_INCLUDED
-# define YY_YY_EXPR_YACC_H_INCLUDED
+   by #include "expr_yacc.hh".  */
+#ifndef YY_YY_EXPR_YACC_HH_INCLUDED
+# define YY_YY_EXPR_YACC_HH_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -129,36 +129,40 @@ extern int yydebug;
     CONSTANT = 258,
     VARIABLE = 259,
     FUNCTION = 260,
-    REMOVE = 261,
-    PRINT = 262,
-    AND = 263,
-    OR = 264,
-    LEG = 265,
-    GE = 266,
-    LE = 267,
-    EQ = 268,
-    NE = 269,
-    GT = 270,
-    LT = 271,
-    UMINUS = 272
+    QUESTION = 261,
+    COLON = 262,
+    REMOVE = 263,
+    PRINT = 264,
+    AND = 265,
+    OR = 266,
+    LEG = 267,
+    GE = 268,
+    LE = 269,
+    EQ = 270,
+    NE = 271,
+    GT = 272,
+    LT = 273,
+    UMINUS = 274
   };
 #endif
 /* Tokens.  */
 #define CONSTANT 258
 #define VARIABLE 259
 #define FUNCTION 260
-#define REMOVE 261
-#define PRINT 262
-#define AND 263
-#define OR 264
-#define LEG 265
-#define GE 266
-#define LE 267
-#define EQ 268
-#define NE 269
-#define GT 270
-#define LT 271
-#define UMINUS 272
+#define QUESTION 261
+#define COLON 262
+#define REMOVE 263
+#define PRINT 264
+#define AND 265
+#define OR 266
+#define LEG 267
+#define GE 268
+#define LE 269
+#define EQ 270
+#define NE 271
+#define GT 272
+#define LT 273
+#define UMINUS 274
 
 /* Value type.  */
 
@@ -166,11 +170,11 @@ extern int yydebug;
 
 int yyparse (parse_param_t *parse_arg, void *scanner);
 
-#endif /* !YY_YY_EXPR_YACC_H_INCLUDED  */
+#endif /* !YY_YY_EXPR_YACC_HH_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
 
-#line 174 "expr_yacc.c" /* yacc.c:358  */
+#line 178 "expr_yacc.cc" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -417,16 +421,16 @@ union yyalloc
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  32
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  6
+#define YYNNTS  7
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  35
+#define YYNRULES  36
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  75
+#define YYNSTATES  77
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   272
+#define YYMAXUTOK   274
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -439,9 +443,9 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      30,    27,    19,    17,    31,    18,     2,    20,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    23,    25,
-       2,    26,     2,    22,     2,     2,     2,     2,     2,     2,
+      30,    27,    21,    19,    31,    20,     2,    22,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,    25,
+       2,    26,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,    24,     2,     2,     2,     2,     2,
@@ -462,17 +466,17 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    21
+      15,    16,    17,    18,    23
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint8 yyrline[] =
 {
-       0,    58,    58,    62,    63,    67,    68,    69,    70,    71,
-      72,    73,    77,    78,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103
+       0,    60,    60,    64,    65,    69,    70,    71,    72,    73,
+      74,    75,    76,    80,    81,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   108
 };
 #endif
 
@@ -482,10 +486,10 @@ static const yytype_uint8 yyrline[] =
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "CONSTANT", "VARIABLE", "FUNCTION",
-  "REMOVE", "PRINT", "AND", "OR", "LEG", "GE", "LE", "EQ", "NE", "GT",
-  "LT", "'+'", "'-'", "'*'", "'/'", "UMINUS", "'?'", "':'", "'^'", "';'",
-  "'='", "')'", "'{'", "'}'", "'('", "','", "$accept", "program",
-  "function", "stmt", "stmt_list", "expr", YY_NULLPTR
+  "QUESTION", "COLON", "REMOVE", "PRINT", "AND", "OR", "LEG", "GE", "LE",
+  "EQ", "NE", "GT", "LT", "'+'", "'-'", "'*'", "'/'", "UMINUS", "'^'",
+  "';'", "'='", "')'", "'{'", "'}'", "'('", "','", "$accept", "program",
+  "function", "stmt", "stmt_list", "expr", "ternary", YY_NULLPTR
 };
 #endif
 
@@ -495,8 +499,8 @@ static const char *const yytname[] =
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,    43,    45,    42,
-      47,   272,    63,    58,    94,    59,    61,    41,   123,   125,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,    43,
+      45,    42,    47,   274,    94,    59,    61,    41,   123,   125,
       40,    44
 };
 # endif
@@ -515,14 +519,14 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     -25,     5,    36,   -25,   -25,   -16,   -24,     7,     8,    33,
-     -25,    36,    33,   -25,   103,   -25,    33,    33,   -13,   -12,
-     -25,   -20,   -25,    28,    83,    33,    33,    33,    33,    33,
-      33,    33,    33,    33,    33,    33,    33,    33,    33,    33,
-     -25,   121,    59,    19,    22,   -25,   -25,   -25,   154,   154,
-     162,   162,   162,   162,   162,   162,   162,    65,    65,   -20,
-     -20,   139,    24,   -25,   -25,    42,   -25,   -25,    33,    23,
-      46,   -20,   -25,    25,   -25
+     -25,     2,    34,   -25,   -25,   -21,   -24,     7,    10,    41,
+     -25,    34,    41,   -25,   133,   -25,    41,    41,    13,    14,
+     -25,    24,   -25,    27,   100,    41,    41,    41,    41,    41,
+      41,    41,    41,    41,    41,    41,    41,    41,    41,   -25,
+      84,     9,    62,    26,    33,   -25,   -25,   -25,   162,   162,
+      46,    46,    46,    46,    46,    46,    46,   -12,   -12,    24,
+      24,    24,    41,   -25,   -25,   -25,    30,   -25,   -25,   118,
+      22,    12,    41,   -25,    42,   149,   -25
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -530,26 +534,26 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       4,     0,     2,     1,    14,    15,     0,     0,     0,     0,
-       5,     0,     0,     3,     0,     8,     0,     0,     0,     0,
-      15,    16,    12,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       6,     0,     0,     0,     0,    11,    13,    32,    29,    30,
-      28,    24,    25,    27,    26,    22,    21,    17,    18,    19,
-      20,     0,    23,     7,    35,     0,     9,    10,     0,     0,
-       0,    31,    34,     0,    33
+       4,     0,     2,     1,    15,    16,     0,     0,     0,     0,
+       5,     0,     0,     3,     0,     9,     0,     0,     0,     0,
+      16,    17,    13,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     6,
+       0,     0,     0,     0,     0,    12,    14,    32,    30,    31,
+      29,    25,    26,    28,    27,    23,    22,    18,    19,    20,
+      21,    24,     0,     7,     8,    35,     0,    10,    11,     0,
+       0,     0,     0,    34,     0,    36,    33
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -25,   -25,   -25,   -10,   -25,    -9
+     -25,   -25,   -25,   -10,   -25,    -9,   -25
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,     1,     2,    13,    23,    14
+      -1,     1,     2,    13,    23,    14,    41
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -557,80 +561,80 @@ static const yytype_int8 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint8 yytable[] =
 {
-      21,    22,    38,    24,    39,     3,    17,    41,    42,    15,
-      16,    18,    19,    46,    43,    44,    48,    49,    50,    51,
+      21,    22,     3,    24,    15,    16,    17,    40,    42,    36,
+      37,    18,    38,    46,    19,    74,    48,    49,    50,    51,
       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
-      62,     4,     5,     6,     7,     8,     4,    20,     6,     4,
-       5,     6,     7,     8,    66,    69,     9,    67,    39,    73,
-      72,     9,    74,    10,     9,     0,    11,    45,    12,    71,
-      70,    10,     0,    12,    11,     0,    12,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-       0,    38,     0,    39,    36,    37,    64,    38,     0,    39,
-      65,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,     0,    38,     0,    39,     0,     0,
-      47,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,     0,    38,     0,    39,    40,    25,
+       4,     5,     6,    70,    64,     7,     8,     4,     5,     6,
+      43,    44,     7,     8,     4,    20,     6,     9,    38,    73,
+      71,    67,    10,    69,     9,    11,    45,    12,    68,    10,
+       0,     9,    11,    75,    12,    34,    35,    36,    37,    76,
+      38,    12,    25,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,     0,    38,     0,     0,    65,
+      62,     0,     0,    66,    25,    26,    27,    28,    29,    30,
+      31,    32,    33,    34,    35,    36,    37,     0,    38,    63,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,     0,    38,    72,     0,    47,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,     0,    38,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,     0,    38,    39,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,     0,    38,     0,    39,    63,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-       0,    38,    68,    39,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,     0,    38,     0,    39,    34,
-      35,    36,    37,     0,    38,     0,    39
+      36,    37,     0,    38,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,     0,    38
 };
 
 static const yytype_int8 yycheck[] =
 {
-       9,    11,    22,    12,    24,     0,    30,    16,    17,    25,
-      26,     4,     4,    23,    27,    27,    25,    26,    27,    28,
+       9,    11,     0,    12,    25,    26,    30,    16,    17,    21,
+      22,     4,    24,    23,     4,     3,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,     3,     4,     5,     6,     7,     3,     4,     5,     3,
-       4,     5,     6,     7,    25,     3,    18,    25,    24,     3,
-      27,    18,    27,    25,    18,    -1,    28,    29,    30,    68,
-      18,    25,    -1,    30,    28,    -1,    30,     8,     9,    10,
+       3,     4,     5,     3,    25,     8,     9,     3,     4,     5,
+      27,    27,     8,     9,     3,     4,     5,    20,    24,    27,
+      20,    25,    25,    62,    20,    28,    29,    30,    25,    25,
+      -1,    20,    28,    72,    30,    19,    20,    21,    22,    27,
+      24,    30,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    27,
+       6,    -1,    -1,    31,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    -1,    24,    25,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    -1,    24,     7,    -1,    27,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    -1,    24,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    -1,    24,    25,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      -1,    22,    -1,    24,    19,    20,    27,    22,    -1,    24,
-      31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    -1,    22,    -1,    24,    -1,    -1,
-      27,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    -1,    22,    -1,    24,    25,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    -1,    22,    -1,    24,    25,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      -1,    22,    23,    24,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    -1,    22,    -1,    24,    17,
-      18,    19,    20,    -1,    22,    -1,    24
+      21,    22,    -1,    24,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    -1,    24
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    33,    34,     0,     3,     4,     5,     6,     7,    18,
+       0,    33,    34,     0,     3,     4,     5,     8,     9,    20,
       25,    28,    30,    35,    37,    25,    26,    30,     4,     4,
-       4,    37,    35,    36,    37,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    22,    24,
-      25,    37,    37,    27,    27,    29,    35,    27,    37,    37,
+       4,    37,    35,    36,    37,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    24,    25,
+      37,    38,    37,    27,    27,    29,    35,    27,    37,    37,
       37,    37,    37,    37,    37,    37,    37,    37,    37,    37,
-      37,    37,    37,    25,    27,    31,    25,    25,    23,     3,
-      18,    37,    27,     3,    27
+      37,    37,     6,    25,    25,    27,    31,    25,    25,    37,
+       3,    20,     7,    27,     3,    37,    27
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
        0,    32,    33,    34,    34,    35,    35,    35,    35,    35,
-      35,    35,    36,    36,    37,    37,    37,    37,    37,    37,
+      35,    35,    35,    36,    36,    37,    37,    37,    37,    37,
       37,    37,    37,    37,    37,    37,    37,    37,    37,    37,
-      37,    37,    37,    37,    37,    37
+      37,    37,    37,    37,    37,    37,    38
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     1,     2,     0,     1,     2,     4,     2,     4,
-       4,     3,     1,     2,     1,     1,     2,     3,     3,     3,
+       0,     2,     1,     2,     0,     1,     2,     4,     4,     2,
+       4,     4,     3,     1,     2,     1,     1,     2,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     5,     3,     7,     6,     4
+       3,     3,     3,     7,     6,     4,     5
 };
 
 
@@ -1315,205 +1319,211 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 58 "expr_yacc.y" /* yacc.c:1646  */
+#line 60 "expr_yacc.y" /* yacc.c:1646  */
     { return 0; }
-#line 1321 "expr_yacc.c" /* yacc.c:1646  */
+#line 1325 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 62 "expr_yacc.y" /* yacc.c:1646  */
+#line 64 "expr_yacc.y" /* yacc.c:1646  */
     { expr_run((yyvsp[0].nPtr), (parse_param_t *) parse_arg); freeNode((yyvsp[0].nPtr)); }
-#line 1327 "expr_yacc.c" /* yacc.c:1646  */
+#line 1331 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 67 "expr_yacc.y" /* yacc.c:1646  */
+#line 69 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = expr_opr(';', 2, NULL, NULL); }
-#line 1333 "expr_yacc.c" /* yacc.c:1646  */
+#line 1337 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 68 "expr_yacc.y" /* yacc.c:1646  */
+#line 70 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = (yyvsp[-1].nPtr); }
-#line 1339 "expr_yacc.c" /* yacc.c:1646  */
+#line 1343 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 69 "expr_yacc.y" /* yacc.c:1646  */
+#line 71 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = expr_opr('=', 2, expr_var((yyvsp[-3].varnm)), (yyvsp[-1].nPtr)); }
-#line 1345 "expr_yacc.c" /* yacc.c:1646  */
+#line 1349 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 70 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('=', 2, expr_var((yyvsp[-1].varnm)), expr_var((yyvsp[-1].varnm))); }
-#line 1351 "expr_yacc.c" /* yacc.c:1646  */
+#line 72 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('=', 2, expr_var((yyvsp[-3].varnm)), (yyvsp[-1].nPtr)); }
+#line 1355 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 71 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_com("remove", (yyvsp[-2].varnm)); }
-#line 1357 "expr_yacc.c" /* yacc.c:1646  */
+#line 73 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('=', 2, expr_var((yyvsp[-1].varnm)), expr_var((yyvsp[-1].varnm))); }
+#line 1361 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 72 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_com("print", (yyvsp[-2].varnm)); }
-#line 1363 "expr_yacc.c" /* yacc.c:1646  */
+#line 74 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_com("remove", (yyvsp[-2].varnm)); }
+#line 1367 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 73 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = (yyvsp[-1].nPtr); }
-#line 1369 "expr_yacc.c" /* yacc.c:1646  */
+#line 75 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_com("print", (yyvsp[-2].varnm)); }
+#line 1373 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 77 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = (yyvsp[0].nPtr); }
-#line 1375 "expr_yacc.c" /* yacc.c:1646  */
+#line 76 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = (yyvsp[-1].nPtr); }
+#line 1379 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 78 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(';', 2, (yyvsp[-1].nPtr), (yyvsp[0].nPtr)); }
-#line 1381 "expr_yacc.c" /* yacc.c:1646  */
+#line 80 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = (yyvsp[0].nPtr); }
+#line 1385 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 82 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_con((yyvsp[0].cvalue)); }
-#line 1387 "expr_yacc.c" /* yacc.c:1646  */
+#line 81 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(';', 2, (yyvsp[-1].nPtr), (yyvsp[0].nPtr)); }
+#line 1391 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 83 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_var((yyvsp[0].varnm)); }
-#line 1393 "expr_yacc.c" /* yacc.c:1646  */
+#line 85 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_con((yyvsp[0].cvalue)); }
+#line 1397 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 84 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(UMINUS, 1, (yyvsp[0].nPtr)); }
-#line 1399 "expr_yacc.c" /* yacc.c:1646  */
+#line 86 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_var((yyvsp[0].varnm)); }
+#line 1403 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 85 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('+', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1405 "expr_yacc.c" /* yacc.c:1646  */
+#line 87 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(UMINUS, 1, (yyvsp[0].nPtr)); }
+#line 1409 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 86 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('-', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1411 "expr_yacc.c" /* yacc.c:1646  */
+#line 88 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('+', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1415 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 87 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('*', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1417 "expr_yacc.c" /* yacc.c:1646  */
+#line 89 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('-', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1421 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 88 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('/', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1423 "expr_yacc.c" /* yacc.c:1646  */
+#line 90 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('*', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1427 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 89 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(LT,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1429 "expr_yacc.c" /* yacc.c:1646  */
+#line 91 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('/', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1433 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 90 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(GT,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1435 "expr_yacc.c" /* yacc.c:1646  */
+#line 92 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(LT,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1439 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 91 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('^', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1441 "expr_yacc.c" /* yacc.c:1646  */
+#line 93 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(GT,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1445 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 92 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(GE,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1447 "expr_yacc.c" /* yacc.c:1646  */
+#line 94 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('^', 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1451 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 93 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(LE,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1453 "expr_yacc.c" /* yacc.c:1646  */
+#line 95 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(GE,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1457 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 94 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(NE,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1459 "expr_yacc.c" /* yacc.c:1646  */
+#line 96 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(LE,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1463 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 95 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(EQ,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1465 "expr_yacc.c" /* yacc.c:1646  */
+#line 97 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(NE,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1469 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 96 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(LEG, 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1471 "expr_yacc.c" /* yacc.c:1646  */
+#line 98 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(EQ,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1475 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 97 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(AND, 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1477 "expr_yacc.c" /* yacc.c:1646  */
+#line 99 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(LEG, 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1481 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 98 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr(OR,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1483 "expr_yacc.c" /* yacc.c:1646  */
+#line 100 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(AND, 2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1487 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 99 "expr_yacc.y" /* yacc.c:1646  */
-    { (yyval.nPtr) = expr_opr('?', 3, (yyvsp[-4].nPtr), (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
-#line 1489 "expr_yacc.c" /* yacc.c:1646  */
+#line 101 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr(OR,  2, (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1493 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 100 "expr_yacc.y" /* yacc.c:1646  */
+#line 102 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = (yyvsp[-1].nPtr); }
-#line 1495 "expr_yacc.c" /* yacc.c:1646  */
+#line 1499 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 101 "expr_yacc.y" /* yacc.c:1646  */
+#line 103 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = expr_fun1c((yyvsp[-6].fname), (yyvsp[-4].nPtr), - (yyvsp[-1].cvalue)); }
-#line 1501 "expr_yacc.c" /* yacc.c:1646  */
+#line 1505 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 102 "expr_yacc.y" /* yacc.c:1646  */
+#line 104 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = expr_fun1c((yyvsp[-5].fname), (yyvsp[-3].nPtr), (yyvsp[-1].cvalue)); }
-#line 1507 "expr_yacc.c" /* yacc.c:1646  */
+#line 1511 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 103 "expr_yacc.y" /* yacc.c:1646  */
+#line 105 "expr_yacc.y" /* yacc.c:1646  */
     { (yyval.nPtr) = expr_fun((yyvsp[-3].fname), (yyvsp[-1].nPtr)); }
-#line 1513 "expr_yacc.c" /* yacc.c:1646  */
+#line 1517 "expr_yacc.cc" /* yacc.c:1646  */
+    break;
+
+  case 36:
+#line 108 "expr_yacc.y" /* yacc.c:1646  */
+    { (yyval.nPtr) = expr_opr('?', 3, (yyvsp[-4].nPtr), (yyvsp[-2].nPtr), (yyvsp[0].nPtr)); }
+#line 1523 "expr_yacc.cc" /* yacc.c:1646  */
     break;
 
 
-#line 1517 "expr_yacc.c" /* yacc.c:1646  */
+#line 1527 "expr_yacc.cc" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -1741,7 +1751,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 106 "expr_yacc.y" /* yacc.c:1906  */
+#line 111 "expr_yacc.y" /* yacc.c:1906  */
 
 
 #define SIZEOF_NODETYPE ((char *)&p->u.con - (char *)p)
diff --git a/src/expr_yacc.h b/src/expr_yacc.h
index 0b18e1b..e3bac12 100644
--- a/src/expr_yacc.h
+++ b/src/expr_yacc.h
@@ -30,8 +30,8 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_EXPR_YACC_H_INCLUDED
-# define YY_YY_EXPR_YACC_H_INCLUDED
+#ifndef YY_YY_EXPR_YACC_HH_INCLUDED
+# define YY_YY_EXPR_YACC_HH_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -48,36 +48,40 @@ extern int yydebug;
     CONSTANT = 258,
     VARIABLE = 259,
     FUNCTION = 260,
-    REMOVE = 261,
-    PRINT = 262,
-    AND = 263,
-    OR = 264,
-    LEG = 265,
-    GE = 266,
-    LE = 267,
-    EQ = 268,
-    NE = 269,
-    GT = 270,
-    LT = 271,
-    UMINUS = 272
+    QUESTION = 261,
+    COLON = 262,
+    REMOVE = 263,
+    PRINT = 264,
+    AND = 265,
+    OR = 266,
+    LEG = 267,
+    GE = 268,
+    LE = 269,
+    EQ = 270,
+    NE = 271,
+    GT = 272,
+    LT = 273,
+    UMINUS = 274
   };
 #endif
 /* Tokens.  */
 #define CONSTANT 258
 #define VARIABLE 259
 #define FUNCTION 260
-#define REMOVE 261
-#define PRINT 262
-#define AND 263
-#define OR 264
-#define LEG 265
-#define GE 266
-#define LE 267
-#define EQ 268
-#define NE 269
-#define GT 270
-#define LT 271
-#define UMINUS 272
+#define QUESTION 261
+#define COLON 262
+#define REMOVE 263
+#define PRINT 264
+#define AND 265
+#define OR 266
+#define LEG 267
+#define GE 268
+#define LE 269
+#define EQ 270
+#define NE 271
+#define GT 272
+#define LT 273
+#define UMINUS 274
 
 /* Value type.  */
 
@@ -85,4 +89,4 @@ extern int yydebug;
 
 int yyparse (parse_param_t *parse_arg, void *scanner);
 
-#endif /* !YY_YY_EXPR_YACC_H_INCLUDED  */
+#endif /* !YY_YY_EXPR_YACC_HH_INCLUDED  */
diff --git a/src/features.c b/src/features.cc
similarity index 100%
rename from src/features.c
rename to src/features.cc
diff --git a/src/field.c b/src/field.cc
similarity index 100%
rename from src/field.c
rename to src/field.cc
diff --git a/src/field.h b/src/field.h
index 51605d4..47d216f 100644
--- a/src/field.h
+++ b/src/field.h
@@ -97,14 +97,14 @@ typedef struct {
 field_type;
 
 
-/* fieldmem.c */
+/* fieldmem.cc */
 
 void      field_init(field_type *field);
 field_type **field_malloc(const int vlistID, const int ptype);
 field_type **field_calloc(const int vlistID, const int ptype);
 void      field_free(field_type **field, const int vlistID);
 
-/* field.c */
+/* field.cc */
 
 double fldfun(field_type field, int function);
 double fldrange(field_type field);
@@ -133,7 +133,7 @@ double fldbrs(field_type field);
 double fldrank(field_type field);
 double fldroc(field_type field);
 
-/* fieldzon.c */
+/* fieldzon.cc */
 
 void zonfun(field_type field1, field_type *field2, const int function);
 void zonmin(field_type field1, field_type *field2);
@@ -148,11 +148,12 @@ void zonvar(field_type field1, field_type *field2);
 void zonvar1(field_type field1, field_type *field2);
 void zonpctl(field_type field1, field_type *field2, const int k);
 
-/* fieldmer.c */
+/* fieldmer.cc */
 
 void merfun(field_type field1, field_type *field2, const int function);
 void mermin(field_type field1, field_type *field2);
 void mermax(field_type field1, field_type *field2);
+void merrange(field_type field1, field_type *field2);
 void mersum(field_type field1, field_type *field2);
 void meravgw(field_type field1, field_type *field2);
 void mermeanw(field_type field1, field_type *field2);
@@ -166,7 +167,7 @@ void fldrms(field_type field1, field_type field2, field_type *field3);
 
 void varrms(field_type field1, field_type field2, field_type *field3);
 
-/* fieldc.c */
+/* fieldc.cc */
 
 void farcfun(field_type *field, const double rconst, const int function);
 
@@ -180,7 +181,7 @@ void farmod(field_type *field, const double divisor);
 void farinv(field_type *field);
 void farround(field_type *field);
 
-/* field2.c */
+/* field2.cc */
 
 void farfun(field_type *field1, field_type field2, int function);
 
diff --git a/src/field2.c b/src/field2.cc
similarity index 100%
rename from src/field2.c
rename to src/field2.cc
diff --git a/src/fieldc.c b/src/fieldc.cc
similarity index 100%
rename from src/fieldc.c
rename to src/fieldc.cc
diff --git a/src/fieldmem.c b/src/fieldmem.cc
similarity index 100%
rename from src/fieldmem.c
rename to src/fieldmem.cc
diff --git a/src/fieldmer.c b/src/fieldmer.cc
similarity index 89%
rename from src/fieldmer.c
rename to src/fieldmer.cc
index f9b560c..784a22b 100644
--- a/src/fieldmer.c
+++ b/src/fieldmer.cc
@@ -27,6 +27,7 @@ void merfun(field_type field1, field_type *field2, int function)
     {
     case func_min:   mermin(field1, field2);    break;
     case func_max:   mermax(field1, field2);    break;
+    case func_range: merrange(field1, field2);  break;
     case func_sum:   mersum(field1, field2);    break;
     case func_meanw: mermeanw(field1, field2);  break;
     case func_avgw:  meravgw(field1, field2);   break;
@@ -123,6 +124,64 @@ void mermax(field_type field1, field_type *field2)
 }
 
 
+void merrange(field_type field1, field_type *field2)
+{
+  long   i, j, nx, ny;
+  int    rnmiss = 0;
+  int    grid    = field1.grid;
+  int    nmiss   = field1.nmiss;
+  double missval = field1.missval;
+  double *array  = field1.ptr;
+  double rmin = 0;
+  double rmax = 0;
+  double rrange = 0;
+
+  nx    = gridInqXsize(grid);
+  ny    = gridInqYsize(grid);
+
+  for ( i = 0; i < nx; i++ )
+    {
+      if ( nmiss > 0 )
+	{
+	  rmin =  DBL_MAX;
+	  rmax = -DBL_MAX;
+	  for ( j = 0; j < ny; j++ )
+	    if ( !DBL_IS_EQUAL(array[j*nx+i], missval) )
+              {
+		if      ( array[j*nx+i] < rmin ) rmin = array[j*nx+i];
+                else if ( array[j*nx+i] > rmax ) rmax = array[j*nx+i];
+              }
+
+	  if ( IS_EQUAL(rmin, DBL_MAX) || IS_EQUAL(rmax, -DBL_MAX) )
+	    {
+	      rnmiss++;
+	      rrange = missval;
+	    }
+	  else
+	    {
+	      rrange = rmax - rmin;
+	    }
+	}
+      else
+	{
+	  rmin = DBL_MAX;
+	  rmax = DBL_MIN;
+	  for ( j = 0; j < ny; j++ )
+	    {
+	      if      ( array[j*nx+i] < rmin )  rmin = array[j*nx+i];
+	      else if ( array[j*nx+i] > rmax )  rmax = array[j*nx+i];
+	    }
+
+          rrange = rmax - rmin;
+	}
+
+      field2->ptr[i] = rrange;
+    }
+
+  field2->nmiss  = rnmiss;
+}
+
+
 void mersum(field_type field1, field_type *field2)
 {
   long   i, j, nx, ny;
diff --git a/src/fieldzon.c b/src/fieldzon.cc
similarity index 100%
rename from src/fieldzon.c
rename to src/fieldzon.cc
diff --git a/src/gradsdeslib.c b/src/gradsdeslib.cc
similarity index 99%
rename from src/gradsdeslib.c
rename to src/gradsdeslib.cc
index 97a11b7..a14bb51 100644
--- a/src/gradsdeslib.c
+++ b/src/gradsdeslib.cc
@@ -15,8 +15,6 @@ int fullyear = -999;
 
 void dsets_init(dsets_t *pfi)
 {
-  int i;
-
   pfi->name[0]    = 0;
   pfi->dnam[0]    = 0;
   pfi->title[0]   = 0;
@@ -41,7 +39,7 @@ void dsets_init(dsets_t *pfi)
 
   pfi->pchsub1    = NULL;
 
-  for ( i = 0; i < 5; ++i ) pfi->dnum[i]    = 0;
+  for ( int i = 0; i < 5; ++i ) pfi->dnum[i]    = 0;
 }
 
 /* Byte swap requested number of 4 byte elements */
@@ -1219,7 +1217,7 @@ int read_gradsdes(char *filename, dsets_t *pfi)
   // gaint acumstride=0;
   gaint hdrb, trlb;
   gaint size=0,rc,len,flag,tim1,tim2;
-  gaint flgs[8],e,t;
+  gaint e,t;
   int BYTEORDER = IsBigendian();
   gadouble *vals;
   gadouble v1,v2,temp;
@@ -1239,9 +1237,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
   /* Copy descriptor file name into gafile structure */
   getwrd (pfi->dnam,filename,MAX_NAMELEN);
 
-  /* initialize error flags */
-  for (i=0;i<8;i++) flgs[i] = 1;
-
   /* Parse the data descriptor file */
   while ( fgets(rec, MAX_RECLEN, descr) != NULL )
     {
@@ -1458,7 +1453,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
           else
             {
               getstr (pfi->title,ch,MAX_NAMELEN);
-              flgs[7] = 0;
             }
         } 
       else if (cmpwrd("dset",rec))
@@ -1477,7 +1471,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
             {
               getwrd (pfi->name,ch,MAX_NAMELEN);
             }
-          flgs[5] = 0;
         }   
       else if (cmpwrd("undef",rec))
         {
@@ -1498,7 +1491,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
           pfi->ulow = fabs(pfi->undef/EPSILON);
           pfi->uhi  = pfi->undef + pfi->ulow;
           pfi->ulow = pfi->undef - pfi->ulow;
-          flgs[4] = 0;
         }
       else if (cmpwrd("xdef",rec))
         {
@@ -1531,7 +1523,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
               if (rc==-1)  goto err8; 
               if (rc) goto err9;
             } else goto err2;
-          flgs[0] = 0;
         } 
       else if (cmpwrd("ydef",rec))
         {
@@ -1559,7 +1550,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
               if (rc==-1) goto err8;
               if (rc) goto err9;
             }
-          flgs[1] = 0;
         }
       else if (cmpwrd("zdef",rec))
         {
@@ -1587,7 +1577,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
               if (rc==-1) goto err8; 
               if (rc) goto err9;
             } else goto err2;
-          flgs[2] = 0;
         }
       else if (cmpwrd("tdef",rec))
         {
@@ -1630,7 +1619,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
               pfi->abvals[3] = vals;
               pfi->linear[3] = 1;
             } else goto err2;
-          flgs[3] = 0;
         }
       else if (cmpwrd("vars",rec))
         {
@@ -1853,8 +1841,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
               lowcas(rec);
             }
           /* vars block parsed without error */
-          flgs[6] = 0;
-
         } 
       else
         {
@@ -1863,7 +1849,6 @@ int read_gradsdes(char *filename, dsets_t *pfi)
           goto err9;
         }
     }
-  (void) flgs;
   /* Done scanning!
      Check if scanned stuff makes sense, and then set things up correctly */
 
diff --git a/src/grid.c b/src/grid.cc
similarity index 98%
rename from src/grid.c
rename to src/grid.cc
index 24a3bc5..4956025 100644
--- a/src/grid.c
+++ b/src/grid.cc
@@ -905,6 +905,7 @@ int gridToCurvilinear(int gridID1, int lbounds)
 	double *xbounds = NULL, *ybounds = NULL;
 	char xunits[CDI_MAX_NAME], yunits[CDI_MAX_NAME];
 
+        size_t nvertex = (size_t) gridInqNvertex(gridID1);
 	gridInqXunits(gridID1, xunits);
 	gridInqYunits(gridID1, yunits);
 
@@ -984,7 +985,7 @@ int gridToCurvilinear(int gridID1, int lbounds)
 
 	if ( !lbounds ) goto NO_BOUNDS;
 
-        if ( gridInqXbounds(gridID1, NULL) )
+        if ( nvertex == 2 && gridInqXbounds(gridID1, NULL) )
           {
             xbounds = (double*) Malloc(2*nx*sizeof(double));
             gridInqXbounds(gridID1, xbounds);
@@ -1002,7 +1003,7 @@ int gridToCurvilinear(int gridID1, int lbounds)
             grid_gen_bounds(nx, xvals, xbounds);
           }
 
-        if ( gridInqYbounds(gridID1, NULL) )
+        if ( nvertex == 2 && gridInqYbounds(gridID1, NULL) )
           {
             ybounds = (double*) Malloc(2*ny*sizeof(double));
             gridInqYbounds(gridID1, ybounds);
@@ -1131,8 +1132,8 @@ int gridToUnstructuredSelecton(int gridID1, size_t selectionSize, int *selection
 
   gridDefXsize(unstructuredSelectionGridID, selectionSize);
   gridDefYsize(unstructuredSelectionGridID, selectionSize);
-  double *xvals   = (double*) Malloc(selectionSize*sizeof(double));
-  double *yvals   = (double*) Malloc(selectionSize*sizeof(double));
+  double *xvals = (double*) Malloc(selectionSize*sizeof(double));
+  double *yvals = (double*) Malloc(selectionSize*sizeof(double));
 
   for (size_t i = 0; i < selectionSize; i++)
   {
@@ -1258,9 +1259,10 @@ int gridToUnstructured(int gridID1, int lbounds)
 
 	if ( lbounds )
 	  {
+            size_t nvertex = (size_t) gridInqNvertex(gridID1);
 	    double *xbounds = NULL, *ybounds = NULL;
 
-	    if ( gridInqXbounds(gridID1, NULL) )
+	    if ( nvertex == 2 && gridInqXbounds(gridID1, NULL) )
 	      {
 		xbounds = (double*) Malloc(2*nx*sizeof(double));
 		gridInqXbounds(gridID1, xbounds);
@@ -1271,7 +1273,7 @@ int gridToUnstructured(int gridID1, int lbounds)
 		grid_gen_bounds(nx, xvals, xbounds);
 	      }
 
-	    if ( gridInqYbounds(gridID1, NULL) )
+	    if ( nvertex == 2 && gridInqYbounds(gridID1, NULL) )
 	      {
 		ybounds = (double*) Malloc(2*ny*sizeof(double));
 		gridInqYbounds(gridID1, ybounds);
diff --git a/src/grid_area.c b/src/grid_area.cc
similarity index 100%
rename from src/grid_area.c
rename to src/grid_area.cc
diff --git a/src/grid_define.c b/src/grid_define.cc
similarity index 100%
rename from src/grid_define.c
rename to src/grid_define.cc
diff --git a/src/grid_from_name.c b/src/grid_from_name.cc
similarity index 100%
rename from src/grid_from_name.c
rename to src/grid_from_name.cc
diff --git a/src/grid_gme.c b/src/grid_gme.cc
similarity index 100%
rename from src/grid_gme.c
rename to src/grid_gme.cc
diff --git a/src/grid_print.c b/src/grid_print.cc
similarity index 100%
rename from src/grid_print.c
rename to src/grid_print.cc
diff --git a/src/grid_proj.c b/src/grid_proj.cc
similarity index 100%
rename from src/grid_proj.c
rename to src/grid_proj.cc
diff --git a/src/grid_read.c b/src/grid_read.cc
similarity index 100%
rename from src/grid_read.c
rename to src/grid_read.cc
diff --git a/src/grid_read_pingo.c b/src/grid_read_pingo.cc
similarity index 100%
rename from src/grid_read_pingo.c
rename to src/grid_read_pingo.cc
diff --git a/src/grid_rot.c b/src/grid_rot.cc
similarity index 100%
rename from src/grid_rot.c
rename to src/grid_rot.cc
diff --git a/src/grid_search.c b/src/grid_search.cc
similarity index 100%
rename from src/grid_search.c
rename to src/grid_search.cc
diff --git a/src/griddes.c b/src/griddes.cc
similarity index 100%
rename from src/griddes.c
rename to src/griddes.cc
diff --git a/src/griddes_h5.c b/src/griddes_h5.cc
similarity index 100%
rename from src/griddes_h5.c
rename to src/griddes_h5.cc
diff --git a/src/griddes_nc.c b/src/griddes_nc.cc
similarity index 100%
rename from src/griddes_nc.c
rename to src/griddes_nc.cc
diff --git a/src/gridreference.c b/src/gridreference.cc
similarity index 100%
rename from src/gridreference.c
rename to src/gridreference.cc
diff --git a/src/hetaeta.c b/src/hetaeta.cc
similarity index 85%
rename from src/hetaeta.c
rename to src/hetaeta.cc
index 3695eb1..6dd9863 100644
--- a/src/hetaeta.c
+++ b/src/hetaeta.cc
@@ -91,7 +91,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
 		double *restrict rh_pbl, double *restrict theta_pbl, double *restrict *restrict vars_pbl, 
 		double *restrict zt2, double *restrict zq2)
 {
-  long k, iv, ijk, ijk1, ijk2;
+  long ijk, ijk1, ijk2;
   long jlev = 0, jlevr, jnop;
   long klo;
   long jjblt;
@@ -108,13 +108,13 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
   /* pressure */
   ph1[0]   =  0.0;
   lnph1[0] = -1.0; 
-  for ( k = 1; k < nlev1p1; ++k )
+  for ( int k = 1; k < nlev1p1; ++k )
     {
       ph1[k]   = ah1[k]+bh1[k]*ps1[ij];
       lnph1[k] = log(ph1[k]);
     } 
 
-  for ( k = 0; k < nlev1; ++k )
+  for ( int k = 0; k < nlev1; ++k )
     {
       pf1[k]   = af1[k]+bf1[k]*ps1[ij];
       lnpf1[k] = log(pf1[k]);
@@ -122,7 +122,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
 
   /* virtual temperature, relative humidity, potential temperature */
   if ( ltq )
-    for ( k = 0; k < nlev1; ++k )
+    for ( int k = 0; k < nlev1; ++k )
       {
 	ijk = k*ngp+ij;
 	zq1 = q1[ijk];
@@ -137,20 +137,20 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
     {
       fi1[0] = 0.0;
       fi1[nlev1] = fis1[ij];
-      for ( k = nlev1-1; k > 0; --k )
+      for ( int k = nlev1-1; k > 0; --k )
 	{
 	  fi1[k] = fi1[k+1]+rair*tv1[k]*(lnph1[k+1]-lnph1[k]);
 	}
     }
 #if defined(OUTPUT)
   if ( ij == OPOINT )
-    for ( k = nlev1-1; k >= 0; --k )
+    for ( int k = nlev1-1; k >= 0; --k )
       { 
 	ijk = k*ngp+ij;
 	if ( ltq ) { t = t1[ijk]; q = q1[ijk]; fi = fi1[k]; }
 	else       { t = 0; q = 0; fi = 0; }
 	fprintf(old, "%3d %18.10f %18.10f %18.10f %18.10f", k, fi/g, pf1[k], t, q);
-	for ( iv = 0; iv < nvars; ++iv ) fprintf(old, " %18.10f", vars1[iv][ijk]);
+	for ( int iv = 0; iv < nvars; ++iv ) fprintf(old, " %18.10f", vars1[iv][ijk]);
 	fprintf(old, "\n");
       }
 #endif
@@ -162,7 +162,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
   */
   if ( ltq )
     {
-      for ( k = nlev1-2; k > 0; --k )
+      for ( int k = nlev1-2; k > 0; --k )
 	{
 	  /* find index for regression, 1 <= jlev <= nlevec-2 */
 	  jlev = k;
@@ -173,7 +173,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
       
       /* get the number of points used for estimation of regression coefficients */
       jlevr = 0;
-      for ( k = jlev-1; k > 0; --k )
+      for ( int k = jlev-1; k > 0; --k )
 	{
 	  jlevr = k;
 	  double zdffl = fi1[k]-fi1[jlev+1];
@@ -191,7 +191,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
       double zsumpp = 0.0;
       double zsumtp = 0.0;
 
-      for ( k = jlevr; k <= jlev+1; ++k )
+      for ( int k = jlevr; k <= jlev+1; ++k )
 	{
 	  zsumt  = zsumt  + tv1[k];
 	  zsump  = zsump  + lnpf1[k];
@@ -228,13 +228,13 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
 
   ph2[0]   =  0.0;
   lnph2[0] = -1.0; 
-  for ( k = 1; k < nlev2p1; ++k )
+  for ( int k = 1; k < nlev2p1; ++k )
     {
       ph2[k]   = ah2[k]+bh2[k]* ps2[ij];
       lnph2[k] = log(ph2[k]);
     } 
 
-  for ( k = 0; k < nlev2; ++k )
+  for ( int k = 0; k < nlev2; ++k )
     {
       pf2[k]   = af2[k]+bf2[k]* ps2[ij];
       /* lnpf2[k] = log(pf2[k]); */
@@ -246,7 +246,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
     {
       /* using old pressure at half levels
 	 find first level below reference pressure */
-      for ( k = 1; k < nlev1p1; ++k )
+      for ( int k = 1; k < nlev1p1; ++k )
 	{
 	  jlev = k;
 	  if ( ph1[k] > p_firef ) break;
@@ -261,7 +261,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
   /* using the pressure from the old system */
   double pbl_lim = ps1[ij]*eta_pbl;
   jjblt = nlev2-1;
-  for ( k = nlev2-1; k > 0; --k )
+  for ( int k = nlev2-1; k > 0; --k )
     {
       /* find the next upper level in new system */
       double pbl_lim_need = ps2[ij] *etah2[k];
@@ -276,14 +276,14 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
   /* tension spline interpolation with full eta levels */
 
   if ( ltq )
-    for ( k = jjblt; k < nlev2; ++k )
+    for ( int k = jjblt; k < nlev2; ++k )
       {
 	theta_pbl[k] = w1[k]*theta1[jl1[k]] + w2[k]*theta1[jl2[k]];
 	rh_pbl[k]    = w1[k]*rh1[jl1[k]]    + w2[k]*rh1[jl2[k]];
       }
 
-  for ( iv = 0; iv < nvars; ++iv )
-    for ( k = jjblt; k < nlev2; ++k )
+  for ( int iv = 0; iv < nvars; ++iv )
+    for ( int k = jjblt; k < nlev2; ++k )
       {
 	ijk1 = jl1[k]*ngp+ij;
 	ijk2 = jl2[k]*ngp+ij;
@@ -293,25 +293,25 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
   /******* linear interpolation using pressure in free atmosphere
 	   pressure in new system using preliminary pressure */
 
-  for ( k = 0; k <= jjblt; ++k )
+  for ( int k = 0; k <= jjblt; ++k )
     {
       idx[k] = int_index(nlev1, pf1, pf2[k]);
     }
 
-  for ( k = 0; k <= jjblt; ++k )
+  for ( int k = 0; k <= jjblt; ++k )
     {
       wgt[k] = (pf1[idx[k]+1]-pf2[k])/(pf1[idx[k]+1]-pf1[idx[k]]);
     }
 
   if ( ltq )
     {
-      for ( k = 0; k < nlev1; ++k )
+      for ( int k = 0; k < nlev1; ++k )
 	{
 	  ijk = k*ngp+ij;
 	  zvar[k] = t1[ijk];
 	}
 
-      for ( k = 0; k <= jjblt; ++k )
+      for ( int k = 0; k <= jjblt; ++k )
 	{
 	  klo = idx[k];
 	  zt2[k] = wgt[k]*zvar[klo] + (1-wgt[k])*zvar[klo+1];
@@ -319,14 +319,14 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
 	}
     }
 
-  for ( iv = 0; iv < nvars; ++iv )
+  for ( int iv = 0; iv < nvars; ++iv )
     {
-      for ( k = 0; k < nlev1; ++k )
+      for ( int k = 0; k < nlev1; ++k )
 	{
 	  ijk = k*ngp+ij;
 	  zvar[k] = vars1[iv][ijk];
 	}
-      for ( k = 0; k <= jjblt; ++k )
+      for ( int k = 0; k <= jjblt; ++k )
 	{
 	  ijk = k*ngp+ij;
 	  klo = idx[k];
@@ -346,28 +346,28 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
     }
 
   ijk = jjblt*ngp+ij;
-  for ( iv = 0; iv < nvars; ++iv )
+  for ( int iv = 0; iv < nvars; ++iv )
     {
       vars2[iv][ijk] = 0.5*(vars2[iv][ijk]+vars_pbl[iv][jjblt]);
     }
 
   /* correct boundary profile values */
   if ( ltq )
-    for ( k = jjblt+1; k < nlev2; ++k ) 
+    for ( int k = jjblt+1; k < nlev2; ++k ) 
       {
 	zt2[k] = (theta_pbl[k]+dteta)*pow(pf2[k]/apr, rair_d_cpair);
 	rh2[k] = rh_pbl[k];
       }
 
-  for ( iv = 0; iv < nvars; ++iv )
-    for ( k = jjblt+1; k < nlev2; ++k ) 
+  for ( int iv = 0; iv < nvars; ++iv )
+    for ( int k = jjblt+1; k < nlev2; ++k ) 
       {
 	ijk = k*ngp+ij;
 	vars2[iv][ijk] = vars_pbl[iv][k];
       }
 
   if ( ltq )
-    for ( k = 0; k < nlev2; ++k )
+    for ( int k = 0; k < nlev2; ++k )
       {
 	zq2[k] = rh2[k]*epsilon*esat(zt2[k])/pf2[k];
       }
@@ -380,13 +380,13 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
       fi2[0]     = -1.0; /* top not defined, infinity */
     
       /* problem at top level, top pressure is zero per definition */
-      for ( k = nlev2-1; k > 0; --k )
+      for ( int k = nlev2-1; k > 0; --k )
 	{
 	  fi2[k] = fi2[k+1]+rair*zt2[k]*(lnph2[k+1]-lnph2[k])*(1.0+epsm1i*zq2[k]);
 	}
 
       /* search next level above reference level in new system */
-      for ( k = nlev2-1; k > 0; --k )
+      for ( int k = nlev2-1; k > 0; --k )
 	{ 
 	  jlev = k; 
 	  if (ph2[k] < p_firef) break;
@@ -402,22 +402,22 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
   /******* final calculation of specific humidity profiles */
   if ( ltq )
     {
-      for ( k = 0; k < nlev2; ++k )
+      for ( int k = 0; k < nlev2; ++k )
 	pf2[k] = af2[k] + bf2[k]* ps2[ij];
 
-      for ( k = 0; k < nlev2; ++k )
+      for ( int k = 0; k < nlev2; ++k )
 	zq2[k] = rh2[k]*epsilon*esat(zt2[k])/pf2[k];
     }
 
 #if defined(OUTPUT)
   if ( ij == OPOINT )
-    for ( k = nlev2-1; k >= 0; --k )
+    for ( int k = nlev2-1; k >= 0; --k )
       { 
 	ijk = k*ngp+ij;
 	if ( ltq ) { t = t2[k]; q = zq2[k]; fi = fi2[k]; }
 	else       { t = 0; q = 0; fi = 0; }
 	fprintf(new, "%3d %18.10f %18.10f %18.10f %18.10f", k, fi/g, pf2[k], t, q);
-	for ( iv = 0; iv < nvars; ++iv ) fprintf(new, " %18.10f", vars2[iv][ijk]);
+	for ( int iv = 0; iv < nvars; ++iv ) fprintf(new, " %18.10f", vars2[iv][ijk]);
 	fprintf(new, "\n");
       }
 #endif
@@ -434,7 +434,7 @@ void hetaeta_sc(bool ltq, int lpsmod, long ij, long ngp, long nlev1, long nlev2,
     }
 
   if ( ltq )
-    for ( k = 0; k < nlev2; ++k ) 
+    for ( int k = 0; k < nlev2; ++k ) 
       {
 	ijk = k*ngp+ij;
 	t2[ijk] = zt2[k];
@@ -455,7 +455,6 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 {
   double epsm1i;
   long jblt;
-  long k, iv;
   long jlev = 0;
   double *zt2 = NULL, *zq2 = NULL;
   double /* *etah1,*/ *ph1, *lnph1, *fi1;
@@ -471,7 +470,6 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
   long *idx;
   int lpsmod = 1;
 #if defined(_OPENMP)
-  long i;
   extern int ompNumThreads;
   double *vars_pbl[MAX_VARS];
 #else
@@ -488,36 +486,36 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
   long nlev2p1 = nlev2+1;
 
 #if defined(_OPENMP)
-  double *ph1_2[ompNumThreads];
-  double *lnph1_2[ompNumThreads];
-  double *fi1_2[ompNumThreads];
-
-  double *pf1_2[ompNumThreads];
-  double *lnpf1_2[ompNumThreads];
-  double *tv1_2[ompNumThreads];
-  double *theta1_2[ompNumThreads];
-  double *rh1_2[ompNumThreads];
-  double *zvar_2[ompNumThreads];
-
-  double *ph2_2[ompNumThreads];
-  double *lnph2_2[ompNumThreads];
-  double *fi2_2[ompNumThreads];
-
-  double *pf2_2[ompNumThreads];
-  double *rh2_2[ompNumThreads];
-  double *wgt_2[ompNumThreads];
-  long   *idx_2[ompNumThreads];
+  double **ph1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **lnph1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **fi1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+
+  double **pf1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **lnpf1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **tv1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **theta1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **rh1_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **zvar_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+
+  double **ph2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **lnph2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **fi2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+
+  double **pf2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **rh2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **wgt_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  long   **idx_2 = (long**) Malloc(ompNumThreads*sizeof(long*));
 
   // if ( ltq )
-  double *zt2_2[ompNumThreads];
-  double *zq2_2[ompNumThreads];
-  double *rh_pbl_2[ompNumThreads];
-  double *theta_pbl_2[ompNumThreads];
+  double **zt2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **zq2_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **rh_pbl_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
+  double **theta_pbl_2 = (double**) Malloc(ompNumThreads*sizeof(double*));
 
   // if ( nvars > 0 )
-  double **vars_pbl_2[ompNumThreads];
+  double ***vars_pbl_2 = (double***) Malloc(ompNumThreads*sizeof(double**));
 
-  for ( i = 0; i < ompNumThreads; i++ )
+  for ( int i = 0; i < ompNumThreads; i++ )
     {
       ph1_2[i]    = (double*) Malloc(nlev1p1*sizeof(double));
       lnph1_2[i]  = (double*) Malloc(nlev1p1*sizeof(double));
@@ -555,7 +553,7 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 	      exit(-1);
 	    }
 	  vars_pbl_2[i]  = (double **) Malloc(nvars*sizeof(double *));
-	  for ( iv = 0; iv < nvars; ++iv )
+	  for ( int iv = 0; iv < nvars; ++iv )
 	    vars_pbl_2[i][iv] = (double*) Malloc(nlev2*sizeof(double));
 	}
     }
@@ -593,25 +591,25 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
   if ( nvars > 0 )
     {
       vars_pbl  = (double **) Malloc(nvars*sizeof(double *));
-      for ( iv = 0; iv < nvars; ++iv )
+      for ( int iv = 0; iv < nvars; ++iv )
 	vars_pbl[iv] = (double*) Malloc(nlev2*sizeof(double));
     }
 #endif
   
-  double af1[nlev1];
-  double bf1[nlev1];
-  double etaf1[nlev1];
+  double *af1 = (double*) Malloc(nlev1*sizeof(double));
+  double *bf1 = (double*) Malloc(nlev1*sizeof(double));
+  double *etaf1 = (double*) Malloc(nlev1*sizeof(double));
 
-  double etah2[nlev2p1];
+  double *etah2 = (double*) Malloc(nlev2p1*sizeof(double));
 
-  double af2[nlev2];
-  double bf2[nlev2];
-  double etaf2[nlev2];
+  double *af2 = (double*) Malloc(nlev2*sizeof(double));
+  double *bf2 = (double*) Malloc(nlev2*sizeof(double));
+  double *etaf2 = (double*) Malloc(nlev2*sizeof(double));
 
-  double w1[nlev2];
-  double w2[nlev2];
-  long jl1[nlev2];
-  long jl2[nlev2];
+  double *w1 = (double*) Malloc(nlev2*sizeof(double));
+  double *w2 = (double*) Malloc(nlev2*sizeof(double));
+  long *jl1 = (long*) Malloc(nlev2*sizeof(long));
+  long *jl2 = (long*) Malloc(nlev2*sizeof(long));
 
   /******* set coordinate system ETA's, A's, B's
 	   calculate half and full level ETA
@@ -619,14 +617,14 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 
   /* input system */
 
-  for ( k = 0; k < nlev1; ++k )
+  for ( int k = 0; k < nlev1; ++k )
     {
       af1[k] = 0.5*(ah1[k]+ah1[k+1]);
       bf1[k] = 0.5*(bh1[k]+bh1[k+1]);
     }
 
   /* etah1[nlev1] = ah1[nlev1]*aipr+bh1[nlev1]; */
-  for ( k = 0; k < nlev1; ++k )
+  for ( int k = 0; k < nlev1; ++k )
     { 
       /* etah1[k] = ah1[k]*aipr+bh1[k]; */
       etaf1[k] = af1[k]*aipr+bf1[k];
@@ -635,7 +633,7 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
   /* output system */
 
   /* calculates full level VCT */
-  for ( k = 0; k < nlev2; ++k )
+  for ( int k = 0; k < nlev2; ++k )
     {
       af2[k] = 0.5*(ah2[k]+ah2[k+1]);
       bf2[k] = 0.5*(bh2[k]+bh2[k+1]);
@@ -643,7 +641,7 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 
   etah2[nlev2] = ah2[nlev2]*aipr+bh2[nlev2];
   jblt = nlev2;
-  for ( k = nlev2-1; k >= 0; --k )
+  for ( int k = nlev2-1; k >= 0; --k )
     { 
       etah2[k] = ah2[k]*aipr+bh2[k];
       etaf2[k] = af2[k]*aipr+bf2[k];
@@ -651,7 +649,7 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
     }
 
   /* calculate weights for PBL interpolation */
-  for ( k = 0; k < nlev2; ++k )
+  for ( int k = 0; k < nlev2; ++k )
     {
       /* scan through new vertical levels
 	 set changes outside the full level eta's of old system to constant */
@@ -762,7 +760,7 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 
 
 #if defined(_OPENMP)
-  for ( i = 0; i < ompNumThreads; i++ )
+  for ( int i = 0; i < ompNumThreads; i++ )
     {
       Free(ph1_2[i]);    
       Free(lnph1_2[i]);  
@@ -795,12 +793,33 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 
       if ( nvars > 0 )
 	{
-	  for ( iv = 0; iv < nvars; ++iv )
+	  for ( int iv = 0; iv < nvars; ++iv )
 	    Free(vars_pbl_2[i][iv]);
 	  
 	  Free(vars_pbl_2[i]);
 	}
     }
+  Free(ph1_2);
+  Free(lnph1_2);
+  Free(fi1_2);
+  Free(pf1_2);
+  Free(lnpf1_2);
+  Free(tv1_2);
+  Free(theta1_2);
+  Free(rh1_2);
+  Free(zvar_2);
+  Free(ph2_2);
+  Free(lnph2_2);
+  Free(fi2_2);
+  Free(pf2_2);
+  Free(rh2_2);
+  Free(wgt_2);
+  Free(idx_2);
+  Free(zt2_2);
+  Free(zq2_2);
+  Free(rh_pbl_2);
+  Free(theta_pbl_2);
+  Free(vars_pbl_2);
 #else
   /* Free(etah1); */     
   Free(ph1);    
@@ -834,13 +853,25 @@ void hetaeta(bool ltq, int ngp, const int *imiss,
 
   if ( nvars > 0 )
     {
-      for ( iv = 0; iv < nvars; ++iv )
+      for ( int iv = 0; iv < nvars; ++iv )
         Free(vars_pbl[iv]);
 
       Free(vars_pbl);
     }
 #endif
 
+  Free(af1);
+  Free(bf1);
+  Free(etaf1);
+  Free(etah2);
+  Free(af2);
+  Free(bf2);
+  Free(etaf2);
+  Free(w1);
+  Free(w2);
+  Free(jl1);
+  Free(jl2);
+
   return;
 }
 
diff --git a/src/institution.c b/src/institution.cc
similarity index 100%
rename from src/institution.c
rename to src/institution.cc
diff --git a/src/interpol.c b/src/interpol.cc
similarity index 100%
rename from src/interpol.c
rename to src/interpol.cc
diff --git a/src/job.c b/src/job.cc
similarity index 99%
rename from src/job.c
rename to src/job.cc
index d32fc97..40d0e5d 100644
--- a/src/job.c
+++ b/src/job.cc
@@ -368,7 +368,7 @@ size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
   if(out && !out->stream) {
     out->stream=fopen(out->filename, "wb");
     if(!out->stream)
-      return -1;
+      return 0;
   }
   return fwrite(buffer, size, nmemb, out->stream);
 }
diff --git a/src/juldate.c b/src/juldate.cc
similarity index 100%
rename from src/juldate.c
rename to src/juldate.cc
diff --git a/src/kdtreelib/kdtree.h b/src/kdtreelib/kdtree.h
index 1405968..74638a0 100644
--- a/src/kdtreelib/kdtree.h
+++ b/src/kdtreelib/kdtree.h
@@ -22,22 +22,36 @@
 #include <stdio.h>
 #include <string.h>
 
-#define  KD_FLOAT 1
-#define  KD_INT   2
+#define  KD_FLOAT  1
+#define  KD_INT    2
+#define  KD_DOUBLE 3
+#define  KD_LONG   4
 
 #define  KD_TYPE  KD_FLOAT
+//#define  KD_TYPE  KD_INT
 
 #if KD_TYPE == KD_INT
 typedef int kdata_t;
-#  define KDATA_SFAC     20000.
-#  define KDATA_SCALE(x) ((int) (0.5+KDATA_SFAC*(x)))
+#  define KDATA_SFAC     44000.
+#  define KDATA_SCALE(x) ((int) lround(KDATA_SFAC*(x)))
 #  define KDATA_INVSCALE(x) ((x)/KDATA_SFAC)
 #  define KDATA_ABS(x)   abs(x)
-#else
+#elif KD_TYPE == KD_FLOAT
 typedef float kdata_t;
 #  define KDATA_SCALE(x) (x)
 #  define KDATA_INVSCALE(x) (x)
+#  define KDATA_ABS(x)   fabsf(x)
+#elif KD_TYPE == KD_DOUBLE
+typedef double kdata_t;
+#  define KDATA_SCALE(x) (x)
+#  define KDATA_INVSCALE(x) (x)
 #  define KDATA_ABS(x)   fabs(x)
+#elif KD_TYPE == KD_LONG
+typedef long kdata_t;
+#  define KDATA_SFAC     3000000.
+#  define KDATA_SCALE(x) (lround(KDATA_SFAC*(x)))
+#  define KDATA_INVSCALE(x) ((x)/KDATA_SFAC)
+#  define KDATA_ABS(x)   labs(x)
 #endif
 
 
diff --git a/src/kdtreelib/kdtree_cartesian.c b/src/kdtreelib/kdtree_cartesian.cc
similarity index 100%
rename from src/kdtreelib/kdtree_cartesian.c
rename to src/kdtreelib/kdtree_cartesian.cc
diff --git a/src/kdtreelib/kdtree_common.c b/src/kdtreelib/kdtree_common.c
deleted file mode 100644
index b730c4d..0000000
--- a/src/kdtreelib/kdtree_common.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/*!\file kdtree_common.c
- * \brief Routines common to the Cartesian and spherical kd-tree versions
- *
- */
-
-#include "kdtree.h"
-#include "pqueue.h"
-
-
-extern int pmergesort(struct kd_point *base, size_t nmemb, int axis, int max_threads);
-
-
-/* ********************************************************************
-
-   general utility functions 
-
-   ********************************************************************* */
-
-void *
-kd_malloc(size_t size, const char *msg)
-{
-    void *ptr;
-    if ((ptr = malloc(size)) == NULL)
-        perror(msg);
-    return ptr;
-}
-
-kdata_t
-kd_sqr(kdata_t x)
-{
-  return (x < 0 || x > 0) ? x * x : 0;
-}
-
-int
-kd_isleaf(struct kdNode *n)
-{
-    return (n->left || n->right) ? 0 : 1;
-}
-
-/* end utility functions */
-
-/* *******************************************************************
-   
-   Helper functions for debugging
-
-   ******************************************************************* */
-
-void
-kd_printNode(struct kdNode *node)
-{
-    if (!node) {
-        fprintf(stderr, "Node is empty.\n");
-        return;
-    }
-    printf("Node %p at (%f, %f)\n", (void *) node, node->location[0],
-           node->location[1]);
-
-    printf("Split axis: %d\n", node->split);
-    printf("Corners: (%f, %f)\t(%f, %f)\n", node->min[0], node->min[1],
-           node->max[0], node->max[1]);
-    printf("Children: %p\t%p\n", (void *) node->left, (void *) node->right);
-    printf("Index: %u\n", node->index);
-
-    printf("\n");
-
-}
-
-void
-kd_printTree(struct kdNode *node)
-{
-    if (node == NULL)
-        return;
-
-    kd_printTree(node->left);
-    if (kd_isleaf(node) )
-        printf("%f\t%f\n", node->location[0], node->location[1]);
-    kd_printTree(node->right);
-}
-
-/* End helper functions */
-
-/* ******************************************************************
-   
-   Functions for building and destroying trees 
-
-   ******************************************************************** */
-
-void *kd_doBuildTree(void *threadarg)
-{
-    int sortaxis;
-    unsigned long pivot;
-    kdata_t tmpMinLeft[KD_MAX_DIM], tmpMaxLeft[KD_MAX_DIM], tmpMinRight[KD_MAX_DIM], tmpMaxRight[KD_MAX_DIM];
-    struct kdNode *node;
-    struct kd_point *points;
-    unsigned long nPoints;
-    kdata_t *min, *max;
-    int depth, dim, max_threads;
-    pthread_t threads[2];
-    pthread_attr_t attr;
-    struct kd_thread_data *argleft, *argright;
-    struct kd_thread_data *my_data = (struct kd_thread_data *) threadarg;
-
-    points = my_data->points;
-    nPoints = my_data->nPoints;
-    min = my_data->min;
-    max = my_data->max;
-    depth = my_data->depth;
-    max_threads = my_data->max_threads;
-    dim = my_data->dim;
-
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-
-    sortaxis = depth % dim;
-
-    if (nPoints == 1) {
-        if ((node = kd_allocNode(points, 0, min, max, sortaxis, dim)) == NULL)
-            return NULL;
-        node->index = points[0].index;
-        return node;
-    }
-
-    /*
-     * If this iteration is allowed to start more threads, we first
-     * use them to parallelize the sorting 
-     */
-    pmergesort(points, nPoints, sortaxis, max_threads);
-
-    pivot = nPoints / 2;
-    if ((node = kd_allocNode(points, pivot, min, max, sortaxis, dim)) == NULL)
-        return NULL;
-
-    memcpy(tmpMinLeft, min, dim * sizeof(kdata_t));
-    memcpy(tmpMaxLeft, max, dim * sizeof(kdata_t));
-    tmpMaxLeft[sortaxis] = node->location[sortaxis];
-    argleft =
-        kd_buildArg(points, pivot, tmpMinLeft, tmpMaxLeft,
-                    depth + 1, max_threads / 2, dim);
-    if (!argleft) {
-        kd_destroyTree(node);
-        return NULL;
-    }
-    if (max_threads > 1) {
-        pthread_create(&threads[0], &attr, kd_doBuildTree, (void *) argleft);
-    } else {
-        node->left = (kdNode *)kd_doBuildTree((void *) argleft);
-        free(argleft);
-        if (!node->left) {
-            kd_destroyTree(node);
-            return NULL;
-        }
-    }
-
-    memcpy(tmpMinRight, min, dim * sizeof(kdata_t));
-    memcpy(tmpMaxRight, max, dim * sizeof(kdata_t));
-    tmpMinRight[sortaxis] = node->location[sortaxis];
-    argright = kd_buildArg(&points[pivot], nPoints - pivot,
-                           tmpMinRight, tmpMaxRight, depth + 1,
-                           max_threads / 2, dim);
-    if (!argright) {
-        kd_destroyTree(node);
-        return NULL;
-    }
-    if (max_threads > 1) {
-        pthread_create(&threads[1], &attr, kd_doBuildTree, (void *) argright);
-    } else {
-        node->right = (kdNode *)kd_doBuildTree((void *) argright);
-        free(argright);
-        if (!node->right) {
-            kd_destroyTree(node);
-            return NULL;
-        }
-    }
-    if (max_threads > 1) {
-        pthread_join(threads[0], (void **) (&node->left));
-        free(argleft);
-        pthread_join(threads[1], (void **) (&node->right));
-        free(argright);
-        if (!node->left || !node->right) {
-            kd_destroyTree(node);
-            return NULL;
-        }
-    }
-    return (void *) node;
-}
-
-
-void
-kd_freeNode(kdNode *node)
-{
-    if ( node ) free(node);
-    return;
-}
-
-
-struct kd_thread_data *
-kd_buildArg(struct kd_point *points,
-            unsigned long nPoints,
-            kdata_t *min, kdata_t *max,
-            int depth, int max_threads, int dim)
-{
-    struct kd_thread_data *d;
-
-    if ((d = (kd_thread_data *)kd_malloc(sizeof(kd_thread_data), "kd_thread_data")) == NULL)
-        return NULL;
-    d->points = points;
-    d->nPoints = nPoints;
-    memcpy(d->min, min, dim*sizeof(kdata_t));
-    memcpy(d->max, max, dim*sizeof(kdata_t));
-    d->depth = depth;
-    d->max_threads = max_threads;
-    d->dim = dim;
-    return d;
-}
-
-
-struct kdNode *
-kd_allocNode(struct kd_point *points, unsigned long pivot,
-             kdata_t *min, kdata_t *max, int axis, int dim)
-{
-    struct kdNode *node;
-
-    if ((node = (kdNode *)kd_malloc(sizeof(kdNode), "kd_allocNode (node): ")) == NULL)
-        return NULL;
-    node->split = axis;
-    memcpy(node->location, points[pivot].point, dim * sizeof(kdata_t));
-    memcpy(node->min, min, dim * sizeof(kdata_t));
-    memcpy(node->max, max, dim * sizeof(kdata_t));
-    node->left = node->right = NULL;
-    node->index = 0;
-    return node;
-}
-
-/*!
- * \brief free the kd-tree data structure, 
- *
- * \param node the root node of the tree to be destroyed
- *
- * \param *destr a pointer to the destructor function for the data container.
- *
- * \return This function does not return a value
- */
-void
-kd_destroyTree(struct kdNode *node)
-{
-    if (node == NULL)
-        return;
-
-    kd_destroyTree(node->left);
-    kd_destroyTree(node->right);
-    kd_freeNode(node);
-}
-
-/* end of tree construction and destruction */
-
-/* Functions dealing with result heaps */
-
-/* Insert the sub-tree starting at node into the result heap res */
-int
-kd_insertResTree(struct kdNode *node, struct pqueue *res)
-{
-    struct resItem *point;
-
-    if (node == NULL)
-        return 1;
-
-    if (!kd_insertResTree(node->left, res))
-        return 0;
-    if (kd_isleaf(node)) {
-        if ((point = (struct resItem *)kd_malloc(sizeof(struct resItem), "kd_insertResTree: "))
-            == NULL)
-            return 0;
-
-        point->node = node;
-        point->dist_sq = -1;
-        pqinsert(res, point);
-    }
-    if (!kd_insertResTree(node->right, res))
-        return 0;
-    return 1;
-}
diff --git a/src/kdtreelib/kdtree_common.cc b/src/kdtreelib/kdtree_common.cc
new file mode 100644
index 0000000..559e758
--- /dev/null
+++ b/src/kdtreelib/kdtree_common.cc
@@ -0,0 +1,281 @@
+/*!\file kdtree_common.c
+ * \brief Routines common to the Cartesian and spherical kd-tree versions
+ *
+ */
+
+#include "kdtree.h"
+#include "pqueue.h"
+
+
+extern int pmergesort(struct kd_point *base, size_t nmemb, int axis, int max_threads);
+
+
+/* ********************************************************************
+
+   general utility functions 
+
+   ********************************************************************* */
+
+void *
+kd_malloc(size_t size, const char *msg)
+{
+  void *ptr;
+  if ((ptr = malloc(size)) == NULL)
+    perror(msg);
+  return ptr;
+}
+
+kdata_t
+kd_sqr(kdata_t x)
+{
+  return (x < 0 || x > 0) ? x * x : 0;
+}
+
+int
+kd_isleaf(struct kdNode *n)
+{
+  return (n->left || n->right) ? 0 : 1;
+}
+
+/* end utility functions */
+
+/* *******************************************************************
+   
+   Helper functions for debugging
+
+   ******************************************************************* */
+
+void
+kd_printNode(struct kdNode *node)
+{
+  if (!node) {
+    fprintf(stderr, "Node is empty.\n");
+    return;
+  }
+  printf("Node %p at (%f, %f)\n", (void *) node, node->location[0],
+         node->location[1]);
+
+  printf("Split axis: %d\n", node->split);
+  printf("Corners: (%f, %f)\t(%f, %f)\n", node->min[0], node->min[1],
+         node->max[0], node->max[1]);
+  printf("Children: %p\t%p\n", (void *) node->left, (void *) node->right);
+  printf("Index: %u\n", node->index);
+
+  printf("\n");
+}
+
+void
+kd_printTree(struct kdNode *node)
+{
+  if ( node == NULL ) return;
+
+  kd_printTree(node->left);
+
+  if ( kd_isleaf(node) )
+    printf("%f\t%f\n", node->location[0], node->location[1]);
+
+  kd_printTree(node->right);
+}
+
+/* End helper functions */
+
+/* ******************************************************************
+   
+   Functions for building and destroying trees 
+
+   ******************************************************************** */
+
+void *kd_doBuildTree(void *threadarg)
+{
+  kdata_t tmpMinLeft[KD_MAX_DIM], tmpMaxLeft[KD_MAX_DIM], tmpMinRight[KD_MAX_DIM], tmpMaxRight[KD_MAX_DIM];
+  struct kdNode *node;
+  pthread_t threads[2];
+  pthread_attr_t attr;
+  struct kd_thread_data *argleft, *argright;
+  struct kd_thread_data *my_data = (struct kd_thread_data *) threadarg;
+
+  struct kd_point *points = my_data->points;
+  unsigned long nPoints = my_data->nPoints;
+  kdata_t *min = my_data->min;
+  kdata_t *max = my_data->max;
+  int depth = my_data->depth;
+  int max_threads = my_data->max_threads;
+  int dim = my_data->dim;
+
+  pthread_attr_init(&attr);
+  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+
+  int sortaxis = depth % dim;
+
+  if (nPoints == 1) {
+    if ((node = kd_allocNode(points, 0, min, max, sortaxis, dim)) == NULL)
+      return NULL;
+    node->index = points[0].index;
+    return node;
+  }
+
+  /*
+   * If this iteration is allowed to start more threads, we first
+   * use them to parallelize the sorting 
+   */
+  pmergesort(points, nPoints, sortaxis, max_threads);
+
+  unsigned long pivot = nPoints / 2;
+  if ((node = kd_allocNode(points, pivot, min, max, sortaxis, dim)) == NULL)
+    return NULL;
+
+  memcpy(tmpMinLeft, min, dim * sizeof(kdata_t));
+  memcpy(tmpMaxLeft, max, dim * sizeof(kdata_t));
+  tmpMaxLeft[sortaxis] = node->location[sortaxis];
+  argleft = kd_buildArg(points, pivot, tmpMinLeft, tmpMaxLeft,
+                        depth + 1, max_threads / 2, dim);
+  if (!argleft) {
+    kd_destroyTree(node);
+    return NULL;
+  }
+
+  if (max_threads > 1) {
+    pthread_create(&threads[0], &attr, kd_doBuildTree, (void *) argleft);
+  } else {
+    node->left = (kdNode *)kd_doBuildTree((void *) argleft);
+    free(argleft);
+    if (!node->left) {
+      kd_destroyTree(node);
+      return NULL;
+    }
+  }
+
+  memcpy(tmpMinRight, min, dim * sizeof(kdata_t));
+  memcpy(tmpMaxRight, max, dim * sizeof(kdata_t));
+  tmpMinRight[sortaxis] = node->location[sortaxis];
+  argright = kd_buildArg(&points[pivot], nPoints - pivot,
+                         tmpMinRight, tmpMaxRight, depth + 1,
+                         max_threads / 2, dim);
+  if (!argright) {
+    kd_destroyTree(node);
+    return NULL;
+  }
+
+  if (max_threads > 1) {
+    pthread_create(&threads[1], &attr, kd_doBuildTree, (void *) argright);
+  } else {
+    node->right = (kdNode *)kd_doBuildTree((void *) argright);
+    free(argright);
+    if (!node->right) {
+      kd_destroyTree(node);
+      return NULL;
+    }
+  }
+
+  if (max_threads > 1) {
+    pthread_join(threads[0], (void **) (&node->left));
+    free(argleft);
+    pthread_join(threads[1], (void **) (&node->right));
+    free(argright);
+    if (!node->left || !node->right) {
+      kd_destroyTree(node);
+      return NULL;
+    }
+  }
+
+  return (void *) node;
+}
+
+
+void
+kd_freeNode(kdNode *node)
+{
+  if ( node ) free(node);
+  return;
+}
+
+
+struct kd_thread_data *
+kd_buildArg(struct kd_point *points,
+            unsigned long nPoints,
+            kdata_t *min, kdata_t *max,
+            int depth, int max_threads, int dim)
+{
+  struct kd_thread_data *d;
+
+  if ((d = (kd_thread_data *)kd_malloc(sizeof(kd_thread_data), "kd_thread_data")) == NULL)
+    return NULL;
+
+  d->points = points;
+  d->nPoints = nPoints;
+  memcpy(d->min, min, dim*sizeof(kdata_t));
+  memcpy(d->max, max, dim*sizeof(kdata_t));
+  d->depth = depth;
+  d->max_threads = max_threads;
+  d->dim = dim;
+
+  return d;
+}
+
+
+struct kdNode *
+kd_allocNode(struct kd_point *points, unsigned long pivot,
+             kdata_t *min, kdata_t *max, int axis, int dim)
+{
+  struct kdNode *node;
+
+  if ((node = (kdNode *)kd_malloc(sizeof(kdNode), "kd_allocNode (node): ")) == NULL)
+    return NULL;
+
+  node->split = axis;
+  memcpy(node->location, points[pivot].point, dim * sizeof(kdata_t));
+  memcpy(node->min, min, dim * sizeof(kdata_t));
+  memcpy(node->max, max, dim * sizeof(kdata_t));
+  node->left = node->right = NULL;
+  node->index = 0;
+
+  return node;
+}
+
+/*!
+ * \brief free the kd-tree data structure, 
+ *
+ * \param node the root node of the tree to be destroyed
+ *
+ * \param *destr a pointer to the destructor function for the data container.
+ *
+ * \return This function does not return a value
+ */
+void
+kd_destroyTree(struct kdNode *node)
+{
+  if ( node == NULL ) return;
+
+  kd_destroyTree(node->left);
+  kd_destroyTree(node->right);
+  kd_freeNode(node);
+}
+
+/* end of tree construction and destruction */
+
+/* Functions dealing with result heaps */
+
+/* Insert the sub-tree starting at node into the result heap res */
+int
+kd_insertResTree(struct kdNode *node, struct pqueue *res)
+{
+  if ( node == NULL ) return 1;
+
+  if ( !kd_insertResTree(node->left, res) ) return 0;
+
+  if ( kd_isleaf(node) )
+    {
+      struct resItem *point;
+      if ((point = (struct resItem *)kd_malloc(sizeof(struct resItem), "kd_insertResTree: "))
+          == NULL)
+        return 0;
+
+      point->node = node;
+      point->dist_sq = -1;
+      pqinsert(res, point);
+    }
+  
+  if ( !kd_insertResTree(node->right, res) ) return 0;
+
+  return 1;
+}
diff --git a/src/kdtreelib/kdtree_spherical.c b/src/kdtreelib/kdtree_spherical.cc
similarity index 100%
rename from src/kdtreelib/kdtree_spherical.c
rename to src/kdtreelib/kdtree_spherical.cc
diff --git a/src/kdtreelib/pmergesort.c b/src/kdtreelib/pmergesort.cc
similarity index 100%
rename from src/kdtreelib/pmergesort.c
rename to src/kdtreelib/pmergesort.cc
diff --git a/src/kdtreelib/pqueue.c b/src/kdtreelib/pqueue.cc
similarity index 100%
rename from src/kdtreelib/pqueue.c
rename to src/kdtreelib/pqueue.cc
diff --git a/src/kdtreelib/qsort.c b/src/kdtreelib/qsort.cc
similarity index 100%
rename from src/kdtreelib/qsort.c
rename to src/kdtreelib/qsort.cc
diff --git a/src/list.c b/src/list.cc
similarity index 100%
rename from src/list.c
rename to src/list.cc
diff --git a/src/listarray.c b/src/listarray.cc
similarity index 100%
rename from src/listarray.c
rename to src/listarray.cc
diff --git a/src/listbuf.c b/src/listbuf.cc
similarity index 100%
rename from src/listbuf.c
rename to src/listbuf.cc
diff --git a/src/magics_template_parser.c b/src/magics_template_parser.cc
similarity index 100%
rename from src/magics_template_parser.c
rename to src/magics_template_parser.cc
diff --git a/src/merge_sort2.c b/src/merge_sort2.cc
similarity index 99%
rename from src/merge_sort2.c
rename to src/merge_sort2.cc
index 6689b50..5cb8a1c 100644
--- a/src/merge_sort2.c
+++ b/src/merge_sort2.cc
@@ -57,7 +57,7 @@ void sort_par(long num_links, double *restrict add1, int parent, int par_depth)
   int nsplit = NSPLIT;                      /* (only 2 allowed) number of segments to split 
 						the data */
   int nl[NSPLIT];                            /* number of links in each sub-array              */
-  int who_am_i,depth;                        /* current depth, depth of children and index
+  int who_am_i;                              /* current depth, depth of children and index
 						to be parent in next call to sort_par          */
   int add_srt[NSPLIT];                       /* array for start index of sub array    */
   double *add1s[NSPLIT];                     /* pointers to sub arrays for sort and merge step */
@@ -78,9 +78,9 @@ void sort_par(long num_links, double *restrict add1, int parent, int par_depth)
   add1s[0]   = &add1[add_srt[0]];  add1s[1]   = &add1[add_srt[1]];
   nl[0]      = num_links/nsplit;   nl[1]      = num_links-nl[0];
 
-  depth = (int) (log(parent)/log(2));
-
 #if defined(_OPENMP)
+  int depth = (int) (log(parent)/log(2));
+
   /* Allow for nested parallelism */
   if ( omp_in_parallel() && depth<par_depth ) 
     {
diff --git a/src/modules.c b/src/modules.c
deleted file mode 100644
index fadf82f..0000000
--- a/src/modules.c
+++ /dev/null
@@ -1,1229 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-#if defined(HAVE_CONFIG_H)
-#  include "config.h"
-#endif
-
-#include <cdi.h>
-#include "cdo_int.h"
-#include "operator_help.h"
-#include "modules.h"
-#include "error.h"
-
-
-#define  MAX_MOD_OPERATORS  128               // maximum number of operators for a module
-
-typedef struct {
-  void  *(*func)(void *);                     // Module
-  const char **help;                          // Help
-  const char  *operators[MAX_MOD_OPERATORS];  // Operator names
-  short  mode;                                // Module mode: 0:intern 1:extern
-  short  number;                              // Allowed number type
-  short  streamInCnt;                         // Number of input streams
-  short  streamOutCnt;                        // Number of output streams
-}
-modules_t;
-
-
-void *Adisit(void *argument);
-void *Afterburner(void *argument);
-void *Arith(void *argument);
-void *Arithc(void *argument);
-void *Arithdays(void *argument);
-void *Arithlat(void *argument);
-void *Cat(void *argument);
-void *CDItest(void *argument);
-void *CDIread(void *argument);
-void *CDIwrite(void *argument);
-void *Change(void *argument);
-void *Change_e5slm(void *argument);
-void *Cloudlayer(void *argument);
-void *CMOR(void *argument);
-void *CMOR_lite(void *argument);
-void *CMOR_table(void *argument);
-void *Collgrid(void *argument);
-void *Command(void *argument);
-void *Comp(void *argument);
-void *Compc(void *argument);
-void *Complextorect(void *argument);
-void *Cond(void *argument);
-void *Cond2(void *argument);
-void *Condc(void *argument);
-void *Consecstat(void *argument);
-void *Copy(void *argument);
-void *Deltat(void *argument);
-void *Deltime(void *argument);
-void *Derivepar(void *argument);
-void *Detrend(void *argument);
-void *Diff(void *argument);
-void *Distgrid(void *argument);
-void *Duplicate(void *argument);
-void *Echam5ini(void *argument);
-void *Enlarge(void *argument);
-void *Enlargegrid(void *argument);
-void *Ensstat(void *argument);
-void *Ensstat3(void *argument);
-void *Ensval(void *argument);
-void *Eofcoeff(void *argument);
-void *Eofcoeff3d(void *argument);
-void *EOFs(void *argument);
-void *EOF3d(void *argument);
-void *Expr(void *argument);
-void *FC(void *argument);
-void *Filedes(void *argument);
-void *Fillmiss(void *argument);
-void *Filter(void *argument);
-void *Fldrms(void *argument);
-void *Fldstat(void *argument);
-void *Fldstat2(void *argument);
-void *Fourier(void *argument);
-void *Gengrid(void *argument);
-void *Gradsdes(void *argument);
-void *Gridboxstat(void *argument);
-void *Gridcell(void *argument);
-void *Gridsearch(void *argument);
-void *Harmonic(void *argument);
-void *Histogram(void *argument);
-void *Importamsr(void *argument);
-void *Importbinary(void *argument);
-void *Importcmsaf(void *argument);
-void *Importobs(void *argument);
-void *Info(void *argument);
-void *Input(void *argument);
-void *Intgrid(void *argument);
-void *Intgridtraj(void *argument);
-void *Intlevel(void *argument);
-void *Intlevel3d(void *argument);
-void *Inttime(void *argument);
-void *Intntime(void *argument);
-void *Intyear(void *argument);
-void *Invert(void *argument);
-void *Invertlev(void *argument);
-void *Isosurface(void *argument);
-void *Log(void *argument);
-void *MapReduce(void *argument);
-void *Maskbox(void *argument);
-void *Mastrfu(void *argument);
-void *Math(void *argument);
-void *Merge(void *argument);
-void *Mergegrid(void *argument);
-void *Mergetime(void *argument);
-void *Merstat(void *argument);
-void *Monarith(void *argument);
-void *Mrotuv(void *argument);
-void *Mrotuvb(void *argument);
-void *Ninfo(void *argument);
-void *Nmldump(void *argument);
-void *Output(void *argument);
-void *Outputgmt(void *argument);
-void *Pack(void *argument);
-void *Pardup(void *argument);
-void *Pinfo(void *argument);
-void *Pressure(void *argument);
-void *Regres(void *argument);
-void *Remap(void *argument);
-void *Remapeta(void *argument);
-void *Replace(void *argument);
-void *Replacevalues(void *argument);
-void *Rotuv(void *argument);
-void *Rhopot(void *argument);
-void *Runpctl(void *argument);
-void *Runstat(void *argument);
-void *Samplegridicon(void *argument);
-void *Seascount(void *argument);
-void *Seaspctl(void *argument);
-void *Seasstat(void *argument);
-void *Selbox(void *argument);
-void *Selgridcell(void *argument);
-void *Select(void *argument);
-void *Selvar(void *argument);
-void *Seloperator(void *argument);
-void *Selrec(void *argument);
-void *Seltime(void *argument);
-void *Set(void *argument);
-void *Setattribute(void *argument);
-void *Setbox(void *argument);
-void *Setgatt(void *argument);
-void *Setgrid(void *argument);
-void *Sethalo(void *argument);
-void *Setmiss(void *argument);
-void *Setpartab(void *argument);
-void *Setrcaname(void *argument);
-void *Settime(void *argument);
-void *Setzaxis(void *argument);
-void *Shiftxy(void *argument);
-void *Showinfo(void *argument);
-void *Sinfo(void *argument);
-void *Smooth(void *argument);
-void *Sort(void *argument);
-void *Sorttimestamp(void *argument);
-void *Specinfo(void *argument);
-void *Spectral(void *argument);
-void *Spectrum(void *argument);
-void *Split(void *argument);
-void *Splitrec(void *argument);
-void *Splitsel(void *argument);
-void *Splittime(void *argument);
-void *Splityear(void *argument);
-void *Subtrend(void *argument);
-void *Tee(void *argument);
-void *Template1(void *argument);
-void *Template2(void *argument);
-void *Test(void *argument);
-void *Test2(void *argument);
-void *Testdata(void *argument);
-void *Tests(void *argument);
-void *Timsort(void *argument);
-void *Timcount(void *argument);
-void *Timcumsum(void *argument);
-void *Timpctl(void *argument);
-void *Timselpctl(void *argument);
-void *Timselstat(void *argument);
-void *XTimstat(void *argument);
-void *Timstat(void *argument);
-void *Timstat2(void *argument);
-void *Timstat3(void *argument);
-void *Tinfo(void *argument);
-void *Tocomplex(void *argument);
-void *Transpose(void *argument);
-void *Trend(void *argument);
-void *Trms(void *argument);
-void *Tstepcount(void *argument);
-void *Vargen(void *argument);
-void *Varrms(void *argument);
-void *Vertintml(void *argument);
-void *Vertintap(void *argument);
-void *Vertstat(void *argument);
-void *Vertcum(void *argument);
-void *Vertwind(void *argument);
-void *Verifygrid(void *argument);
-void *Wind(void *argument);
-void *Writegrid(void *argument);
-void *Writerandom(void *argument);
-void *YAR(void *argument);
-void *Yearmonstat(void *argument);
-void *Ydayarith(void *argument);
-void *Ydaypctl(void *argument);
-void *Ydaystat(void *argument);
-void *Ydrunpctl(void *argument);
-void *Ydrunstat(void *argument);
-void *Yhourarith(void *argument);
-void *Yhourstat(void *argument);
-void *Ymonarith(void *argument);
-void *Ymonpctl(void *argument);
-void *Ymonstat(void *argument);
-void *Yseaspctl(void *argument);
-void *Yseasstat(void *argument);
-void *Zonstat(void *argument);
-
-void *EcaCfd(void *argument);
-void *EcaCsu(void *argument);
-void *EcaCwdi(void *argument);
-void *EcaCwfi(void *argument);
-void *EcaEtr(void *argument);
-void *EcaFd(void *argument);
-void *EcaGsl(void *argument);
-void *EcaHd(void *argument);
-void *EcaHwdi(void *argument);
-void *EcaHwfi(void *argument);
-void *EcaId(void *argument);
-void *EcaSu(void *argument);
-void *EcaTr(void *argument);
-void *EcaTg10p(void *argument);
-void *EcaTg90p(void *argument);
-void *EcaTn10p(void *argument);
-void *EcaTn90p(void *argument);
-void *EcaTx10p(void *argument);
-void *EcaTx90p(void *argument);
-
-void *EcaCdd(void *argument);
-void *EcaCwd(void *argument);
-void *EcaRr1(void *argument);
-void *EcaPd(void *argument);
-void *EcaR75p(void *argument);
-void *EcaR75ptot(void *argument);
-void *EcaR90p(void *argument);
-void *EcaR90ptot(void *argument);
-void *EcaR95p(void *argument);
-void *EcaR95ptot(void *argument);
-void *EcaR99p(void *argument);
-void *EcaR99ptot(void *argument);
-void *EcaRx1day(void *argument);
-void *EcaRx5day(void *argument);
-void *EcaSdii(void *argument);
-
-void *Fdns(void *argument);
-void *Strwin(void *argument);
-void *Strbre(void *argument);
-void *Strgal(void *argument);
-void *Hurr(void *argument);
-
-//void *Hi(void *argument);
-void *Wct(void *argument);
-
-void *Magplot(void *argument);
-void *Magvector(void *argument);
-void *Maggraph(void *argument);
-
-// HIRLAM_EXTENSIONS
-void *Selmulti(void *argument);   // "selmulti", "delmulti"
-void *WindTrans(void *argument);  // "uvDestag", "rotuvN", "rotuvNorth", "projuvLatLon"
-void *Samplegrid(void *argument); // "samplegrid", "subgrid"
-
-
-#define  AdisitOperators        {"adisit", "adipot"}
-#define  AfterburnerOperators   {"after"}
-#define  ArithOperators         {"add",  "sub",  "mul",  "div", "min", "max", "atan2"}
-#define  ArithcOperators        {"addc", "subc", "mulc", "divc", "mod"}
-#define  ArithdaysOperators     {"muldpm", "divdpm", "muldpy", "divdpy", "muldoy"}
-#define  ArithlatOperators      {"mulcoslat", "divcoslat"}
-#define  CatOperators           {"cat"}
-#define  CDItestOperators       {"ncopy"}
-#define  CDIreadOperators       {"cdiread"}
-#define  CDIwriteOperators      {"cdiwrite"}
-#define  ChangeOperators        {"chcode", "chtabnum", "chparam", "chname", "chunit", "chlevel", "chlevelc", "chlevelv", "chltype"}
-#define  Change_e5slmOperators  {"change_e5slm", "change_e5lsm", "change_e5mask"}
-#define  CloudlayerOperators    {"cloudlayer"}
-#define  CMOROperators          {"cmor"}
-#define  CMORliteOperators      {"cmorlite"}
-#define  CMORtableOperators     {"dump_cmor_table", "conv_cmor_table"}
-#define  CollgridOperators      {"collgrid"}
-#define  CommandOperators       {"command", "com", "cmd"}
-#define  CompOperators          {"eq",  "ne",  "le",  "lt",  "ge",  "gt"}
-#define  CompcOperators         {"eqc", "nec", "lec", "ltc", "gec", "gtc"}
-#define  ComplextorectOperators {"complextorect"}
-#define  CondOperators          {"ifthen",  "ifnotthen"}
-#define  Cond2Operators         {"ifthenelse"}
-#define  CondcOperators         {"ifthenc", "ifnotthenc"}
-#define  ConsecstatOperators    {"consects", "consecsum"}
-#define  CopyOperators          {"copy", "selall", "szip"}
-#define  DeltatOperators        {"deltat"}
-#define  DeltimeOperators       {"delday", "del29feb"}
-#define  DeriveparOperators     {"gheight", "sealevelpressure"}
-#define  DetrendOperators       {"detrend"}
-#define  DiffOperators          {"diff", "diffp", "diffn", "diffc"}
-#define  DistgridOperators      {"distgrid"}
-#define  DuplicateOperators     {"duplicate"}
-#define  Echam5iniOperators     {"import_e5ml", "import_e5res", "export_e5ml", "export_e5res"}
-#define  EnlargeOperators       {"enlarge"}
-#define  EnlargegridOperators   {"enlargegrid"}
-#define  EnsstatOperators       {"ensmin", "ensmax", "enssum", "ensmean", "ensavg", "ensvar", "ensvar1", "ensstd", "ensstd1", "enspctl"}
-#define  Ensstat3Operators      {"ensrkhistspace", "ensrkhisttime", "ensroc"}
-#define  EnsvalOperators        {"enscrps", "ensbrs"}
-#define  EofcoeffOperators      {"eofcoeff"}
-#define  Eofcoeff3dOperators    {"eofcoeff3d"}
-#define  EOFsOperators          {"eof", "eofspatial", "eoftime"}
-#define  EOF3dOperators         {"eof3d","eof3dspatial","eof3dtime"}
-#define  ExprOperators          {"expr", "exprf", "aexpr", "aexprf"}
-#define  FCOperators            {"fc2sp", "sp2fc", "fc2gp", "gp2fc"}
-#define  FiledesOperators       {"filedes", "griddes", "griddes2", "zaxisdes", "vct", "vct2", "codetab", \
-                                 "vlist", "partab", "partab2", "spartab"}
-#define  FillmissOperators      {"fillmiss", "fillmiss2"}
-#define  FilterOperators        {"bandpass", "highpass", "lowpass"}
-#define  FldrmsOperators        {"fldrms"}
-#define  FldstatOperators       {"fldrange", "fldmin", "fldmax", "fldsum", "fldmean", "fldavg", "fldstd", "fldstd1", "fldvar", "fldvar1", "fldpctl"}
-#define  FldcorOperators        {"fldcor"}
-#define  FldcovarOperators      {"fldcovar"}
-#define  FourierOperators       {"fourier"}
-#define  GengridOperators       {"gengrid"}
-#define  GradsdesOperators      {"gradsdes", "dumpmap"}
-#define  GridboxstatOperators   {"gridboxmin", "gridboxmax", "gridboxsum", "gridboxmean", "gridboxavg", "gridboxstd", "gridboxstd1", "gridboxvar", "gridboxvar1"}
-#define  GridcellOperators      {"gridarea", "gridweights", "gridmask", "griddx", "griddy"}
-#define  GridsearchOperators    {"testpointsearch", "testcellsearch"}
-#define  HarmonicOperators      {"harmonic"}
-#define  HistogramOperators     {"histcount", "histsum", "histmean", "histfreq"}
-#define  ImportamsrOperators    {"import_amsr"}
-#define  ImportbinaryOperators  {"import_binary"}
-#define  ImportcmsafOperators   {"import_cmsaf"}
-#define  ImportobsOperators     {"import_obs"}
-#define  InfoOperators          {"info", "infop", "infon", "infoc", "xinfon", "map"}
-#define  InputOperators         {"input", "inputsrv", "inputext"}
-#define  IntgridOperators       {"intgridbil", "intpoint", "interpolate", "boxavg", "thinout"}
-#define  IntgridtrajOperators   {"intgridtraj"}
-#define  IntlevelOperators      {"intlevel", "intlevelx"}
-#define  Intlevel3dOperators    {"intlevel3d", "intlevelx3d"}
-#define  InttimeOperators       {"inttime"}
-#define  IntntimeOperators      {"intntime"}
-#define  IntyearOperators       {"intyear"}
-#define  InvertOperators        {"invertlat", "invertlon", "invertlatdes", "invertlondes", "invertlatdata", "invertlondata"}
-#define  InvertlevOperators     {"invertlev"}
-#define  IsosurfaceOperators    {"isosurface"}
-#define  LogOperators           {"dumplogs", "daylogs", "monlogs", "dumplogo", "snamelogo", "scalllogo", "smemlogo", "stimelogo", "sperclogo"}
-#define  MapReduceOperators     {"reducegrid"}
-#define  MaskboxOperators       {"masklonlatbox", "maskindexbox"}
-#define  MaskregionOperators    {"maskregion"}
-#define  MastrfuOperators       {"mastrfu"}
-#define  MathOperators          {"abs", "int", "nint", "sqr", "sqrt", "exp", "ln", "log10", "sin", \
-                                 "cos", "tan", "asin", "acos", "atan", "pow", "reci"}
-#define  MergeOperators         {"merge"}
-#define  MergegridOperators     {"mergegrid"}
-#define  MergetimeOperators     {"mergetime"}
-#define  MerstatOperators       {"mermin", "mermax", "mersum", "mermean", "meravg", "merstd", "merstd1", "mervar", "mervar1", "merpctl"}
-#define  MonarithOperators      {"monadd", "monsub", "monmul", "mondiv"}
-#define  MrotuvOperators        {"mrotuv"}
-#define  MrotuvbOperators       {"mrotuvb"}
-#define  NinfoOperators         {"nyear", "nmon", "ndate", "ntime", "ncode", "npar", "nlevel", "ngridpoints", "ngrids"}
-#define  NmldumpOperators       {"nmldump", "kvldump"}
-#define  OutputOperators        {"output", "outputint", "outputsrv", "outputext", "outputf", "outputts", \
-                                 "outputfld", "outputarr", "outputxyz"}
-#define  OutputtabOperators     {"outputtab"}
-#define  OutputgmtOperators     {"gmtxyz", "gmtcells", "outputcenter2", "outputcentercpt", \
-                                 "outputboundscpt", "outputvector", "outputtri", "outputvrml"}
-#define  PackOperators          {"pack"}
-#define  PardupOperators        {"pardup", "parmul"}
-#define  PinfoOperators         {"pinfo", "pinfov"}
-#define  PressureOperators      {"pressure_fl", "pressure_hl", "deltap"}
-#define  RegresOperators        {"regres"}
-#define  RemapOperators         {"remap"}
-#define  RemapbilOperators      {"remapbil", "genbil"}
-#define  RemapbicOperators      {"remapbic", "genbic"}
-#define  RemapnnOperators       {"remapnn", "gennn"}
-#define  RemapdisOperators      {"remapdis", "gendis"}
-#define  RemapyconOperators     {"remapycon", "genycon"}
-#define  RemapconOperators      {"remapcon", "gencon"}
-#define  Remapcon2Operators     {"remapcon2", "gencon2"}
-#define  RemaplafOperators      {"remaplaf", "genlaf"}
-#define    RemapgridOperators   {"remapsum"}
-#define  RemapetaOperators      {"remapeta", "remapeta_s", "remapeta_z"}
-#define  ReplaceOperators       {"replace"}
-#define  ReplacevaluesOperators {"setvals", "setrtoc", "setrtoc2"}
-#define  RhopotOperators        {"rhopot"}
-#define  RotuvOperators         {"rotuvb"}
-#define  RunpctlOperators       {"runpctl"}
-#define  RunstatOperators       {"runmin", "runmax", "runsum", "runmean", "runavg", "runstd", "runstd1", "runvar", "runvar1"}
-#define  SamplegridiconOperators {"samplegridicon"}
-#define  SeascountOperators     {"seascount"}
-#define  SeaspctlOperators      {"seaspctl"}
-#define  SeasstatOperators      {"seasmin", "seasmax", "seassum", "seasmean", "seasavg", "seasstd", "seasstd1", "seasvar", "seasvar1"}
-#define  SelboxOperators        {"sellonlatbox", "selindexbox"}
-#define  SelgridcellOperators   {"selgridcell", "delgridcell"}
-#define  SelectOperators        {"select", "delete"}
-#define  SelvarOperators        {"selparam", "selcode", "selname", "selstdname", "sellevel", "sellevidx", "selgrid", \
-                                 "selzaxis", "selzaxisname", "seltabnum", "delparam", "delcode", "delname", "selltype"}
-#define  SeloperatorOperators   {"seloperator"}
-#define  SelrecOperators        {"selrec"}
-#define  SeltimeOperators       {"seltimestep", "selyear", "selseason", "selmonth", "selday", "selhour", "seldate", \
-                                 "seltime", "selsmon"}
-#define  SetOperators           {"setcode", "setparam", "setname", "setunit", "setlevel", "setltype", "settabnum"}
-#define  SetattributeOperators  {"setattribute"}
-#define  SetboxOperators        {"setclonlatbox", "setcindexbox"}
-#define  SetgattOperators       {"setgatt", "setgatts"}
-#define  SetgridOperators       {"setgrid", "setgridtype", "setgridarea", "setgridmask", "unsetgridmask", "setgridnumber", "setgriduri", "usegridnumber"}
-#define  SethaloOperators       {"sethalo", "tpnhalo"}
-#define  SetmissOperators       {"setmissval", "setctomiss", "setmisstoc", "setrtomiss", "setvrange"}
-#define  SetmisstonnOperators   {"setmisstonn", "setmisstodis"}
-#define  SetcodetabOperators    {"setcodetab"}
-#define  SetpartabOperators     {"setpartabc", "setpartabp", "setpartabn"}
-#define  SetrcanameOperators    {"setrcaname"}
-#define  SettimeOperators       {"setyear", "setmon", "setday", "setdate", "settime", "settunits", \
-                                 "settaxis", "settbounds", "setreftime", "setcalendar", "shifttime"}
-#define  SetzaxisOperators      {"setzaxis", "genlevelbounds"}
-#define  ShiftxyOperators       {"shiftx", "shifty"}
-#define  ShowinfoOperators      {"showyear", "showmon", "showdate", "showtime", "showtimestamp", "showcode", "showunit", \
-                                 "showparam", "showname", "showstdname", "showlevel", "showltype", "showformat", "showgrid"}
-#define  SinfoOperators         {"sinfo", "sinfop", "sinfon", "sinfoc", "seinfo", "seinfop", "seinfon", "seinfoc"}
-#define  SmoothOperators        {"smooth", "smooth9"}
-#define  SortOperators          {"sortcode", "sortparam", "sortname", "sortlevel"}
-#define  SorttimestampOperators {"sorttimestamp", "sorttaxis"}
-#define  SpecinfoOperators      {"specinfo"}
-#define  SpectralOperators      {"gp2sp", "gp2spl", "sp2gp", "sp2gpl", "sp2sp", "spcut"}
-#define  SpectrumOperators      {"spectrum"}
-#define  SplitOperators         {"splitcode", "splitparam", "splitname", "splitlevel", "splitgrid", "splitzaxis", "splittabnum"}
-#define  SplitrecOperators      {"splitrec"}
-#define  SplitselOperators      {"splitsel"}
-#define  SplittimeOperators     {"splithour", "splitday", "splitmon", "splitseas"}
-#define  SplityearOperators     {"splityear", "splityearmon"}
-#define  SubtrendOperators      {"subtrend"}
-#define  TeeOperators           {"tee"}
-#define  Template1Operators     {"template1"}
-#define  Template2Operators     {"template2"}
-#define  TestOperators          {"test"}
-#define  Test2Operators         {"test2"}
-#define  TestdataOperators      {"testdata"}
-#define  TestsOperators         {"normal", "studentt", "chisquare", "beta", "fisher"}
-#define  TimsortOperators       {"timsort"}
-#define  TimcountOperators      {"timcount"}
-#define    YearcountOperators   {"yearcount"}
-#define    MoncountOperators    {"moncount"}
-#define    DaycountOperators    {"daycount"}
-#define    HourcountOperators   {"hourcount"}
-#define  TimcumsumOperators     {"timcumsum"}
-#define  TimpctlOperators       {"timpctl"}
-#define    YearpctlOperators    {"yearpctl"}
-#define    MonpctlOperators     {"monpctl"}
-#define    DaypctlOperators     {"daypctl"}
-#define    HourpctlOperators    {"hourpctl"}
-#define  TimselpctlOperators    {"timselpctl"}
-#define  TimselstatOperators    {"timselmin", "timselmax", "timselsum", "timselmean", "timselavg", "timselvar", "timselvar1", "timselstd", "timselstd1"}
-#define  XTimstatOperators      {"xtimmin",  "xtimmax",  "xtimsum",  "xtimmean",  "xtimavg",  "xtimvar",  "xtimvar1",  "xtimstd",  "xtimstd1", \
-                                 "xyearmin", "xyearmax", "xyearsum", "xyearmean", "xyearavg", "xyearvar", "xyearvar1", "xyearstd", "xyearstd1", \
-                                 "xmonmin",  "xmonmax",  "xmonsum",  "xmonmean",  "xmonavg",  "xmonvar",  "xmonvar1",  "xmonstd",  "xmonstd1"}
-#define  TimstatOperators       {"timrange",  "timmin",  "timmax",  "timsum",  "timmean",  "timavg",  "timvar",  "timvar1",  "timstd",  "timstd1"}
-#define    YearstatOperators    {"yearrange", "yearmin", "yearmax", "yearsum", "yearmean", "yearavg", "yearvar", "yearvar1", "yearstd", "yearstd1"}
-#define    MonstatOperators     {"monrange",  "monmin",  "monmax",  "monsum",  "monmean",  "monavg",  "monvar",  "monvar1",  "monstd",  "monstd1"}
-#define    DaystatOperators     {"dayrange",  "daymin",  "daymax",  "daysum",  "daymean",  "dayavg",  "dayvar",  "dayvar1",  "daystd",  "daystd1"}
-#define    HourstatOperators    {"hourrange", "hourmin", "hourmax", "hoursum", "hourmean", "houravg", "hourvar", "hourvar1", "hourstd", "hourstd1"}
-#define  TimcorOperators        {"timcor"}
-#define  TimcovarOperators      {"timcovar"}
-#define  Timstat3Operators      {"meandiff2test", "varquot2test"}
-#define  TinfoOperators         {"tinfo"}
-#define  TocomplexOperators     {"retocomplex", "imtocomplex"}
-#define  TransposeOperators     {"transxy"}
-#define  TrendOperators         {"trend"}
-#define  TrmsOperators          {"trms"}
-#define  TstepcountOperators    {"tstepcount"}
-#define  VargenOperators        {"random", "const", "sincos", "coshill", "for", "topo", "temp", "mask", "stdatm"}
-#define  VarrmsOperators        {"varrms"}
-#define  VertintmlOperators     {"ml2pl", "ml2hl", "ml2plx", "ml2hlx", "ml2pl_lp", "ml2hl_lp", "ml2plx_lp", "ml2hlx_lp"}
-#define  VertintapOperators     {"ap2pl", "ap2plx", "ap2pl_lp", "ap2plx_lp", "ap2hl", "ap2hlx"}
-#define  VertstatOperators      {"vertmin", "vertmax", "vertsum", "vertint", "vertmean", "vertavg", "vertstd", "vertstd1", "vertvar", "vertvar1"}
-#define  VertcumOperators       {"vertcum", "vertcumhl"}
-#define  VertwindOperators      {"vertwind"}
-#define  VerifygridOperators    {"verifygrid"}
-#define  WindOperators          {"uv2dv", "uv2dvl", "dv2uv", "dv2uvl", "dv2ps"}
-#define  WritegridOperators     {"writegrid"}
-#define  WriterandomOperators   {"writerandom"}
-#define  YAROperators           {"yarbil", "yarnn", "yarcon"}
-#define  YearmonstatOperators   {"yearmonmean", "yearmonavg"}
-#define  YdayarithOperators     {"ydayadd", "ydaysub", "ydaymul", "ydaydiv"}
-#define  YdaypctlOperators      {"ydaypctl"}
-#define  YdaystatOperators      {"ydaymin", "ydaymax", "ydaysum", "ydaymean", "ydayavg", "ydaystd", "ydaystd1", "ydayvar", "ydayvar1"}
-#define  YdrunpctlOperators     {"ydrunpctl"}
-#define  YdrunstatOperators     {"ydrunmin", "ydrunmax", "ydrunsum", "ydrunmean", "ydrunavg", "ydrunstd", "ydrunstd1", "ydrunvar", "ydrunvar1"}
-#define  YhourarithOperators    {"yhouradd", "yhoursub", "yhourmul", "yhourdiv"}
-#define  YhourstatOperators     {"yhourmin", "yhourmax", "yhoursum", "yhourmean", "yhouravg", "yhourstd", "yhourstd1", "yhourvar", "yhourvar1"}
-#define  YmonarithOperators     {"ymonadd", "ymonsub", "ymonmul", "ymondiv"}
-#define  YseasarithOperators    {"yseasadd", "yseassub", "yseasmul", "yseasdiv"}
-#define  YmonpctlOperators      {"ymonpctl"}
-#define  YmonstatOperators      {"ymonmin", "ymonmax", "ymonsum", "ymonmean", "ymonavg", "ymonstd", "ymonstd1", "ymonvar", "ymonvar1"}
-#define  YseaspctlOperators     {"yseaspctl"}
-#define  YseasstatOperators     {"yseasmin", "yseasmax", "yseassum", "yseasmean", "yseasavg", "yseasstd", "yseasstd1", "yseasvar", "yseasvar1"}
-#define  ZonstatOperators       {"zonmin", "zonmax", "zonrange", "zonsum", "zonmean", "zonavg", "zonstd", "zonstd1", "zonvar", "zonvar1", "zonpctl"}
-
-#define  EcaCfdOperators        {"eca_cfd"}
-#define  EcaCsuOperators        {"eca_csu"}
-#define  EcaCwfiOperators       {"eca_cwfi"}
-#define  EcaHwdiOperators       {"eca_hwdi"}
-#define  EcaEtrOperators        {"eca_etr"}
-#define  EcaFdOperators         {"eca_fd"}
-#define  EcaGslOperators        {"eca_gsl"}
-#define  EcaHdOperators         {"eca_hd"}
-#define  EcaCwdiOperators       {"eca_cwdi"}
-#define  EcaHwfiOperators       {"eca_hwfi"}
-#define  EcaIdOperators         {"eca_id"}
-#define  EcaSuOperators         {"eca_su"}
-#define  EcaTrOperators         {"eca_tr"}
-#define  EcaTg10pOperators      {"eca_tg10p"}
-#define  EcaTg90pOperators      {"eca_tg90p"}
-#define  EcaTn10pOperators      {"eca_tn10p"}
-#define  EcaTn90pOperators      {"eca_tn90p"}
-#define  EcaTx10pOperators      {"eca_tx10p"}
-#define  EcaTx90pOperators      {"eca_tx90p"}
-
-#define  EcaCddOperators        {"eca_cdd"}
-#define  EcaCwdOperators        {"eca_cwd"}
-#define  EcaRr1Operators        {"eca_rr1"}
-/*
-#define  EcaR10mmOperators      {"eca_r10mm"}
-#define  EcaR20mmOperators      {"eca_r20mm"}
-*/
-#define  EcaPdOperators         {"eca_pd", "eca_r10mm", "eca_r20mm"}
-#define  EcaR75pOperators       {"eca_r75p"}
-#define  EcaR75ptotOperators    {"eca_r75ptot"}
-#define  EcaR90pOperators       {"eca_r90p"}
-#define  EcaR90ptotOperators    {"eca_r90ptot"}
-#define  EcaR95pOperators       {"eca_r95p"}
-#define  EcaR95ptotOperators    {"eca_r95ptot"}
-#define  EcaR99pOperators       {"eca_r99p"}
-#define  EcaR99ptotOperators    {"eca_r99ptot"}
-#define  EcaRx1dayOperators     {"eca_rx1day"}
-#define  EcaRx5dayOperators     {"eca_rx5day"}
-#define  EcaSdiiOperators       {"eca_sdii"}
-
-#define  FdnsOperators          {"fdns"}
-
-#define  StrwinOperators        {"strwin"}
-#define  StrbreOperators        {"strbre"}
-#define  StrgalOperators        {"strgal"}
-#define  HurrOperators          {"hurr"}
-
-#define  HiOperators            {"hi"}
-#define  WctOperators           {"wct"}
-
-#define  MagplotOperators       {"contour", "shaded", "grfill"}
-#define  MagvectorOperators     {"vector"}
-#define  MaggraphOperators      {"graph"}
-
-// HIRLAM_EXTENSIONS
-#define  SelmultiOperators      {"selmulti", "delmulti", "changemulti"}
-#define  WindTransOperators     {"uvDestag", "rotuvN", "rotuvNorth", "projuvLatLon"}
-#define  SamplegridOperators    {"samplegrid", "subgrid"}
-
-
-static modules_t Modules[] =
-{
-  // stream in  -1 means: unlimited number of input streams
-  // stream out -1 means: usage of obase
-  /*
-    function        help function      operator names          mode number     num streams
-                                                                    type       in  out
-  */
-  { Adisit,         AdisitHelp,        AdisitOperators,        1,   CDI_REAL,  1,  1 },
-  { Afterburner,    AfterburnerHelp,   AfterburnerOperators,   1,   CDI_REAL, -1,  1 },
-  { Arith,          ArithHelp,         ArithOperators,         1,   CDI_REAL,  2,  1 },
-  { Arithc,         ArithcHelp,        ArithcOperators,        1,   CDI_REAL,  1,  1 },
-  { Arithdays,      ArithdaysHelp,     ArithdaysOperators,     1,   CDI_REAL,  1,  1 },
-  { Arithlat,       NULL,              ArithlatOperators,      1,   CDI_REAL,  1,  1 },
-  { Cat,            CopyHelp,          CatOperators,           1,   CDI_REAL, -1,  1 },
-  { CDItest,        NULL,              CDItestOperators,       1,   CDI_REAL,  1,  1 },
-  { CDIread,        NULL,              CDIreadOperators,       1,   CDI_REAL,  1,  0 },
-  { CDIwrite,       NULL,              CDIwriteOperators,      1,   CDI_REAL,  0,  1 },
-  { Change,         ChangeHelp,        ChangeOperators,        1,   CDI_REAL,  1,  1 },
-  { Change_e5slm,   NULL,              Change_e5slmOperators,  0,   CDI_REAL,  1,  1 },
-  { Cloudlayer,     NULL,              CloudlayerOperators,    1,   CDI_REAL,  1,  1 },
-  { CMOR,           NULL,              CMOROperators,          1,   CDI_REAL,  1,  0 },
-  { CMOR_lite,      CMORliteHelp,      CMORliteOperators,      1,   CDI_REAL,  1,  1 },
-  { CMOR_table,     NULL,              CMORtableOperators,     1,   CDI_REAL,  0,  0 },
-  { Collgrid,       CollgridHelp,      CollgridOperators,      1,   CDI_REAL, -1,  1 },
-  { Command,        NULL,              CommandOperators,       0,   CDI_REAL,  1,  0 },
-  { Comp,           CompHelp,          CompOperators,          1,   CDI_REAL,  2,  1 },
-  { Compc,          CompcHelp,         CompcOperators,         1,   CDI_REAL,  1,  1 },
-  { Complextorect,  NULL,              ComplextorectOperators, 1,   CDI_COMP,  1,  2 },
-  { Cond,           CondHelp,          CondOperators,          1,   CDI_REAL,  2,  1 },
-  { Cond2,          Cond2Help,         Cond2Operators,         1,   CDI_REAL,  3,  1 },
-  { Condc,          CondcHelp,         CondcOperators,         1,   CDI_REAL,  1,  1 },
-  { Consecstat,     ConsecstatHelp,    ConsecstatOperators,    1,   CDI_REAL,  1,  1 },
-  { Copy,           CopyHelp,          CopyOperators,          1,   CDI_REAL, -1,  1 },
-  { Deltat,         NULL,              DeltatOperators,        1,   CDI_REAL,  1,  1 },
-  { Deltime,        NULL,              DeltimeOperators,       1,   CDI_REAL,  1,  1 },
-  { Derivepar,      DeriveparHelp,     DeriveparOperators,     1,   CDI_REAL,  1,  1 },
-  { Detrend,        DetrendHelp,       DetrendOperators,       1,   CDI_REAL,  1,  1 },
-  { Diff,           DiffHelp,          DiffOperators,          1,   CDI_REAL,  2,  0 },
-  { Distgrid,       DistgridHelp,      DistgridOperators,      1,   CDI_REAL,  1,  1 },
-  { Duplicate,      DuplicateHelp,     DuplicateOperators,     1,   CDI_REAL,  1,  1 },
-  { Echam5ini,      NULL,              Echam5iniOperators,     1,   CDI_REAL,  1,  1 },
-  { Enlarge,        EnlargeHelp,       EnlargeOperators,       1,   CDI_REAL,  1,  1 },
-  { Enlargegrid,    NULL,              EnlargegridOperators,   0,   CDI_REAL,  1,  1 },
-  { Ensstat,        EnsstatHelp,       EnsstatOperators,       1,   CDI_REAL, -1,  1 },
-  { Ensstat3,       Ensstat2Help,      Ensstat3Operators,      1,   CDI_REAL, -1,  1 },
-  { Ensval,         EnsvalHelp,        EnsvalOperators,        1,   CDI_REAL, -1,  1 },
-  { Eofcoeff,       EofcoeffHelp,      EofcoeffOperators,      1,   CDI_REAL,  2, -1 },
-  { Eofcoeff3d,     EofcoeffHelp,      Eofcoeff3dOperators,    1,   CDI_REAL,  2, -1 },
-  { EOFs,           EOFsHelp,          EOFsOperators,          1,   CDI_REAL,  1,  2 },
-  { EOF3d,          EOFsHelp,          EOF3dOperators,         1,   CDI_REAL,  1,  2 },
-  { Expr,           ExprHelp,          ExprOperators,          1,   CDI_REAL,  1,  1 },
-  { FC,             NULL,              FCOperators,            1,   CDI_REAL,  1,  1 },
-  { Filedes,        FiledesHelp,       FiledesOperators,       1,   CDI_BOTH,  1,  0 },
-  { Fillmiss,       NULL,              FillmissOperators,      1,   CDI_REAL,  1,  1 },
-  { Filter,         FilterHelp,        FilterOperators,        1,   CDI_REAL,  1,  1 },
-  { Fldrms,         NULL,              FldrmsOperators,        1,   CDI_REAL,  2,  1 },
-  { Fldstat,        FldstatHelp,       FldstatOperators,       1,   CDI_REAL,  1,  1 },
-  { Fldstat2,       FldcorHelp,        FldcorOperators,        1,   CDI_REAL,  2,  1 },
-  { Fldstat2,       FldcovarHelp,      FldcovarOperators,      1,   CDI_REAL,  2,  1 },
-  { Fourier,        NULL,              FourierOperators,       1,   CDI_COMP,  1,  1 },
-  { Gengrid,        NULL,              GengridOperators,       1,   CDI_REAL,  2,  1 },
-  { Gradsdes,       GradsdesHelp,      GradsdesOperators,      1,   CDI_REAL,  1,  0 },
-  { Gridboxstat,    GridboxstatHelp,   GridboxstatOperators,   1,   CDI_REAL,  1,  1 },
-  { Gridcell,       GridcellHelp,      GridcellOperators,      1,   CDI_REAL,  1,  1 },
-  { Gridsearch,     NULL,              GridsearchOperators,    0,   CDI_REAL,  0,  0 },
-  { Harmonic,       NULL,              HarmonicOperators,      1,   CDI_REAL,  1,  1 },
-  { Histogram,      HistogramHelp,     HistogramOperators,     1,   CDI_REAL,  1,  1 },
-  { Importamsr,     ImportamsrHelp,    ImportamsrOperators,    1,   CDI_REAL,  1,  1 },
-  { Importbinary,   ImportbinaryHelp,  ImportbinaryOperators,  1,   CDI_REAL,  1,  1 },
-  { Importcmsaf,    ImportcmsafHelp,   ImportcmsafOperators,   1,   CDI_REAL,  1,  1 },
-  { Importobs,      NULL,              ImportobsOperators,     1,   CDI_REAL,  1,  1 },
-  { Info,           InfoHelp,          InfoOperators,          1,   CDI_BOTH, -1,  0 },
-  { Input,          InputHelp,         InputOperators,         1,   CDI_REAL,  0,  1 },
-  { Intgrid,        NULL,              IntgridOperators,       1,   CDI_REAL,  1,  1 },
-  { Intgridtraj,    NULL,              IntgridtrajOperators,   1,   CDI_REAL,  1,  1 },
-  { Intlevel,       IntlevelHelp,      IntlevelOperators,      1,   CDI_REAL,  1,  1 },
-  { Intlevel3d,     Intlevel3dHelp,    Intlevel3dOperators,    1,   CDI_REAL,  2,  1 },
-  { Inttime,        InttimeHelp,       InttimeOperators,       1,   CDI_REAL,  1,  1 },
-  { Intntime,       InttimeHelp,       IntntimeOperators,      1,   CDI_REAL,  1,  1 },
-  { Intyear,        IntyearHelp,       IntyearOperators,       1,   CDI_REAL,  2, -1 },
-  { Invert,         InvertHelp,        InvertOperators,        1,   CDI_REAL,  1,  1 },
-  { Invertlev,      InvertlevHelp,     InvertlevOperators,     1,   CDI_REAL,  1,  1 },
-  { Isosurface,     NULL,              IsosurfaceOperators,    1,   CDI_REAL,  1,  1 },
-  { Log,            NULL,              LogOperators,           0,   CDI_REAL,  1,  0 },
-  { MapReduce,      MapReduceHelp,     MapReduceOperators,     1,   CDI_REAL,  1,  1 },
-  { Maskbox,        MaskboxHelp,       MaskboxOperators,       1,   CDI_REAL,  1,  1 },
-  { Maskbox,        MaskregionHelp,    MaskregionOperators,    1,   CDI_REAL,  1,  1 },
-  { Mastrfu,        MastrfuHelp,       MastrfuOperators,       1,   CDI_REAL,  1,  1 },
-  { Math,           MathHelp,          MathOperators,          1,   CDI_BOTH,  1,  1 },
-  { Merge,          MergeHelp,         MergeOperators,         1,   CDI_REAL, -1,  1 },
-  { Mergetime,      MergeHelp,         MergetimeOperators,     1,   CDI_REAL, -1,  1 },
-  { Mergegrid,      MergegridHelp,     MergegridOperators,     1,   CDI_REAL,  2,  1 },
-  { Merstat,        MerstatHelp,       MerstatOperators,       1,   CDI_REAL,  1,  1 },
-  { Monarith,       MonarithHelp,      MonarithOperators,      1,   CDI_REAL,  2,  1 },
-  { Mrotuv,         NULL,              MrotuvOperators,        1,   CDI_REAL,  1,  2 },
-  { Mrotuvb,        NULL,              MrotuvbOperators,       1,   CDI_REAL,  2,  1 },
-  { Ninfo,          NinfoHelp,         NinfoOperators,         1,   CDI_BOTH,  1,  0 },
-  { Nmldump,        NULL,              NmldumpOperators,       0,   CDI_REAL,  0,  0 },
-  { Output,         OutputHelp,        OutputOperators,        1,   CDI_REAL, -1,  0 },
-  { Output,         OutputtabHelp,     OutputtabOperators,     1,   CDI_REAL, -1,  0 },
-  { Outputgmt,      OutputgmtHelp,     OutputgmtOperators,     1,   CDI_REAL,  1,  0 },
-  { Pack,           NULL,              PackOperators,          1,   CDI_REAL,  1,  1 },
-  { Pardup,         NULL,              PardupOperators,        1,   CDI_REAL,  1,  1 },
-  { Pinfo,          NULL,              PinfoOperators,         1,   CDI_REAL,  1,  1 },
-  { Pressure,       NULL,              PressureOperators,      1,   CDI_REAL,  1,  1 },
-  { Regres,         RegresHelp,        RegresOperators,        1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapHelp,         RemapOperators,         1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapbilHelp,      RemapbilOperators,      1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapbicHelp,      RemapbicOperators,      1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapnnHelp,       RemapnnOperators,       1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapdisHelp,      RemapdisOperators,      1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapyconHelp,     RemapyconOperators,     1,   CDI_REAL,  1,  1 },
-  { Remap,          RemapconHelp,      RemapconOperators,      1,   CDI_REAL,  1,  1 },
-  { Remap,          Remapcon2Help,     Remapcon2Operators,     1,   CDI_REAL,  1,  1 },
-  { Remap,          RemaplafHelp,      RemaplafOperators,      1,   CDI_REAL,  1,  1 },
-  { Remap,          NULL,              RemapgridOperators,     1,   CDI_REAL,  1,  1 },
-  { Remapeta,       RemapetaHelp,      RemapetaOperators,      1,   CDI_REAL,  1,  1 },
-  { Replace,        ReplaceHelp,       ReplaceOperators,       1,   CDI_REAL,  2,  1 },
-  { Replacevalues,  ReplacevaluesHelp, ReplacevaluesOperators, 1,   CDI_REAL,  1,  1 },
-  { Rhopot,         RhopotHelp,        RhopotOperators,        1,   CDI_REAL,  1,  1 },
-  { Rotuv,          RotuvbHelp,        RotuvOperators,         1,   CDI_REAL,  1,  1 },
-  { Runpctl,        RunpctlHelp,       RunpctlOperators,       1,   CDI_REAL,  1,  1 },
-  { Runstat,        RunstatHelp,       RunstatOperators,       1,   CDI_REAL,  1,  1 },
-  { Samplegridicon, NULL,              SamplegridiconOperators,1,   CDI_REAL,  1,  2 },
-  { Seascount,      NULL,              SeascountOperators,     1,   CDI_BOTH,  1,  1 },
-  { Seaspctl,       SeaspctlHelp,      SeaspctlOperators,      1,   CDI_REAL,  3,  1 },
-  { Seasstat,       SeasstatHelp,      SeasstatOperators,      1,   CDI_REAL,  1,  1 },
-  { Selbox,         SelboxHelp,        SelboxOperators,        1,   CDI_BOTH,  1,  1 },
-  { Selgridcell,    SelgridcellHelp,   SelgridcellOperators,   1,   CDI_BOTH,  1,  1 },
-  { Select,         SelectHelp,        SelectOperators,        1,   CDI_BOTH, -1,  1 },
-  { Selvar,         SelvarHelp,        SelvarOperators,        1,   CDI_BOTH,  1,  1 },
-  { Selrec,         SelvarHelp,        SelrecOperators,        1,   CDI_BOTH,  1,  1 },
-  { Seloperator,    NULL,              SeloperatorOperators,   1,   CDI_REAL,  1,  1 },
-  { Seltime,        SeltimeHelp,       SeltimeOperators,       1,   CDI_BOTH,  1,  1 },
-  { Set,            SetHelp,           SetOperators,           1,   CDI_BOTH,  1,  1 },
-  { Setattribute,   SetattributeHelp,  SetattributeOperators,  1,   CDI_BOTH,  1,  1 },
-  { Setbox,         SetboxHelp,        SetboxOperators,        1,   CDI_REAL,  1,  1 },
-  { Setgatt,        NULL,              SetgattOperators,       1,   CDI_BOTH,  1,  1 },
-  { Setgrid,        SetgridHelp,       SetgridOperators,       1,   CDI_BOTH,  1,  1 },
-  { Sethalo,        SethaloHelp,       SethaloOperators,       1,   CDI_REAL,  1,  1 },
-  { Setmiss,        SetmissHelp,       SetmissOperators,       1,   CDI_REAL,  1,  1 },
-  { Fillmiss,       SetmissHelp,       SetmisstonnOperators,   1,   CDI_REAL,  1,  1 },
-  { Setpartab,      SetHelp,           SetcodetabOperators,    1,   CDI_REAL,  1,  1 },
-  { Setpartab,      SetpartabHelp,     SetpartabOperators,     1,   CDI_REAL,  1,  1 },
-  { Setrcaname,     NULL,              SetrcanameOperators,    1,   CDI_REAL,  1,  1 },
-  { Settime,        SettimeHelp,       SettimeOperators,       1,   CDI_BOTH,  1,  1 },
-  { Setzaxis,       SetzaxisHelp,      SetzaxisOperators,      1,   CDI_BOTH,  1,  1 },
-  { Shiftxy,        ShiftxyHelp,       ShiftxyOperators,       1,   CDI_REAL,  1,  1 },
-  { Showinfo,       ShowinfoHelp,      ShowinfoOperators,      1,   CDI_BOTH,  1,  0 },
-  { Sinfo,          SinfoHelp,         SinfoOperators,         1,   CDI_BOTH, -1,  0 },
-  { Smooth,         SmoothHelp,        SmoothOperators,        1,   CDI_REAL,  1,  1 },
-  { Sort,           NULL,              SortOperators,          1,   CDI_REAL,  1,  1 },
-  { Sorttimestamp,  NULL,              SorttimestampOperators, 1,   CDI_REAL, -1,  1 },
-  { Specinfo,       NULL,              SpecinfoOperators,      1,   CDI_REAL,  0,  0 },
-  { Spectral,       SpectralHelp,      SpectralOperators,      1,   CDI_REAL,  1,  1 },
-  { Spectrum,       NULL,              SpectrumOperators,      1,   CDI_REAL,  1,  1 },
-  { Split,          SplitHelp,         SplitOperators,         1,   CDI_BOTH,  1, -1 },
-  { Splitrec,       SplitHelp,         SplitrecOperators,      1,   CDI_BOTH,  1, -1 },
-  { Splitsel,       SplitselHelp,      SplitselOperators,      1,   CDI_BOTH,  1, -1 },
-  { Splittime,      SplittimeHelp,     SplittimeOperators,     1,   CDI_BOTH,  1, -1 },
-  { Splityear,      SplittimeHelp,     SplityearOperators,     1,   CDI_BOTH,  1, -1 },
-  { Subtrend,       SubtrendHelp,      SubtrendOperators,      1,   CDI_REAL,  3,  1 },
-  { Tee,            NULL,              TeeOperators,           1,   CDI_REAL,  2,  1 },
-  { Template1,      NULL,              Template1Operators,     0,   CDI_REAL,  1,  1 },
-  { Template2,      NULL,              Template2Operators,     0,   CDI_REAL,  1,  1 },
-  { Test,           NULL,              TestOperators,          0,   CDI_REAL,  1,  1 },
-  { Test2,          NULL,              Test2Operators,         0,   CDI_REAL,  2,  1 },
-  { Testdata,       NULL,              TestdataOperators,      0,   CDI_REAL,  1,  1 },
-  { Tests,          NULL,              TestsOperators,         0,   CDI_REAL,  1,  1 },
-  { Timcount,       NULL,              TimcountOperators,      1,   CDI_BOTH,  1,  1 },
-  { Timcount,       NULL,              YearcountOperators,     1,   CDI_BOTH,  1,  1 },
-  { Timcount,       NULL,              MoncountOperators,      1,   CDI_BOTH,  1,  1 },
-  { Timcount,       NULL,              DaycountOperators,      1,   CDI_BOTH,  1,  1 },
-  { Timcount,       NULL,              HourcountOperators,     1,   CDI_BOTH,  1,  1 },
-  { Timcumsum,      TimcumsumHelp,     TimcumsumOperators,     1,   CDI_BOTH,  1,  1 },
-  { Timpctl,        TimpctlHelp,       TimpctlOperators,       1,   CDI_REAL,  3,  1 },
-  { Timpctl,        YearpctlHelp,      YearpctlOperators,      1,   CDI_REAL,  3,  1 },
-  { Timpctl,        MonpctlHelp,       MonpctlOperators,       1,   CDI_REAL,  3,  1 },
-  { Timpctl,        DaypctlHelp,       DaypctlOperators,       1,   CDI_REAL,  3,  1 },
-  { Timpctl,        HourpctlHelp,      HourpctlOperators,      1,   CDI_REAL,  3,  1 },
-  { Timselpctl,     TimselpctlHelp,    TimselpctlOperators,    1,   CDI_REAL,  3,  1 },
-  { Timsort,        TimsortHelp,       TimsortOperators,       1,   CDI_REAL,  1,  1 },
-  { Timselstat,     TimselstatHelp,    TimselstatOperators,    1,   CDI_REAL,  1,  1 },
-  { XTimstat,       NULL,              XTimstatOperators,      0,   CDI_BOTH,  1,  1 },
-  { Timstat,        TimstatHelp,       TimstatOperators,       1,   CDI_BOTH,  1,  1 },
-  { Timstat,        YearstatHelp,      YearstatOperators,      1,   CDI_BOTH,  1,  1 },
-  { Timstat,        MonstatHelp,       MonstatOperators,       1,   CDI_BOTH,  1,  1 },
-  { Timstat,        DaystatHelp,       DaystatOperators,       1,   CDI_BOTH,  1,  1 },
-  { Timstat,        HourstatHelp,      HourstatOperators,      1,   CDI_BOTH,  1,  1 },
-  { Timstat2,       TimcorHelp,        TimcorOperators,        1,   CDI_REAL,  2,  1 },
-  { Timstat2,       TimcovarHelp,      TimcovarOperators,      1,   CDI_REAL,  2,  1 },
-  { Timstat3,       NULL,              Timstat3Operators,      1,   CDI_REAL,  2,  1 },
-  { Tinfo,          NULL,              TinfoOperators,         1,   CDI_BOTH,  1,  0 },
-  { Tocomplex,      NULL,              TocomplexOperators,     1,   CDI_REAL,  1,  1 },
-  { Transpose,      NULL,              TransposeOperators,     1,   CDI_REAL,  1,  1 },
-  { Trend,          TrendHelp,         TrendOperators,         1,   CDI_REAL,  1,  2 },
-  { Trms,           NULL,              TrmsOperators,          0,   CDI_REAL,  2,  1 },
-  { Tstepcount,     NULL,              TstepcountOperators,    1,   CDI_REAL,  1,  1 },
-  { Vargen,         VargenHelp,        VargenOperators,        1,   CDI_REAL,  0,  1 },
-  { Varrms,         NULL,              VarrmsOperators,        0,   CDI_REAL,  2,  1 },
-  { Vertintml,      VertintmlHelp,     VertintmlOperators,     1,   CDI_REAL,  1,  1 },
-  { Vertintap,      VertintapHelp,     VertintapOperators,     1,   CDI_REAL,  1,  1 },
-  { Vertstat,       VertstatHelp,      VertstatOperators,      1,   CDI_REAL,  1,  1 },
-  { Vertcum,        NULL,              VertcumOperators,       1,   CDI_REAL,  1,  1 },
-  { Vertwind,       NULL,              VertwindOperators,      1,   CDI_REAL,  1,  1 },
-  { Verifygrid,     NULL,              VerifygridOperators,    1,   CDI_REAL,  1,  0 },
-  { Wind,           WindHelp,          WindOperators,          1,   CDI_REAL,  1,  1 },
-  { Writegrid,      NULL,              WritegridOperators,     1,   CDI_REAL,  1,  1 },  /* no cdi output */
-  { Writerandom,    NULL,              WriterandomOperators,   1,   CDI_REAL,  1,  1 },
-  { YAR,            NULL,              YAROperators,           0,   CDI_REAL,  1,  1 },
-  { Yearmonstat,    YearmonstatHelp,   YearmonstatOperators,   1,   CDI_REAL,  1,  1 },
-  { Ydayarith,      YdayarithHelp,     YdayarithOperators,     1,   CDI_REAL,  2,  1 },
-  { Ydaypctl,       YdaypctlHelp,      YdaypctlOperators,      1,   CDI_REAL,  3,  1 },
-  { Ydaystat,       YdaystatHelp,      YdaystatOperators,      1,   CDI_REAL,  1,  1 },
-  { Ydrunpctl,      YdrunpctlHelp,     YdrunpctlOperators,     1,   CDI_REAL,  3,  1 },
-  { Ydrunstat,      YdrunstatHelp,     YdrunstatOperators,     1,   CDI_REAL,  1,  1 },
-  { Yhourarith,     YhourarithHelp,    YhourarithOperators,    1,   CDI_REAL,  2,  1 },
-  { Yhourstat,      YhourstatHelp,     YhourstatOperators,     1,   CDI_REAL,  1,  1 },
-  { Ymonarith,      YmonarithHelp,     YmonarithOperators,     1,   CDI_REAL,  2,  1 },
-  { Ymonarith,      YseasarithHelp,    YseasarithOperators,    1,   CDI_REAL,  2,  1 },
-  { Ymonpctl,       YmonpctlHelp,      YmonpctlOperators,      1,   CDI_REAL,  3,  1 },
-  { Ymonstat,       YmonstatHelp,      YmonstatOperators,      1,   CDI_REAL,  1,  1 },
-  { Yseaspctl,      YseaspctlHelp,     YseaspctlOperators,     1,   CDI_REAL,  3,  1 },
-  { Yseasstat,      YseasstatHelp,     YseasstatOperators,     1,   CDI_REAL,  1,  1 },
-  { Zonstat,        ZonstatHelp,       ZonstatOperators,       1,   CDI_REAL,  1,  1 },
-  { EcaCfd,         EcaCfdHelp,        EcaCfdOperators,        1,   CDI_REAL,  1,  1 },
-  { EcaCsu,         EcaCsuHelp,        EcaCsuOperators,        1,   CDI_REAL,  1,  1 },
-  { EcaCwdi,        EcaCwdiHelp,       EcaCwdiOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaCwfi,        EcaCwfiHelp,       EcaCwfiOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaEtr,         EcaEtrHelp,        EcaEtrOperators,        1,   CDI_REAL,  2,  1 },
-  { EcaFd,          EcaFdHelp,         EcaFdOperators,         1,   CDI_REAL,  1,  1 },
-  { EcaGsl,         EcaGslHelp,        EcaGslOperators,        1,   CDI_REAL,  2,  1 },
-  { EcaHd,          EcaHdHelp,         EcaHdOperators,         1,   CDI_REAL,  1,  1 },
-  { EcaHwdi,        EcaHwdiHelp,       EcaHwdiOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaHwfi,        EcaHwfiHelp,       EcaHwfiOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaId,          EcaIdHelp,         EcaIdOperators,         1,   CDI_REAL,  1,  1 },
-  { EcaSu,          EcaSuHelp,         EcaSuOperators,         1,   CDI_REAL,  1,  1 },
-  { EcaTr,          EcaTrHelp,         EcaTrOperators,         1,   CDI_REAL,  1,  1 },
-  { EcaTg10p,       EcaTg10pHelp,      EcaTg10pOperators,      1,   CDI_REAL,  2,  1 },
-  { EcaTg90p,       EcaTg90pHelp,      EcaTg90pOperators,      1,   CDI_REAL,  2,  1 },
-  { EcaTn10p,       EcaTn10pHelp,      EcaTn10pOperators,      1,   CDI_REAL,  2,  1 },
-  { EcaTn90p,       EcaTn90pHelp,      EcaTn90pOperators,      1,   CDI_REAL,  2,  1 },
-  { EcaTx10p,       EcaTx10pHelp,      EcaTx10pOperators,      1,   CDI_REAL,  2,  1 },
-  { EcaTx90p,       EcaTx90pHelp,      EcaTx90pOperators,      1,   CDI_REAL,  2,  1 },
-  { EcaCdd,         EcaCddHelp,        EcaCddOperators,        1,   CDI_REAL,  1,  1 },
-  { EcaCwd,         EcaCwdHelp,        EcaCwdOperators,        1,   CDI_REAL,  1,  1 },
-  { EcaRr1,         EcaRr1Help,        EcaRr1Operators,        1,   CDI_REAL,  1,  1 },
-  { EcaPd,          EcaPdHelp,         EcaPdOperators,         1,   CDI_REAL,  1,  1 },
-  { EcaR75p,        EcaR75pHelp,       EcaR75pOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaR75ptot,     EcaR75ptotHelp,    EcaR75ptotOperators,    1,   CDI_REAL,  2,  1 },
-  { EcaR90p,        EcaR90pHelp,       EcaR90pOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaR90ptot,     EcaR90ptotHelp,    EcaR90ptotOperators,    1,   CDI_REAL,  2,  1 },
-  { EcaR95p,        EcaR95pHelp,       EcaR95pOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaR95ptot,     EcaR95ptotHelp,    EcaR95ptotOperators,    1,   CDI_REAL,  2,  1 },
-  { EcaR99p,        EcaR99pHelp,       EcaR99pOperators,       1,   CDI_REAL,  2,  1 },
-  { EcaR99ptot,     EcaR99ptotHelp,    EcaR99ptotOperators,    1,   CDI_REAL,  2,  1 },
-  { EcaRx1day,      EcaRx1dayHelp,     EcaRx1dayOperators,     1,   CDI_REAL,  1,  1 },
-  { EcaRx5day,      EcaRx5dayHelp,     EcaRx5dayOperators,     1,   CDI_REAL,  1,  1 },
-  { EcaSdii,        EcaSdiiHelp,       EcaSdiiOperators,       1,   CDI_REAL,  1,  1 },
-  { Fdns,           FdnsHelp,          FdnsOperators,          1,   CDI_REAL,  2,  1 },
-  { Strwin,         StrwinHelp,        StrwinOperators,        1,   CDI_REAL,  1,  1 },
-  { Strbre,         StrbreHelp,        StrbreOperators,        1,   CDI_REAL,  1,  1 },
-  { Strgal,         StrgalHelp,        StrgalOperators,        1,   CDI_REAL,  1,  1 },
-  { Hurr,           HurrHelp,          HurrOperators,          1,   CDI_REAL,  1,  1 },
-  /*  { Hi,             NULL,              HiOperators,        1,   CDI_REAL,  3,  1 }, */
-  { Wct,            WctHelp,           WctOperators,           1,   CDI_REAL,  2,  1 },
-  { Magplot,        MagplotHelp,       MagplotOperators,       1,   CDI_REAL,  1,  1 },
-  { Magvector,      MagvectorHelp,     MagvectorOperators,     1,   CDI_REAL,  1,  1 },
-  { Maggraph,       MaggraphHelp,      MaggraphOperators,      1,   CDI_REAL, -1,  1 },
-  // HIRLAM_EXTENSIONS
-  { Samplegrid,     SamplegridHelp,    SamplegridOperators,    1,   CDI_REAL,  1,  1 },
-  { Selmulti,       SelmultiHelp,      SelmultiOperators,      1,   CDI_REAL,  1,  1 },
-  { WindTrans,      WindTransHelp,     WindTransOperators,     1,   CDI_REAL,  1,  1 },
-};							       
-							       
-static int NumModules = sizeof(Modules) / sizeof(Modules[0]);
-
-static const char *opalias[][2] =
-{
-  {"afterburner",         "after"},
-  {"anomaly",             "ymonsub"},
-  {"deltap_fl",           "deltap"},
-  {"diffv",               "diffn"},
-  {"covar0",              "timcovar"},
-  {"covar0r",             "fldcovar"},
-  {"gather",              "collgrid"},
-  {"geopotheight",        "gheight"},
-  {"globavg",             "fldavg"},
-  {"import_grads",        "import_binary"},
-  {"infos",               "sinfo"},
-  {"infov",               "infon"},
-  {"intgrid",             "intgridbil"},
-  {"log",                 "ln"},
-  {"lmean",               "ymonmean"},
-  {"lmmean",              "ymonmean"},
-  {"lmavg",               "ymonavg"},
-  {"lmstd",               "ymonstd"},
-  {"lsmean",              "yseasmean"},
-  {"chvar",               "chname"},
-  {"ncode",               "npar"},
-  {"nvar",                "npar"},
-  {"outputkey",           "outputtab"},
-  {"vardes",              "codetab"},
-  {"pardes",              "codetab"},
-  {"selvar",              "selname"},
-  {"delvar",              "delname"},
-  {"remapcon1",           "remaplaf"},
-  {"remapdis1",           "remapnn"},
-  {"scatter",             "distgrid"},
-  {"showvar",             "showname"},
-  {"selgridname",         "selgrid"},
-  {"setvar",              "setname"},
-  {"setpartabv",          "setpartabn"},
-  {"setpartab",           "setcodetab"},
-  {"sinfov",              "sinfon"},
-  {"sortvar",             "sortname"},
-  {"splitvar",            "splitname"},
-  {"sort",                "timsort"},
-  {"eca_r1mm",            "eca_rr1"},
-  {"fpressure",           "pressure_fl"},
-  {"hpressure",           "pressure_hl"},
-  {"ensrkhist_space",     "ensrkhistspace"},
-  {"ensrkhist_time",      "ensrkhisttime"},
-  {"gridverify",          "verifygrid"},
-  {"outputcenter",        "gmtxyz"},
-  {"outputbounds",        "gmtcells"},
-  {"selseas",             "selseason"},
-  {"selmon",              "selmonth"},
-  {"selindex",            "selgridcell"},
-  {"delindex",            "delgridcell"},
-};
-
-static int nopalias = sizeof(opalias) / (2*sizeof(opalias[0][0]));
-
-
-static
-bool similar(const char *a, const char *b, int alen, int blen)
-{
-  if ( alen > 2 && blen > 2 && strstr(b, a) )
-    return true;
-
-  while ( *a && *b && *a == *b )
-    { 
-      a++;
-      b++;
-    }
-  if ( !*a && !*b )
-    return true;
-  /*
-    printf("%d %d %s %s\n", alen, blen, a, b);
-  */
-  if ( alen >= 2 && blen >= 1 && *a && similar(a+1, b, alen-2, blen-1) )
-    return true;
-
-  if ( alen >= 1 && blen >= 2 && *b && similar(a, b+1, alen-1, blen-2) )
-    return true;
-
-  return false; 
-}
-
-
-const char *operatorAlias(const char *operatorName)
-{
-  int i;
-
-  const char *operatorNameNew = operatorName;
-
-  for ( i = 0; i < nopalias; i++ )
-    {
-      /*   printf("%d %d %s %s\n", nopalias, i, opalias[i][0], opalias[i][1]); */
-      if ( strcmp(operatorName, opalias[i][0]) == 0 ) break;
-    }
-
-  if ( i < nopalias )
-    {
-      /* fprintf(stdout, "%s is an alias for %s\n", operatorName, opalias[i][1]); */
-      operatorNameNew = opalias[i][1];
-    }
-
-  return operatorNameNew;
-}
-
-static
-int operatorInqModID(const char *operatorName)
-{
-  int i, j, modID = -1;
-
-  if ( operatorName )
-    {
-      for ( i = 0; i < NumModules; i++ )
-	{
-	  for ( j = 0; j < MAX_MOD_OPERATORS; j++ )
-	    {
-	      if ( Modules[i].operators[j] == NULL ) break;
-
-	      if ( operatorName[0] == Modules[i].operators[j][0] )
-		{
-		  if ( strcmp(operatorName, Modules[i].operators[j]) == 0 )
-		    {
-		      modID = i;
-		      break;
-		    }
-		}
-	    }
-	  if ( modID != -1 ) break;
-	}
-    }
-
-  if ( modID == -1 && *operatorName == 0 )
-    Error("Operator name missing!");
-
-  if ( modID == -1 )
-    {
-      bool lfound = false;
-      FILE *fp = fopen(operatorName, "r");
-      if ( fp )
-	{
-	  fclose(fp);
-	  fprintf(stderr, "Use commandline option -h for help.");
-	  Error("Operator missing, %s is a file on disk!", operatorName);
-	}
-
-      fprintf(stderr, "Operator >%s< not found!\n", operatorName);
-      fprintf(stderr, "Similar operators are:\n");
-      int nbyte = fprintf(stderr, "   ");
-      if ( operatorName )
-        {
-          int len = strlen(operatorName);
-          char *opname = strdup(operatorName);
-          strtolower(opname);
-          for ( i = 0; i < NumModules; i++ )
-            {
-              if ( Modules[i].help == NULL ) continue;
-              j = 0;
-              while ( Modules[i].operators[j] )
-                {
-                  if ( similar(opname, Modules[i].operators[j],
-                               len, strlen(Modules[i].operators[j])) )
-                    {
-                      if ( nbyte > 75 )
-                        {
-                          fprintf(stdout, "\n");
-                          nbyte = fprintf(stderr, "   ");
-                        }
-                      nbyte += fprintf(stderr, " %s", Modules[i].operators[j]);
-                      lfound = true;
-                    }
-                  j++;
-                }
-            }
-          free(opname);
-        }
-
-      if ( !lfound )
-	fprintf(stderr, "(not found)\n") ;
-      else
-	fprintf(stderr, "\n");
-
-      exit(EXIT_FAILURE);
-    }
-
-  if ( modID != -1 )
-    if ( ! Modules[modID].func )
-      Error("Module for operator >%s< not installed!", operatorName);
-
-  return modID;
-}
-
-void *(*operatorModule(const char *operatorName))(void *)
-{
-  int modID = operatorInqModID(operatorName);
-  return Modules[modID].func;
-}
-
-const char **operatorHelp(const char *operatorName)
-{
-  int modID = operatorInqModID(operatorName);
-  return Modules[modID].help;
-}
-
-int operatorStreamInCnt(const char *operatorName)
-{
-  int modID = operatorInqModID(operatorAlias(operatorName));
-  return Modules[modID].streamInCnt;
-}
-
-int operatorStreamOutCnt(const char *operatorName)
-{
-  int modID = operatorInqModID(operatorAlias(operatorName));
-  return Modules[modID].streamOutCnt;
-}
-
-int operatorStreamNumber(const char *operatorName)
-{
-  int modID = operatorInqModID(operatorAlias(operatorName));
-  return Modules[modID].number;
-}
-
-int cmpname(const void *s1, const void *s2)
-{
-  char **c1 = (char **) s1;
-  char **c2 = (char **) s2;
-
-  return strcmp((const char *)*c1, (const char *)*c2);
-}
-
-void operatorPrintAll(void)
-{
-  int i, j, nbyte, nop = 0;
-  const char *opernames[4096];
-  FILE *pout = stderr;
-
-  for ( i = 0; i < NumModules; i++ )
-    {
-      if ( Modules[i].mode )
-        {
-          j = 0;
-          while ( Modules[i].operators[j] )
-            opernames[nop++] = Modules[i].operators[j++];
-	}
-    }
-
-  // Add operator aliases
-  for ( i = 0; i < nopalias; i++ )
-    {
-      opernames[nop++] = opalias[i][0];
-    }
-
-  qsort(opernames, nop, sizeof(char *), cmpname);
-
-  nbyte = fprintf(pout, "   ");
-  for ( i = 0; i < nop; i++ )
-    {
-      if ( nbyte > 85 )
-	{
-	  fprintf(pout, "\n");
-	  nbyte = fprintf(pout, "   ");
-	}
-      nbyte += fprintf(pout, " %s", opernames[i]);
-    }
-  fprintf(pout, "\n");
-}
-
-
-void operatorPrintList(bool print_no_output)
-{
-  int i, j, nbyte, nop = 0;
-  const char *opernames[4096];
-  FILE *pout = stdout;
-
-  for ( i = 0; i < NumModules; i++ )
-    {
-      if ( Modules[i].mode )
-        {
-          j = 0;
-          while ( Modules[i].operators[j] )
-            opernames[nop++] = Modules[i].operators[j++];
-        }
-    }
-
-  // Add operator aliases
-  for ( i = 0; i < nopalias; i++ ) opernames[nop++] = opalias[i][0];
-
-  qsort(opernames, nop, sizeof(char *), cmpname);
-
-  for ( i = 0; i < nop; i++ )
-    {
-      int iname = -1;
-      int ialias = -1;
-      size_t operlen = strlen(opernames[i]);
-      const char *pdes = NULL;
-      const char **phelp = NULL;
-      const char **help = NULL;
-
-      for ( j = 0; j < nopalias; j++ )
-        {
-          if ( strcmp(opernames[i], opalias[j][0]) == 0 )
-            {
-              ialias = j;
-              break;
-            }
-        }
-
-      if ( ialias == -1 ) help = operatorHelp((char *)opernames[i]);
-
-      phelp = help;
-      if ( phelp )
-        {
-          int loper = FALSE;
-          int index = 0;
-          while ( *phelp )
-            {
-              if ( loper )
-                {
-                  if ( *phelp[0] == '\0' ) break;
-                  const char *ph = *phelp;
-                  while ( *ph != '\0' )
-                    {
-                      if ( *ph != ' ' ) break;
-                      ph++;
-                    }
-                  if ( *ph != '\0' && strncmp(ph, opernames[i], operlen) == 0 && ph[operlen] == ' ' )
-                    {
-                      ph += operlen;
-                      while ( *ph != '\0' )
-                        {
-                          if ( *ph != ' ' ) break;
-                          ph++;
-                        }
-                      if ( *ph != '\0' ) pdes = ph;
-                    }
-                }
-              
-              if ( strcmp(*phelp, "NAME") == 0 ) iname = index+1;
-              if ( strcmp(*phelp, "OPERATORS") == 0 ) loper = TRUE;
-              index++;
-              phelp++;
-            }
-        }
-
-      phelp = help;
-      if ( phelp && pdes == NULL && iname >= 0 )
-        {
-          const char *ph = phelp[iname];
-          while ( *ph != '\0' )
-            {
-              if ( *ph != ' ' ) break;
-              ph++;
-            }
-          if ( *ph != '\0' && strncmp(ph, opernames[i], operlen) == 0 && ph[operlen] == ' ' )
-            {
-              ph += operlen;
-              while ( *ph != '\0' )
-                {
-                  if ( *ph != ' ' && *ph != '-' ) break;
-                  ph++;
-                }
-              if ( *ph != '\0' ) pdes = ph;
-            }      
-        }
-
-      if ( !print_no_output || operatorStreamOutCnt(opernames[i]) == 0 )
-        {
-          nbyte = fprintf(pout, "%s ", opernames[i]);
-          for ( int i = nbyte; i <= 16; ++i ) fprintf(pout, " ");
-          if ( pdes ) fprintf(pout, "%s", pdes);
-          else if ( ialias >= 0 )  fprintf(pout, "--> %s", opalias[ialias][1]);
-          fprintf(pout, "\n");
-        }
-    }
-}
diff --git a/src/modules.cc b/src/modules.cc
new file mode 100644
index 0000000..d9aa068
--- /dev/null
+++ b/src/modules.cc
@@ -0,0 +1,1424 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "cdo_int.h"
+#include "error.h"
+#include "modules.h"
+#include "operator_help.h"
+#include <cdi.h>
+
+#include <dirent.h>
+#include <dlfcn.h>
+#include <regex>
+#include <set>
+#include <string>
+#include <vector>
+// for std::sort()
+#include <algorithm>
+
+
+/* \cond */
+void *Adisit(void *argument);
+void *Afterburner(void *argument);
+void *Arith(void *argument);
+void *Arithc(void *argument);
+void *Arithdays(void *argument);
+void *Arithlat(void *argument);
+void *Cat(void *argument);
+void *CDItest(void *argument);
+void *CDIread(void *argument);
+void *CDIwrite(void *argument);
+void *Change(void *argument);
+void *Change_e5slm(void *argument);
+void *Cloudlayer(void *argument);
+void *CMOR(void *argument);
+void *CMOR_lite(void *argument);
+void *CMOR_table(void *argument);
+void *Collgrid(void *argument);
+void *Command(void *argument);
+void *Comp(void *argument);
+void *Compc(void *argument);
+void *Complextorect(void *argument);
+void *Cond(void *argument);
+void *Cond2(void *argument);
+void *Condc(void *argument);
+void *Consecstat(void *argument);
+void *Copy(void *argument);
+void *Deltat(void *argument);
+void *Deltime(void *argument);
+void *Derivepar(void *argument);
+void *Detrend(void *argument);
+void *Diff(void *argument);
+void *Distgrid(void *argument);
+void *Duplicate(void *argument);
+void *Echam5ini(void *argument);
+void *Enlarge(void *argument);
+void *Enlargegrid(void *argument);
+void *Ensstat(void *argument);
+void *Ensstat3(void *argument);
+void *Ensval(void *argument);
+void *Eofcoeff(void *argument);
+void *Eofcoeff3d(void *argument);
+void *EOFs(void *argument);
+void *EOF3d(void *argument);
+void *Expr(void *argument);
+void *FC(void *argument);
+void *Filedes(void *argument);
+void *Fillmiss(void *argument);
+void *Filter(void *argument);
+void *Fldrms(void *argument);
+void *Fldstat(void *argument);
+void *Fldstat2(void *argument);
+void *Fourier(void *argument);
+void *Gengrid(void *argument);
+void *Gradsdes(void *argument);
+void *Gridboxstat(void *argument);
+void *Gridcell(void *argument);
+void *Gridsearch(void *argument);
+void *Harmonic(void *argument);
+void *Histogram(void *argument);
+void *Importamsr(void *argument);
+void *Importbinary(void *argument);
+void *Importcmsaf(void *argument);
+void *Importobs(void *argument);
+void *Info(void *argument);
+void *Input(void *argument);
+void *Intgrid(void *argument);
+void *Intgridtraj(void *argument);
+void *Intlevel(void *argument);
+void *Intlevel3d(void *argument);
+void *Inttime(void *argument);
+void *Intntime(void *argument);
+void *Intyear(void *argument);
+void *Invert(void *argument);
+void *Invertlev(void *argument);
+void *Isosurface(void *argument);
+void *Log(void *argument);
+void *MapReduce(void *argument);
+void *Maskbox(void *argument);
+void *Mastrfu(void *argument);
+void *Math(void *argument);
+void *Merge(void *argument);
+void *Mergegrid(void *argument);
+void *Mergetime(void *argument);
+void *Merstat(void *argument);
+void *Monarith(void *argument);
+void *Mrotuv(void *argument);
+void *Mrotuvb(void *argument);
+void *Ninfo(void *argument);
+void *Nmldump(void *argument);
+void *Output(void *argument);
+void *Outputgmt(void *argument);
+void *Pack(void *argument);
+void *Pardup(void *argument);
+void *Pinfo(void *argument);
+void *Pressure(void *argument);
+void *Regres(void *argument);
+void *Remap(void *argument);
+void *Remapeta(void *argument);
+void *Replace(void *argument);
+void *Replacevalues(void *argument);
+void *Rotuv(void *argument);
+void *Rhopot(void *argument);
+void *Runpctl(void *argument);
+void *Runstat(void *argument);
+void *Samplegridicon(void *argument);
+void *Seascount(void *argument);
+void *Seaspctl(void *argument);
+void *Seasstat(void *argument);
+void *Selbox(void *argument);
+void *Selgridcell(void *argument);
+void *Select(void *argument);
+void *Selvar(void *argument);
+void *Seloperator(void *argument);
+void *Selrec(void *argument);
+void *Seltime(void *argument);
+void *Set(void *argument);
+void *Setattribute(void *argument);
+void *Setbox(void *argument);
+void *Setgatt(void *argument);
+void *Setgrid(void *argument);
+void *Sethalo(void *argument);
+void *Setmiss(void *argument);
+void *Setpartab(void *argument);
+void *Setrcaname(void *argument);
+void *Settime(void *argument);
+void *Setzaxis(void *argument);
+void *Shiftxy(void *argument);
+void *Showinfo(void *argument);
+void *Sinfo(void *argument);
+void *Smooth(void *argument);
+void *Sort(void *argument);
+void *Sorttimestamp(void *argument);
+void *Specinfo(void *argument);
+void *Spectral(void *argument);
+void *Spectrum(void *argument);
+void *Split(void *argument);
+void *Splitrec(void *argument);
+void *Splitsel(void *argument);
+void *Splittime(void *argument);
+void *Splityear(void *argument);
+void *Subtrend(void *argument);
+void *Tee(void *argument);
+void *Template1(void *argument);
+void *Template2(void *argument);
+void *Test(void *argument);
+void *Test2(void *argument);
+void *Testdata(void *argument);
+void *Tests(void *argument);
+void *Timsort(void *argument);
+void *Timcount(void *argument);
+void *Timcumsum(void *argument);
+void *Timpctl(void *argument);
+void *Timselpctl(void *argument);
+void *Timselstat(void *argument);
+void *XTimstat(void *argument);
+void *Timstat(void *argument);
+void *Timstat2(void *argument);
+void *Timstat3(void *argument);
+void *Tinfo(void *argument);
+void *Tocomplex(void *argument);
+void *Transpose(void *argument);
+void *Trend(void *argument);
+void *Trms(void *argument);
+void *Tstepcount(void *argument);
+void *Vargen(void *argument);
+void *Varrms(void *argument);
+void *Vertintml(void *argument);
+void *Vertintap(void *argument);
+void *Vertstat(void *argument);
+void *Vertcum(void *argument);
+void *Vertwind(void *argument);
+void *Verifygrid(void *argument);
+void *Wind(void *argument);
+void *Writegrid(void *argument);
+void *Writerandom(void *argument);
+void *YAR(void *argument);
+void *Yearmonstat(void *argument);
+void *Ydayarith(void *argument);
+void *Ydaypctl(void *argument);
+void *Ydaystat(void *argument);
+void *Ydrunpctl(void *argument);
+void *Ydrunstat(void *argument);
+void *Yhourarith(void *argument);
+void *Yhourstat(void *argument);
+void *Ymonarith(void *argument);
+void *Ymonpctl(void *argument);
+void *Ymonstat(void *argument);
+void *Yseaspctl(void *argument);
+void *Yseasstat(void *argument);
+void *Zonstat(void *argument);
+
+void *EcaCfd(void *argument);
+void *EcaCsu(void *argument);
+void *EcaCwdi(void *argument);
+void *EcaCwfi(void *argument);
+void *EcaEtr(void *argument);
+void *EcaFd(void *argument);
+void *EcaGsl(void *argument);
+void *EcaHd(void *argument);
+void *EcaHwdi(void *argument);
+void *EcaHwfi(void *argument);
+void *EcaId(void *argument);
+void *EcaSu(void *argument);
+void *EcaTr(void *argument);
+void *EcaTg10p(void *argument);
+void *EcaTg90p(void *argument);
+void *EcaTn10p(void *argument);
+void *EcaTn90p(void *argument);
+void *EcaTx10p(void *argument);
+void *EcaTx90p(void *argument);
+
+void *EcaCdd(void *argument);
+void *EcaCwd(void *argument);
+void *EcaRr1(void *argument);
+void *EcaPd(void *argument);
+void *EcaR75p(void *argument);
+void *EcaR75ptot(void *argument);
+void *EcaR90p(void *argument);
+void *EcaR90ptot(void *argument);
+void *EcaR95p(void *argument);
+void *EcaR95ptot(void *argument);
+void *EcaR99p(void *argument);
+void *EcaR99ptot(void *argument);
+void *EcaRx1day(void *argument);
+void *EcaRx5day(void *argument);
+void *EcaSdii(void *argument);
+
+void *Fdns(void *argument);
+void *Strwin(void *argument);
+void *Strbre(void *argument);
+void *Strgal(void *argument);
+void *Hurr(void *argument);
+
+// void *Hi(void *argument);
+void *Wct(void *argument);
+
+void *Magplot(void *argument);
+void *Magvector(void *argument);
+void *Maggraph(void *argument);
+
+// HIRLAM_EXTENSIONS
+void *Selmulti(void *argument);   // "selmulti", "delmulti"
+void *WindTrans(void *argument);  // "uvDestag", "rotuvN", "rotuvNorth", "projuvLatLon"
+void *Samplegrid(void *argument); // "samplegrid", "subgrid"
+
+
+/* clang-format off */
+#define  AdisitOperators        {"adisit", "adipot"}
+#define  AfterburnerOperators   {"after"}
+#define  ArithOperators         {"add",  "sub",  "mul",  "div", "min", "max", "atan2"}
+#define  ArithcOperators        {"addc", "subc", "mulc", "divc", "mod"}
+#define  ArithdaysOperators     {"muldpm", "divdpm", "muldpy", "divdpy", "muldoy"}
+#define  ArithlatOperators      {"mulcoslat", "divcoslat"}
+#define  CatOperators           {"cat"}
+#define  CDItestOperators       {"ncopy"}
+#define  CDIreadOperators       {"cdiread"}
+#define  CDIwriteOperators      {"cdiwrite"}
+#define  ChangeOperators        {"chcode", "chtabnum", "chparam", "chname", "chunit", "chlevel", "chlevelc", "chlevelv", "chltype"}
+#define  Change_e5slmOperators  {"change_e5slm", "change_e5lsm", "change_e5mask"}
+#define  CloudlayerOperators    {"cloudlayer"}
+#define  CMOROperators          {"cmor"}
+#define  CMORliteOperators      {"cmorlite"}
+#define  CMORtableOperators     {"dump_cmor_table", "conv_cmor_table"}
+#define  CollgridOperators      {"collgrid"}
+#define  CommandOperators       {"command", "com", "cmd"}
+#define  CompOperators          {"eq",  "ne",  "le",  "lt",  "ge",  "gt"}
+#define  CompcOperators         {"eqc", "nec", "lec", "ltc", "gec", "gtc"}
+#define  ComplextorectOperators {"complextorect"}
+#define  CondOperators          {"ifthen",  "ifnotthen"}
+#define  Cond2Operators         {"ifthenelse"}
+#define  CondcOperators         {"ifthenc", "ifnotthenc"}
+#define  ConsecstatOperators    {"consects", "consecsum"}
+#define  CopyOperators          {"copy", "selall", "szip"}
+#define  DeltatOperators        {"deltat"}
+#define  DeltimeOperators       {"delday", "del29feb"}
+#define  DeriveparOperators     {"gheight", "sealevelpressure"}
+#define  DetrendOperators       {"detrend"}
+#define  DiffOperators          {"diff", "diffp", "diffn", "diffc"}
+#define  DistgridOperators      {"distgrid"}
+#define  DuplicateOperators     {"duplicate"}
+#define  Echam5iniOperators     {"import_e5ml", "import_e5res", "export_e5ml", "export_e5res"}
+#define  EnlargeOperators       {"enlarge"}
+#define  EnlargegridOperators   {"enlargegrid"}
+#define  EnsstatOperators       {"ensrange", "ensmin", "ensmax", "enssum", "ensmean", "ensavg", "ensvar", "ensvar1", "ensstd", "ensstd1", "enspctl"}
+#define  Ensstat3Operators      {"ensrkhistspace", "ensrkhisttime", "ensroc"}
+#define  EnsvalOperators        {"enscrps", "ensbrs"}
+#define  EofcoeffOperators      {"eofcoeff"}
+#define  Eofcoeff3dOperators    {"eofcoeff3d"}
+#define  EOFsOperators          {"eof", "eofspatial", "eoftime"}
+#define  EOF3dOperators         {"eof3d","eof3dspatial","eof3dtime"}
+#define  ExprOperators          {"expr", "exprf", "aexpr", "aexprf"}
+#define  FCOperators            {"fc2sp", "sp2fc", "fc2gp", "gp2fc"}
+#define  FiledesOperators       {"filedes", "griddes", "griddes2", "zaxisdes", "vct", "vct2", "codetab", \
+                                 "vlist", "partab", "partab2", "spartab"}
+#define  FillmissOperators      {"fillmiss", "fillmiss2"}
+#define  FilterOperators        {"bandpass", "highpass", "lowpass"}
+#define  FldrmsOperators        {"fldrms"}
+#define  FldstatOperators       {"fldrange", "fldmin", "fldmax", "fldsum", "fldmean", "fldavg", "fldstd", "fldstd1", "fldvar", "fldvar1", "fldpctl"}
+#define  FldcorOperators        {"fldcor"}
+#define  FldcovarOperators      {"fldcovar"}
+#define  FourierOperators       {"fourier"}
+#define  GengridOperators       {"gengrid"}
+#define  GradsdesOperators      {"gradsdes", "dumpmap"}
+#define  GridboxstatOperators   {"gridboxrange", "gridboxmin", "gridboxmax", "gridboxsum", "gridboxmean", "gridboxavg", "gridboxstd", "gridboxstd1", "gridboxvar", "gridboxvar1"}
+#define  GridcellOperators      {"gridarea", "gridweights", "gridmask", "griddx", "griddy"}
+#define  GridsearchOperators    {"testpointsearch", "testcellsearch"}
+#define  HarmonicOperators      {"harmonic"}
+#define  HistogramOperators     {"histcount", "histsum", "histmean", "histfreq"}
+#define  ImportamsrOperators    {"import_amsr"}
+#define  ImportbinaryOperators  {"import_binary"}
+#define  ImportcmsafOperators   {"import_cmsaf"}
+#define  ImportobsOperators     {"import_obs"}
+#define  InfoOperators          {"info", "infop", "infon", "infoc", "xinfon", "map"}
+#define  InputOperators         {"input", "inputsrv", "inputext"}
+#define  IntgridOperators       {"intgridbil", "intpoint", "interpolate", "boxavg", "thinout"}
+#define  IntgridtrajOperators   {"intgridtraj"}
+#define  IntlevelOperators      {"intlevel", "intlevelx"}
+#define  Intlevel3dOperators    {"intlevel3d", "intlevelx3d"}
+#define  InttimeOperators       {"inttime"}
+#define  IntntimeOperators      {"intntime"}
+#define  IntyearOperators       {"intyear"}
+#define  InvertOperators        {"invertlat", "invertlon", "invertlatdes", "invertlondes", "invertlatdata", "invertlondata"}
+#define  InvertlevOperators     {"invertlev"}
+#define  IsosurfaceOperators    {"isosurface"}
+#define  LogOperators           {"dumplogs", "daylogs", "monlogs", "dumplogo", "snamelogo", "scalllogo", "smemlogo", "stimelogo", "sperclogo"}
+#define  MapReduceOperators     {"reducegrid"}
+#define  MaskboxOperators       {"masklonlatbox", "maskindexbox"}
+#define  MaskregionOperators    {"maskregion"}
+#define  MastrfuOperators       {"mastrfu"}
+#define  MathOperators          {"abs", "int", "nint", "sqr", "sqrt", "exp", "ln", "log10", "sin", \
+                                 "cos", "tan", "asin", "acos", "atan", "pow", "reci"}
+#define  MergeOperators         {"merge"}
+#define  MergegridOperators     {"mergegrid"}
+#define  MergetimeOperators     {"mergetime"}
+#define  MerstatOperators       {"merrange", "mermin", "mermax", "mersum", "mermean", "meravg", "merstd", "merstd1", "mervar", "mervar1", "merpctl"}
+#define  MonarithOperators      {"monadd", "monsub", "monmul", "mondiv"}
+#define  MrotuvOperators        {"mrotuv"}
+#define  MrotuvbOperators       {"mrotuvb"}
+#define  NinfoOperators         {"nyear", "nmon", "ndate", "ntime", "ncode", "npar", "nlevel", "ngridpoints", "ngrids"}
+#define  NmldumpOperators       {"nmldump", "kvldump"}
+#define  OutputOperators        {"output", "outputint", "outputsrv", "outputext", "outputf", "outputts", \
+                                 "outputfld", "outputarr", "outputxyz"}
+#define  OutputtabOperators     {"outputtab"}
+#define  OutputgmtOperators     {"gmtxyz", "gmtcells", "outputcenter2", "outputcentercpt", \
+                                 "outputboundscpt", "outputvector", "outputtri", "outputvrml"}
+#define  PackOperators          {"pack"}
+#define  PardupOperators        {"pardup", "parmul"}
+#define  PinfoOperators         {"pinfo", "pinfov"}
+#define  PressureOperators      {"pressure_fl", "pressure_hl", "deltap"}
+#define  RegresOperators        {"regres"}
+#define  RemapOperators         {"remap"}
+#define  RemapbilOperators      {"remapbil", "genbil"}
+#define  RemapbicOperators      {"remapbic", "genbic"}
+#define  RemapnnOperators       {"remapnn", "gennn"}
+#define  RemapdisOperators      {"remapdis", "gendis"}
+#define  RemapyconOperators     {"remapycon", "genycon"}
+#define  RemapconOperators      {"remapcon", "gencon"}
+#define  Remapcon2Operators     {"remapcon2", "gencon2"}
+#define  RemaplafOperators      {"remaplaf", "genlaf"}
+#define    RemapgridOperators   {"remapsum"}
+#define  RemapetaOperators      {"remapeta", "remapeta_s", "remapeta_z"}
+#define  ReplaceOperators       {"replace"}
+#define  ReplacevaluesOperators {"setvals", "setrtoc", "setrtoc2"}
+#define  RhopotOperators        {"rhopot"}
+#define  RotuvOperators         {"rotuvb"}
+#define  RunpctlOperators       {"runpctl"}
+#define  RunstatOperators       {"runrange", "runmin", "runmax", "runsum", "runmean", "runavg", "runstd", "runstd1", "runvar", "runvar1"}
+#define  SamplegridiconOperators {"samplegridicon"}
+#define  SeascountOperators     {"seascount"}
+#define  SeaspctlOperators      {"seaspctl"}
+#define  SeasstatOperators      {"seasrange", "seasmin", "seasmax", "seassum", "seasmean", "seasavg", "seasstd", "seasstd1", "seasvar", "seasvar1"}
+#define  SelboxOperators        {"sellonlatbox", "selindexbox"}
+#define  SelgridcellOperators   {"selgridcell", "delgridcell"}
+#define  SelectOperators        {"select", "delete"}
+#define  SelvarOperators        {"selparam", "selcode", "selname", "selstdname", "sellevel", "sellevidx", "selgrid", \
+                                 "selzaxis", "selzaxisname", "seltabnum", "delparam", "delcode", "delname", "selltype"}
+#define  SeloperatorOperators   {"seloperator"}
+#define  SelrecOperators        {"selrec"}
+#define  SeltimeOperators       {"seltimestep", "selyear", "selseason", "selmonth", "selday", "selhour", "seldate", \
+                                 "seltime", "selsmon"}
+#define  SetOperators           {"setcode", "setparam", "setname", "setunit", "setlevel", "setltype", "settabnum"}
+#define  SetattributeOperators  {"setattribute"}
+#define  SetboxOperators        {"setclonlatbox", "setcindexbox"}
+#define  SetgattOperators       {"setgatt", "setgatts"}
+#define  SetgridOperators       {"setgrid", "setgridtype", "setgridarea", "setgridmask", "unsetgridmask", "setgridnumber", "setgriduri", "usegridnumber"}
+#define  SethaloOperators       {"sethalo", "tpnhalo"}
+#define  SetmissOperators       {"setmissval", "setctomiss", "setmisstoc", "setrtomiss", "setvrange"}
+#define  SetmisstonnOperators   {"setmisstonn", "setmisstodis"}
+#define  SetcodetabOperators    {"setcodetab"}
+#define  SetpartabOperators     {"setpartabc", "setpartabp", "setpartabn"}
+#define  SetrcanameOperators    {"setrcaname"}
+#define  SettimeOperators       {"setyear", "setmon", "setday", "setdate", "settime", "settunits", \
+                                 "settaxis", "settbounds", "setreftime", "setcalendar", "shifttime"}
+#define  SetzaxisOperators      {"setzaxis", "genlevelbounds"}
+#define  ShiftxyOperators       {"shiftx", "shifty"}
+#define  ShowinfoOperators      {"showyear", "showmon", "showdate", "showtime", "showtimestamp", "showcode", "showunit", \
+                                 "showparam", "showname", "showstdname", "showlevel", "showltype", "showformat", "showgrid"}
+#define  SinfoOperators         {"sinfo", "sinfop", "sinfon", "sinfoc", "seinfo", "seinfop", "seinfon", "seinfoc"}
+#define  SmoothOperators        {"smooth", "smooth9"}
+#define  SortOperators          {"sortcode", "sortparam", "sortname", "sortlevel"}
+#define  SorttimestampOperators {"sorttimestamp", "sorttaxis"}
+#define  SpecinfoOperators      {"specinfo"}
+#define  SpectralOperators      {"gp2sp", "gp2spl", "sp2gp", "sp2gpl", "sp2sp", "spcut"}
+#define  SpectrumOperators      {"spectrum"}
+#define  SplitOperators         {"splitcode", "splitparam", "splitname", "splitlevel", "splitgrid", "splitzaxis", "splittabnum"}
+#define  SplitrecOperators      {"splitrec"}
+#define  SplitselOperators      {"splitsel"}
+#define  SplittimeOperators     {"splithour", "splitday", "splitmon", "splitseas"}
+#define  SplityearOperators     {"splityear", "splityearmon"}
+#define  SubtrendOperators      {"subtrend"}
+#define  TeeOperators           {"tee"}
+#define  Template1Operators     {"template1"}
+#define  Template2Operators     {"template2"}
+#define  TestOperators          {"test"}
+#define  Test2Operators         {"test2"}
+#define  TestdataOperators      {"testdata"}
+#define  TestsOperators         {"normal", "studentt", "chisquare", "beta", "fisher"}
+#define  TimsortOperators       {"timsort"}
+#define  TimcountOperators      {"timcount"}
+#define    YearcountOperators   {"yearcount"}
+#define    MoncountOperators    {"moncount"}
+#define    DaycountOperators    {"daycount"}
+#define    HourcountOperators   {"hourcount"}
+#define  TimcumsumOperators     {"timcumsum"}
+#define  TimpctlOperators       {"timpctl"}
+#define    YearpctlOperators    {"yearpctl"}
+#define    MonpctlOperators     {"monpctl"}
+#define    DaypctlOperators     {"daypctl"}
+#define    HourpctlOperators    {"hourpctl"}
+#define  TimselpctlOperators    {"timselpctl"}
+#define  TimselstatOperators    {"timselrange", "timselmin", "timselmax", "timselsum", "timselmean", "timselavg", "timselvar", "timselvar1", "timselstd", "timselstd1"}
+#define  XTimstatOperators      {"xtimmin",  "xtimmax",  "xtimsum",  "xtimmean",  "xtimavg",  "xtimvar",  "xtimvar1",  "xtimstd",  "xtimstd1", \
+                                 "xyearmin", "xyearmax", "xyearsum", "xyearmean", "xyearavg", "xyearvar", "xyearvar1", "xyearstd", "xyearstd1", \
+                                 "xmonmin",  "xmonmax",  "xmonsum",  "xmonmean",  "xmonavg",  "xmonvar",  "xmonvar1",  "xmonstd",  "xmonstd1"}
+#define  TimstatOperators       {"timrange",  "timmin",  "timmax",  "timsum",  "timmean",  "timavg",  "timvar",  "timvar1",  "timstd",  "timstd1"}
+#define    YearstatOperators    {"yearrange", "yearmin", "yearmax", "yearsum", "yearmean", "yearavg", "yearvar", "yearvar1", "yearstd", "yearstd1"}
+#define    MonstatOperators     {"monrange",  "monmin",  "monmax",  "monsum",  "monmean",  "monavg",  "monvar",  "monvar1",  "monstd",  "monstd1"}
+#define    DaystatOperators     {"dayrange",  "daymin",  "daymax",  "daysum",  "daymean",  "dayavg",  "dayvar",  "dayvar1",  "daystd",  "daystd1"}
+#define    HourstatOperators    {"hourrange", "hourmin", "hourmax", "hoursum", "hourmean", "houravg", "hourvar", "hourvar1", "hourstd", "hourstd1"}
+#define  TimcorOperators        {"timcor"}
+#define  TimcovarOperators      {"timcovar"}
+#define  Timstat3Operators      {"meandiff2test", "varquot2test"}
+#define  TinfoOperators         {"tinfo"}
+#define  TocomplexOperators     {"retocomplex", "imtocomplex"}
+#define  TransposeOperators     {"transxy"}
+#define  TrendOperators         {"trend"}
+#define  TrmsOperators          {"trms"}
+#define  TstepcountOperators    {"tstepcount"}
+#define  VargenOperators        {"random", "const", "sincos", "coshill", "for", "topo", "temp", "mask", "stdatm"}
+#define  VarrmsOperators        {"varrms"}
+#define  VertintmlOperators     {"ml2pl", "ml2hl", "ml2plx", "ml2hlx", "ml2pl_lp", "ml2hl_lp", "ml2plx_lp", "ml2hlx_lp"}
+#define  VertintapOperators     {"ap2pl", "ap2plx", "ap2pl_lp", "ap2plx_lp", "ap2hl", "ap2hlx"}
+#define  VertstatOperators      {"vertrange", "vertmin", "vertmax", "vertsum", "vertint", "vertmean", "vertavg", "vertstd", "vertstd1", "vertvar", "vertvar1"}
+#define  VertcumOperators       {"vertcum", "vertcumhl"}
+#define  VertwindOperators      {"vertwind"}
+#define  VerifygridOperators    {"verifygrid"}
+#define  WindOperators          {"uv2dv", "uv2dvl", "dv2uv", "dv2uvl", "dv2ps"}
+#define  WritegridOperators     {"writegrid"}
+#define  WriterandomOperators   {"writerandom"}
+#define  YAROperators           {"yarbil", "yarnn", "yarcon"}
+#define  YearmonstatOperators   {"yearmonmean", "yearmonavg"}
+#define  YdayarithOperators     {"ydayadd", "ydaysub", "ydaymul", "ydaydiv"}
+#define  YdaypctlOperators      {"ydaypctl"}
+#define  YdaystatOperators      {"ydayrange", "ydaymin", "ydaymax", "ydaysum", "ydaymean", "ydayavg", "ydaystd", "ydaystd1", "ydayvar", "ydayvar1"}
+#define  YdrunpctlOperators     {"ydrunpctl"}
+#define  YdrunstatOperators     {"ydrunmin", "ydrunmax", "ydrunsum", "ydrunmean", "ydrunavg", "ydrunstd", "ydrunstd1", "ydrunvar", "ydrunvar1"}
+#define  YhourarithOperators    {"yhouradd", "yhoursub", "yhourmul", "yhourdiv"}
+#define  YhourstatOperators     {"yhourrange", "yhourmin", "yhourmax", "yhoursum", "yhourmean", "yhouravg", "yhourstd", "yhourstd1", "yhourvar", "yhourvar1"}
+#define  YmonarithOperators     {"ymonadd", "ymonsub", "ymonmul", "ymondiv"}
+#define  YseasarithOperators    {"yseasadd", "yseassub", "yseasmul", "yseasdiv"}
+#define  YmonpctlOperators      {"ymonpctl"}
+#define  YmonstatOperators      {"ymonrange", "ymonmin", "ymonmax", "ymonsum", "ymonmean", "ymonavg", "ymonstd", "ymonstd1", "ymonvar", "ymonvar1"}
+#define  YseaspctlOperators     {"yseaspctl"}
+#define  YseasstatOperators     {"yseasrange", "yseasmin", "yseasmax", "yseassum", "yseasmean", "yseasavg", "yseasstd", "yseasstd1", "yseasvar", "yseasvar1"}
+#define  ZonstatOperators       {"zonrange", "zonmin", "zonmax", "zonsum", "zonmean", "zonavg", "zonstd", "zonstd1", "zonvar", "zonvar1", "zonpctl"}
+
+#define  EcaCfdOperators        {"eca_cfd"}
+#define  EcaCsuOperators        {"eca_csu"}
+#define  EcaCwfiOperators       {"eca_cwfi"}
+#define  EcaHwdiOperators       {"eca_hwdi"}
+#define  EcaEtrOperators        {"eca_etr"}
+#define  EcaFdOperators         {"eca_fd"}
+#define  EcaGslOperators        {"eca_gsl"}
+#define  EcaHdOperators         {"eca_hd"}
+#define  EcaCwdiOperators       {"eca_cwdi"}
+#define  EcaHwfiOperators       {"eca_hwfi"}
+#define  EcaIdOperators         {"eca_id"}
+#define  EcaSuOperators         {"eca_su"}
+#define  EcaTrOperators         {"eca_tr"}
+#define  EcaTg10pOperators      {"eca_tg10p"}
+#define  EcaTg90pOperators      {"eca_tg90p"}
+#define  EcaTn10pOperators      {"eca_tn10p"}
+#define  EcaTn90pOperators      {"eca_tn90p"}
+#define  EcaTx10pOperators      {"eca_tx10p"}
+#define  EcaTx90pOperators      {"eca_tx90p"}
+
+#define  EcaCddOperators        {"eca_cdd"}
+#define  EcaCwdOperators        {"eca_cwd"}
+#define  EcaRr1Operators        {"eca_rr1"}
+/*
+#define  EcaR10mmOperators      {"eca_r10mm"}
+#define  EcaR20mmOperators      {"eca_r20mm"}
+*/
+#define  EcaPdOperators         {"eca_pd", "eca_r10mm", "eca_r20mm"}
+#define  EcaR75pOperators       {"eca_r75p"}
+#define  EcaR75ptotOperators    {"eca_r75ptot"}
+#define  EcaR90pOperators       {"eca_r90p"}
+#define  EcaR90ptotOperators    {"eca_r90ptot"}
+#define  EcaR95pOperators       {"eca_r95p"}
+#define  EcaR95ptotOperators    {"eca_r95ptot"}
+#define  EcaR99pOperators       {"eca_r99p"}
+#define  EcaR99ptotOperators    {"eca_r99ptot"}
+#define  EcaRx1dayOperators     {"eca_rx1day"}
+#define  EcaRx5dayOperators     {"eca_rx5day"}
+#define  EcaSdiiOperators       {"eca_sdii"}
+
+#define  FdnsOperators          {"fdns"}
+
+#define  StrwinOperators        {"strwin"}
+#define  StrbreOperators        {"strbre"}
+#define  StrgalOperators        {"strgal"}
+#define  HurrOperators          {"hurr"}
+
+#define  HiOperators            {"hi"}
+#define  WctOperators           {"wct"}
+
+#define  MagplotOperators       {"contour", "shaded", "grfill"}
+#define  MagvectorOperators     {"vector"}
+#define  MaggraphOperators      {"graph"}
+
+// HIRLAM_EXTENSIONS
+#define  SelmultiOperators      {"selmulti", "delmulti", "changemulti"}
+#define  WindTransOperators     {"uvDestag", "rotuvN", "rotuvNorth", "projuvLatLon"}
+#define  SamplegridOperators    {"samplegrid", "subgrid"}
+
+
+/* clang-format on */
+/* \endcond */
+
+/**
+ * @param a pointer to a string/substring
+ * @param b pointer to a string/substring
+ * @param alen length of string a
+ * @param blen lenght of string b
+ * @retval true if a is similar to b
+ * @retval false if a is not similar to b
+ *
+ * Recursive function for finding substrings of a operator name that match other
+ * operators.
+ */
+
+static
+bool similar(const char *a, const char *b, unsigned long alen, unsigned long blen) {
+    if (alen > 2 && blen > 2 && strstr(b, a))
+        return true;
+
+    while (*a && *b && *a == *b) {
+        a++;
+        b++;
+    }
+    if (!*a && !*b)
+        return true;
+    /*
+      printf("%d %d %s %s\n", alen, blen, a, b);
+    */
+    if (alen >= 2 && blen >= 1 && *a && similar(a + 1, b, alen - 2, blen - 1))
+        return true;
+
+    if (alen >= 1 && blen >= 2 && *b && similar(a, b + 1, alen - 1, blen - 2))
+        return true;
+
+    return false;
+}
+
+/**
+ * @param original string tested for similarity to \p other
+ * @param other string that \p original will be compared to
+ * @retval true if original and other are similar
+ * @retval false if not
+ *
+ * Wrapper function for #similar() to parse c++ strings to c strings
+ */
+static
+bool similar(std::string original, std::string other) {
+    return (similar(original.c_str(), other.c_str(), original.size(), other.size()));
+}
+
+/**
+ * @param operatorName operator name
+ * @retval true if #modules_map contains \p operatorName
+ * @retval false if not
+ */
+static
+bool operator_name_exists(std::string operatorName) {
+    if (modules_map.find(operatorName) != modules_map.end()) {
+        return true;
+    }
+    if (aliases.find(operatorName) != aliases.end()) {
+        return true;
+    }
+    return false;
+}
+
+/**
+ * @param moduleName module name
+ * @retval true if #modules contains \a moduleName
+ * @retval false if not
+ */
+static
+bool module_map_contains(std::string moduleName) {
+    if (modules.find(moduleName) != modules.end()) {
+        return true;
+    } else {
+        Error("Module %s not found", moduleName.c_str());
+    }
+    return false;
+}
+
+/***
+ * function for finding similar operator names for the given string
+ * @param operatorName operator name to find similar operators for
+ * @returns A string with all found names. The string is seqmented into lines
+ * with a max lenght of 75 characters
+ */
+static
+std::string find_similar(std::string operatorName) {
+    std::string found_similar_operators = "";
+    unsigned long lines = 1;
+    unsigned long line_length = 105;
+    if (operatorName != "") {
+        // Searching for simlar operator names in operator to module map
+        for (auto str : modules_map) {
+            if (similar(string2lower(operatorName), str.first)) {
+                if (found_similar_operators.size() + str.first.size() > lines * line_length) {
+                    found_similar_operators += "\n";
+                    lines++;
+                }
+                found_similar_operators += str.first;
+                found_similar_operators += " ";
+            }
+        }
+        // Searching for similar operator names in aliases to original map
+        for (auto str : aliases) {
+            if (similar(string2lower(operatorName), str.first)) {
+                if (found_similar_operators.size() + str.first.size() > lines * line_length) {
+                    found_similar_operators += "\n";
+                    lines++;
+                }
+                found_similar_operators += str.first;
+                found_similar_operators += " ";
+            }
+        }
+    }
+    return found_similar_operators;
+}
+
+/**
+ * @param operatorName operator name.
+ * @retval true if \p operatorName exists.
+ * @retval false if \p operatorName is not in #modules_map
+ *
+ * Checks if given \p operatorName is in #modules_map. Else returns false.
+
+ * Checks if \p operatorName is not a file.
+
+ * If no matching operator is found checks for similar operators using
+ find_similar().
+ *
+ *  \note If \p operatorName is a file name the program will exit.
+ */
+static
+bool check_operator(std::string operatorName) {
+    if (operator_name_exists(operatorName)) {
+        return true;
+    } else if (operatorName == "")
+        Error("Operator name missing!");
+
+    else {
+        // Checking if the operatorname is an existing file name
+        FILE *fp = fopen(operatorName.c_str(), "r");
+        if (fp) {
+            fclose(fp);
+            fprintf(stderr, "Use commandline option -h for help.");
+            Error("Operator missing, %s is a file on disk!", operatorName.c_str());
+        }
+        // Operator is no filename
+        // Checking for similar operators
+        fprintf(stderr, "Operator >%s< not found!\n", operatorName.c_str());
+        fprintf(stderr, "Similar operators are:\n");
+        std::string found_similar_operators = find_similar(operatorName);
+
+        if (found_similar_operators.size() > 0) {
+          std::cerr << found_similar_operators << std::endl;
+        } else {
+          fprintf(stderr, "(not found)\n");
+        }
+        exit(EXIT_FAILURE);
+    }
+    return false;
+}
+
+/***
+ * Adds a module and its operators to cdo.
+ * Adds the module to modules
+ * Adds the operators of modules to modules_map
+ * @param new_module newly constructed module
+ * @note: if an error happens while adding the new module cdo will exit.
+ */
+static
+void add_module(std::string module_name, modules_t new_module) {
+    if (modules.find(module_name) == modules.end()) {
+        modules[module_name] = new_module;
+        for (std::string operatorName : new_module.operators) {
+            // if the operator name is not already in the map or in the aliases
+            if (!operator_name_exists(operatorName)) {
+                modules_map[operatorName] = module_name;
+            } else {
+                Error("Tried to add operator but the operator name already exists");
+            }
+        }
+    } else {
+        Error("Module %s name already exists", module_name.c_str());
+    }
+}
+
+/**
+ * adds an key value pair to #modules_map with alias as key and originals name
+ * as value
+ * @param alias new alias to be added
+ * @param original original operator name
+ */
+static
+int add_alias(std::string alias, std::string original) {
+    auto iter_original = modules_map.find(original);
+    auto iter_alias = aliases.find(alias);
+
+    if (iter_alias != aliases.end()) {
+        Warning("alias %s could not be added: it already exists", alias.c_str());
+        return -1;
+    }
+
+    if (iter_original == modules_map.end()) {
+        Error("alias %s could not be added: operator %s does not exist", alias.c_str(),
+              original.c_str());
+        return -2;
+    }
+    if (modules_map.find(alias) != modules_map.end()) {
+      Error("alias %s could not be added: alias name already exists as an operator", alias.c_str());
+    }
+    aliases[alias] = original;
+
+    return 0;
+}
+/* clang-format off */
+// stream in  -1 means: unlimited number of input streams
+// stream out -1 means: usage of obase
+/***
+ * Initializes all hardcoded modules.
+ */
+void init_modules()
+{
+/*                             function        help function      operator names          mode number     num streams
+                                                                                                  type       in out      */
+  add_module("Adisit"        , {Adisit        , AdisitHelp        , AdisitOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Afterburner"   , {Afterburner   , AfterburnerHelp   , AfterburnerOperators   , 1 , CDI_REAL , -1 , 1  });
+  add_module("Arith"         , {Arith         , ArithHelp         , ArithOperators         , 1 , CDI_REAL , 2  , 1  });
+  add_module("Arithc"        , {Arithc        , ArithcHelp        , ArithcOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Arithdays"     , {Arithdays     , ArithdaysHelp     , ArithdaysOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Arithlat"      , {Arithlat      , {}                , ArithlatOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Cat"           , {Cat           , CopyHelp          , CatOperators           , 1 , CDI_REAL , -1 , 1  });
+  add_module("CDItest"       , {CDItest       , {}                , CDItestOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("CDIread"       , {CDIread       , {}                , CDIreadOperators       , 1 , CDI_REAL , 1  , 0  });
+  add_module("CDIwrite"      , {CDIwrite      , {}                , CDIwriteOperators      , 1 , CDI_REAL , 0  , 1  });
+  add_module("Change"        , {Change        , ChangeHelp        , ChangeOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Change_e5slm"  , {Change_e5slm  , {}                , Change_e5slmOperators  , 0 , CDI_REAL , 1  , 1  });
+  add_module("Cloudlayer"    , {Cloudlayer    , {}                , CloudlayerOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("CMOR_lite"     , {CMOR_lite     , CMORliteHelp      , CMORliteOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("CMOR_table"    , {CMOR_table    , {}                , CMORtableOperators     , 1 , CDI_REAL , 0  , 0  });
+  add_module("Collgrid"      , {Collgrid      , CollgridHelp      , CollgridOperators      , 1 , CDI_REAL , -1 , 1  });
+  add_module("Command"       , {Command       , {}                , CommandOperators       , 0 , CDI_REAL , 1  , 0  });
+  add_module("Comp"          , {Comp          , CompHelp          , CompOperators          , 1 , CDI_REAL , 2  , 1  });
+  add_module("Compc"         , {Compc         , CompcHelp         , CompcOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("Complextorect" , {Complextorect , {}                , ComplextorectOperators , 1 , CDI_COMP , 1  , 2  });
+  add_module("Cond"          , {Cond          , CondHelp          , CondOperators          , 1 , CDI_REAL , 2  , 1  });
+  add_module("Cond2"         , {Cond2         , Cond2Help         , Cond2Operators         , 1 , CDI_REAL , 3  , 1  });
+  add_module("Condc"         , {Condc         , CondcHelp         , CondcOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("Consecstat"    , {Consecstat    , ConsecstatHelp    , ConsecstatOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Copy"          , {Copy          , CopyHelp          , CopyOperators          , 1 , CDI_REAL , -1 , 1  });
+  add_module("Deltat"        , {Deltat        , {}                , DeltatOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Deltime"       , {Deltime       , {}                , DeltimeOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Derivepar"     , {Derivepar     , DeriveparHelp     , DeriveparOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Detrend"       , {Detrend       , DetrendHelp       , DetrendOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Diff"          , {Diff          , DiffHelp          , DiffOperators          , 1 , CDI_REAL , 2  , 0  });
+  add_module("Distgrid"      , {Distgrid      , DistgridHelp      , DistgridOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Duplicate"     , {Duplicate     , DuplicateHelp     , DuplicateOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Echam5ini"     , {Echam5ini     , {}                , Echam5iniOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Enlarge"       , {Enlarge       , EnlargeHelp       , EnlargeOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Enlargegrid"   , {Enlargegrid   , {}                , EnlargegridOperators   , 0 , CDI_REAL , 1  , 1  });
+  add_module("Ensstat"       , {Ensstat       , EnsstatHelp       , EnsstatOperators       , 1 , CDI_REAL , -1 , 1  });
+  add_module("Ensstat3"      , {Ensstat3      , Ensstat2Help      , Ensstat3Operators      , 1 , CDI_REAL , -1 , 1  });
+  add_module("Ensval"        , {Ensval        , EnsvalHelp        , EnsvalOperators        , 1 , CDI_REAL , -1 , 1  });
+  add_module("Eofcoeff"      , {Eofcoeff      , EofcoeffHelp      , EofcoeffOperators      , 1 , CDI_REAL , 2  , -1 });
+  add_module("Eofcoeff3d"    , {Eofcoeff3d    , EofcoeffHelp      , Eofcoeff3dOperators    , 1 , CDI_REAL , 2  , -1 });
+  add_module("EOFs"          , {EOFs          , EOFsHelp          , EOFsOperators          , 1 , CDI_REAL , 1  , 2  });
+  add_module("EOF3d"         , {EOF3d         , EOFsHelp          , EOF3dOperators         , 1 , CDI_REAL , 1  , 2  });
+  add_module("Expr"          , {Expr          , ExprHelp          , ExprOperators          , 1 , CDI_REAL , 1  , 1  });
+  add_module("FC"            , {FC            , {}                , FCOperators            , 1 , CDI_REAL , 1  , 1  });
+  add_module("Filedes"       , {Filedes       , FiledesHelp       , FiledesOperators       , 1 , CDI_BOTH , 1  , 0  });
+  add_module("Fillmiss"      , {Fillmiss      , {}                , FillmissOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Filter"        , {Filter        , FilterHelp        , FilterOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Fldrms"        , {Fldrms        , {}                , FldrmsOperators        , 1 , CDI_REAL , 2  , 1  });
+  add_module("Fldstat"       , {Fldstat       , FldstatHelp       , FldstatOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Fldstatcor"    , {Fldstat2      , FldcorHelp        , FldcorOperators        , 1 , CDI_REAL , 2  , 1  });
+  add_module("Fldstatvar"    , {Fldstat2      , FldcovarHelp      , FldcovarOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("Fourier"       , {Fourier       , {}                , FourierOperators       , 1 , CDI_COMP , 1  , 1  });
+  add_module("Gengrid"       , {Gengrid       , {}                , GengridOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("Gradsdes"      , {Gradsdes      , GradsdesHelp      , GradsdesOperators      , 1 , CDI_REAL , 1  , 0  });
+  add_module("Gridboxstat"   , {Gridboxstat   , GridboxstatHelp   , GridboxstatOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("Gridcell"      , {Gridcell      , GridcellHelp      , GridcellOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Gridsearch"    , {Gridsearch    , {}                , GridsearchOperators    , 0 , CDI_REAL , 0  , 0  });
+  add_module("Harmonic"      , {Harmonic      , {}                , HarmonicOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Histogram"     , {Histogram     , HistogramHelp     , HistogramOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Importamsr"    , {Importamsr    , ImportamsrHelp    , ImportamsrOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Importbinary"  , {Importbinary  , ImportbinaryHelp  , ImportbinaryOperators  , 1 , CDI_REAL , 1  , 1  });
+  add_module("Importcmsaf"   , {Importcmsaf   , ImportcmsafHelp   , ImportcmsafOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("Importobs"     , {Importobs     , {}                , ImportobsOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Info"          , {Info          , InfoHelp          , InfoOperators          , 1 , CDI_BOTH , -1 , 0  });
+  add_module("Input"         , {Input         , InputHelp         , InputOperators         , 1 , CDI_REAL , 0  , 1  });
+  add_module("Intgrid"       , {Intgrid       , {}                , IntgridOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Intgridtraj"   , {Intgridtraj   , {}                , IntgridtrajOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("Intlevel"      , {Intlevel      , IntlevelHelp      , IntlevelOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Intlevel3d"    , {Intlevel3d    , Intlevel3dHelp    , Intlevel3dOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("Inttime"       , {Inttime       , InttimeHelp       , InttimeOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Intntime"      , {Intntime      , InttimeHelp       , IntntimeOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Intyear"       , {Intyear       , IntyearHelp       , IntyearOperators       , 1 , CDI_REAL , 2  , -1 });
+  add_module("Invert"        , {Invert        , InvertHelp        , InvertOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Invertlev"     , {Invertlev     , InvertlevHelp     , InvertlevOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Isosurface"    , {Isosurface    , {}                , IsosurfaceOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Log"           , {Log           , {}                , LogOperators           , 0 , CDI_REAL , 1  , 0  });
+  add_module("MapReduce"     , {MapReduce     , MapReduceHelp     , MapReduceOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Maskbox"       , {Maskbox       , MaskboxHelp       , MaskboxOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Maskregion"    , {Maskbox       , MaskregionHelp    , MaskregionOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Mastrfu"       , {Mastrfu       , MastrfuHelp       , MastrfuOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Math"          , {Math          , MathHelp          , MathOperators          , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Merge"         , {Merge         , MergeHelp         , MergeOperators         , 1 , CDI_REAL , -1 , 1  });
+  add_module("Mergetime"     , {Mergetime     , MergeHelp         , MergetimeOperators     , 1 , CDI_REAL , -1 , 1  });
+  add_module("Mergegrid"     , {Mergegrid     , MergegridHelp     , MergegridOperators     , 1 , CDI_REAL , 2  , 1  });
+  add_module("Merstat"       , {Merstat       , MerstatHelp       , MerstatOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Monarith"      , {Monarith      , MonarithHelp      , MonarithOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("Mrotuv"        , {Mrotuv        , {}                , MrotuvOperators        , 1 , CDI_REAL , 1  , 2  });
+  add_module("Mrotuvb"       , {Mrotuvb       , {}                , MrotuvbOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("Ninfo"         , {Ninfo         , NinfoHelp         , NinfoOperators         , 1 , CDI_BOTH , 1  , 0  });
+  add_module("Nmldump"       , {Nmldump       , {}                , NmldumpOperators       , 0 , CDI_REAL , 0  , 0  });
+  add_module("Output"        , {Output        , OutputHelp        , OutputOperators        , 1 , CDI_REAL , -1 , 0  });
+  add_module("Outputtab"     , {Output        , OutputtabHelp     , OutputtabOperators     , 1 , CDI_REAL , -1 , 0  });
+  add_module("Outputgmt"     , {Outputgmt     , OutputgmtHelp     , OutputgmtOperators     , 1 , CDI_REAL , 1  , 0  });
+  add_module("Pack"          , {Pack          , {}                , PackOperators          , 1 , CDI_REAL , 1  , 1  });
+  add_module("Pardup"        , {Pardup        , {}                , PardupOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Pinfo"         , {Pinfo         , {}                , PinfoOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("Pressure"      , {Pressure      , {}                , PressureOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Regres"        , {Regres        , RegresHelp        , RegresOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remap"         , {Remap         , RemapHelp         , RemapOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapbil"      , {Remap         , RemapbilHelp      , RemapbilOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapbic"      , {Remap         , RemapbicHelp      , RemapbicOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapnn"       , {Remap         , RemapnnHelp       , RemapnnOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapdis"      , {Remap         , RemapdisHelp      , RemapdisOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapycon"     , {Remap         , RemapyconHelp     , RemapyconOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapcon"      , {Remap         , RemapconHelp      , RemapconOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapcon2"     , {Remap         , Remapcon2Help     , Remapcon2Operators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remaplaf"      , {Remap         , RemaplafHelp      , RemaplafOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapgrid"     , {Remap         , {}                , RemapgridOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Remapeta"      , {Remapeta      , RemapetaHelp      , RemapetaOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Replace"       , {Replace       , ReplaceHelp       , ReplaceOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("Replacevalues" , {Replacevalues , ReplacevaluesHelp , ReplacevaluesOperators , 1 , CDI_REAL , 1  , 1  });
+  add_module("Rhopot"        , {Rhopot        , RhopotHelp        , RhopotOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Rotuv"         , {Rotuv         , RotuvbHelp        , RotuvOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("Runpctl"       , {Runpctl       , RunpctlHelp       , RunpctlOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Runstat"       , {Runstat       , RunstatHelp       , RunstatOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Samplegridicon", {Samplegridicon, {}                , SamplegridiconOperators, 1,  CDI_REAL,  1  , 2  });
+  add_module("Seascount"     , {Seascount     , {}                , SeascountOperators     , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Seaspctl"      , {Seaspctl      , SeaspctlHelp      , SeaspctlOperators      , 1 , CDI_REAL , 3  , 1  });
+  add_module("Seasstat"      , {Seasstat      , SeasstatHelp      , SeasstatOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Selbox"        , {Selbox        , SelboxHelp        , SelboxOperators        , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Selgridcell"   , {Selgridcell   , {}                , SelgridcellOperators   , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Select"        , {Select        , SelectHelp        , SelectOperators        , 1 , CDI_BOTH , -1 , 1  });
+  add_module("Selvar"        , {Selvar        , SelvarHelp        , SelvarOperators        , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Selrec"        , {Selrec        , SelvarHelp        , SelrecOperators        , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Seloperator"   , {Seloperator   , {}                , SeloperatorOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("Seltime"       , {Seltime       , SeltimeHelp       , SeltimeOperators       , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Set"           , {Set           , SetHelp           , SetOperators           , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Setattribute"  , {Setattribute  , SetattributeHelp  , SetattributeOperators  , 1 , CDI_REAL , 1  , 1  });
+  add_module("Setbox"        , {Setbox        , SetboxHelp        , SetboxOperators        , 1 , CDI_REAL , 1  , 1  });
+  //add_module("Setgatt"       , {Setgatt       , SetgattHelp       , SetgattOperators       , 1 , CDI_BOTH , 1  , 1  });  
+  add_module("Setgrid"       , {Setgrid       , SetgridHelp       , SetgridOperators       , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Sethalo"       , {Sethalo       , SethaloHelp       , SethaloOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Setmiss"       , {Setmiss       , SetmissHelp       , SetmissOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Setmisstonn"   , {Fillmiss      , SetmissHelp       , SetmisstonnOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("Setcodetab"    , {Setpartab     , SetHelp           , SetcodetabOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Setpartab"     , {Setpartab     , SetpartabHelp     , SetpartabOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Setrcaname"    , {Setrcaname    , {}                , SetrcanameOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Settime"       , {Settime       , SettimeHelp       , SettimeOperators       , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Setzaxis"      , {Setzaxis      , SetzaxisHelp      , SetzaxisOperators      , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Shiftxy"       , {Shiftxy       , {}                , ShiftxyOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Showinfo"      , {Showinfo      , ShowinfoHelp      , ShowinfoOperators      , 1 , CDI_BOTH , 1  , 0  });
+  add_module("Sinfo"         , {Sinfo         , SinfoHelp         , SinfoOperators         , 1 , CDI_BOTH , -1 , 0  });
+  add_module("Smooth"        , {Smooth        , SmoothHelp        , SmoothOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Sort"          , {Sort          , {}                , SortOperators          , 1 , CDI_REAL , 1  , 1  });
+  add_module("Sorttimestamp" , {Sorttimestamp , {}                , SorttimestampOperators , 1 , CDI_REAL , -1 , 1  });
+  add_module("Specinfo"      , {Specinfo      , {}                , SpecinfoOperators      , 1 , CDI_REAL , 0  , 0  });
+  add_module("Spectral"      , {Spectral      , SpectralHelp      , SpectralOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Spectrum"      , {Spectrum      , {}                , SpectrumOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Split"         , {Split         , SplitHelp         , SplitOperators         , 1 , CDI_BOTH , 1  , -1 });
+  add_module("Splitrec"      , {Splitrec      , SplitHelp         , SplitrecOperators      , 1 , CDI_BOTH , 1  , -1 });
+  add_module("Splitsel"      , {Splitsel      , SplitselHelp      , SplitselOperators      , 1 , CDI_BOTH , 1  , -1 });
+  add_module("Splittime"     , {Splittime     , SplittimeHelp     , SplittimeOperators     , 1 , CDI_BOTH , 1  , -1 });
+  add_module("Splityear"     , {Splityear     , SplittimeHelp     , SplityearOperators     , 1 , CDI_BOTH , 1  , -1 });
+  add_module("Subtrend"      , {Subtrend      , SubtrendHelp      , SubtrendOperators      , 1 , CDI_REAL , 3  , 1  });
+  add_module("Tee"           , {Tee           , {}                , TeeOperators           , 1 , CDI_REAL , 2  , 1  });
+  add_module("Template1"     , {Template1     , {}                , Template1Operators     , 0 , CDI_REAL , 1  , 1  });
+  add_module("Template2"     , {Template2     , {}                , Template2Operators     , 0 , CDI_REAL , 1  , 1  });
+  add_module("Test"          , {Test          , {}                , TestOperators          , 0 , CDI_REAL , 1  , 1  });
+  add_module("Test2"         , {Test2         , {}                , Test2Operators         , 0 , CDI_REAL , 2  , 1  });
+  add_module("Testdata"      , {Testdata      , {}                , TestdataOperators      , 0 , CDI_REAL , 1  , 1  });
+  add_module("Tests"         , {Tests         , {}                , TestsOperators         , 0 , CDI_REAL , 1  , 1  });
+  add_module("Timcount"      , {Timcount      , {}                , TimcountOperators      , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Yearcount"     , {Timcount      , {}                , YearcountOperators     , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Moncount"      , {Timcount      , {}                , MoncountOperators      , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Daycount"      , {Timcount      , {}                , DaycountOperators      , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Hourcount"     , {Timcount      , {}                , HourcountOperators     , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Timcumsum"     , {Timcumsum     , TimcumsumHelp     , TimcumsumOperators     , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Timpctl"       , {Timpctl       , TimpctlHelp       , TimpctlOperators       , 1 , CDI_REAL , 3  , 1  });
+  add_module("Yearpctl"      , {Timpctl       , YearpctlHelp      , YearpctlOperators      , 1 , CDI_REAL , 3  , 1  });
+  add_module("Monpctl"       , {Timpctl       , MonpctlHelp       , MonpctlOperators       , 1 , CDI_REAL , 3  , 1  });
+  add_module("Daypctl"       , {Timpctl       , DaypctlHelp       , DaypctlOperators       , 1 , CDI_REAL , 3  , 1  });
+  add_module("Hourpctl"      , {Timpctl       , HourpctlHelp      , HourpctlOperators      , 1 , CDI_REAL , 3  , 1  });
+  add_module("Timselpctl"    , {Timselpctl    , TimselpctlHelp    , TimselpctlOperators    , 1 , CDI_REAL , 3  , 1  });
+  add_module("Timsort"       , {Timsort       , TimsortHelp       , TimsortOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Timselstat"    , {Timselstat    , TimselstatHelp    , TimselstatOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("XTimstat"      , {XTimstat      , {}                , XTimstatOperators      , 0 , CDI_BOTH , 1  , 1  });
+  add_module("Timstat"       , {Timstat       , TimstatHelp       , TimstatOperators       , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Yearstat"      , {Timstat       , YearstatHelp      , YearstatOperators      , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Monstat"       , {Timstat       , MonstatHelp       , MonstatOperators       , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Daystat"       , {Timstat       , DaystatHelp       , DaystatOperators       , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Hourstat"      , {Timstat       , HourstatHelp      , HourstatOperators      , 1 , CDI_BOTH , 1  , 1  });
+  add_module("Timcor"        , {Timstat2      , TimcorHelp        , TimcorOperators        , 1 , CDI_REAL , 2  , 1  });
+  add_module("Timscorvar"    , {Timstat2      , TimcovarHelp      , TimcovarOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("Timstat3"      , {Timstat3      , {}                , Timstat3Operators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("Tinfo"         , {Tinfo         , {}                , TinfoOperators         , 1 , CDI_BOTH , 1  , 0  });
+  add_module("Tocomplex"     , {Tocomplex     , {}                , TocomplexOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Transpose"     , {Transpose     , {}                , TransposeOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Trend"         , {Trend         , TrendHelp         , TrendOperators         , 1 , CDI_REAL , 1  , 2  });
+  add_module("Trms"          , {Trms          , {}                , TrmsOperators          , 0 , CDI_REAL , 2  , 1  });
+  add_module("Tstepcount"    , {Tstepcount    , {}                , TstepcountOperators    , 1 , CDI_REAL , 1  , 1  });
+  add_module("Vargen"        , {Vargen        , VargenHelp        , VargenOperators        , 1 , CDI_REAL , 0  , 1  });
+  add_module("Varrms"        , {Varrms        , {}                , VarrmsOperators        , 0 , CDI_REAL , 2  , 1  });
+  add_module("Vertintml"     , {Vertintml     , VertintmlHelp     , VertintmlOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Vertintap"     , {Vertintap     , VertintapHelp     , VertintapOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Vertstat"      , {Vertstat      , VertstatHelp      , VertstatOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Vertcum"       , {Vertcum       , {}                , VertcumOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Vertwind"      , {Vertwind      , {}                , VertwindOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Verifygrid"    , {Verifygrid    , {}                , VerifygridOperators    , 1 , CDI_REAL , 1  , 0  });
+  add_module("Wind"          , {Wind          , WindHelp          , WindOperators          , 1 , CDI_REAL , 1  , 1  });
+  add_module("Writegrid"     , {Writegrid     , {}                , WritegridOperators     , 1 , CDI_REAL , 1  , 1  }); // no cdi output
+  add_module("Writerandom"   , {Writerandom   , {}                , WriterandomOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("YAR"           , {YAR           , {}                , YAROperators           , 0 , CDI_REAL , 1  , 1  });
+  add_module("Yearmonstat"   , {Yearmonstat   , YearmonstatHelp   , YearmonstatOperators   , 1 , CDI_REAL , 1  , 1  });
+  add_module("Ydayarith"     , {Ydayarith     , YdayarithHelp     , YdayarithOperators     , 1 , CDI_REAL , 2  , 1  });
+  add_module("Ydaypctl"      , {Ydaypctl      , YdaypctlHelp      , YdaypctlOperators      , 1 , CDI_REAL , 3  , 1  });
+  add_module("Ydaystat"      , {Ydaystat      , YdaystatHelp      , YdaystatOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Ydrunpctl"     , {Ydrunpctl     , YdrunpctlHelp     , YdrunpctlOperators     , 1 , CDI_REAL , 3  , 1  });
+  add_module("Ydrunstat"     , {Ydrunstat     , YdrunstatHelp     , YdrunstatOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Yhourarith"    , {Yhourarith    , YhourarithHelp    , YhourarithOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("Yhourstat"     , {Yhourstat     , YhourstatHelp     , YhourstatOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Ymonarith"     , {Ymonarith     , YmonarithHelp     , YmonarithOperators     , 1 , CDI_REAL , 2  , 1  });
+  add_module("Yseasarith"    , {Ymonarith     , YseasarithHelp    , YseasarithOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("Ymonpctl"      , {Ymonpctl      , YmonpctlHelp      , YmonpctlOperators      , 1 , CDI_REAL , 3  , 1  });
+  add_module("Ymonstat"      , {Ymonstat      , YmonstatHelp      , YmonstatOperators      , 1 , CDI_REAL , 1  , 1  });
+  add_module("Yseaspctl"     , {Yseaspctl     , YseaspctlHelp     , YseaspctlOperators     , 1 , CDI_REAL , 3  , 1  });
+  add_module("Yseasstat"     , {Yseasstat     , YseasstatHelp     , YseasstatOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Zonstat"       , {Zonstat       , ZonstatHelp       , ZonstatOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaCfd"        , {EcaCfd        , EcaCfdHelp        , EcaCfdOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaCsu"        , {EcaCsu        , EcaCsuHelp        , EcaCsuOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaCwdi"       , {EcaCwdi       , EcaCwdiHelp       , EcaCwdiOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaCwfi"       , {EcaCwfi       , EcaCwfiHelp       , EcaCwfiOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaEtr"        , {EcaEtr        , EcaEtrHelp        , EcaEtrOperators        , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaFd"         , {EcaFd         , EcaFdHelp         , EcaFdOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaGsl"        , {EcaGsl        , EcaGslHelp        , EcaGslOperators        , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaHd"         , {EcaHd         , EcaHdHelp         , EcaHdOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaHwdi"       , {EcaHwdi       , EcaHwdiHelp       , EcaHwdiOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaHwfi"       , {EcaHwfi       , EcaHwfiHelp       , EcaHwfiOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaId"         , {EcaId         , EcaIdHelp         , EcaIdOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaSu"         , {EcaSu         , EcaSuHelp         , EcaSuOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaTr"         , {EcaTr         , EcaTrHelp         , EcaTrOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaTg10p"      , {EcaTg10p      , EcaTg10pHelp      , EcaTg10pOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaTg90p"      , {EcaTg90p      , EcaTg90pHelp      , EcaTg90pOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaTn10p"      , {EcaTn10p      , EcaTn10pHelp      , EcaTn10pOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaTn90p"      , {EcaTn90p      , EcaTn90pHelp      , EcaTn90pOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaTx10p"      , {EcaTx10p      , EcaTx10pHelp      , EcaTx10pOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaTx90p"      , {EcaTx90p      , EcaTx90pHelp      , EcaTx90pOperators      , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaCdd"        , {EcaCdd        , EcaCddHelp        , EcaCddOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaCwd"        , {EcaCwd        , EcaCwdHelp        , EcaCwdOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaRr1"        , {EcaRr1        , EcaRr1Help        , EcaRr1Operators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaPd"         , {EcaPd         , EcaPdHelp         , EcaPdOperators         , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaR75p"       , {EcaR75p       , EcaR75pHelp       , EcaR75pOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR75ptot"    , {EcaR75ptot    , EcaR75ptotHelp    , EcaR75ptotOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR90p"       , {EcaR90p       , EcaR90pHelp       , EcaR90pOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR90ptot"    , {EcaR90ptot    , EcaR90ptotHelp    , EcaR90ptotOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR95p"       , {EcaR95p       , EcaR95pHelp       , EcaR95pOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR95ptot"    , {EcaR95ptot    , EcaR95ptotHelp    , EcaR95ptotOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR99p"       , {EcaR99p       , EcaR99pHelp       , EcaR99pOperators       , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaR99ptot"    , {EcaR99ptot    , EcaR99ptotHelp    , EcaR99ptotOperators    , 1 , CDI_REAL , 2  , 1  });
+  add_module("EcaRx1day"     , {EcaRx1day     , EcaRx1dayHelp     , EcaRx1dayOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaRx5day"     , {EcaRx5day     , EcaRx5dayHelp     , EcaRx5dayOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("EcaSdii"       , {EcaSdii       , EcaSdiiHelp       , EcaSdiiOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Fdns"          , {Fdns          , FdnsHelp          , FdnsOperators          , 1 , CDI_REAL , 2  , 1  });
+  add_module("Strwin"        , {Strwin        , StrwinHelp        , StrwinOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Strbre"        , {Strbre        , StrbreHelp        , StrbreOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Strgal"        , {Strgal        , StrgalHelp        , StrgalOperators        , 1 , CDI_REAL , 1  , 1  });
+  add_module("Hurr"          , {Hurr          , HurrHelp          , HurrOperators          , 1 , CDI_REAL , 1  , 1  });
+  // add_module("Hi"         , { Hi           , {}                , HiOperators            , 1 , CDI_REAL , 3  , 1   });
+  add_module("Wct"           , {Wct           , WctHelp           , WctOperators           , 1 , CDI_REAL , 2  , 1  });
+  add_module("Magplot"       , {Magplot       , MagplotHelp       , MagplotOperators       , 1 , CDI_REAL , 1  , 1  });
+  add_module("Magvector"     , {Magvector     , MagvectorHelp     , MagvectorOperators     , 1 , CDI_REAL , 1  , 1  });
+  add_module("Maggraph"      , {Maggraph      , MaggraphHelp      , MaggraphOperators      , 1 , CDI_REAL , -1 , 1  });
+  // HIRLAM_EXTENSIONS
+  add_module( "Samplegrid"   , { Samplegrid   , SamplegridHelp    , SamplegridOperators    , 1 , CDI_REAL , 1  , 1 });
+  add_module( "Selmulti "    , { Selmulti     , SelmultiHelp      , SelmultiOperators      , 1 , CDI_REAL , 1  , 1 });
+  add_module( "WindTrans"    , { WindTrans    , WindTransHelp     , WindTransOperators     , 1 , CDI_REAL , 1  , 1 });
+
+  init_aliases();
+}
+
+/**
+ * Initializes all hardcoded aliases
+ */
+void init_aliases()
+{
+  add_alias("afterburner"     , "after");
+  add_alias("anomaly"         , "ymonsub");
+  add_alias("deltap_fl"       , "deltap");
+  add_alias("diffv"           , "diffn");
+  add_alias("covar0"          , "timcovar");
+  add_alias("covar0r"         , "fldcovar");
+  add_alias("gather"          , "collgrid");
+  add_alias("geopotheight"    , "gheight");
+  add_alias("globavg"         , "fldavg");
+  add_alias("import_grads"    , "import_binary");
+  add_alias("infos"           , "sinfo");
+  add_alias("infov"           , "infon");
+  add_alias("intgrid"         , "intgridbil");
+  add_alias("log"             , "ln");
+  add_alias("lmean"           , "ymonmean");
+  add_alias("lmmean"          , "ymonmean");
+  add_alias("lmavg"           , "ymonavg");
+  add_alias("lmstd"           , "ymonstd");
+  add_alias("lsmean"          , "yseasmean");
+  add_alias("chvar"           , "chname");
+  add_alias("nvar"            , "npar");
+  add_alias("outputkey"       , "outputtab");
+  add_alias("vardes"          , "codetab");
+  add_alias("pardes"          , "codetab");
+  add_alias("selvar"          , "selname");
+  add_alias("delvar"          , "delname");
+  add_alias("selindex"        , "selgridcell");
+  add_alias("remapcon1"       , "remaplaf");
+  add_alias("remapdis1"       , "remapnn");
+  add_alias("scatter"         , "distgrid");
+  add_alias("showvar"         , "showname");
+  add_alias("selgridname"     , "selgrid");
+  add_alias("setvar"          , "setname");
+  add_alias("setpartabv"      , "setpartabn");
+  add_alias("setpartab"       , "setcodetab");
+  add_alias("sinfov"          , "sinfon");
+  add_alias("sortvar"         , "sortname");
+  add_alias("splitvar"        , "splitname");
+  add_alias("sort"            , "timsort");
+  add_alias("eca_r1mm"        , "eca_rr1");
+  add_alias("fpressure"       , "pressure_fl");
+  add_alias("hpressure"       , "pressure_hl");
+  add_alias("ensrkhist_space" , "ensrkhistspace");
+  add_alias("ensrkhist_time"  , "ensrkhisttime");
+  add_alias("gridverify"      , "verifygrid");
+  add_alias("outputcenter"    , "gmtxyz");
+  add_alias("outputbounds"    , "gmtcells");
+  add_alias("selseas"         , "selseason");
+  add_alias("selmon"          , "selmonth");
+}
+/* clang-format on */
+
+/***
+ * returns the module of given operator
+ *
+ * parameters:
+ *      std::string operatorName -> name of the operator
+ * return value:
+ *      std::string -> name of the operators module
+ */
+static
+std::string get_module_name_to(std::string operatorName) {
+    // if not true the programm will exit in function check_operator
+    if (check_operator(operatorName)) {
+        if (modules_map.count(operatorName) > 0) {
+            return modules_map[operatorName];
+        } else if (aliases.count(operatorName) > 0) {
+            return modules_map[aliases[operatorName]];
+        }
+    } else {
+        // TODO: see if depricated since no operator can be added without a
+        // module
+        Error("Module for >%s< not installed", operatorName.c_str());
+    }
+    // Only to quell the warning. Function should never reach this.
+    return "";
+}
+
+/**
+ * @fn void *(*operatorModule(const char *operatorName))(void *)
+
+ * returns the function of the module of \a operatorName
+ * @param operatorName name of the operator
+ * @returns the function of the #modules_t of \a operatorName
+ */
+void *(*operatorModule(const char *operatorName))(void *) {
+    std::string operator_name = std::string(operatorName);
+    return modules[get_module_name_to(operator_name)].func;
+}
+
+/***
+ * returns help for given operator name
+ * if there is no help a empty vector will be returned
+ * @param operatorName operator name
+ * @return vector of strings containing the help
+ */
+std::vector<std::string> operatorHelp(std::string operatorName) {
+    std::string operator_name = std::string(operatorName);
+    return modules[get_module_name_to(operator_name)].help;
+}
+
+/*** 
+ * Returns the number of input streams a operator takes.
+ * returns -1 for a unlimited number of input streams.
+ * @param operatorName operator name
+ * @retval short
+ */
+int operatorStreamInCnt(const char *operatorName) {
+    std::string operator_name = std::string(operatorName);
+    return modules[get_module_name_to(operator_name)].streamInCnt;
+}
+
+/***
+ * Returns the number of output streams a given operator has.
+ * returns -1 if obase is used
+ * @param operatorName operator name
+ * @return 1 for CDI_REAL, 2 for CDI_COMP (complex), 3 for CDI_REAL and CDI_COMP
+ * @retval short
+ */
+int operatorStreamOutCnt(const char *operatorName) {
+    std::string operator_name = std::string(operatorName);
+    return modules[get_module_name_to(operator_name)].streamOutCnt;
+}
+
+/*** 
+ * Returns the number type this operator works with
+ * @param operatorName operator name
+ * @reval short
+ */
+int operatorStreamNumber(const char *operatorName) {
+    std::string operator_name = std::string(operatorName);
+    return modules[get_module_name_to(operator_name)].number;
+}
+
+/***
+ * Creates a sorted vector with all operator names and alisases excluding all modules that are
+ * marked as internal
+ * @return a sorted std::vector containing all operator names and aliases excluding all operators
+ * which modules are marked as internal
+ */
+static
+std::vector<std::string> get_sorted_operator_name_list() {
+
+    std::vector<std::string> names;
+    for (std::pair<std::string, std::string> operator_module_names_pair : modules_map) {
+        if (modules[operator_module_names_pair.second].mode == 1) {
+            names.push_back(operator_module_names_pair.first);
+        }
+    }
+    // adding operators names from alias_map
+    for (std::pair<std::string, std::string> alias : aliases) {
+        names.push_back(alias.first);
+    }
+    std::sort(names.begin(), names.end());
+    return names;
+}
+
+void operatorPrintAll(void) {
+    int number_of_chars = 0;
+    std::string tab = "   ";
+    int tab_width = tab.size();
+    // using a set because it sorts the operators alphabetically on its own
+    std::vector<std::string> sorted_operator_names = get_sorted_operator_name_list();
+
+    std::cout << tab;
+    for (auto operatorName : sorted_operator_names) {
+        if (number_of_chars > 85) {
+            number_of_chars = tab_width;
+            std::cerr << std::endl << tab;
+        }
+
+        std::cerr << " " << operatorName;
+        number_of_chars += 1 + operatorName.size();
+    }
+
+    std::cerr << std::endl;
+}
+
+#ifdef CUSTOM_MODULES
+/***
+  loads all custom modules in a specified folder
+  @param folder_path custom modules folder
+*/
+#ifdef CUSTOM_MODULES
+void load_custom_modules(std::string folder_path) {
+    DIR *dir = opendir(folder_path.c_str());
+    std::string file_path;
+    std::regex library_regex("(.*\\.so)");
+    if (dir != NULL) {
+        struct dirent *ent = readdir(dir);
+        while (ent != NULL) {
+            if (std::regex_match(ent->d_name, library_regex)) {
+                file_path = folder_path + "/" + ent->d_name;
+                load_custom_module(file_path);
+            }
+            ent = readdir(dir);
+        }
+    } else {
+        std::cerr << "Could not find " << folder_path << "for loading custom modules" << std::endl;
+    }
+}
+
+/***
+ * Loads a custom module from given path.
+ * Modules must contain a (TODO: rename function) init_custom_module function
+ * Program exits if a module could not be loaded.
+ * @param module file path
+ */
+void load_custom_module(std::string file_path) {
+    void (*init_custom_module)();
+    void *lib_handle = dlopen(file_path.c_str(), RTLD_LAZY);
+    custom_modules_lib_handles.push_back(lib_handle);
+    if (!lib_handle) {
+        std::cerr << "Cannot open library: " << dlerror() << std::endl;
+        return;
+    }
+
+    dlerror();
+    init_custom_module = (void (*)())dlsym(lib_handle, "init_custom_module");
+    const char *dlsym_error = dlerror();
+
+    if (dlsym_error) {
+        std::cerr << "Cannot load symbol 'init_custom_module': " << dlsym_error << std::endl;
+        dlclose(lib_handle);
+        return;
+    }
+
+    init_custom_module();
+    std::cout << "loaded custom module from '" << file_path << "'" << std::endl;
+}
+#endif
+/***
+  closes the handles for the loaded custum modules
+*/
+void close_library_handles() {
+    for (unsigned long i = 0; i < custom_modules_lib_handles.size(); i++) {
+        dlclose(custom_modules_lib_handles[i]);
+    }
+}
+#endif
+	
+// helper function for setting the spacing in operatorPrintList
+std::string get_spacing_for(std::string str) {
+    int max = 16;
+    std::string spacing = "";
+    for (int i = str.size(); i <= max; i++) {
+        spacing += " ";
+    }
+    return spacing;
+}
+/***
+ * Prints all operator names and their short descriptions
+ * Aliases are listed and point to their original operator name.
+ * If the module is not documented the description is empty
+ * If a module has only one operator the short module description is listed
+ * If the operator is not documented the description is empty
+ */
+void operatorPrintList(bool print_no_output) {
+    std::vector<std::string> output_list = get_sorted_operator_name_list();
+    std::vector<std::string> help;
+    unsigned long list_length = output_list.size();
+    unsigned long cur_help_idx;
+    std::string line;
+    std::string description;
+    bool help_contains_name;
+
+    for (unsigned long out_list_idx = 0; out_list_idx < list_length; out_list_idx++) {
+        std::string current_op_name = output_list[out_list_idx];
+        help = modules[get_module_name_to(current_op_name)].help;
+        if (aliases.find(current_op_name) != aliases.end()) {
+
+            output_list[out_list_idx] +=
+                std::string(get_spacing_for(current_op_name) + "--> " + aliases[current_op_name]);
+        }
+        else if (!help.empty()) {
+            description = "";
+
+            unsigned long operator_section = 0;
+            cur_help_idx = 0;
+            //search for operator section
+            while (operator_section == 0 && cur_help_idx < help.size() - 1) {
+                line = help[++cur_help_idx];
+                if (line.find("OPERATORS") != std::string::npos) {
+                    operator_section = cur_help_idx;
+                }
+            }
+            //if no operator section is found
+            if (operator_section == 0) {
+                cur_help_idx = 0;
+                line = help[0];
+                std::string name_section = help[0];
+                help_contains_name = false;
+                //search for the operator name in the description
+                while (!line.empty()) {
+                    line = help[++cur_help_idx];
+                    if (line.find(current_op_name) != std::string::npos) {
+                        help_contains_name = true;
+                    }
+                    name_section += line;
+                }
+                //if the name was found save description for later use
+                if (help_contains_name) {
+                    description = name_section.substr(name_section.find_first_of('-') + 2,
+                                                      name_section.size());
+                }
+            } else {
+
+                line = help[++operator_section];
+                //search the operator section for current operator line
+                while (line.find(current_op_name + " ") == std::string::npos && !line.empty() &&
+                       operator_section < help.size()) {
+                    line = help[++operator_section];
+                    ;
+                }
+                //if operator line found save description for later use
+                if (!line.empty() && operator_section < help.size()) {
+                    auto op_name_start = line.find_first_not_of(" \t");
+
+                    description = line.substr(
+                        line.find_first_not_of(" \t", op_name_start + current_op_name.size()),
+                        line.size());
+                }
+            }
+            //add spaceing and saving output line to the output list
+            output_list[out_list_idx] += get_spacing_for(current_op_name) + description;
+        }
+    }
+    //print generated output list
+    for (std::string str : output_list) {
+        std::cout << str << std::endl;
+    }
+}
+
+bool is_alias(char * operatorName)
+{
+    return (aliases.find(std::string(operatorName)) != aliases.end());
+}
+
+void get_original(char * operatorName)
+{
+    if(is_alias(operatorName)){
+        std::string opName = aliases[std::string(operatorName)];
+        operatorName = (char*)realloc(operatorName, opName.size());
+        strcpy(operatorName, opName.c_str());
+    }
+    else{
+        Error("%s is not an alias", operatorName);
+    }
+}
diff --git a/src/modules.h b/src/modules.h
index 1881a58..93a4de6 100644
--- a/src/modules.h
+++ b/src/modules.h
@@ -1,34 +1,82 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
 
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
+  /***
 
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
+   Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+   See COPYING file for copying and redistribution conditions.
 
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; version 2 of the License.
 
-#ifndef _MODULES_H
-#define _MODULES_H
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+ */
 
+#ifndef MODULES_H
+#define MODULES_H
+
+#include <iostream>
+#include <map>
 #include <stdbool.h>
+#include <vector>
+
+/***
+  type definition for module functions loaded from a custom module
+  */
+typedef void (*dyn_oper_t)(void *arg);
+
+typedef struct {
+    void *(*func)(void *);               // Module
+    std::vector<std::string> help;       // Help
+    std::vector<const char *> operators; // Operator names
+    short mode;                          // Module mode: 0:intern 1:extern
+    short number;                        // Allowed number type
+    short streamInCnt;                   // Number of input streams
+    short streamOutCnt;                  // Number of output streams
+} modules_t;
+
+
+/***
+  vector for library handles for loaded custom modules
+  */
+static std::vector<void *> custom_modules_lib_handles;
+
+/***
+  Maps operator names to their module names
+ */
+static std::map<std::string, std::string> modules_map;
+
+/***
+  Contains added modules as values and their names as key
+  */
+static std::map<std::string, modules_t> modules;
+
+/***
+  Key: operator alias / Value: operator original name
+ */
+static std::map<std::string, std::string> aliases;
 
+void *(*operatorModule(std::string operatorName))(void *);
 void *(*operatorModule(const char *operatorName))(void *);
+void init_modules();
 
-const char **operatorHelp(const char *operatorName);
+void init_aliases();
 
+std::vector<std::string> operatorHelp(std::string operatorName);
 int operatorStreamInCnt(const char *operatorName);
 int operatorStreamOutCnt(const char *operatorName);
 int operatorStreamNumber(const char *operatorName);
 
 void operatorPrintAll(void);
 void operatorPrintList(bool print_no_output);
+bool is_alias(char * operatorName);
+void get_original(char* operatorName);
+#ifdef CUSTOM_MODULES
+void load_custom_module(std::string path);
+void load_custom_modules(std::string folder_path);
+void close_library_handles();
+#endif
 
-#endif  /* _MODULES_H */
+#endif /* MODULES_H */
diff --git a/src/namelist.c b/src/namelist.cc
similarity index 99%
rename from src/namelist.c
rename to src/namelist.cc
index ac5e24c..7d0a2ab 100644
--- a/src/namelist.c
+++ b/src/namelist.cc
@@ -163,9 +163,8 @@ int namelist_parse_string(namelist_parser *parser, const char *buf, size_t len,
     }
   
   parser->pos = start;
-  return NAMELIST_ERROR_PART;
 
-  return 0;
+  return NAMELIST_ERROR_PART;
 }
 
 static
@@ -184,7 +183,6 @@ int namelist_check_keyname(const char *buf, namelisttok_t *t)
       break;
     default:
       return NAMELIST_ERROR_INTYP;
-      break;
     }
   
   return 0;
diff --git a/src/namelist_parser.c b/src/namelist_parser.cc
similarity index 100%
rename from src/namelist_parser.c
rename to src/namelist_parser.cc
diff --git a/src/normal.c b/src/normal.cc
similarity index 100%
rename from src/normal.c
rename to src/normal.cc
diff --git a/src/nth_element.c b/src/nth_element.cc
similarity index 100%
rename from src/nth_element.c
rename to src/nth_element.cc
diff --git a/src/operator_help.h b/src/operator_help.h
index 65438e0..9d05973 100644
--- a/src/operator_help.h
+++ b/src/operator_help.h
@@ -1,6 +1,6 @@
 /* Automatically created with makedoc, don't edit! */
 
-static const char *InfoHelp[] = {
+std::vector<std::string> InfoHelp = {
     "NAME",
     "    info, infon, map - Information and simple statistics",
     "",
@@ -29,10 +29,9 @@ static const char *InfoHelp[] = {
     "    map    Dataset information and simple map",
     "           Prints information, simple statistics and a map for each field of all input",
     "           datasets. The map will be printed only for fields on a regular lon/lat grid.",
-    NULL
 };
 
-static const char *SinfoHelp[] = {
+std::vector<std::string> SinfoHelp = {
     "NAME",
     "    sinfo, sinfon - Short information",
     "",
@@ -61,10 +60,9 @@ static const char *SinfoHelp[] = {
     "    sinfon  Short information listed by parameter name",
     "            The same as operator sinfo but using the name instead of the ",
     "            identifier to label the parameter.",
-    NULL
 };
 
-static const char *DiffHelp[] = {
+std::vector<std::string> DiffHelp = {
     "NAME",
     "    diff, diffn - Compare two datasets field by field",
     "",
@@ -90,10 +88,9 @@ static const char *DiffHelp[] = {
     "    diffn  Compare two datasets listed by parameter name",
     "           The same as operator diff. Using the name instead of the",
     "           identifier to label the parameter.",
-    NULL
 };
 
-static const char *NinfoHelp[] = {
+std::vector<std::string> NinfoHelp = {
     "NAME",
     "    npar, nlevel, nyear, nmon, ndate, ntime, ngridpoints, ngrids - ",
     "    Print the number of parameters, levels or times",
@@ -122,10 +119,9 @@ static const char *NinfoHelp[] = {
     "                 Prints the number of gridpoints for each variable.",
     "    ngrids       Number of horizontal grids",
     "                 Prints the number of horizontal grids.",
-    NULL
 };
 
-static const char *ShowinfoHelp[] = {
+std::vector<std::string> ShowinfoHelp = {
     "NAME",
     "    showformat, showcode, showname, showstdname, showlevel, showltype, showyear, ",
     "    showmon, showdate, showtime, showtimestamp - Show variables, levels or times",
@@ -159,10 +155,9 @@ static const char *ShowinfoHelp[] = {
     "                   Prints time information of all timesteps (format hh:mm:ss).",
     "    showtimestamp  Show timestamp",
     "                   Prints timestamp of all timesteps (format YYYY-MM-DDThh:mm:ss).",
-    NULL
 };
 
-static const char *FiledesHelp[] = {
+std::vector<std::string> FiledesHelp = {
     "NAME",
     "    partab, codetab, griddes, zaxisdes, vct - Dataset description",
     "",
@@ -186,10 +181,9 @@ static const char *FiledesHelp[] = {
     "              Prints the description of all z-axes.",
     "    vct       Vertical coordinate table",
     "              Prints the vertical coordinate table.",
-    NULL
 };
 
-static const char *CopyHelp[] = {
+std::vector<std::string> CopyHelp = {
     "NAME",
     "    copy, cat - Copy datasets",
     "",
@@ -207,10 +201,9 @@ static const char *CopyHelp[] = {
     "    cat   Concatenate datasets",
     "          Concatenates all input datasets and appends the result to the end ",
     "          of outfile. If outfile does not exist it will be created.",
-    NULL
 };
 
-static const char *ReplaceHelp[] = {
+std::vector<std::string> ReplaceHelp = {
     "NAME",
     "    replace - Replace variables",
     "",
@@ -220,10 +213,9 @@ static const char *ReplaceHelp[] = {
     "DESCRIPTION",
     "    The replace operator replaces variables in infile1 by variables from infile2 and write",
     "    the result to outfile. Both input datasets need to have the same number of timesteps.",
-    NULL
 };
 
-static const char *DuplicateHelp[] = {
+std::vector<std::string> DuplicateHelp = {
     "NAME",
     "    duplicate - Duplicates a dataset",
     "",
@@ -236,10 +228,9 @@ static const char *DuplicateHelp[] = {
     "",
     "PARAMETER",
     "    ndup  INTEGER  Number of duplicates, default is 2.",
-    NULL
 };
 
-static const char *MergegridHelp[] = {
+std::vector<std::string> MergegridHelp = {
     "NAME",
     "    mergegrid - Merge grid",
     "",
@@ -252,10 +243,9 @@ static const char *MergegridHelp[] = {
     "    be smaller or equal to the grid of infile1 and the resolution must be the same.",
     "    Only rectilinear grids are supported. Both input files need to have the same variables ",
     "    and the same number of timesteps.",
-    NULL
 };
 
-static const char *MergeHelp[] = {
+std::vector<std::string> MergeHelp = {
     "NAME",
     "    merge, mergetime - Merge datasets",
     "",
@@ -287,10 +277,9 @@ static const char *MergeHelp[] = {
     "NOTE",
     "    The operators in this module need to open all input files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *SplitHelp[] = {
+std::vector<std::string> SplitHelp = {
     "NAME",
     "    splitcode, splitparam, splitname, splitlevel, splitgrid, splitzaxis, ",
     "    splittabnum - Split a dataset",
@@ -340,10 +329,9 @@ static const char *SplitHelp[] = {
     "NOTE",
     "    The operators in this module need to open all output files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *SplittimeHelp[] = {
+std::vector<std::string> SplittimeHelp = {
     "NAME",
     "    splithour, splitday, splitseas, splityear, splityearmon, splitmon - ",
     "    Split timesteps of a dataset",
@@ -389,10 +377,9 @@ static const char *SplittimeHelp[] = {
     "NOTE",
     "    The operators in this module need to open all output files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *SplitselHelp[] = {
+std::vector<std::string> SplitselHelp = {
     "NAME",
     "    splitsel - Split selected timesteps",
     "",
@@ -415,10 +402,9 @@ static const char *SplitselHelp[] = {
     "        Set the default file suffix. This suffix will be added to the output file ",
     "        names instead of the filename extension derived from the file format. ",
     "        Set this variable to NULL to disable the adding of a file suffix.",
-    NULL
 };
 
-static const char *DistgridHelp[] = {
+std::vector<std::string> DistgridHelp = {
     "NAME",
     "    distgrid - Distribute horizontal grid",
     "",
@@ -440,10 +426,9 @@ static const char *DistgridHelp[] = {
     "NOTE",
     "    This operator needs to open all output files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *CollgridHelp[] = {
+std::vector<std::string> CollgridHelp = {
     "NAME",
     "    collgrid - Collect horizontal grid",
     "",
@@ -463,10 +448,9 @@ static const char *CollgridHelp[] = {
     "NOTE",
     "    This operator needs to open all input files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *SelectHelp[] = {
+std::vector<std::string> SelectHelp = {
     "NAME",
     "    select, delete - Select fields",
     "",
@@ -510,10 +494,9 @@ static const char *SelectHelp[] = {
     "    timestep          INTEGER Comma separated list of timesteps. Negative values selects timesteps from the end (NetCDF only).",
     "    timestep_of_year  INTEGER Comma separated list of timesteps of year.",
     "    timestepmask      STRING  Read timesteps from a mask file.",
-    NULL
 };
 
-static const char *SelmultiHelp[] = {
+std::vector<std::string> SelmultiHelp = {
     "NAME",
     "    selmulti, delmulti, changemulti - Select multiple fields via GRIB1 parameters",
     "",
@@ -560,10 +543,9 @@ static const char *SelmultiHelp[] = {
     "    selmulti     Select multiple fields",
     "    delmulti     Delete multiple fields",
     "    changemulti  Change identication of multiple fields",
-    NULL
 };
 
-static const char *SelvarHelp[] = {
+std::vector<std::string> SelvarHelp = {
     "NAME",
     "    selparam, delparam, selcode, delcode, selname, delname, selstdname, sellevel, ",
     "    sellevidx, selgrid, selzaxis, selzaxisname, selltype, seltabnum - Select fields",
@@ -629,10 +611,9 @@ static const char *SelvarHelp[] = {
     "    zaxes       STRING   Comma separated list of z-axis types or numbers",
     "    zaxisnames  STRING   Comma separated list of z-axis names",
     "    tabnums     INTEGER  Comma separated list of parameter table numbers",
-    NULL
 };
 
-static const char *SeltimeHelp[] = {
+std::vector<std::string> SeltimeHelp = {
     "NAME",
     "    seltimestep, seltime, selhour, selday, selmonth, selyear, selseason, seldate, ",
     "    selsmon - Select timesteps",
@@ -684,10 +665,9 @@ static const char *SeltimeHelp[] = {
     "    date2      STRING   End date (format YYYY-MM-DDThh:mm:ss) [default: date1].",
     "    nts1       INTEGER  Number of timesteps before the selected month [default: 0].",
     "    nts2       INTEGER  Number of timesteps after the selected month [default: nts1].",
-    NULL
 };
 
-static const char *SelboxHelp[] = {
+std::vector<std::string> SelboxHelp = {
     "NAME",
     "    sellonlatbox, selindexbox - Select a box of a field",
     "",
@@ -716,10 +696,9 @@ static const char *SelboxHelp[] = {
     "    idx2  INTEGER  Index of last longitude (1 - nlon)",
     "    idy1  INTEGER  Index of first latitude (1 - nlat)",
     "    idy2  INTEGER  Index of last latitude (1 - nlat)",
-    NULL
 };
 
-static const char *SelgridcellHelp[] = {
+std::vector<std::string> SelgridcellHelp = {
     "NAME",
     "    selgridcell, delgridcell - Select grid cells",
     "",
@@ -736,10 +715,9 @@ static const char *SelgridcellHelp[] = {
     "",
     "PARAMETER",
     "    indexes  INTEGER  Comma separated list of indexes",
-    NULL
 };
 
-static const char *SamplegridHelp[] = {
+std::vector<std::string> SamplegridHelp = {
     "NAME",
     "    samplegrid - Resample grid",
     "",
@@ -753,10 +731,9 @@ static const char *SamplegridHelp[] = {
     "",
     "PARAMETER",
     "    factor  INTEGER  Resample factor, typically 2, which will half the resolution",
-    NULL
 };
 
-static const char *CondHelp[] = {
+std::vector<std::string> CondHelp = {
     "NAME",
     "    ifthen, ifnotthen - Conditional select one field",
     "",
@@ -780,10 +757,9 @@ static const char *CondHelp[] = {
     "                        / i_2(t,x) if i_1([t,]x) EQ 0  AND  i_1([t,]x) NE miss",
     "               o(t,x) = ",
     "                        \\ miss     if i_1([t,]x) NE 0  OR   i_1([t,]x) EQ miss",
-    NULL
 };
 
-static const char *Cond2Help[] = {
+std::vector<std::string> Cond2Help = {
     "NAME",
     "    ifthenelse - Conditional select  two fields",
     "",
@@ -802,10 +778,9 @@ static const char *Cond2Help[] = {
     "              / i_2(t,x) if i_1([t,]x) NE 0  AND  i_1([t,]x) NE miss",
     "    o(t,x) = <  i_3(t,x) if i_1([t,]x) EQ 0  AND  i_1([t,]x) NE miss",
     "              \\ miss     if i_1([t,]x) EQ miss",
-    NULL
 };
 
-static const char *CondcHelp[] = {
+std::vector<std::string> CondcHelp = {
     "NAME",
     "    ifthenc, ifnotthenc - Conditional select a constant",
     "",
@@ -829,10 +804,9 @@ static const char *CondcHelp[] = {
     "",
     "PARAMETER",
     "    c  FLOAT  Constant",
-    NULL
 };
 
-static const char *MapReduceHelp[] = {
+std::vector<std::string> MapReduceHelp = {
     "NAME",
     "    reducegrid - Reduce fields to user-defined mask",
     "",
@@ -848,10 +822,9 @@ static const char *MapReduceHelp[] = {
     "PARAMETER",
     "    mask               STRING file which holds the mask field",
     "    limitCoordsOutput  STRING optional parameter to limit coordinates output: 'nobounds' disables coordinate bounds, 'nocoords' avoids all coordinate information",
-    NULL
 };
 
-static const char *CompHelp[] = {
+std::vector<std::string> CompHelp = {
     "NAME",
     "    eq, ne, le, lt, ge, gt - Comparison of two fields",
     "",
@@ -891,10 +864,9 @@ static const char *CompHelp[] = {
     "                  /   1   if i_1(t,x) GT i_2(t,x)  AND  i_1(t,x),i_2(t,x) NE miss",
     "        o(t,x) = <    0   if i_1(t,x) LE i_2(t,x)  AND  i_1(t,x),i_2(t,x) NE miss",
     "                  \\  miss if i_1(t,x) EQ miss      OR   i_2(t,x) EQ miss",
-    NULL
 };
 
-static const char *CompcHelp[] = {
+std::vector<std::string> CompcHelp = {
     "NAME",
     "    eqc, nec, lec, ltc, gec, gtc - Comparison of a field with a constant",
     "",
@@ -934,10 +906,9 @@ static const char *CompcHelp[] = {
     "",
     "PARAMETER",
     "    c  FLOAT  Constant",
-    NULL
 };
 
-static const char *SetattributeHelp[] = {
+std::vector<std::string> SetattributeHelp = {
     "NAME",
     "    setattribute - Set attributes",
     "",
@@ -969,10 +940,9 @@ static const char *SetattributeHelp[] = {
     "",
     "PARAMETER",
     "    attributes  STRING  Comma separated list of attributes. ",
-    NULL
 };
 
-static const char *SetpartabHelp[] = {
+std::vector<std::string> SetpartabHelp = {
     "NAME",
     "    setpartabp, setpartabn - Set parameter table",
     "",
@@ -1020,10 +990,9 @@ static const char *SetpartabHelp[] = {
     "PARAMETER",
     "    table    STRING   Parameter table file or name",
     "    convert  STRING   Converts the units if necessary",
-    NULL
 };
 
-static const char *SetHelp[] = {
+std::vector<std::string> SetHelp = {
     "NAME",
     "    setcodetab, setcode, setparam, setname, setunit, setlevel, setltype - ",
     "    Set field info",
@@ -1064,10 +1033,9 @@ static const char *SetHelp[] = {
     "    name   STRING   Variable name",
     "    level  FLOAT    New level",
     "    ltype  INTEGER  GRIB level type",
-    NULL
 };
 
-static const char *SettimeHelp[] = {
+std::vector<std::string> SettimeHelp = {
     "NAME",
     "    setdate, settime, setday, setmon, setyear, settunits, settaxis, settbounds, ",
     "    setreftime, setcalendar, shifttime - Set time",
@@ -1121,13 +1089,12 @@ static const char *SettimeHelp[] = {
     "    date       STRING   Date (format: YYYY-MM-DD)",
     "    time       STRING   Time (format: hh:mm:ss)",
     "    inc        STRING   Optional increment (seconds, minutes, hours, days, months, years) [default: 1hour]",
-    "    frequency  STRING   Frequency of the time series (day, month, year)",
+    "    frequency  STRING   Frequency of the time series (hour, day, month, year)",
     "    calendar   STRING   Calendar (standard, proleptic_gregorian, 360_day, 365_day, 366_day)",
     "    sval       STRING   Shift value (e.g. -3hour)",
-    NULL
 };
 
-static const char *ChangeHelp[] = {
+std::vector<std::string> ChangeHelp = {
     "NAME",
     "    chcode, chparam, chname, chunit, chlevel, chlevelc, chlevelv - ",
     "    Change field header",
@@ -1171,10 +1138,9 @@ static const char *ChangeHelp[] = {
     "    oldlev                 FLOAT    Old level",
     "    newlev                 FLOAT    New level",
     "    oldlev,newlev,...      FLOAT    Pairs of old and new levels",
-    NULL
 };
 
-static const char *SetgridHelp[] = {
+std::vector<std::string> SetgridHelp = {
     "NAME",
     "    setgrid, setgridtype, setgridarea - Set grid information",
     "",
@@ -1210,10 +1176,9 @@ static const char *SetgridHelp[] = {
     "    grid      STRING  Grid description file or name",
     "    gridtype  STRING  Grid type (curvilinear, unstructured, regular, lonlat or dereference)",
     "    gridarea  STRING  Data file, the first field is used as grid cell area",
-    NULL
 };
 
-static const char *SetzaxisHelp[] = {
+std::vector<std::string> SetzaxisHelp = {
     "NAME",
     "    setzaxis, genlevelbounds - Set z-axis information",
     "",
@@ -1234,10 +1199,9 @@ static const char *SetzaxisHelp[] = {
     "    zaxis  STRING  Z-axis description file or name of the target z-axis",
     "    zbot   FLOAT   Specifying the bottom of the vertical column. Must have the same units as z-axis. ",
     "    ztop   FLOAT   Specifying the top of the vertical column. Must have the same units as z-axis. ",
-    NULL
 };
 
-static const char *InvertHelp[] = {
+std::vector<std::string> InvertHelp = {
     "NAME",
     "    invertlat - Invert latitudes",
     "",
@@ -1246,10 +1210,9 @@ static const char *InvertHelp[] = {
     "",
     "DESCRIPTION",
     "    This operator inverts the latitudes of all fields on a rectilinear grid. ",
-    NULL
 };
 
-static const char *InvertlevHelp[] = {
+std::vector<std::string> InvertlevHelp = {
     "NAME",
     "    invertlev - Invert levels",
     "",
@@ -1258,10 +1221,9 @@ static const char *InvertlevHelp[] = {
     "",
     "DESCRIPTION",
     "    This operator inverts the levels of all 3D variables.",
-    NULL
 };
 
-static const char *ShiftxyHelp[] = {
+std::vector<std::string> ShiftxyHelp = {
     "NAME",
     "    shiftx, shifty - Shift field",
     "",
@@ -1282,10 +1244,9 @@ static const char *ShiftxyHelp[] = {
     "    nshift  INTEGER  Number of grid cells to shift (default: 1)",
     "    cyclic  STRING   If set, cells are filled up cyclic (default: missing value)",
     "    coord   STRING   If set, coordinates are also shifted",
-    NULL
 };
 
-static const char *MaskregionHelp[] = {
+std::vector<std::string> MaskregionHelp = {
     "NAME",
     "    maskregion - Mask regions",
     "",
@@ -1305,10 +1266,9 @@ static const char *MaskregionHelp[] = {
     "",
     "PARAMETER",
     "    regions  STRING Comma separated list of ASCII formatted files with different regions",
-    NULL
 };
 
-static const char *MaskboxHelp[] = {
+std::vector<std::string> MaskboxHelp = {
     "NAME",
     "    masklonlatbox, maskindexbox - Mask a box",
     "",
@@ -1338,10 +1298,9 @@ static const char *MaskboxHelp[] = {
     "    idx2  INTEGER  Index of last longitude",
     "    idy1  INTEGER  Index of first latitude",
     "    idy2  INTEGER  Index of last latitude",
-    NULL
 };
 
-static const char *SetboxHelp[] = {
+std::vector<std::string> SetboxHelp = {
     "NAME",
     "    setclonlatbox, setcindexbox - Set a box to constant",
     "",
@@ -1373,10 +1332,9 @@ static const char *SetboxHelp[] = {
     "    idx2  INTEGER  Index of last longitude",
     "    idy1  INTEGER  Index of first latitude",
     "    idy2  INTEGER  Index of last latitude",
-    NULL
 };
 
-static const char *EnlargeHelp[] = {
+std::vector<std::string> EnlargeHelp = {
     "NAME",
     "    enlarge - Enlarge fields",
     "",
@@ -1393,10 +1351,9 @@ static const char *EnlargeHelp[] = {
     "",
     "PARAMETER",
     "    grid  STRING  Target grid description file or name",
-    NULL
 };
 
-static const char *SetmissHelp[] = {
+std::vector<std::string> SetmissHelp = {
     "NAME",
     "    setmissval, setctomiss, setmisstoc, setrtomiss, setvrange, setmisstonn, ",
     "    setmisstodis - Set missing value",
@@ -1451,10 +1408,9 @@ static const char *SetmissHelp[] = {
     "    c          FLOAT    Constant",
     "    rmin       FLOAT    Lower bound",
     "    rmax       FLOAT    Upper bound",
-    NULL
 };
 
-static const char *ExprHelp[] = {
+std::vector<std::string> ExprHelp = {
     "NAME",
     "    expr, exprf, aexpr, aexprf - Evaluate expressions",
     "",
@@ -1560,10 +1516,9 @@ static const char *ExprHelp[] = {
     "NOTE",
     "    The expr commands sellevel(x,k) and sellevidx(x,k) are only available with exprf/aexprf.",
     "    If the input stream contains duplicate entries of the same variable name then the last one is used.",
-    NULL
 };
 
-static const char *MathHelp[] = {
+std::vector<std::string> MathHelp = {
     "NAME",
     "    abs, int, nint, pow, sqr, sqrt, exp, ln, log10, sin, cos, tan, asin, acos, ",
     "    atan, reci - Mathematical functions",
@@ -1608,10 +1563,9 @@ static const char *MathHelp[] = {
     "           o(t,x) = atan(i(t,x))",
     "    reci   Reciprocal value",
     "           o(t,x) = 1 / i(t,x)",
-    NULL
 };
 
-static const char *ArithcHelp[] = {
+std::vector<std::string> ArithcHelp = {
     "NAME",
     "    addc, subc, mulc, divc - Arithmetic with a constant",
     "",
@@ -1634,10 +1588,9 @@ static const char *ArithcHelp[] = {
     "",
     "PARAMETER",
     "    c  FLOAT  Constant",
-    NULL
 };
 
-static const char *ArithHelp[] = {
+std::vector<std::string> ArithHelp = {
     "NAME",
     "    add, sub, mul, div, min, max, atan2 - Arithmetic on two datasets",
     "",
@@ -1668,10 +1621,9 @@ static const char *ArithHelp[] = {
     "           in radians, which is between -PI and PI (inclusive).",
     "           ",
     "           o(t,x) = atan2(i_1(t,x), i_2(t,x))",
-    NULL
 };
 
-static const char *MonarithHelp[] = {
+std::vector<std::string> MonarithHelp = {
     "NAME",
     "    monadd, monsub, monmul, mondiv - Monthly arithmetic",
     "",
@@ -1695,10 +1647,9 @@ static const char *MonarithHelp[] = {
     "            Multiplies a time series and a monthly time series.",
     "    mondiv  Divide monthly time series",
     "            Divides a time series and a monthly time series.",
-    NULL
 };
 
-static const char *YhourarithHelp[] = {
+std::vector<std::string> YhourarithHelp = {
     "NAME",
     "    yhouradd, yhoursub, yhourmul, yhourdiv - Multi-year hourly arithmetic",
     "",
@@ -1722,10 +1673,9 @@ static const char *YhourarithHelp[] = {
     "              Multiplies a time series and a multi-year hourly time series.",
     "    yhourdiv  Divide multi-year hourly time series",
     "              Divides a time series and a multi-year hourly time series.",
-    NULL
 };
 
-static const char *YdayarithHelp[] = {
+std::vector<std::string> YdayarithHelp = {
     "NAME",
     "    ydayadd, ydaysub, ydaymul, ydaydiv - Multi-year daily arithmetic",
     "",
@@ -1749,10 +1699,9 @@ static const char *YdayarithHelp[] = {
     "             Multiplies a time series and a multi-year daily time series.",
     "    ydaydiv  Divide multi-year daily time series",
     "             Divides a time series and a multi-year daily time series.",
-    NULL
 };
 
-static const char *YmonarithHelp[] = {
+std::vector<std::string> YmonarithHelp = {
     "NAME",
     "    ymonadd, ymonsub, ymonmul, ymondiv - Multi-year monthly arithmetic",
     "",
@@ -1775,10 +1724,9 @@ static const char *YmonarithHelp[] = {
     "             Multiplies a time series and a multi-year monthly time series.",
     "    ymondiv  Divide multi-year monthly time series",
     "             Divides a time series and a multi-year monthly time series.",
-    NULL
 };
 
-static const char *YseasarithHelp[] = {
+std::vector<std::string> YseasarithHelp = {
     "NAME",
     "    yseasadd, yseassub, yseasmul, yseasdiv - Multi-year seasonal arithmetic",
     "",
@@ -1801,10 +1749,9 @@ static const char *YseasarithHelp[] = {
     "              Multiplies a time series and a multi-year seasonal time series.",
     "    yseasdiv  Divide multi-year seasonal time series",
     "              Divides a time series and a multi-year seasonal time series.",
-    NULL
 };
 
-static const char *ArithdaysHelp[] = {
+std::vector<std::string> ArithdaysHelp = {
     "NAME",
     "    muldpm, divdpm, muldpy, divdpy - Arithmetic with days",
     "",
@@ -1825,10 +1772,9 @@ static const char *ArithdaysHelp[] = {
     "            o(t,x) = i(t,x) * days_per_year",
     "    divdpy  Divide by days per year",
     "            o(t,x) = i(t,x) / days_per_year",
-    NULL
 };
 
-static const char *TimcumsumHelp[] = {
+std::vector<std::string> TimcumsumHelp = {
     "NAME",
     "    timcumsum - Cumulative sum over all timesteps",
     "",
@@ -1840,10 +1786,9 @@ static const char *TimcumsumHelp[] = {
     "    Missing values are treated as numeric zero when summing.",
     "    ",
     "    o(t,x) = sum{i(t',x), 0<t'<=t}",
-    NULL
 };
 
-static const char *ConsecstatHelp[] = {
+std::vector<std::string> ConsecstatHelp = {
     "NAME",
     "    consecsum, consects - Consecute timestep periods",
     "",
@@ -1867,13 +1812,12 @@ static const char *ConsecstatHelp[] = {
     "               In contrast to the operator above consects only computes the lenght of each",
     "               period together with its last timestep. To be able to perform statistical",
     "               analysis like min, max or mean, everything else is set to missing value.",
-    NULL
 };
 
-static const char *EnsstatHelp[] = {
+std::vector<std::string> EnsstatHelp = {
     "NAME",
-    "    ensmin, ensmax, enssum, ensmean, ensavg, ensstd, ensstd1, ensvar, ensvar1, ",
-    "    enspctl - Statistical values over an ensemble",
+    "    ensmin, ensmax, ensrange, enssum, ensmean, ensavg, ensstd, ensstd1, ensvar, ",
+    "    ensvar1, enspctl - Statistical values over an ensemble",
     "",
     "SYNOPSIS",
     "    <operator>  infiles outfile",
@@ -1881,41 +1825,43 @@ static const char *EnsstatHelp[] = {
     "",
     "DESCRIPTION",
     "    This module computes statistical values over an ensemble of input files.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance,",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance,",
     "    standard deviation or a certain percentile over all input files is written",
     "    to outfile.",
     "    All input files need to have the same structure with the same variables.",
     "    The date information of a timestep in outfile is the date of the first input file.",
     "",
     "OPERATORS",
-    "    ensmin   Ensemble minimum",
-    "             o(t,x) = min{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensmax   Ensemble maximum",
-    "             o(t,x) = max{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    enssum   Ensemble sum",
-    "             o(t,x) = sum{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensmean  Ensemble mean",
-    "             o(t,x) = mean{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensavg   Ensemble average",
-    "             o(t,x) = avg{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensstd   Ensemble standard deviation",
-    "             Normalize by n.",
-    "             ",
-    "             o(t,x) = std{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensstd1  Ensemble standard deviation (n-1)",
-    "             Normalize by (n-1).",
-    "             ",
-    "             o(t,x) = std1{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensvar   Ensemble variance",
-    "             Normalize by n.",
-    "             ",
-    "             o(t,x) = var{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    ensvar1  Ensemble variance (n-1)",
-    "             Normalize by (n-1).",
-    "             ",
-    "             o(t,x) = var1{i1(t,x), i2(t,x), ..., in(t,x)}",
-    "    enspctl  Ensemble percentiles",
-    "             o(t,x) = pth percentile {i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensmin    Ensemble minimum",
+    "              o(t,x) = min{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensmax    Ensemble maximum",
+    "              o(t,x) = max{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensrange  Ensemble range",
+    "              o(t,x) = range{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    enssum    Ensemble sum",
+    "              o(t,x) = sum{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensmean   Ensemble mean",
+    "              o(t,x) = mean{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensavg    Ensemble average",
+    "              o(t,x) = avg{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensstd    Ensemble standard deviation",
+    "              Normalize by n.",
+    "              ",
+    "              o(t,x) = std{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensstd1   Ensemble standard deviation (n-1)",
+    "              Normalize by (n-1).",
+    "              ",
+    "              o(t,x) = std1{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensvar    Ensemble variance",
+    "              Normalize by n.",
+    "              ",
+    "              o(t,x) = var{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    ensvar1   Ensemble variance (n-1)",
+    "              Normalize by (n-1).",
+    "              ",
+    "              o(t,x) = var1{i1(t,x), i2(t,x), ..., in(t,x)}",
+    "    enspctl   Ensemble percentiles",
+    "              o(t,x) = pth percentile {i1(t,x), i2(t,x), ..., in(t,x)}",
     "",
     "PARAMETER",
     "    p  FLOAT  Percentile number in {0, ..., 100}",
@@ -1923,10 +1869,9 @@ static const char *EnsstatHelp[] = {
     "NOTE",
     "    This operator needs to open all input files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *Ensstat2Help[] = {
+std::vector<std::string> Ensstat2Help = {
     "NAME",
     "    ensrkhistspace, ensrkhisttime, ensroc - Statistical values over an ensemble",
     "",
@@ -1963,10 +1908,9 @@ static const char *Ensstat2Help[] = {
     "    ensrkhistspace  Ranked Histogram averaged over time",
     "    ensrkhisttime   Ranked Histogram averaged over space",
     "    ensroc          Ensemble Receiver Operating characteristics",
-    NULL
 };
 
-static const char *EnsvalHelp[] = {
+std::vector<std::string> EnsvalHelp = {
     "NAME",
     "    enscrps, ensbrs - Ensemble validation tools",
     "",
@@ -2026,13 +1970,12 @@ static const char *EnsvalHelp[] = {
     "    enscrps  Ensemble CRPS and decomposition",
     "    ensbrs   Ensemble Brier score",
     "             Ensemble Brier Score and Decomposition",
-    NULL
 };
 
-static const char *FldstatHelp[] = {
+std::vector<std::string> FldstatHelp = {
     "NAME",
-    "    fldmin, fldmax, fldsum, fldmean, fldavg, fldstd, fldstd1, fldvar, fldvar1, ",
-    "    fldpctl - Statistical values over a field",
+    "    fldmin, fldmax, fldrange, fldsum, fldmean, fldavg, fldstd, fldstd1, fldvar, ",
+    "    fldvar1, fldpctl - Statistical values over a field",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
@@ -2040,66 +1983,69 @@ static const char *FldstatHelp[] = {
     "",
     "DESCRIPTION",
     "    This module computes statistical values of the input fields. According to the chosen ",
-    "    operator the field minimum, maximum, sum, average, variance, standard deviation or ",
+    "    operator the field minimum, maximum, range, sum, average, variance, standard deviation or ",
     "    a certain percentile is written to outfile.",
     "",
     "OPERATORS",
-    "    fldmin   Field minimum",
-    "             For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = min{i(t,x'), x_1<x'<=x_n}",
-    "    fldmax   Field maximum",
-    "             For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = max{i(t,x'), x_1<x'<=x_n}",
-    "    fldsum   Field sum",
-    "             For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = sum{i(t,x'), x_1<x'<=x_n}",
-    "    fldmean  Field mean",
-    "             For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = mean{i(t,x'), x_1<x'<=x_n}",
-    "             weighted by area weights obtained by the input field.",
-    "    fldavg   Field average",
-    "             For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = avg{i(t,x'), x_1<x'<=x_n}",
-    "             weighted by area weights obtained by the input field.",
-    "    fldstd   Field standard deviation",
-    "             Normalize by n. For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = std{i(t,x'), x_1<x'<=x_n}",
-    "             weighted by area weights obtained by the input field.",
-    "    fldstd1  Field standard deviation (n-1)",
-    "             Normalize by (n-1). For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = std1{i(t,x'), x_1<x'<=x_n}",
-    "             weighted by area weights obtained by the input field.",
-    "    fldvar   Field variance",
-    "             Normalize by n. For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = var{i(t,x'), x_1<x'<=x_n}",
-    "             weighted by area weights obtained by the input field.",
-    "    fldvar1  Field variance (n-1)",
-    "             Normalize by (n-1). For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = var1{i(t,x'), x_1<x'<=x_n}",
-    "             weighted by area weights obtained by the input field.",
-    "    fldpctl  Field percentiles",
-    "             For every gridpoint x_1, ..., x_n of the same field it is:",
-    "             ",
-    "             o(t,1) = pth percentile {i(t,x'), x_1<x'<=x_n}",
+    "    fldmin    Field minimum",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = min{i(t,x'), x_1<x'<=x_n}",
+    "    fldmax    Field maximum",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = max{i(t,x'), x_1<x'<=x_n}",
+    "    fldrange  Field range",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = range{i(t,x'), x_1<x'<=x_n}",
+    "    fldsum    Field sum",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = sum{i(t,x'), x_1<x'<=x_n}",
+    "    fldmean   Field mean",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = mean{i(t,x'), x_1<x'<=x_n}",
+    "              weighted by area weights obtained by the input field.",
+    "    fldavg    Field average",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = avg{i(t,x'), x_1<x'<=x_n}",
+    "              weighted by area weights obtained by the input field.",
+    "    fldstd    Field standard deviation",
+    "              Normalize by n. For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = std{i(t,x'), x_1<x'<=x_n}",
+    "              weighted by area weights obtained by the input field.",
+    "    fldstd1   Field standard deviation (n-1)",
+    "              Normalize by (n-1). For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = std1{i(t,x'), x_1<x'<=x_n}",
+    "              weighted by area weights obtained by the input field.",
+    "    fldvar    Field variance",
+    "              Normalize by n. For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = var{i(t,x'), x_1<x'<=x_n}",
+    "              weighted by area weights obtained by the input field.",
+    "    fldvar1   Field variance (n-1)",
+    "              Normalize by (n-1). For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = var1{i(t,x'), x_1<x'<=x_n}",
+    "              weighted by area weights obtained by the input field.",
+    "    fldpctl   Field percentiles",
+    "              For every gridpoint x_1, ..., x_n of the same field it is:",
+    "              ",
+    "              o(t,1) = pth percentile {i(t,x'), x_1<x'<=x_n}",
     "",
     "PARAMETER",
     "    p  FLOAT  Percentile number in {0, ..., 100}",
-    NULL
 };
 
-static const char *ZonstatHelp[] = {
+std::vector<std::string> ZonstatHelp = {
     "NAME",
-    "    zonmin, zonmax, zonsum, zonmean, zonavg, zonstd, zonstd1, zonvar, zonvar1, ",
-    "    zonpctl - Zonal statistical values",
+    "    zonmin, zonmax, zonrange, zonsum, zonmean, zonavg, zonstd, zonstd1, zonvar, ",
+    "    zonvar1, zonpctl - Zonal statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
@@ -2107,41 +2053,42 @@ static const char *ZonstatHelp[] = {
     "",
     "DESCRIPTION",
     "    This module computes zonal statistical values of the input fields.",
-    "    According to the chosen operator the zonal minimum, maximum, sum, average,",
+    "    According to the chosen operator the zonal minimum, maximum, range, sum, average,",
     "    variance, standard deviation or a certain percentile is written to outfile.",
     "    This operator requires all variables on the same regular lon/lat grid.",
     "",
     "OPERATORS",
-    "    zonmin   Zonal minimum",
-    "             For every latitude the minimum over all longitudes is computed.",
-    "    zonmax   Zonal maximum",
-    "             For every latitude the maximum over all longitudes is computed.",
-    "    zonsum   Zonal sum",
-    "             For every latitude the sum over all longitudes is computed.",
-    "    zonmean  Zonal mean",
-    "             For every latitude the mean over all longitudes is computed.",
-    "    zonavg   Zonal average",
-    "             For every latitude the average over all longitudes is computed.",
-    "    zonstd   Zonal standard deviation",
-    "             For every latitude the standard deviation over all longitudes is computed. Normalize by n.",
-    "    zonstd1  Zonal standard deviation (n-1)",
-    "             For every latitude the standard deviation over all longitudes is computed. Normalize by (n-1). ",
-    "    zonvar   Zonal variance",
-    "             For every latitude the variance over all longitudes is computed. Normalize by n.",
-    "    zonvar1  Zonal variance (n-1)",
-    "             For every latitude the variance over all longitudes is computed. Normalize by (n-1).",
-    "    zonpctl  Zonal percentiles",
-    "             For every latitude the pth percentile over all longitudes is computed.",
+    "    zonmin    Zonal minimum",
+    "              For every latitude the minimum over all longitudes is computed.",
+    "    zonmax    Zonal maximum",
+    "              For every latitude the maximum over all longitudes is computed.",
+    "    zonrange  Zonal range",
+    "              For every latitude the range over all longitudes is computed.",
+    "    zonsum    Zonal sum",
+    "              For every latitude the sum over all longitudes is computed.",
+    "    zonmean   Zonal mean",
+    "              For every latitude the mean over all longitudes is computed.",
+    "    zonavg    Zonal average",
+    "              For every latitude the average over all longitudes is computed.",
+    "    zonstd    Zonal standard deviation",
+    "              For every latitude the standard deviation over all longitudes is computed. Normalize by n.",
+    "    zonstd1   Zonal standard deviation (n-1)",
+    "              For every latitude the standard deviation over all longitudes is computed. Normalize by (n-1). ",
+    "    zonvar    Zonal variance",
+    "              For every latitude the variance over all longitudes is computed. Normalize by n.",
+    "    zonvar1   Zonal variance (n-1)",
+    "              For every latitude the variance over all longitudes is computed. Normalize by (n-1).",
+    "    zonpctl   Zonal percentiles",
+    "              For every latitude the pth percentile over all longitudes is computed.",
     "",
     "PARAMETER",
     "    p  FLOAT  Percentile number in {0, ..., 100}",
-    NULL
 };
 
-static const char *MerstatHelp[] = {
+std::vector<std::string> MerstatHelp = {
     "NAME",
-    "    mermin, mermax, mersum, mermean, meravg, merstd, merstd1, mervar, mervar1, ",
-    "    merpctl - Meridional statistical values",
+    "    mermin, mermax, merrange, mersum, mermean, meravg, merstd, merstd1, mervar, ",
+    "    mervar1, merpctl - Meridional statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
@@ -2149,172 +2096,179 @@ static const char *MerstatHelp[] = {
     "",
     "DESCRIPTION",
     "    This module computes meridional statistical values of the input fields.",
-    "    According to the chosen operator the meridional minimum, maximum, sum, average,",
+    "    According to the chosen operator the meridional minimum, maximum, range, sum, average,",
     "    variance, standard deviation or a certain percentile is written to outfile.",
     "    This operator requires all variables on the same regular lon/lat grid.",
     "",
     "OPERATORS",
-    "    mermin   Meridional minimum",
-    "             For every longitude the minimum over all latitudes is computed.",
-    "    mermax   Meridional maximum",
-    "             For every longitude the maximum over all latitudes is computed.",
-    "    mersum   Meridional sum",
-    "             For every longitude the sum over all latitudes is computed.",
-    "    mermean  Meridional mean",
-    "             For every longitude the area weighted mean over all latitudes is computed.",
-    "    meravg   Meridional average",
-    "             For every longitude the area weighted average over all latitudes is computed.",
-    "    merstd   Meridional standard deviation",
-    "             For every longitude the standard deviation over all latitudes is computed. Normalize by n.",
-    "    merstd1  Meridional standard deviation (n-1)",
-    "             For every longitude the standard deviation over all latitudes is computed. Normalize by (n-1).",
-    "    mervar   Meridional variance",
-    "             For every longitude the variance over all latitudes is computed. Normalize by n.",
-    "    mervar1  Meridional variance (n-1)",
-    "             For every longitude the variance over all latitudes is computed. Normalize by (n-1).",
-    "    merpctl  Meridional percentiles",
-    "             For every longitude the pth percentile over all latitudes is computed.",
+    "    mermin    Meridional minimum",
+    "              For every longitude the minimum over all latitudes is computed.",
+    "    mermax    Meridional maximum",
+    "              For every longitude the maximum over all latitudes is computed.",
+    "    merrange  Meridional range",
+    "              For every longitude the range over all latitudes is computed.",
+    "    mersum    Meridional sum",
+    "              For every longitude the sum over all latitudes is computed.",
+    "    mermean   Meridional mean",
+    "              For every longitude the area weighted mean over all latitudes is computed.",
+    "    meravg    Meridional average",
+    "              For every longitude the area weighted average over all latitudes is computed.",
+    "    merstd    Meridional standard deviation",
+    "              For every longitude the standard deviation over all latitudes is computed. Normalize by n.",
+    "    merstd1   Meridional standard deviation (n-1)",
+    "              For every longitude the standard deviation over all latitudes is computed. Normalize by (n-1).",
+    "    mervar    Meridional variance",
+    "              For every longitude the variance over all latitudes is computed. Normalize by n.",
+    "    mervar1   Meridional variance (n-1)",
+    "              For every longitude the variance over all latitudes is computed. Normalize by (n-1).",
+    "    merpctl   Meridional percentiles",
+    "              For every longitude the pth percentile over all latitudes is computed.",
     "",
     "PARAMETER",
     "    p  FLOAT  Percentile number in {0, ..., 100}",
-    NULL
 };
 
-static const char *GridboxstatHelp[] = {
+std::vector<std::string> GridboxstatHelp = {
     "NAME",
-    "    gridboxmin, gridboxmax, gridboxsum, gridboxmean, gridboxavg, gridboxstd, ",
-    "    gridboxstd1, gridboxvar, gridboxvar1 - Statistical values over grid boxes",
+    "    gridboxmin, gridboxmax, gridboxrange, gridboxsum, gridboxmean, gridboxavg, ",
+    "    gridboxstd, gridboxstd1, gridboxvar, gridboxvar1 - ",
+    "    Statistical values over grid boxes",
     "",
     "SYNOPSIS",
     "    <operator>,nx,ny  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over surrounding grid boxes.",
-    "    According to the chosen operator the minimum, maximum, sum, average, ",
+    "    According to the chosen operator the minimum, maximum, range, sum, average, ",
     "    variance, or standard deviation of the neighboring grid boxes is written to outfile.",
     "    All gridbox operators only works on quadrilateral curvilinear grids.",
     "",
     "OPERATORS",
-    "    gridboxmin   Gridbox minimum",
-    "                 Minimum value of the selected grid boxes.",
-    "    gridboxmax   Gridbox maximum",
-    "                 Maximum value of the selected grid boxes.",
-    "    gridboxsum   Gridbox sum",
-    "                 Sum of the selected grid boxes.",
-    "    gridboxmean  Gridbox mean",
-    "                 Mean of the selected grid boxes.",
-    "    gridboxavg   Gridbox average",
-    "                 Average of the selected grid boxes.",
-    "    gridboxstd   Gridbox standard deviation",
-    "                 Standard deviation of the selected grid boxes. Normalize by n.",
-    "    gridboxstd1  Gridbox standard deviation (n-1)",
-    "                 Standard deviation of the selected grid boxes. Normalize by (n-1).",
-    "    gridboxvar   Gridbox variance",
-    "                 Variance of the selected grid boxes. Normalize by n.",
-    "    gridboxvar1  Gridbox variance (n-1)",
-    "                 Variance of the selected grid boxes. Normalize by (n-1).",
+    "    gridboxmin    Gridbox minimum",
+    "                  Minimum value of the selected grid boxes.",
+    "    gridboxmax    Gridbox maximum",
+    "                  Maximum value of the selected grid boxes.",
+    "    gridboxrange  Gridbox range",
+    "                  Range (max-min value) of the selected grid boxes.",
+    "    gridboxsum    Gridbox sum",
+    "                  Sum of the selected grid boxes.",
+    "    gridboxmean   Gridbox mean",
+    "                  Mean of the selected grid boxes.",
+    "    gridboxavg    Gridbox average",
+    "                  Average of the selected grid boxes.",
+    "    gridboxstd    Gridbox standard deviation",
+    "                  Standard deviation of the selected grid boxes. Normalize by n.",
+    "    gridboxstd1   Gridbox standard deviation (n-1)",
+    "                  Standard deviation of the selected grid boxes. Normalize by (n-1).",
+    "    gridboxvar    Gridbox variance",
+    "                  Variance of the selected grid boxes. Normalize by n.",
+    "    gridboxvar1   Gridbox variance (n-1)",
+    "                  Variance of the selected grid boxes. Normalize by (n-1).",
     "",
     "PARAMETER",
     "    nx  INTEGER  Number of grid boxes in x direction",
     "    ny  INTEGER  Number of grid boxes in y direction",
-    NULL
 };
 
-static const char *VertstatHelp[] = {
+std::vector<std::string> VertstatHelp = {
     "NAME",
-    "    vertmin, vertmax, vertsum, vertmean, vertavg, vertstd, vertstd1, vertvar, ",
-    "    vertvar1 - Vertical statistical values",
+    "    vertmin, vertmax, vertrange, vertsum, vertmean, vertavg, vertstd, vertstd1, ",
+    "    vertvar, vertvar1 - Vertical statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over all levels of the input variables.",
-    "    According to chosen operator the vertical minimum, maximum, sum, average, variance",
+    "    According to chosen operator the vertical minimum, maximum, range, sum, average, variance",
     "    or standard deviation is written to outfile.",
     "",
     "OPERATORS",
-    "    vertmin   Vertical minimum",
-    "              For every gridpoint the minimum over all levels is computed.",
-    "    vertmax   Vertical maximum",
-    "              For every gridpoint the maximum over all levels is computed.",
-    "    vertsum   Vertical sum",
-    "              For every gridpoint the sum over all levels is computed.",
-    "    vertmean  Vertical mean",
-    "              For every gridpoint the layer weighted mean over all levels is computed.",
-    "    vertavg   Vertical average",
-    "              For every gridpoint the layer weighted average over all levels is computed.",
-    "    vertstd   Vertical standard deviation",
-    "              For every gridpoint the standard deviation over all levels is computed. Normalize by n.",
-    "    vertstd1  Vertical standard deviation (n-1)",
-    "              For every gridpoint the standard deviation over all levels is computed. Normalize by (n-1).",
-    "    vertvar   Vertical variance",
-    "              For every gridpoint the variance over all levels is computed. Normalize by n.",
-    "    vertvar1  Vertical variance (n-1)",
-    "              For every gridpoint the variance over all levels is computed. Normalize by (n-1).",
-    NULL
-};
-
-static const char *TimselstatHelp[] = {
-    "NAME",
-    "    timselmin, timselmax, timselsum, timselmean, timselavg, timselstd, ",
-    "    timselstd1, timselvar, timselvar1 - Time range statistical values",
+    "    vertmin    Vertical minimum",
+    "               For every gridpoint the minimum over all levels is computed.",
+    "    vertmax    Vertical maximum",
+    "               For every gridpoint the maximum over all levels is computed.",
+    "    vertrange  Vertical range",
+    "               For every gridpoint the range over all levels is computed.",
+    "    vertsum    Vertical sum",
+    "               For every gridpoint the sum over all levels is computed.",
+    "    vertmean   Vertical mean",
+    "               For every gridpoint the layer weighted mean over all levels is computed.",
+    "    vertavg    Vertical average",
+    "               For every gridpoint the layer weighted average over all levels is computed.",
+    "    vertstd    Vertical standard deviation",
+    "               For every gridpoint the standard deviation over all levels is computed. Normalize by n.",
+    "    vertstd1   Vertical standard deviation (n-1)",
+    "               For every gridpoint the standard deviation over all levels is computed. Normalize by (n-1).",
+    "    vertvar    Vertical variance",
+    "               For every gridpoint the variance over all levels is computed. Normalize by n.",
+    "    vertvar1   Vertical variance (n-1)",
+    "               For every gridpoint the variance over all levels is computed. Normalize by (n-1).",
+};
+
+std::vector<std::string> TimselstatHelp = {
+    "NAME",
+    "    timselmin, timselmax, timselrange, timselsum, timselmean, timselavg, ",
+    "    timselstd, timselstd1, timselvar, timselvar1 - Time range statistical values",
     "",
     "SYNOPSIS",
     "    <operator>,nsets[,noffset[,nskip]]  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values for a selected number of timesteps. According to ",
-    "    the chosen operator the minimum, maximum, sum, average, variance or standard deviation of ",
+    "    the chosen operator the minimum, maximum, range, sum, average, variance or standard deviation of ",
     "    the selected timesteps is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    timselmin   Time range minimum",
-    "                For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = min{i(t',x), t1 < t' <= tn}",
-    "    timselmax   Time range maximum",
-    "                For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = max{i(t',x), t1 < t' <= tn}",
-    "    timselsum   Time range sum",
-    "                For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = sum{i(t',x), t1 < t' <= tn}",
-    "    timselmean  Time range mean",
-    "                For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = mean{i(t',x), t1 < t' <= tn}",
-    "    timselavg   Time range average",
-    "                For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = avg{i(t',x), t1 < t' <= tn}",
-    "    timselstd   Time range standard deviation",
-    "                Normalize by n. For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = std{i(t',x), t1 < t' <= tn}",
-    "    timselstd1  Time range standard deviation (n-1)",
-    "                Normalize by (n-1). For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = std1{i(t',x), t1 < t' <= tn}",
-    "    timselvar   Time range variance",
-    "                Normalize by n. For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = var{i(t',x), t1 < t' <= tn}",
-    "    timselvar1  Time range variance (n-1)",
-    "                Normalize by (n-1). For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
-    "                ",
-    "                o(t,x) = var1{i(t',x), t1 < t' <= tn}",
+    "    timselmin    Time selection minimum",
+    "                 For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = min{i(t',x), t1 < t' <= tn}",
+    "    timselmax    Time selection maximum",
+    "                 For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = max{i(t',x), t1 < t' <= tn}",
+    "    timselrange  Time selection range",
+    "                 For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = range{i(t',x), t1 < t' <= tn}",
+    "    timselsum    Time selection sum",
+    "                 For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = sum{i(t',x), t1 < t' <= tn}",
+    "    timselmean   Time selection mean",
+    "                 For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = mean{i(t',x), t1 < t' <= tn}",
+    "    timselavg    Time selection average",
+    "                 For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = avg{i(t',x), t1 < t' <= tn}",
+    "    timselstd    Time selection standard deviation",
+    "                 Normalize by n. For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = std{i(t',x), t1 < t' <= tn}",
+    "    timselstd1   Time selection standard deviation (n-1)",
+    "                 Normalize by (n-1). For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = std1{i(t',x), t1 < t' <= tn}",
+    "    timselvar    Time selection variance",
+    "                 Normalize by n. For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = var{i(t',x), t1 < t' <= tn}",
+    "    timselvar1   Time selection variance (n-1)",
+    "                 Normalize by (n-1). For every adjacent sequence t1, ...., tn of timesteps of the same selected time range it is:",
+    "                 ",
+    "                 o(t,x) = var1{i(t',x), t1 < t' <= tn}",
     "",
     "PARAMETER",
     "    nsets    INTEGER  Number of input timesteps for each output timestep ",
     "    noffset  INTEGER  Number of input timesteps skipped before the first timestep range (optional)",
     "    nskip    INTEGER  Number of input timesteps skipped between timestep ranges (optional)",
-    NULL
 };
 
-static const char *TimselpctlHelp[] = {
+std::vector<std::string> TimselpctlHelp = {
     "NAME",
     "    timselpctl - Time range percentile values",
     "",
@@ -2341,50 +2295,51 @@ static const char *TimselpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *RunstatHelp[] = {
+std::vector<std::string> RunstatHelp = {
     "NAME",
-    "    runmin, runmax, runsum, runmean, runavg, runstd, runstd1, runvar, runvar1 - ",
-    "    Running statistical values",
+    "    runmin, runmax, runrange, runsum, runmean, runavg, runstd, runstd1, runvar, ",
+    "    runvar1 - Running statistical values",
     "",
     "SYNOPSIS",
     "    <operator>,nts  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes running statistical values over a selected number of timesteps. Depending on ",
-    "    the chosen operator the minimum, maximum, sum, average, variance or standard deviation of a selected ",
+    "    the chosen operator the minimum, maximum, range, sum, average, variance or standard deviation of a selected ",
     "    number of consecutive timesteps read from infile is written to outfile. ",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    runmin   Running minimum",
-    "             o(t+(nts-1)/2,x) = min{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runmax   Running maximum",
-    "             o(t+(nts-1)/2,x) = max{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runsum   Running sum",
-    "             o(t+(nts-1)/2,x) = sum{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runmean  Running mean",
-    "             o(t+(nts-1)/2,x) = mean{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runavg   Running average",
-    "             o(t+(nts-1)/2,x) = avg{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runstd   Running standard deviation",
-    "             Normalize by n. ",
-    "             ",
-    "             o(t+(nts-1)/2,x) = std{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runstd1  Running standard deviation (n-1)",
-    "             Normalize by (n-1). ",
-    "             ",
-    "             o(t+(nts-1)/2,x) = std1{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runvar   Running variance",
-    "             Normalize by n. ",
-    "             ",
-    "             o(t+(nts-1)/2,x) = var{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
-    "    runvar1  Running variance (n-1)",
-    "             Normalize by (n-1). ",
-    "             ",
-    "             o(t+(nts-1)/2,x) = var1{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runmin    Running minimum",
+    "              o(t+(nts-1)/2,x) = min{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runmax    Running maximum",
+    "              o(t+(nts-1)/2,x) = max{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runrange  Running range",
+    "              o(t+(nts-1)/2,x) = range{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runsum    Running sum",
+    "              o(t+(nts-1)/2,x) = sum{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runmean   Running mean",
+    "              o(t+(nts-1)/2,x) = mean{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runavg    Running average",
+    "              o(t+(nts-1)/2,x) = avg{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runstd    Running standard deviation",
+    "              Normalize by n. ",
+    "              ",
+    "              o(t+(nts-1)/2,x) = std{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runstd1   Running standard deviation (n-1)",
+    "              Normalize by (n-1). ",
+    "              ",
+    "              o(t+(nts-1)/2,x) = std1{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runvar    Running variance",
+    "              Normalize by n. ",
+    "              ",
+    "              o(t+(nts-1)/2,x) = var{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
+    "    runvar1   Running variance (n-1)",
+    "              Normalize by (n-1). ",
+    "              ",
+    "              o(t+(nts-1)/2,x) = var1{i(t,x), i(t+1,x), ..., i(t+nts-1,x)}",
     "",
     "PARAMETER",
     "    nts  INTEGER  Number of timesteps",
@@ -2392,10 +2347,9 @@ static const char *RunstatHelp[] = {
     "ENVIRONMENT",
     "    CDO_TIMESTAT_DATE",
     "        Sets the time stamp in outfile to the \"first\", \"middle\" or \"last\" contributing timestep of infile.",
-    NULL
 };
 
-static const char *RunpctlHelp[] = {
+std::vector<std::string> RunpctlHelp = {
     "NAME",
     "    runpctl - Running percentile values",
     "",
@@ -2411,54 +2365,54 @@ static const char *RunpctlHelp[] = {
     "PARAMETER",
     "    p    FLOAT    Percentile number in {0, ..., 100}",
     "    nts  INTEGER  Number of timesteps",
-    NULL
 };
 
-static const char *TimstatHelp[] = {
+std::vector<std::string> TimstatHelp = {
     "NAME",
-    "    timmin, timmax, timsum, timmean, timavg, timstd, timstd1, timvar, timvar1 - ",
-    "    Statistical values over all timesteps",
+    "    timmin, timmax, timrange, timsum, timmean, timavg, timstd, timstd1, timvar, ",
+    "    timvar1 - Statistical values over all timesteps",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
-    "    This module computes statistical  values over all timesteps in infile. Depending on ",
-    "    the chosen operator the minimum, maximum, sum, average, variance or standard deviation of ",
+    "    This module computes statistical values over all timesteps in infile. Depending on ",
+    "    the chosen operator the minimum, maximum, range, sum, average, variance or standard deviation of ",
     "    all timesteps read from infile is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    timmin   Time minimum",
-    "             o(1,x) = min{i(t',x), t_1<t'<=t_n}",
-    "    timmax   Time maximum",
-    "             o(1,x) = max{i(t',x), t_1<t'<=t_n}",
-    "    timsum   Time sum",
-    "             o(1,x) = sum{i(t',x), t_1<t'<=t_n}",
-    "    timmean  Time mean",
-    "             o(1,x) = mean{i(t',x), t_1<t'<=t_n}",
-    "    timavg   Time average",
-    "             o(1,x) = avg{i(t',x), t_1<t'<=t_n}",
-    "    timstd   Time standard deviation",
-    "             Normalize by n. ",
-    "             ",
-    "             o(1,x) = std{i(t',x), t_1<t'<=t_n}",
-    "    timstd1  Time standard deviation (n-1)",
-    "             Normalize by (n-1). ",
-    "             ",
-    "             o(1,x) = std1{i(t',x), t_1<t'<=t_n}",
-    "    timvar   Time variance",
-    "             Normalize by n. ",
-    "             ",
-    "             o(1,x) = var{i(t',x), t_1<t'<=t_n}",
-    "    timvar1  Time variance (n-1)",
-    "             Normalize by (n-1). ",
-    "             ",
-    "             o(1,x) = var1{i(t',x), t_1<t'<=t_n}",
-    NULL
+    "    timmin    Time minimum",
+    "              o(1,x) = min{i(t',x), t_1<t'<=t_n}",
+    "    timmax    Time maximum",
+    "              o(1,x) = max{i(t',x), t_1<t'<=t_n}",
+    "    timrange  Time range",
+    "              o(1,x) = range{i(t',x), t_1<t'<=t_n}",
+    "    timsum    Time sum",
+    "              o(1,x) = sum{i(t',x), t_1<t'<=t_n}",
+    "    timmean   Time mean",
+    "              o(1,x) = mean{i(t',x), t_1<t'<=t_n}",
+    "    timavg    Time average",
+    "              o(1,x) = avg{i(t',x), t_1<t'<=t_n}",
+    "    timstd    Time standard deviation",
+    "              Normalize by n. ",
+    "              ",
+    "              o(1,x) = std{i(t',x), t_1<t'<=t_n}",
+    "    timstd1   Time standard deviation (n-1)",
+    "              Normalize by (n-1). ",
+    "              ",
+    "              o(1,x) = std1{i(t',x), t_1<t'<=t_n}",
+    "    timvar    Time variance",
+    "              Normalize by n. ",
+    "              ",
+    "              o(1,x) = var{i(t',x), t_1<t'<=t_n}",
+    "    timvar1   Time variance (n-1)",
+    "              Normalize by (n-1). ",
+    "              ",
+    "              o(1,x) = var1{i(t',x), t_1<t'<=t_n}",
 };
 
-static const char *TimpctlHelp[] = {
+std::vector<std::string> TimpctlHelp = {
     "NAME",
     "    timpctl - Percentile values over all timesteps",
     "",
@@ -2481,64 +2435,66 @@ static const char *TimpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *HourstatHelp[] = {
+std::vector<std::string> HourstatHelp = {
     "NAME",
-    "    hourmin, hourmax, hoursum, hourmean, houravg, hourstd, hourstd1, hourvar, ",
-    "    hourvar1 - Hourly statistical values",
+    "    hourmin, hourmax, hourrange, hoursum, hourmean, houravg, hourstd, hourstd1, ",
+    "    hourvar, hourvar1 - Hourly statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over timesteps of the same hour.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of timesteps of the same hour is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    hourmin   Hourly minimum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = min{i(t',x), t_1<t'<=t_n}",
-    "    hourmax   Hourly maximum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = max{i(t',x), t_1<t'<=t_n}",
-    "    hoursum   Hourly sum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
-    "    hourmean  Hourly mean",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
-    "    houravg   Hourly average",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
-    "    hourstd   Hourly standard deviation",
-    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = std{i(t',x), t_1<t'<=t_n}",
-    "    hourstd1  Hourly standard deviation (n-1)",
-    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = std1{i(t',x), t_1<t'<=t_n}",
-    "    hourvar   Hourly variance",
-    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = var{i(t',x), t_1<t'<=t_n}",
-    "    hourvar1  Hourly variance (n-1)",
-    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
-    "              ",
-    "              o(t,x) = var1{i(t',x), t_1<t'<=t_n}",
-    NULL
+    "    hourmin    Hourly minimum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = min{i(t',x), t_1<t'<=t_n}",
+    "    hourmax    Hourly maximum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = max{i(t',x), t_1<t'<=t_n}",
+    "    hourrange  Hourly range",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = range{i(t',x), t_1<t'<=t_n}",
+    "    hoursum    Hourly sum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
+    "    hourmean   Hourly mean",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
+    "    houravg    Hourly average",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
+    "    hourstd    Hourly standard deviation",
+    "               Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = std{i(t',x), t_1<t'<=t_n}",
+    "    hourstd1   Hourly standard deviation (n-1)",
+    "               Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = std1{i(t',x), t_1<t'<=t_n}",
+    "    hourvar    Hourly variance",
+    "               Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = var{i(t',x), t_1<t'<=t_n}",
+    "    hourvar1   Hourly variance (n-1)",
+    "               Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same hour it is:",
+    "               ",
+    "               o(t,x) = var1{i(t',x), t_1<t'<=t_n}",
 };
 
-static const char *HourpctlHelp[] = {
+std::vector<std::string> HourpctlHelp = {
     "NAME",
     "    hourpctl - Hourly percentile values",
     "",
@@ -2563,64 +2519,66 @@ static const char *HourpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *DaystatHelp[] = {
+std::vector<std::string> DaystatHelp = {
     "NAME",
-    "    daymin, daymax, daysum, daymean, dayavg, daystd, daystd1, dayvar, dayvar1 - ",
-    "    Daily statistical values",
+    "    daymin, daymax, dayrange, daysum, daymean, dayavg, daystd, daystd1, dayvar, ",
+    "    dayvar1 - Daily statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over timesteps of the same day.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of timesteps of the same day is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    daymin   Daily minimum",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = min{i(t',x), t_1<t'<=t_n}",
-    "    daymax   Daily maximum",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = max{i(t',x), t_1<t'<=t_n}",
-    "    daysum   Daily sum",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
-    "    daymean  Daily mean",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
-    "    dayavg   Daily average",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
-    "    daystd   Daily standard deviation",
-    "             Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = std{i(t',x), t_1<t'<=t_n}",
-    "    daystd1  Daily standard deviation (n-1)",
-    "             Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = std1{i(t',x), t_1<t'<=t_n}",
-    "    dayvar   Daily variance",
-    "             Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = var{i(t',x), t_1<t'<=t_n}",
-    "    dayvar1  Daily variance (n-1)",
-    "             Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
-    "             ",
-    "             o(t,x) = var1{i(t',x), t_1<t'<=t_n}",
-    NULL
+    "    daymin    Daily minimum",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = min{i(t',x), t_1<t'<=t_n}",
+    "    daymax    Daily maximum",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = max{i(t',x), t_1<t'<=t_n}",
+    "    dayrange  Daily range",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = range{i(t',x), t_1<t'<=t_n}",
+    "    daysum    Daily sum",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
+    "    daymean   Daily mean",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
+    "    dayavg    Daily average",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
+    "    daystd    Daily standard deviation",
+    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = std{i(t',x), t_1<t'<=t_n}",
+    "    daystd1   Daily standard deviation (n-1)",
+    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = std1{i(t',x), t_1<t'<=t_n}",
+    "    dayvar    Daily variance",
+    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = var{i(t',x), t_1<t'<=t_n}",
+    "    dayvar1   Daily variance (n-1)",
+    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same day it is:",
+    "              ",
+    "              o(t,x) = var1{i(t',x), t_1<t'<=t_n}",
 };
 
-static const char *DaypctlHelp[] = {
+std::vector<std::string> DaypctlHelp = {
     "NAME",
     "    daypctl - Daily percentile values",
     "",
@@ -2645,64 +2603,66 @@ static const char *DaypctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *MonstatHelp[] = {
+std::vector<std::string> MonstatHelp = {
     "NAME",
-    "    monmin, monmax, monsum, monmean, monavg, monstd, monstd1, monvar, monvar1 - ",
-    "    Monthly statistical values",
+    "    monmin, monmax, monrange, monsum, monmean, monavg, monstd, monstd1, monvar, ",
+    "    monvar1 - Monthly statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over timesteps of the same month.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of timesteps of the same month is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    monmin   Monthly minimum",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = min{i(t',x), t_1<t'<=t_n}",
-    "    monmax   Monthly maximum",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = max{i(t',x), t_1<t'<=t_n}",
-    "    monsum   Monthly sum",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
-    "    monmean  Monthly mean",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
-    "    monavg   Monthly average",
-    "             For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
-    "    monstd   Monthly standard deviation",
-    "             Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = std{i(t',x), t_1 < t' <= t_n}",
-    "    monstd1  Monthly standard deviation (n-1)",
-    "             Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = std1{i(t',x), t_1 < t' <= t_n}",
-    "    monvar   Monthly variance",
-    "             Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = var{i(t',x), t_1 < t' <= t_n}",
-    "    monvar1  Monthly variance (n-1)",
-    "             Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
-    "             ",
-    "             o(t,x) = var1{i(t',x), t_1 < t' <= t_n}",
-    NULL
+    "    monmin    Monthly minimum",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = min{i(t',x), t_1<t'<=t_n}",
+    "    monmax    Monthly maximum",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = max{i(t',x), t_1<t'<=t_n}",
+    "    monrange  Monthly range",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = range{i(t',x), t_1<t'<=t_n}",
+    "    monsum    Monthly sum",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
+    "    monmean   Monthly mean",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
+    "    monavg    Monthly average",
+    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
+    "    monstd    Monthly standard deviation",
+    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = std{i(t',x), t_1 < t' <= t_n}",
+    "    monstd1   Monthly standard deviation (n-1)",
+    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = std1{i(t',x), t_1 < t' <= t_n}",
+    "    monvar    Monthly variance",
+    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = var{i(t',x), t_1 < t' <= t_n}",
+    "    monvar1   Monthly variance (n-1)",
+    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same month it is:",
+    "              ",
+    "              o(t,x) = var1{i(t',x), t_1 < t' <= t_n}",
 };
 
-static const char *MonpctlHelp[] = {
+std::vector<std::string> MonpctlHelp = {
     "NAME",
     "    monpctl - Monthly percentile values",
     "",
@@ -2727,10 +2687,9 @@ static const char *MonpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *YearmonstatHelp[] = {
+std::vector<std::string> YearmonstatHelp = {
     "NAME",
     "    yearmonmean - Yearly mean from monthly data",
     "",
@@ -2749,67 +2708,69 @@ static const char *YearmonstatHelp[] = {
     "ENVIRONMENT",
     "    CDO_TIMESTAT_DATE",
     "        Sets the date information in outfile to the \"first\", \"middle\" or \"last\" contributing timestep of infile.",
-    NULL
 };
 
-static const char *YearstatHelp[] = {
+std::vector<std::string> YearstatHelp = {
     "NAME",
-    "    yearmin, yearmax, yearsum, yearmean, yearavg, yearstd, yearstd1, yearvar, ",
-    "    yearvar1 - Yearly statistical values",
+    "    yearmin, yearmax, yearrange, yearsum, yearmean, yearavg, yearstd, yearstd1, ",
+    "    yearvar, yearvar1 - Yearly statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over timesteps of the same year.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of timesteps of the same year is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "",
     "OPERATORS",
-    "    yearmin   Yearly minimum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = min{i(t',x), t_1<t'<=t_n}",
-    "    yearmax   Yearly maximum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = max{i(t',x), t_1<t'<=t_n}",
-    "    yearsum   Yearly sum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
-    "    yearmean  Yearly mean",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
-    "    yearavg   Yearly average",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
-    "    yearstd   Yearly standard deviation",
-    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = std{i(t',x), t_1 < t' <= t_n}",
-    "    yearstd1  Yearly standard deviation (n-1)",
-    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = std1{i(t',x), t_1 < t' <= t_n}",
-    "    yearvar   Yearly variance",
-    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = var{i(t',x), t_1 < t' <= t_n}",
-    "    yearvar1  Yearly variance (n-1)",
-    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
-    "              ",
-    "              o(t,x) = var1{i(t',x), t_1 < t' <= t_n}",
+    "    yearmin    Yearly minimum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = min{i(t',x), t_1<t'<=t_n}",
+    "    yearmax    Yearly maximum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = max{i(t',x), t_1<t'<=t_n}",
+    "    yearrange  Yearly range",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = range{i(t',x), t_1<t'<=t_n}",
+    "    yearsum    Yearly sum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = sum{i(t',x), t_1<t'<=t_n}",
+    "    yearmean   Yearly mean",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = mean{i(t',x), t_1<t'<=t_n}",
+    "    yearavg    Yearly average",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = avg{i(t',x), t_1<t'<=t_n}",
+    "    yearstd    Yearly standard deviation",
+    "               Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = std{i(t',x), t_1 < t' <= t_n}",
+    "    yearstd1   Yearly standard deviation (n-1)",
+    "               Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = std1{i(t',x), t_1 < t' <= t_n}",
+    "    yearvar    Yearly variance",
+    "               Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = var{i(t',x), t_1 < t' <= t_n}",
+    "    yearvar1   Yearly variance (n-1)",
+    "               Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same year it is:",
+    "               ",
+    "               o(t,x) = var1{i(t',x), t_1 < t' <= t_n}",
     "",
     "NOTE",
     "    The operators yearmean and yearavg compute only arithmetical means!",
-    NULL
 };
 
-static const char *YearpctlHelp[] = {
+std::vector<std::string> YearpctlHelp = {
     "NAME",
     "    yearpctl - Yearly percentile values",
     "",
@@ -2833,66 +2794,68 @@ static const char *YearpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *SeasstatHelp[] = {
+std::vector<std::string> SeasstatHelp = {
     "NAME",
-    "    seasmin, seasmax, seassum, seasmean, seasavg, seasstd, seasstd1, seasvar, ",
-    "    seasvar1 - Seasonal statistical values",
+    "    seasmin, seasmax, seasrange, seassum, seasmean, seasavg, seasstd, seasstd1, ",
+    "    seasvar, seasvar1 - Seasonal statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values over timesteps of the same season.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of timesteps of the same season is written to outfile.",
     "    The time of outfile is determined by the time in the middle of all contributing timesteps of infile.",
     "    Be careful about the first and the last output timestep, they may be incorrect values ",
     "    if the seasons have incomplete timesteps.",
     "",
     "OPERATORS",
-    "    seasmin   Seasonal minimum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = min{i(t',x), t1 < t' <= tn}",
-    "    seasmax   Seasonal maximum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = max{i(t',x), t1 < t' <= tn}",
-    "    seassum   Seasonal sum",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = sum{i(t',x), t1 < t' <= tn}",
-    "    seasmean  Seasonal mean",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = mean{i(t',x), t1 < t' <= tn}",
-    "    seasavg   Seasonal average",
-    "              For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = avg{i(t',x), t1 < t' <= tn}",
-    "    seasstd   Seasonal standard deviation",
-    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = std{i(t',x), t1 < t' <= tn}",
-    "    seasstd1  Seasonal standard deviation (n-1)",
-    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = std1{i(t',x), t1 < t' <= tn}",
-    "    seasvar   Seasonal variance",
-    "              Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = var{i(t',x), t1 < t' <= tn}",
-    "    seasvar1  Seasonal variance (n-1)",
-    "              Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
-    "              ",
-    "              o(t,x) = var1{i(t',x), t1 < t' <= tn}",
-    NULL
+    "    seasmin    Seasonal minimum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = min{i(t',x), t1 < t' <= tn}",
+    "    seasmax    Seasonal maximum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = max{i(t',x), t1 < t' <= tn}",
+    "    seasrange  Seasonal range",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = range{i(t',x), t1 < t' <= tn}",
+    "    seassum    Seasonal sum",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = sum{i(t',x), t1 < t' <= tn}",
+    "    seasmean   Seasonal mean",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = mean{i(t',x), t1 < t' <= tn}",
+    "    seasavg    Seasonal average",
+    "               For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = avg{i(t',x), t1 < t' <= tn}",
+    "    seasstd    Seasonal standard deviation",
+    "               Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = std{i(t',x), t1 < t' <= tn}",
+    "    seasstd1   Seasonal standard deviation (n-1)",
+    "               Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = std1{i(t',x), t1 < t' <= tn}",
+    "    seasvar    Seasonal variance",
+    "               Normalize by n. For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = var{i(t',x), t1 < t' <= tn}",
+    "    seasvar1   Seasonal variance (n-1)",
+    "               Normalize by (n-1). For every adjacent sequence t_1, ...,t_n of timesteps of the same season it is:",
+    "               ",
+    "               o(t,x) = var1{i(t',x), t1 < t' <= tn}",
 };
 
-static const char *SeaspctlHelp[] = {
+std::vector<std::string> SeaspctlHelp = {
     "NAME",
     "    seaspctl - Seasonal percentile values",
     "",
@@ -2918,134 +2881,139 @@ static const char *SeaspctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *YhourstatHelp[] = {
+std::vector<std::string> YhourstatHelp = {
     "NAME",
-    "    yhourmin, yhourmax, yhoursum, yhourmean, yhouravg, yhourstd, yhourstd1, ",
-    "    yhourvar, yhourvar1 - Multi-year hourly statistical values",
+    "    yhourmin, yhourmax, yhourrange, yhoursum, yhourmean, yhouravg, yhourstd, ",
+    "    yhourstd1, yhourvar, yhourvar1 - Multi-year hourly statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values of each hour and day of year.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of each hour and day of year in infile is written to outfile.",
     "    The date information in an output field is the date of the last contributing input field.",
     "",
     "OPERATORS",
-    "    yhourmin   Multi-year hourly minimum",
-    "               o(0001,x) = min{i(t,x), day(i(t)) = 0001}",
+    "    yhourmin    Multi-year hourly minimum",
+    "                o(0001,x) = min{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = min{i(t,x), day(i(t)) = 8784}",
+    "    yhourmax    Multi-year hourly maximum",
+    "                o(0001,x) = max{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = max{i(t,x), day(i(t)) = 8784}",
+    "    yhourrange  Multi-year hourly range",
+    "                o(0001,x) = range{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = range{i(t,x), day(i(t)) = 8784}",
+    "    yhoursum    Multi-year hourly sum",
+    "                o(0001,x) = sum{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = sum{i(t,x), day(i(t)) = 8784}",
+    "    yhourmean   Multi-year hourly mean",
+    "                o(0001,x) = mean{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = mean{i(t,x), day(i(t)) = 8784}",
+    "    yhouravg    Multi-year hourly average",
+    "                o(0001,x) = avg{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = avg{i(t,x), day(i(t)) = 8784}",
+    "    yhourstd    Multi-year hourly standard deviation",
+    "                Normalize by n. ",
+    "                ",
+    "                o(0001,x) = std{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = std{i(t,x), day(i(t)) = 8784}",
+    "    yhourstd1   Multi-year hourly standard deviation (n-1)",
+    "                Normalize by (n-1). ",
+    "                ",
+    "                o(0001,x) = std1{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = std1{i(t,x), day(i(t)) = 8784}",
+    "    yhourvar    Multi-year hourly variance",
+    "                Normalize by n. ",
+    "                ",
+    "                o(0001,x) = var{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = var{i(t,x), day(i(t)) = 8784}",
+    "    yhourvar1   Multi-year hourly variance (n-1)",
+    "                Normalize by (n-1). ",
+    "                ",
+    "                o(0001,x) = var1{i(t,x), day(i(t)) = 0001}",
+    "                                 ...",
+    "                o(8784,x) = var1{i(t,x), day(i(t)) = 8784}",
+};
+
+std::vector<std::string> YdaystatHelp = {
+    "NAME",
+    "    ydaymin, ydaymax, ydayrange, ydaysum, ydaymean, ydayavg, ydaystd, ydaystd1, ",
+    "    ydayvar, ydayvar1 - Multi-year daily statistical values",
+    "",
+    "SYNOPSIS",
+    "    <operator>  infile outfile",
+    "",
+    "DESCRIPTION",
+    "    This module computes statistical values of each day of year.",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
+    "    or standard deviation of each day of year in infile is written to outfile.",
+    "    The date information in an output field is the date of the last contributing input field.",
+    "",
+    "OPERATORS",
+    "    ydaymin    Multi-year daily minimum",
+    "               o(001,x) = min{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = min{i(t,x), day(i(t)) = 8784}",
-    "    yhourmax   Multi-year hourly maximum",
-    "               o(0001,x) = max{i(t,x), day(i(t)) = 0001}",
+    "               o(366,x) = min{i(t,x), day(i(t)) = 366}",
+    "    ydaymax    Multi-year daily maximum",
+    "               o(001,x) = max{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = max{i(t,x), day(i(t)) = 8784}",
-    "    yhoursum   Multi-year hourly sum",
-    "               o(0001,x) = sum{i(t,x), day(i(t)) = 0001}",
+    "               o(366,x) = max{i(t,x), day(i(t)) = 366}",
+    "    ydayrange  Multi-year daily range",
+    "               o(001,x) = range{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = sum{i(t,x), day(i(t)) = 8784}",
-    "    yhourmean  Multi-year hourly mean",
-    "               o(0001,x) = mean{i(t,x), day(i(t)) = 0001}",
+    "               o(366,x) = range{i(t,x), day(i(t)) = 366}",
+    "    ydaysum    Multi-year daily sum",
+    "               o(001,x) = sum{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = mean{i(t,x), day(i(t)) = 8784}",
-    "    yhouravg   Multi-year hourly average",
-    "               o(0001,x) = avg{i(t,x), day(i(t)) = 0001}",
+    "               o(366,x) = sum{i(t,x), day(i(t)) = 366}",
+    "    ydaymean   Multi-year daily mean",
+    "               o(001,x) = mean{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = avg{i(t,x), day(i(t)) = 8784}",
-    "    yhourstd   Multi-year hourly standard deviation",
+    "               o(366,x) = mean{i(t,x), day(i(t)) = 366}",
+    "    ydayavg    Multi-year daily average",
+    "               o(001,x) = avg{i(t,x), day(i(t)) = 001}",
+    "                                ...",
+    "               o(366,x) = avg{i(t,x), day(i(t)) = 366}",
+    "    ydaystd    Multi-year daily standard deviation",
     "               Normalize by n. ",
     "               ",
-    "               o(0001,x) = std{i(t,x), day(i(t)) = 0001}",
+    "               o(001,x) = std{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = std{i(t,x), day(i(t)) = 8784}",
-    "    yhourstd1  Multi-year hourly standard deviation (n-1)",
+    "               o(366,x) = std{i(t,x), day(i(t)) = 366}",
+    "    ydaystd1   Multi-year daily standard deviation (n-1)",
     "               Normalize by (n-1). ",
     "               ",
-    "               o(0001,x) = std1{i(t,x), day(i(t)) = 0001}",
+    "               o(001,x) = std1{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = std1{i(t,x), day(i(t)) = 8784}",
-    "    yhourvar   Multi-year hourly variance",
+    "               o(366,x) = std1{i(t,x), day(i(t)) = 366}",
+    "    ydayvar    Multi-year daily variance",
     "               Normalize by n. ",
     "               ",
-    "               o(0001,x) = var{i(t,x), day(i(t)) = 0001}",
+    "               o(001,x) = var{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = var{i(t,x), day(i(t)) = 8784}",
-    "    yhourvar1  Multi-year hourly variance (n-1)",
+    "               o(366,x) = var{i(t,x), day(i(t)) = 366}",
+    "    ydayvar1   Multi-year daily variance (n-1)",
     "               Normalize by (n-1). ",
     "               ",
-    "               o(0001,x) = var1{i(t,x), day(i(t)) = 0001}",
+    "               o(001,x) = var1{i(t,x), day(i(t)) = 001}",
     "                                ...",
-    "               o(8784,x) = var1{i(t,x), day(i(t)) = 8784}",
-    NULL
+    "               o(366,x) = var1{i(t,x), day(i(t)) = 366}",
 };
 
-static const char *YdaystatHelp[] = {
-    "NAME",
-    "    ydaymin, ydaymax, ydaysum, ydaymean, ydayavg, ydaystd, ydaystd1, ydayvar, ",
-    "    ydayvar1 - Multi-year daily statistical values",
-    "",
-    "SYNOPSIS",
-    "    <operator>  infile outfile",
-    "",
-    "DESCRIPTION",
-    "    This module computes statistical values of each day of year.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
-    "    or standard deviation of each day of year in infile is written to outfile.",
-    "    The date information in an output field is the date of the last contributing input field.",
-    "",
-    "OPERATORS",
-    "    ydaymin   Multi-year daily minimum",
-    "              o(001,x) = min{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = min{i(t,x), day(i(t)) = 366}",
-    "    ydaymax   Multi-year daily maximum",
-    "              o(001,x) = max{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = max{i(t,x), day(i(t)) = 366}",
-    "    ydaysum   Multi-year daily sum",
-    "              o(001,x) = sum{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = sum{i(t,x), day(i(t)) = 366}",
-    "    ydaymean  Multi-year daily mean",
-    "              o(001,x) = mean{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = mean{i(t,x), day(i(t)) = 366}",
-    "    ydayavg   Multi-year daily average",
-    "              o(001,x) = avg{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = avg{i(t,x), day(i(t)) = 366}",
-    "    ydaystd   Multi-year daily standard deviation",
-    "              Normalize by n. ",
-    "              ",
-    "              o(001,x) = std{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = std{i(t,x), day(i(t)) = 366}",
-    "    ydaystd1  Multi-year daily standard deviation (n-1)",
-    "              Normalize by (n-1). ",
-    "              ",
-    "              o(001,x) = std1{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = std1{i(t,x), day(i(t)) = 366}",
-    "    ydayvar   Multi-year daily variance",
-    "              Normalize by n. ",
-    "              ",
-    "              o(001,x) = var{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = var{i(t,x), day(i(t)) = 366}",
-    "    ydayvar1  Multi-year daily variance (n-1)",
-    "              Normalize by (n-1). ",
-    "              ",
-    "              o(001,x) = var1{i(t,x), day(i(t)) = 001}",
-    "                               ...",
-    "              o(366,x) = var1{i(t,x), day(i(t)) = 366}",
-    NULL
-};
-
-static const char *YdaypctlHelp[] = {
+std::vector<std::string> YdaypctlHelp = {
     "NAME",
     "    ydaypctl - Multi-year daily percentile values",
     "",
@@ -3071,72 +3039,74 @@ static const char *YdaypctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *YmonstatHelp[] = {
+std::vector<std::string> YmonstatHelp = {
     "NAME",
-    "    ymonmin, ymonmax, ymonsum, ymonmean, ymonavg, ymonstd, ymonstd1, ymonvar, ",
-    "    ymonvar1 - Multi-year monthly statistical values",
+    "    ymonmin, ymonmax, ymonrange, ymonsum, ymonmean, ymonavg, ymonstd, ymonstd1, ",
+    "    ymonvar, ymonvar1 - Multi-year monthly statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values of each month of year.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of each month of year in infile is written to outfile.",
     "    The date information in an output field is the date of the last contributing input field.",
     "",
     "OPERATORS",
-    "    ymonmin   Multi-year monthly minimum",
-    "              o(01,x) = min{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = min{i(t,x), month(i(t)) = 12}",
-    "    ymonmax   Multi-year monthly maximum",
-    "              o(01,x) = max{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = max{i(t,x), month(i(t)) = 12}",
-    "    ymonsum   Multi-year monthly sum",
-    "              o(01,x) = sum{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = sum{i(t,x), month(i(t)) = 12}",
-    "    ymonmean  Multi-year monthly mean",
-    "              o(01,x) = mean{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = mean{i(t,x), month(i(t)) = 12}",
-    "    ymonavg   Multi-year monthly average",
-    "              o(01,x) = avg{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = avg{i(t,x), month(i(t)) = 12}",
-    "    ymonstd   Multi-year monthly standard deviation",
-    "              Normalize by n. ",
-    "              ",
-    "              o(01,x) = std{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = std{i(t,x), month(i(t)) = 12}",
-    "    ymonstd1  Multi-year monthly standard deviation (n-1)",
-    "              Normalize by (n-1). ",
-    "              ",
-    "              o(01,x) = std1{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = std1{i(t,x), month(i(t)) = 12}",
-    "    ymonvar   Multi-year monthly variance",
-    "              Normalize by n. ",
-    "              ",
-    "              o(01,x) = var{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = var{i(t,x), month(i(t)) = 12}",
-    "    ymonvar1  Multi-year monthly variance (n-1)",
-    "              Normalize by (n-1). ",
-    "              ",
-    "              o(01,x) = var1{i(t,x), month(i(t)) = 01}",
-    "                               ...",
-    "              o(12,x) = var1{i(t,x), month(i(t)) = 12}",
-    NULL
+    "    ymonmin    Multi-year monthly minimum",
+    "               o(01,x) = min{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = min{i(t,x), month(i(t)) = 12}",
+    "    ymonmax    Multi-year monthly maximum",
+    "               o(01,x) = max{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = max{i(t,x), month(i(t)) = 12}",
+    "    ymonrange  Multi-year monthly range",
+    "               o(01,x) = range{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = range{i(t,x), month(i(t)) = 12}",
+    "    ymonsum    Multi-year monthly sum",
+    "               o(01,x) = sum{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = sum{i(t,x), month(i(t)) = 12}",
+    "    ymonmean   Multi-year monthly mean",
+    "               o(01,x) = mean{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = mean{i(t,x), month(i(t)) = 12}",
+    "    ymonavg    Multi-year monthly average",
+    "               o(01,x) = avg{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = avg{i(t,x), month(i(t)) = 12}",
+    "    ymonstd    Multi-year monthly standard deviation",
+    "               Normalize by n. ",
+    "               ",
+    "               o(01,x) = std{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = std{i(t,x), month(i(t)) = 12}",
+    "    ymonstd1   Multi-year monthly standard deviation (n-1)",
+    "               Normalize by (n-1). ",
+    "               ",
+    "               o(01,x) = std1{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = std1{i(t,x), month(i(t)) = 12}",
+    "    ymonvar    Multi-year monthly variance",
+    "               Normalize by n. ",
+    "               ",
+    "               o(01,x) = var{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = var{i(t,x), month(i(t)) = 12}",
+    "    ymonvar1   Multi-year monthly variance (n-1)",
+    "               Normalize by (n-1). ",
+    "               ",
+    "               o(01,x) = var1{i(t,x), month(i(t)) = 01}",
+    "                                ...",
+    "               o(12,x) = var1{i(t,x), month(i(t)) = 12}",
 };
 
-static const char *YmonpctlHelp[] = {
+std::vector<std::string> YmonpctlHelp = {
     "NAME",
     "    ymonpctl - Multi-year monthly percentile values",
     "",
@@ -3164,73 +3134,76 @@ static const char *YmonpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *YseasstatHelp[] = {
+std::vector<std::string> YseasstatHelp = {
     "NAME",
-    "    yseasmin, yseasmax, yseassum, yseasmean, yseasavg, yseasstd, yseasstd1, ",
-    "    yseasvar, yseasvar1 - Multi-year seasonal statistical values",
+    "    yseasmin, yseasmax, yseasrange, yseassum, yseasmean, yseasavg, yseasstd, ",
+    "    yseasstd1, yseasvar, yseasvar1 - Multi-year seasonal statistical values",
     "",
     "SYNOPSIS",
     "    <operator>  infile outfile",
     "",
     "DESCRIPTION",
     "    This module computes statistical values of each season.",
-    "    Depending on the chosen operator the minimum, maximum, sum, average, variance",
+    "    Depending on the chosen operator the minimum, maximum, range, sum, average, variance",
     "    or standard deviation of each season in infile is written to outfile.",
     "    The date information in an output field is the date of the last contributing input field.",
     "",
     "OPERATORS",
-    "    yseasmin   Multi-year seasonal minimum",
-    "               o(1,x) = min{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = min{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = min{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = min{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasmax   Multi-year seasonal maximum",
-    "               o(1,x) = max{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = max{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = max{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = max{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseassum   Multi-year seasonal sum",
-    "               o(1,x) = sum{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = sum{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = sum{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = sum{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasmean  Multi-year seasonal mean",
-    "               o(1,x) = mean{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = mean{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = mean{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = mean{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasavg   Multi-year seasonal average",
-    "               o(1,x) = avg{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = avg{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = avg{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = avg{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasstd   Multi-year seasonal standard deviation",
-    "               o(1,x) = std{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = std{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = std{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = std{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasstd1  Multi-year seasonal standard deviation (n-1)",
-    "               o(1,x) = std1{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = std1{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = std1{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = std1{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasvar   Multi-year seasonal variance",
-    "               o(1,x) = var{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = var{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = var{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = var{i(t,x), month(i(t)) = 09, 10, 11}",
-    "    yseasvar1  Multi-year seasonal variance (n-1)",
-    "               o(1,x) = var1{i(t,x), month(i(t)) = 12, 01, 02}",
-    "               o(2,x) = var1{i(t,x), month(i(t)) = 03, 04, 05}",
-    "               o(3,x) = var1{i(t,x), month(i(t)) = 06, 07, 08}",
-    "               o(4,x) = var1{i(t,x), month(i(t)) = 09, 10, 11}",
-    NULL
-};
-
-static const char *YseaspctlHelp[] = {
+    "    yseasmin    Multi-year seasonal minimum",
+    "                o(1,x) = min{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = min{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = min{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = min{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasmax    Multi-year seasonal maximum",
+    "                o(1,x) = max{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = max{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = max{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = max{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasrange  Multi-year seasonal range",
+    "                o(1,x) = range{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = range{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = range{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = range{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseassum    Multi-year seasonal sum",
+    "                o(1,x) = sum{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = sum{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = sum{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = sum{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasmean   Multi-year seasonal mean",
+    "                o(1,x) = mean{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = mean{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = mean{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = mean{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasavg    Multi-year seasonal average",
+    "                o(1,x) = avg{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = avg{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = avg{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = avg{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasstd    Multi-year seasonal standard deviation",
+    "                o(1,x) = std{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = std{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = std{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = std{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasstd1   Multi-year seasonal standard deviation (n-1)",
+    "                o(1,x) = std1{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = std1{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = std1{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = std1{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasvar    Multi-year seasonal variance",
+    "                o(1,x) = var{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = var{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = var{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = var{i(t,x), month(i(t)) = 09, 10, 11}",
+    "    yseasvar1   Multi-year seasonal variance (n-1)",
+    "                o(1,x) = var1{i(t,x), month(i(t)) = 12, 01, 02}",
+    "                o(2,x) = var1{i(t,x), month(i(t)) = 03, 04, 05}",
+    "                o(3,x) = var1{i(t,x), month(i(t)) = 06, 07, 08}",
+    "                o(4,x) = var1{i(t,x), month(i(t)) = 09, 10, 11}",
+};
+
+std::vector<std::string> YseaspctlHelp = {
     "NAME",
     "    yseaspctl - Multi-year seasonal percentile values",
     "",
@@ -3259,10 +3232,9 @@ static const char *YseaspctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *YdrunstatHelp[] = {
+std::vector<std::string> YdrunstatHelp = {
     "NAME",
     "    ydrunmin, ydrunmax, ydrunsum, ydrunmean, ydrunavg, ydrunstd, ydrunstd1, ",
     "    ydrunvar, ydrunvar1 - Multi-year daily running statistical values",
@@ -3331,10 +3303,9 @@ static const char *YdrunstatHelp[] = {
     "",
     "PARAMETER",
     "    nts  INTEGER  Number of timesteps",
-    NULL
 };
 
-static const char *YdrunpctlHelp[] = {
+std::vector<std::string> YdrunpctlHelp = {
     "NAME",
     "    ydrunpctl - Multi-year daily running percentile values",
     "",
@@ -3371,10 +3342,9 @@ static const char *YdrunpctlHelp[] = {
     "ENVIRONMENT",
     "    CDO_PCTL_NBINS",
     "        Sets the number of histogram bins. The default number is 101.",
-    NULL
 };
 
-static const char *FldcorHelp[] = {
+std::vector<std::string> FldcorHelp = {
     "NAME",
     "    fldcor - Correlation in grid space",
     "",
@@ -3387,16 +3357,17 @@ static const char *FldcorHelp[] = {
     "    of two fields for each timestep. With",
     "    ",
     "    S(t) = {x, i_1(t,x) != missval and i_2(t,x) != missval}",
+    "    ",
     "    it is",
     "    ",
     "    o(t,1) = Cor{(i_1(t,x), i_2(t,x)), x_1 < x <= x_n}",
+    "    ",
     "    where w(x) are the area weights obtained by the input streams.",
     "    For every timestep t only those field elements x belong to the sample,",
     "    which have i_1(t,x) != missval and i_2(t,x) != missval.",
-    NULL
 };
 
-static const char *TimcorHelp[] = {
+std::vector<std::string> TimcorHelp = {
     "NAME",
     "    timcor - Correlation over time",
     "",
@@ -3409,15 +3380,16 @@ static const char *TimcorHelp[] = {
     "    of two fields over all timesteps. With",
     "    ",
     "    S(x) = {t, i_1(t,x) != missval and i_2(t,x) != missval}",
+    "    ",
     "    it is",
     "    ",
     "    o(1,x) = Cor{(i_1(t,x), i_2(t,x)), t_1 < t <= t_n}",
+    "    ",
     "    For every gridpoint x only those timesteps t belong to the sample,",
     "    which have i_1(t,x) != missval and i_2(t,x) != missval.",
-    NULL
 };
 
-static const char *FldcovarHelp[] = {
+std::vector<std::string> FldcovarHelp = {
     "NAME",
     "    fldcovar - Covariance in grid space",
     "",
@@ -3437,10 +3409,9 @@ static const char *FldcovarHelp[] = {
     "    where w(x) are the area weights obtained by the input streams.",
     "    For every timestep t only those field elements x belong to the sample,",
     "    which have i_1(t,x) != missval and i_2(t,x) != missval.",
-    NULL
 };
 
-static const char *TimcovarHelp[] = {
+std::vector<std::string> TimcovarHelp = {
     "NAME",
     "    timcovar - Covariance over time",
     "",
@@ -3459,10 +3430,9 @@ static const char *TimcovarHelp[] = {
     "    ",
     "    For every gridpoint x only those timesteps t belong to the sample,",
     "    which have i_1(t,x) != missval and i_2(t,x) != missval.",
-    NULL
 };
 
-static const char *RegresHelp[] = {
+std::vector<std::string> RegresHelp = {
     "NAME",
     "    regres - Regression",
     "",
@@ -3474,10 +3444,9 @@ static const char *RegresHelp[] = {
     "    N(a+b*t,S^2) with unknown a, b and S^2. This operator estimates the",
     "    parameter b. For every field element x only those timesteps ",
     "    t belong to the sample S(x), which have i(t,x) NE miss.",
-    NULL
 };
 
-static const char *DetrendHelp[] = {
+std::vector<std::string> DetrendHelp = {
     "NAME",
     "    detrend - Detrend time series",
     "",
@@ -3491,10 +3460,9 @@ static const char *DetrendHelp[] = {
     "NOTE",
     "    This operator has to keep the fields of all timesteps concurrently in the memory.",
     "    If not enough memory is available use the operators trend and subtrend.",
-    NULL
 };
 
-static const char *TrendHelp[] = {
+std::vector<std::string> TrendHelp = {
     "NAME",
     "    trend - Trend of time series",
     "",
@@ -3508,10 +3476,9 @@ static const char *TrendHelp[] = {
     "    t belong to the sample S(x), which have i(t,x) NE miss.",
     "    Thus the estimation for a is stored in outfile1 and that for b is stored ",
     "    in outfile2. To subtract the trend from the data see operator subtrend.",
-    NULL
 };
 
-static const char *SubtrendHelp[] = {
+std::vector<std::string> SubtrendHelp = {
     "NAME",
     "    subtrend - Subtract a trend",
     "",
@@ -3524,10 +3491,9 @@ static const char *SubtrendHelp[] = {
     "    ",
     "    o(t,x) = i_1(t,x) - (i_2(1,x) + i_3(1,x)*t)",
     "    where t is the timesteps.",
-    NULL
 };
 
-static const char *EOFsHelp[] = {
+std::vector<std::string> EOFsHelp = {
     "NAME",
     "    eof, eoftime, eofspatial, eof3d - Empirical Orthogonal Functions",
     "",
@@ -3582,10 +3548,9 @@ static const char *EOFsHelp[] = {
     "        a sufficient level of convergence. If all annihilation-pairs of vectors have ",
     "        a norm below this value, the computation is considered to have converged ",
     "        properly. Otherwise, a warning will occur. The default value 1e-12.",
-    NULL
 };
 
-static const char *EofcoeffHelp[] = {
+std::vector<std::string> EofcoeffHelp = {
     "NAME",
     "    eofcoeff - Principal coefficients of EOFs",
     "",
@@ -3609,10 +3574,9 @@ static const char *EofcoeffHelp[] = {
     "        Set the default file suffix. This suffix will be added to the output file ",
     "        names instead of the filename extension derived from the file format. ",
     "        Set this variable to NULL to disable the adding of a file suffix.",
-    NULL
 };
 
-static const char *RemapbilHelp[] = {
+std::vector<std::string> RemapbilHelp = {
     "NAME",
     "    remapbil, genbil - Bilinear interpolation",
     "",
@@ -3640,10 +3604,9 @@ static const char *RemapbilHelp[] = {
     "    REMAP_EXTRAPOLATE",
     "        This variable is used to switch the extrapolation feature 'on' or 'off'.",
     "        By default the extrapolation is enabled for circular grids.",
-    NULL
 };
 
-static const char *RemapbicHelp[] = {
+std::vector<std::string> RemapbicHelp = {
     "NAME",
     "    remapbic, genbic - Bicubic interpolation",
     "",
@@ -3671,10 +3634,9 @@ static const char *RemapbicHelp[] = {
     "    REMAP_EXTRAPOLATE",
     "        This variable is used to switch the extrapolation feature 'on' or 'off'.",
     "        By default the extrapolation is enabled for circular grids.",
-    NULL
 };
 
-static const char *RemapnnHelp[] = {
+std::vector<std::string> RemapnnHelp = {
     "NAME",
     "    remapnn, gennn - Nearest neighbor remapping",
     "",
@@ -3702,10 +3664,9 @@ static const char *RemapnnHelp[] = {
     "        By default the extrapolation is enabled for this remapping method.",
     "    CDO_GRIDSEARCH_RADIUS",
     "        Grid search radius in degree, default 180 degree.",
-    NULL
 };
 
-static const char *RemapdisHelp[] = {
+std::vector<std::string> RemapdisHelp = {
     "NAME",
     "    remapdis, gendis - Distance-weighted average remapping",
     "",
@@ -3739,10 +3700,9 @@ static const char *RemapdisHelp[] = {
     "        By default the extrapolation is enabled for this remapping method.",
     "    CDO_GRIDSEARCH_RADIUS",
     "        Grid search radius in degree, default 180 degree.",
-    NULL
 };
 
-static const char *RemapyconHelp[] = {
+std::vector<std::string> RemapyconHelp = {
     "NAME",
     "    remapycon, genycon - First order conservative remapping",
     "",
@@ -3778,10 +3738,9 @@ static const char *RemapyconHelp[] = {
     "    REMAP_AREA_MIN",
     "        This variable is used to set the minimum destination area fraction. The default",
     "        of this variable is 0.0.",
-    NULL
 };
 
-static const char *RemapconHelp[] = {
+std::vector<std::string> RemapconHelp = {
     "NAME",
     "    remapcon, gencon - First order conservative remapping",
     "",
@@ -3821,10 +3780,9 @@ static const char *RemapconHelp[] = {
     "NOTE",
     "    The SCRIP conservative remapping method doesn't work correctly for some grid combinations.",
     "    Please use remapycon or genycon in case of problems. ",
-    NULL
 };
 
-static const char *Remapcon2Help[] = {
+std::vector<std::string> Remapcon2Help = {
     "NAME",
     "    remapcon2, gencon2 - Second order conservative remapping",
     "",
@@ -3863,10 +3821,9 @@ static const char *Remapcon2Help[] = {
     "",
     "NOTE",
     "    The SCRIP conservative remapping method doesn't work correctly for some grid combinations.",
-    NULL
 };
 
-static const char *RemaplafHelp[] = {
+std::vector<std::string> RemaplafHelp = {
     "NAME",
     "    remaplaf, genlaf - Largest area fraction remapping",
     "",
@@ -3895,10 +3852,9 @@ static const char *RemaplafHelp[] = {
     "    REMAP_AREA_MIN",
     "        This variable is used to set the minimum destination area fraction. The default",
     "        of this variable is 0.0.",
-    NULL
 };
 
-static const char *RemapHelp[] = {
+std::vector<std::string> RemapHelp = {
     "NAME",
     "    remap - Grid remapping",
     "",
@@ -3937,10 +3893,9 @@ static const char *RemapHelp[] = {
     "        of this variable is 0.0.",
     "    CDO_GRIDSEARCH_RADIUS",
     "        Grid search radius in degree, default 180 degree.",
-    NULL
 };
 
-static const char *RemapetaHelp[] = {
+std::vector<std::string> RemapetaHelp = {
     "NAME",
     "    remapeta - Remap vertical hybrid level",
     "",
@@ -3996,10 +3951,9 @@ static const char *RemapetaHelp[] = {
     "    In case remapeta complains about not finding any data on hybrid model levels you may wish",
     "    to use the setzaxis command to generate a zaxis description which conforms to the ECHAM convention.",
     "    See section \"1.4 Z-axis description\" for an example how to define a hybrid Z-axis.",
-    NULL
 };
 
-static const char *VertintmlHelp[] = {
+std::vector<std::string> VertintmlHelp = {
     "NAME",
     "    ml2pl, ml2hl - Vertical interpolation",
     "",
@@ -4034,10 +3988,9 @@ static const char *VertintmlHelp[] = {
     "ENVIRONMENT",
     "    EXTRAPOLATE",
     "        If set to 1 extrapolate missing values.",
-    NULL
 };
 
-static const char *VertintapHelp[] = {
+std::vector<std::string> VertintapHelp = {
     "NAME",
     "    ap2pl, ap2hl - Vertical interpolation",
     "",
@@ -4071,10 +4024,9 @@ static const char *VertintapHelp[] = {
     "",
     "NOTE",
     "    This is a specific implementation for NetCDF files from the ICON model, it may not work with data from other sources.",
-    NULL
 };
 
-static const char *IntlevelHelp[] = {
+std::vector<std::string> IntlevelHelp = {
     "NAME",
     "    intlevel - Linear level interpolation",
     "",
@@ -4086,10 +4038,9 @@ static const char *IntlevelHelp[] = {
     "",
     "PARAMETER",
     "    levels  FLOAT  Target levels",
-    NULL
 };
 
-static const char *Intlevel3dHelp[] = {
+std::vector<std::string> Intlevel3dHelp = {
     "NAME",
     "    intlevel3d, intlevelx3d - ",
     "    Linear level interpolation from/to 3d vertical coordinates",
@@ -4108,10 +4059,9 @@ static const char *Intlevel3dHelp[] = {
     "PARAMETER",
     "    icoordinate  STRING  filename for vertical source coordinates variable",
     "    infile2      STRING  target vertical coordinate field (intlevel3d only)",
-    NULL
 };
 
-static const char *InttimeHelp[] = {
+std::vector<std::string> InttimeHelp = {
     "NAME",
     "    inttime, intntime - Time interpolation",
     "",
@@ -4135,10 +4085,9 @@ static const char *InttimeHelp[] = {
     "    time  STRING  Start time (format hh:mm:ss)",
     "    inc   STRING  Optional increment (seconds, minutes, hours, days, months, years) [default: 0hour]",
     "    n     INTEGER Number of timesteps from one timestep to the next",
-    NULL
 };
 
-static const char *IntyearHelp[] = {
+std::vector<std::string> IntyearHelp = {
     "NAME",
     "    intyear - Year interpolation",
     "",
@@ -4163,10 +4112,9 @@ static const char *IntyearHelp[] = {
     "NOTE",
     "    This operator needs to open all output files simultaneously.",
     "    The maximum number of open files depends on the operating system!",
-    NULL
 };
 
-static const char *SpectralHelp[] = {
+std::vector<std::string> SpectralHelp = {
     "NAME",
     "    sp2gp, sp2gpl, gp2sp, gp2spl, sp2sp - Spectral transformation",
     "",
@@ -4208,10 +4156,9 @@ static const char *SpectralHelp[] = {
     "",
     "PARAMETER",
     "    trunc  INTEGER  New spectral resolution",
-    NULL
 };
 
-static const char *WindHelp[] = {
+std::vector<std::string> WindHelp = {
     "NAME",
     "    dv2uv, dv2uvl, uv2dv, uv2dvl, dv2ps - Wind transformation",
     "",
@@ -4261,10 +4208,9 @@ static const char *WindHelp[] = {
     "            Calculate spherical harmonic coefficients of velocity potential and stream function from ",
     "            spherical harmonic coefficients of relative divergence and vorticity. The divergence and ",
     "            vorticity need to have the names sd and svo or code numbers 155 and 138.",
-    NULL
 };
 
-static const char *ImportbinaryHelp[] = {
+std::vector<std::string> ImportbinaryHelp = {
     "NAME",
     "    import_binary - Import binary data sets",
     "",
@@ -4289,10 +4235,9 @@ static const char *ImportbinaryHelp[] = {
     "",
     "NOTE",
     "    Only 32-bit IEEE floats are supported for standard binary files!",
-    NULL
 };
 
-static const char *ImportcmsafHelp[] = {
+std::vector<std::string> ImportcmsafHelp = {
     "NAME",
     "    import_cmsaf - Import CM-SAF HDF5 files",
     "",
@@ -4338,10 +4283,9 @@ static const char *ImportcmsafHelp[] = {
     "    To use this operator, it is necessary to build CDO with HDF5 support (version 1.6 or higher).",
     "    The PROJ.4 library (version 4.6 or higher) is needed for full support of the remapping",
     "    functionality. ",
-    NULL
 };
 
-static const char *ImportamsrHelp[] = {
+std::vector<std::string> ImportamsrHelp = {
     "NAME",
     "    import_amsr - Import AMSR binary files",
     "",
@@ -4358,10 +4302,9 @@ static const char *ImportamsrHelp[] = {
     "    are followed by six nighttime maps in the same order. Time-Averaged files contain ",
     "    just the geophysical layers in the same order [SST, WSPD, VAPOR, CLOUD, RAIN].",
     "    More information to the data is available on the AMSR homepage http://www.remss.com/amsr.",
-    NULL
 };
 
-static const char *InputHelp[] = {
+std::vector<std::string> InputHelp = {
     "NAME",
     "    input, inputsrv, inputext - Formatted input",
     "",
@@ -4394,10 +4337,9 @@ static const char *InputHelp[] = {
     "PARAMETER",
     "    grid   STRING  Grid description file or name",
     "    zaxis  STRING  Z-axis description file",
-    NULL
 };
 
-static const char *OutputHelp[] = {
+std::vector<std::string> OutputHelp = {
     "NAME",
     "    output, outputf, outputint, outputsrv, outputext - Formatted output",
     "",
@@ -4434,10 +4376,9 @@ static const char *OutputHelp[] = {
     "PARAMETER",
     "    format  STRING  C-style format for one element (e.g. %13.6g)",
     "    nelem   INTEGER Number of elements for each row (default: nelem = 1)",
-    NULL
 };
 
-static const char *OutputtabHelp[] = {
+std::vector<std::string> OutputtabHelp = {
     "NAME",
     "    outputtab - Table output",
     "",
@@ -4474,10 +4415,9 @@ static const char *OutputtabHelp[] = {
     "",
     "PARAMETER",
     "    params  STRING   Comma separated list of keynames, one for each column of the table",
-    NULL
 };
 
-static const char *OutputgmtHelp[] = {
+std::vector<std::string> OutputgmtHelp = {
     "NAME",
     "    gmtxyz, gmtcells - GMT output",
     "",
@@ -4496,10 +4436,9 @@ static const char *OutputgmtHelp[] = {
     "    gmtcells  GMT multiple segment format",
     "              The operator exports the first field to the GMT multiple segment ASCII format.",
     "              The output can be used to create shaded gridfill plots with the GMT module psxy.",
-    NULL
 };
 
-static const char *GradsdesHelp[] = {
+std::vector<std::string> GradsdesHelp = {
     "NAME",
     "    gradsdes - GrADS data descriptor file",
     "",
@@ -4519,10 +4458,9 @@ static const char *GradsdesHelp[] = {
     "                A version 2 map file can be used only with GrADS version 1.8 or newer.",
     "                A version 4 map file can be used only with GrADS version 2.0 or newer.",
     "                The default is 4 for files >2GB, otherwise 2.",
-    NULL
 };
 
-static const char *AfterburnerHelp[] = {
+std::vector<std::string> AfterburnerHelp = {
     "NAME",
     "    after - ECHAM standard post processor",
     "",
@@ -4615,10 +4553,9 @@ static const char *AfterburnerHelp[] = {
     "",
     "PARAMETER",
     "    vct  STRING  File with VCT in ASCII format",
-    NULL
 };
 
-static const char *FilterHelp[] = {
+std::vector<std::string> FilterHelp = {
     "NAME",
     "    bandpass, lowpass, highpass - Time series filtering",
     "",
@@ -4664,10 +4601,9 @@ static const char *FilterHelp[] = {
     "",
     "NOTE",
     "    For better performace of these operators use the CDO configure option --with-fftw3.",
-    NULL
 };
 
-static const char *GridcellHelp[] = {
+std::vector<std::string> GridcellHelp = {
     "NAME",
     "    gridarea, gridweights - Grid cell quantities",
     "",
@@ -4691,10 +4627,9 @@ static const char *GridcellHelp[] = {
     "    PLANET_RADIUS",
     "        This variable is used to scale the computed grid cell areas to square meters. ",
     "        By default PLANET_RADIUS is set to an earth radius of 6371000 meter.",
-    NULL
 };
 
-static const char *SmoothHelp[] = {
+std::vector<std::string> SmoothHelp = {
     "NAME",
     "    smooth, smooth9 - Smooth grid points",
     "",
@@ -4733,10 +4668,9 @@ static const char *SmoothHelp[] = {
     "    form       STRING   Form of the curve, default form=linear",
     "    weight0    FLOAT    Weight at distance 0, default weight0=0.25",
     "    weightR    FLOAT    Weight at the search radius, default weightR=0.25",
-    NULL
 };
 
-static const char *ReplacevaluesHelp[] = {
+std::vector<std::string> ReplacevaluesHelp = {
     "NAME",
     "    setvals, setrtoc, setrtoc2 - Replace variable values",
     "",
@@ -4766,10 +4700,9 @@ static const char *ReplacevaluesHelp[] = {
     "    rmax               FLOAT   Upper bound",
     "    c                  FLOAT   New value - inside range",
     "    c2                 FLOAT   New value - outside range",
-    NULL
 };
 
-static const char *TimsortHelp[] = {
+std::vector<std::string> TimsortHelp = {
     "NAME",
     "    timsort - Timsort",
     "",
@@ -4781,10 +4714,9 @@ static const char *TimsortHelp[] = {
     "    After sorting it is:",
     "    ",
     "    o(t_1,x) <= o(t_2,x)      forall (t_1<t_2),x",
-    NULL
 };
 
-static const char *VargenHelp[] = {
+std::vector<std::string> VargenHelp = {
     "NAME",
     "    const, random, topo, for, stdatm - Generate a field",
     "",
@@ -4837,10 +4769,9 @@ static const char *VargenHelp[] = {
     "    end     FLOAT   End value of the loop",
     "    inc     FLOAT   Increment of the loop [default: 1]",
     "    levels  FLOAT   Target levels in metre above surface",
-    NULL
 };
 
-static const char *WindTransHelp[] = {
+std::vector<std::string> WindTransHelp = {
     "NAME",
     "    uvDestag, rotuvNorth, projuvLatLon - Wind Transformation",
     "",
@@ -4868,10 +4799,9 @@ static const char *WindTransHelp[] = {
     "PARAMETER",
     "    u,v            STRING  Pair of u,v wind components (use variable names or code numbers)",
     "    -/+0.5,-/+0.5  STRING  Destaggered grid offsets are optional (default -0.5,-0.5)",
-    NULL
 };
 
-static const char *RotuvbHelp[] = {
+std::vector<std::string> RotuvbHelp = {
     "NAME",
     "    rotuvb - Rotation",
     "",
@@ -4885,10 +4815,9 @@ static const char *RotuvbHelp[] = {
     "",
     "PARAMETER",
     "    u,v,...  STRING  Pairs of zonal and meridional velocity components (use variable names or code numbers)",
-    NULL
 };
 
-static const char *MastrfuHelp[] = {
+std::vector<std::string> MastrfuHelp = {
     "NAME",
     "    mastrfu - Mass stream function",
     "",
@@ -4899,10 +4828,9 @@ static const char *MastrfuHelp[] = {
     "    This is a special operator for the post processing of the atmospheric general circulation",
     "    model ECHAM. It computes the mass stream function (code=272). The input dataset have ",
     "    to be a zonal mean of v-velocity [m/s] (code=132) on pressure levels.",
-    NULL
 };
 
-static const char *DeriveparHelp[] = {
+std::vector<std::string> DeriveparHelp = {
     "NAME",
     "    sealevelpressure - Sea level pressure",
     "",
@@ -4912,10 +4840,9 @@ static const char *DeriveparHelp[] = {
     "DESCRIPTION",
     "    This operator computes the sea level pressure (air_pressure_at_sea_level). Required input fields",
     "    are surface_air_pressure, surface_geopotential and air_temperature on hybrid sigma pressure levels.",
-    NULL
 };
 
-static const char *AdisitHelp[] = {
+std::vector<std::string> AdisitHelp = {
     "NAME",
     "    adisit, adipot - Potential temperature to in-situ temperature and vice versa",
     "",
@@ -4943,10 +4870,9 @@ static const char *AdisitHelp[] = {
     "",
     "PARAMETER",
     "    pressure  FLOAT   Pressure in bar (constant value assigned to all levels)",
-    NULL
 };
 
-static const char *RhopotHelp[] = {
+std::vector<std::string> RhopotHelp = {
     "NAME",
     "    rhopot - Calculates potential density",
     "",
@@ -4961,10 +4887,9 @@ static const char *RhopotHelp[] = {
     "",
     "PARAMETER",
     "    pressure  FLOAT   Pressure in bar (constant value assigned to all levels)",
-    NULL
 };
 
-static const char *HistogramHelp[] = {
+std::vector<std::string> HistogramHelp = {
     "NAME",
     "    histcount, histsum, histmean, histfreq - Histogram",
     "",
@@ -4993,10 +4918,9 @@ static const char *HistogramHelp[] = {
     "",
     "PARAMETER",
     "    bounds  FLOAT  Comma separated list of the bin bounds (-inf and inf valid)",
-    NULL
 };
 
-static const char *SethaloHelp[] = {
+std::vector<std::string> SethaloHelp = {
     "NAME",
     "    sethalo - Set the left and right bounds of a field",
     "",
@@ -5013,10 +4937,9 @@ static const char *SethaloHelp[] = {
     "PARAMETER",
     "    lhalo  INTEGER  Left halo",
     "    rhalo  INTEGER  Right halo",
-    NULL
 };
 
-static const char *WctHelp[] = {
+std::vector<std::string> WctHelp = {
     "NAME",
     "    wct - Windchill temperature",
     "",
@@ -5031,10 +4954,9 @@ static const char *WctHelp[] = {
     "    of v >= 1.39 m/s. Whenever these conditions are not satisfied, a missing",
     "    value is written to outfile. Note that temperature and wind speed records",
     "    have to be given in units of °C and m/s, respectively.",
-    NULL
 };
 
-static const char *FdnsHelp[] = {
+std::vector<std::string> FdnsHelp = {
     "NAME",
     "    fdns - Frost days where no snow index per time period",
     "",
@@ -5049,10 +4971,9 @@ static const char *FdnsHelp[] = {
     "    have to be given in units of Kelvin.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    NULL
 };
 
-static const char *StrwinHelp[] = {
+std::vector<std::string> StrwinHelp = {
     "NAME",
     "    strwin - Strong wind days index per time period",
     "",
@@ -5072,10 +4993,9 @@ static const char *StrwinHelp[] = {
     "",
     "PARAMETER",
     "    v  FLOAT   Horizontal wind speed threshold (m/s, default v = 10.5 m/s)",
-    NULL
 };
 
-static const char *StrbreHelp[] = {
+std::vector<std::string> StrbreHelp = {
     "NAME",
     "    strbre - Strong breeze days index per time period",
     "",
@@ -5091,10 +5011,9 @@ static const char *StrbreHelp[] = {
     "    meridional wind speeds and have to be given in units of m/s.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    NULL
 };
 
-static const char *StrgalHelp[] = {
+std::vector<std::string> StrgalHelp = {
     "NAME",
     "    strgal - Strong gale days index per time period",
     "",
@@ -5110,10 +5029,9 @@ static const char *StrgalHelp[] = {
     "    meridional wind speeds and have to be given in units of m/s.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    NULL
 };
 
-static const char *HurrHelp[] = {
+std::vector<std::string> HurrHelp = {
     "NAME",
     "    hurr - Hurricane days index per time period",
     "",
@@ -5129,10 +5047,9 @@ static const char *HurrHelp[] = {
     "    meridional wind speeds and have to be given in units of m/s.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    NULL
 };
 
-static const char *CMORliteHelp[] = {
+std::vector<std::string> CMORliteHelp = {
     "NAME",
     "    cmorlite - CMOR lite",
     "",
@@ -5178,10 +5095,9 @@ static const char *CMORliteHelp[] = {
     "PARAMETER",
     "    table    STRING   Name of the CMOR table as specified from PCMDI",
     "    convert  STRING   Converts the units if necessary",
-    NULL
 };
 
-static const char *MagplotHelp[] = {
+std::vector<std::string> MagplotHelp = {
     "NAME",
     "    contour, shaded, grfill - Lat/Lon plot",
     "",
@@ -5272,10 +5188,9 @@ static const char *MagplotHelp[] = {
     "    \"reddishorange\", \"orange\", \"yellowishorange\", \"orangeyellow\", \"orangishyellow\",",
     "    \"greenishyellow\", \"yellowgreen\", \"yellowishgreen\", \"bluishgreen\", \"bluegreen\",",
     "    \"greenishblue\", \"purplishblue\", \"bluepurple\", \"bluishpurple\", \"purple\", \"white\"",
-    NULL
 };
 
-static const char *MagvectorHelp[] = {
+std::vector<std::string> MagvectorHelp = {
     "NAME",
     "    vector - Lat/Lon vector plot",
     "",
@@ -5302,10 +5217,9 @@ static const char *MagvectorHelp[] = {
     "",
     "PARAMETER",
     "    params  STRING   Comma separated list of plot parameters",
-    NULL
 };
 
-static const char *MaggraphHelp[] = {
+std::vector<std::string> MaggraphHelp = {
     "NAME",
     "    graph - Line graph plot",
     "",
@@ -5334,10 +5248,9 @@ static const char *MaggraphHelp[] = {
     "",
     "PARAMETER",
     "    params  STRING   Comma separated list of plot parameters",
-    NULL
 };
 
-static const char *EcaCddHelp[] = {
+std::vector<std::string> EcaCddHelp = {
     "NAME",
     "    eca_cdd - Consecutive dry days index per time period",
     "",
@@ -5349,17 +5262,13 @@ static const char *EcaCddHelp[] = {
     "    of consecutive days where RR is less than R is counted. R is an optional parameter with ",
     "    default R = 1 mm. A further output variable is the number of dry periods of more than N days.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - consecutive_dry_days_index_per_time_period",
-    "    - number_of_cdd_periods_with_more_than_<N>days_per_time_period",
     "",
     "PARAMETER",
     "    R  FLOAT    Precipitation threshold (unit: mm; default: R = 1 mm)",
     "    N  INTEGER  Minimum number of days exceeded (default: N = 5)",
-    NULL
 };
 
-static const char *EcaCfdHelp[] = {
+std::vector<std::string> EcaCfdHelp = {
     "NAME",
     "    eca_cfd - Consecutive frost days index per time period",
     "",
@@ -5371,16 +5280,12 @@ static const char *EcaCfdHelp[] = {
     "    consecutive days where TN < 0 °C is counted. Note that TN have to be given in units of Kelvin.",
     "    A further output variable is the number of frost periods of more than N days.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - consecutive_frost_days_index_per_time_period",
-    "    - number_of_cfd_periods_with_more_than_<N>days_per_time_period",
     "",
     "PARAMETER",
     "    N  INTEGER  Minimum number of days exceeded (default: N = 5)",
-    NULL
 };
 
-static const char *EcaCsuHelp[] = {
+std::vector<std::string> EcaCsuHelp = {
     "NAME",
     "    eca_csu - Consecutive summer days index per time period",
     "",
@@ -5393,17 +5298,13 @@ static const char *EcaCsuHelp[] = {
     "    Note that TN have to be given in units of Kelvin, whereas T have to be given in degrees Celsius.",
     "    A further output variable is the number of summer periods of more than N days.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - consecutive_summer_days_index_per_time_period",
-    "    - number_of_csu_periods_with_more_than_<N>days_per_time_period",
     "",
     "PARAMETER",
     "    T  FLOAT    Temperature threshold (unit: °C; default: T = 25°C)",
     "    N  INTEGER  Minimum number of days exceeded (default: N = 5)",
-    NULL
 };
 
-static const char *EcaCwdHelp[] = {
+std::vector<std::string> EcaCwdHelp = {
     "NAME",
     "    eca_cwd - Consecutive wet days index per time period",
     "",
@@ -5415,17 +5316,13 @@ static const char *EcaCwdHelp[] = {
     "    of consecutive days where RR is at least R is counted. R is an optional parameter with ",
     "    default R = 1 mm. A further output variable is the number of wet periods of more than N days.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - consecutive_wet_days_index_per_time_period",
-    "    - number_of_cwd_periods_with_more_than_<N>days_per_time_period",
     "",
     "PARAMETER",
     "    R  FLOAT    Precipitation threshold (unit: mm; default: R = 1 mm)",
     "    N  INTEGER  Minimum number of days exceeded (default: N = 5)",
-    NULL
 };
 
-static const char *EcaCwdiHelp[] = {
+std::vector<std::string> EcaCwdiHelp = {
     "NAME",
     "    eca_cwdi - Cold wave duration index wrt mean of reference period",
     "",
@@ -5441,17 +5338,13 @@ static const char *EcaCwdiHelp[] = {
     "    TNnorm is calculated as the mean of minimum temperatures of a five day window centred on each calendar day ",
     "    of a given climate reference period. Note that both TN and TNnorm have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - cold_wave_duration_index_wrt_mean_of_reference_period",
-    "    - cold_waves_per_time_period",
     "",
     "PARAMETER",
     "    nday  INTEGER  Number of consecutive days (default: nday = 6)",
     "    T     FLOAT    Temperature offset (unit: °C; default: T = 5°C)",
-    NULL
 };
 
-static const char *EcaCwfiHelp[] = {
+std::vector<std::string> EcaCwfiHelp = {
     "NAME",
     "    eca_cwfi - Cold-spell days index wrt 10th percentile of reference period",
     "",
@@ -5468,16 +5361,12 @@ static const char *EcaCwfiHelp[] = {
     "    centred on each calendar day of a given climate reference period. Note that both TG and TGn10 ",
     "    have to be given in the same units. The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - cold_spell_days_index_wrt_10th_percentile_of_reference_period",
-    "    - cold_spell_periods_per_time_period",
     "",
     "PARAMETER",
     "    nday  INTEGER  Number of consecutive days (default: nday = 6)",
-    NULL
 };
 
-static const char *EcaEtrHelp[] = {
+std::vector<std::string> EcaEtrHelp = {
     "NAME",
     "    eca_etr - Intra-period extreme temperature range",
     "",
@@ -5491,12 +5380,9 @@ static const char *EcaEtrHelp[] = {
     "    Note that TX and TN have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timesteps in infile1 and infile2.",
-    "    The following variables are created: ",
-    "    - intra_period_extreme_temperature_range",
-    NULL
 };
 
-static const char *EcaFdHelp[] = {
+std::vector<std::string> EcaFdHelp = {
     "NAME",
     "    eca_fd - Frost days index per time period",
     "",
@@ -5509,12 +5395,9 @@ static const char *EcaFdHelp[] = {
     "    that TN have to be given in units of Kelvin.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - frost_days_index_per_time_period",
-    NULL
 };
 
-static const char *EcaGslHelp[] = {
+std::vector<std::string> EcaGslHelp = {
     "NAME",
     "    eca_gsl - Thermal Growing season length index",
     "",
@@ -5526,7 +5409,7 @@ static const char *EcaGslHelp[] = {
     "    Within a period of 12 months, the thermal growing season length is officially defined as the number of days between:",
     "    - first occurrence of at least nday consecutive days with TG > T",
     "    - first occurrence of at least nday consecutive days with TG < T within the last 6 months",
-    "    On northern hemispere, this period corresponds with the regular year, whereas on southern hemispere, it starts ",
+    "    On northern hemisphere, this period corresponds with the regular year, whereas on southern hemisphere, it starts ",
     "    at July 1st. Please note, that this definition may lead to weird results concerning values TG = T: ",
     "    In the first half of the period, these days do not contribute to the gsl, but they do within the second half.",
     "    Moreover this definition could lead to discontinuous values in equatorial regions.",
@@ -5538,18 +5421,14 @@ static const char *EcaGslHelp[] = {
     "    have to be given in degrees Celsius.",
     "    ",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - thermal_growing_season_length",
-    "    - day_of_year_of_growing_season_start",
     "",
     "PARAMETER",
     "    nday   INTEGER  Number of consecutive days (default: nday = 6)",
     "    T      FLOAT    Temperature threshold (unit: °C; default: T = 5°C)",
     "    fland  FLOAT    Land fraction threshold (default: fland = 0.5)",
-    NULL
 };
 
-static const char *EcaHdHelp[] = {
+std::vector<std::string> EcaHdHelp = {
     "NAME",
     "    eca_hd - Heating degree days per time period",
     "",
@@ -5563,16 +5442,13 @@ static const char *EcaHdHelp[] = {
     "    If only T1 is given, T2 is set to T1. Note that TG have to be given in units ",
     "    of kelvin, whereas T1 and T2 have to be given in degrees Celsius.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - heating_degree_days_per_time_period",
     "",
     "PARAMETER",
     "    T1  FLOAT   Temperature limit (unit: °C; default: T1 = 17°C)",
     "    T2  FLOAT   Temperature limit (unit: °C; default: T2 = T1)",
-    NULL
 };
 
-static const char *EcaHwdiHelp[] = {
+std::vector<std::string> EcaHwdiHelp = {
     "NAME",
     "    eca_hwdi - Heat wave duration index wrt mean of reference period",
     "",
@@ -5588,17 +5464,13 @@ static const char *EcaHwdiHelp[] = {
     "    TXnorm is calculated as the mean of maximum temperatures of a five day window centred on each calendar day",
     "    of a given climate reference period. Note that both TX and TXnorm have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - heat_wave_duration_index_wrt_mean_of_reference_period",
-    "    - heat_waves_per_time_period",
     "",
     "PARAMETER",
     "    nday  INTEGER  Number of consecutive days (default: nday = 6)",
     "    T     FLOAT    Temperature offset (unit: °C; default: T = 5°C)",
-    NULL
 };
 
-static const char *EcaHwfiHelp[] = {
+std::vector<std::string> EcaHwfiHelp = {
     "NAME",
     "    eca_hwfi - Warm spell days index wrt 90th percentile of reference period",
     "",
@@ -5618,16 +5490,12 @@ static const char *EcaHwfiHelp[] = {
     "    Note that both TG and TGn90 have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - warm_spell_days_index_wrt_90th_percentile_of_reference_period",
-    "    - warm_spell_periods_per_time_period",
     "",
     "PARAMETER",
     "    nday  INTEGER  Number of consecutive days (default: nday = 6)",
-    NULL
 };
 
-static const char *EcaIdHelp[] = {
+std::vector<std::string> EcaIdHelp = {
     "NAME",
     "    eca_id - Ice days index per time period",
     "",
@@ -5640,12 +5508,9 @@ static const char *EcaIdHelp[] = {
     "    that TX have to be given in units of Kelvin.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - ice_days_index_per_time_period",
-    NULL
 };
 
-static const char *EcaR75pHelp[] = {
+std::vector<std::string> EcaR75pHelp = {
     "NAME",
     "    eca_r75p - Moderate wet days wrt 75th percentile of reference period",
     "",
@@ -5659,12 +5524,9 @@ static const char *EcaR75pHelp[] = {
     "    RRn75 is calculated as the 75th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,75.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - moderate_wet_days_wrt_75th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaR75ptotHelp[] = {
+std::vector<std::string> EcaR75ptotHelp = {
     "NAME",
     "    eca_r75ptot - Precipitation percent due to R75p days",
     "",
@@ -5679,12 +5541,9 @@ static const char *EcaR75ptotHelp[] = {
     "    RRn75 is calculated as the 75th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,75.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - precipitation_percent_due_to_R75p_days",
-    NULL
 };
 
-static const char *EcaR90pHelp[] = {
+std::vector<std::string> EcaR90pHelp = {
     "NAME",
     "    eca_r90p - Wet days wrt 90th percentile of reference period",
     "",
@@ -5698,12 +5557,9 @@ static const char *EcaR90pHelp[] = {
     "    RRn90 is calculated as the 90th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,90.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - wet_days_wrt_90th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaR90ptotHelp[] = {
+std::vector<std::string> EcaR90ptotHelp = {
     "NAME",
     "    eca_r90ptot - Precipitation percent due to R90p days",
     "",
@@ -5718,12 +5574,9 @@ static const char *EcaR90ptotHelp[] = {
     "    RRn90 is calculated as the 90th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,90.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - precipitation_percent_due_to_R90p_days",
-    NULL
 };
 
-static const char *EcaR95pHelp[] = {
+std::vector<std::string> EcaR95pHelp = {
     "NAME",
     "    eca_r95p - Very wet days wrt 95th percentile of reference period",
     "",
@@ -5737,12 +5590,9 @@ static const char *EcaR95pHelp[] = {
     "    RRn95 is calculated as the 95th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,95.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - very_wet_days_wrt_95th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaR95ptotHelp[] = {
+std::vector<std::string> EcaR95ptotHelp = {
     "NAME",
     "    eca_r95ptot - Precipitation percent due to R95p days",
     "",
@@ -5757,12 +5607,9 @@ static const char *EcaR95ptotHelp[] = {
     "    RRn95 is calculated as the 95th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,95.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - precipitation_percent_due_to_R95p_days",
-    NULL
 };
 
-static const char *EcaR99pHelp[] = {
+std::vector<std::string> EcaR99pHelp = {
     "NAME",
     "    eca_r99p - Extremely wet days wrt 99th percentile of reference period",
     "",
@@ -5776,12 +5623,9 @@ static const char *EcaR99pHelp[] = {
     "    RRn99 is calculated as the 99th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,99.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - extremely_wet_days_wrt_99th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaR99ptotHelp[] = {
+std::vector<std::string> EcaR99ptotHelp = {
     "NAME",
     "    eca_r99ptot - Precipitation percent due to R99p days",
     "",
@@ -5796,12 +5640,9 @@ static const char *EcaR99ptotHelp[] = {
     "    RRn99 is calculated as the 99th percentile of all wet days of a given climate reference period.",
     "    Usually infile2 is generated by the operator ydaypctl,99.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - precipitation_percent_due_to_R99p_days",
-    NULL
 };
 
-static const char *EcaPdHelp[] = {
+std::vector<std::string> EcaPdHelp = {
     "NAME",
     "    eca_pd, eca_r10mm, eca_r20mm - Precipitation days index per time period",
     "",
@@ -5815,8 +5656,6 @@ static const char *EcaPdHelp[] = {
     "    then the number of days where RR is at least x mm is counted. ",
     "    eca_r10mm and eca_r20mm are specific ECA operators with a daily precipitation amount of 10 and 20 mm respectively.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - precipitation_days_index_per_time_period",
     "",
     "OPERATORS",
     "    eca_pd     Precipitation days index per time period",
@@ -5832,10 +5671,9 @@ static const char *EcaPdHelp[] = {
     "NOTE",
     "    Precipitation rates in [mm/s] have to be converted to precipitation amounts (multiply with 86400 s).",
     "    Apart from metadata information the result of eca_pd,1 and eca_rr1 is the same.",
-    NULL
 };
 
-static const char *EcaRr1Help[] = {
+std::vector<std::string> EcaRr1Help = {
     "NAME",
     "    eca_rr1 - Wet days index per time period",
     "",
@@ -5846,15 +5684,12 @@ static const char *EcaRr1Help[] = {
     "    Let infile be a time series of the daily precipitation amount RR in [mm] (or alternatively in [kg m-2]), then",
     "    the number of days where RR is at least R is counted. R is an optional parameter with default R = 1 mm. ",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - wet_days_index_per_time_period",
     "",
     "PARAMETER",
     "    R  FLOAT   Precipitation threshold (unit: mm; default: R = 1 mm)",
-    NULL
 };
 
-static const char *EcaRx1dayHelp[] = {
+std::vector<std::string> EcaRx1dayHelp = {
     "NAME",
     "    eca_rx1day - Highest one day precipitation amount per time period",
     "",
@@ -5868,15 +5703,12 @@ static const char *EcaRx1dayHelp[] = {
     "    amounts are determined for each month. ",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - highest_one_day_precipitation_amount_per_time_period",
     "",
     "PARAMETER",
     "    mode  STRING   Operation mode (optional). If mode = 'm' then maximum daily precipitation amounts are determined for each month",
-    NULL
 };
 
-static const char *EcaRx5dayHelp[] = {
+std::vector<std::string> EcaRx5dayHelp = {
     "NAME",
     "    eca_rx5day - Highest five-day precipitation amount per time period",
     "",
@@ -5888,16 +5720,12 @@ static const char *EcaRx5dayHelp[] = {
     "    A further output variable is the number of 5 day period with precipitation totals greater than x mm, where x ",
     "    is an optional parameter with default x = 50 mm.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - highest_five_day_precipitation_amount_per_time_period",
-    "    - number_of_5day_heavy_precipitation_periods_per_time_period",
     "",
     "PARAMETER",
     "    x  FLOAT   Precipitation threshold (unit: mm; default: x = 50 mm)",
-    NULL
 };
 
-static const char *EcaSdiiHelp[] = {
+std::vector<std::string> EcaSdiiHelp = {
     "NAME",
     "    eca_sdii - Simple daily intensity index per time period",
     "",
@@ -5908,15 +5736,12 @@ static const char *EcaSdiiHelp[] = {
     "    Let infile be a time series of the daily precipitation amount RR, then the mean precipitation amount at ",
     "    wet days (RR > R) is written to outfile. R is an optional parameter with default R = 1 mm.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - simple_daily_intensity_index_per_time_period",
     "",
     "PARAMETER",
     "    R  FLOAT   Precipitation threshold (unit: mm; default: R = 1 mm)",
-    NULL
 };
 
-static const char *EcaSuHelp[] = {
+std::vector<std::string> EcaSuHelp = {
     "NAME",
     "    eca_su - Summer days index per time period",
     "",
@@ -5928,15 +5753,12 @@ static const char *EcaSuHelp[] = {
     "    TX > T is counted. The number T is an optional parameter with default T = 25°C. ",
     "    Note that TX have to be given in units of Kelvin, whereas T have to be given in degrees Celsius.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - summer_days_index_per_time_period",
     "",
     "PARAMETER",
     "    T  FLOAT   Temperature threshold (unit: °C; default: T = 25°C)",
-    NULL
 };
 
-static const char *EcaTg10pHelp[] = {
+std::vector<std::string> EcaTg10pHelp = {
     "NAME",
     "    eca_tg10p - Cold days percent wrt 10th percentile of reference period",
     "",
@@ -5953,12 +5775,9 @@ static const char *EcaTg10pHelp[] = {
     "    Note that both TG and TGn10 have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - cold_days_percent_wrt_10th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaTg90pHelp[] = {
+std::vector<std::string> EcaTg90pHelp = {
     "NAME",
     "    eca_tg90p - Warm days percent wrt 90th percentile of reference period",
     "",
@@ -5975,12 +5794,9 @@ static const char *EcaTg90pHelp[] = {
     "    Note that both TG and TGn90 have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - warm_days_percent_wrt_90th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaTn10pHelp[] = {
+std::vector<std::string> EcaTn10pHelp = {
     "NAME",
     "    eca_tn10p - Cold nights percent wrt 10th percentile of reference period",
     "",
@@ -5997,12 +5813,9 @@ static const char *EcaTn10pHelp[] = {
     "    Note that both TN and TNn10 have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - cold_nights_percent_wrt_10th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaTn90pHelp[] = {
+std::vector<std::string> EcaTn90pHelp = {
     "NAME",
     "    eca_tn90p - Warm nights percent wrt 90th percentile of reference period",
     "",
@@ -6016,12 +5829,9 @@ static const char *EcaTn90pHelp[] = {
     "    of daily minimum temperatures of a five day window centred on each calendar day of a given climate",
     "    reference period. Note that both TN and TNn90 have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - warm_nights_percent_wrt_90th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaTrHelp[] = {
+std::vector<std::string> EcaTrHelp = {
     "NAME",
     "    eca_tr - Tropical nights index per time period",
     "",
@@ -6033,15 +5843,12 @@ static const char *EcaTrHelp[] = {
     "    TN > T is counted. The number T is an optional parameter with default T = 20°C. ",
     "    Note that TN have to be given in units of Kelvin, whereas T have to be given in degrees Celsius.",
     "    The date information of a timestep in outfile is the date of the last contributing timestep in infile.",
-    "    The following variables are created: ",
-    "    - tropical_nights_index_per_time_period",
     "",
     "PARAMETER",
     "    T  FLOAT   Temperature threshold (unit: °C; default: T = 20°C)",
-    NULL
 };
 
-static const char *EcaTx10pHelp[] = {
+std::vector<std::string> EcaTx10pHelp = {
     "NAME",
     "    eca_tx10p - Very cold days percent wrt 10th percentile of reference period",
     "",
@@ -6058,12 +5865,9 @@ static const char *EcaTx10pHelp[] = {
     "    Note that both TX and TXn10 have to be givenin the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - very_cold_days_percent_wrt_10th_percentile_of_reference_period",
-    NULL
 };
 
-static const char *EcaTx90pHelp[] = {
+std::vector<std::string> EcaTx90pHelp = {
     "NAME",
     "    eca_tx90p - Very warm days percent wrt 90th percentile of reference period",
     "",
@@ -6080,7 +5884,4 @@ static const char *EcaTx90pHelp[] = {
     "    Note that both TX and TXn90 have to be given in the same units.",
     "    The date information of a timestep in outfile is the date of",
     "    the last contributing timestep in infile1.",
-    "    The following variables are created: ",
-    "    - very_warm_days_percent_wrt_90th_percentile_of_reference_period",
-    NULL
 };
diff --git a/src/par_io.c b/src/par_io.cc
similarity index 91%
rename from src/par_io.c
rename to src/par_io.cc
index ad1bcf9..0e68a76 100644
--- a/src/par_io.c
+++ b/src/par_io.cc
@@ -27,10 +27,10 @@ void *readRecord(void *arg)
   nmiss    = read_arg->nmiss;
   array    = read_arg->array;
 
-  /* fprintf(stderr, "streamInqRecord: streamID = %d\n", streamID); */
-  streamInqRecord(streamID, varID, levelID);
-  streamReadRecord(streamID, array, nmiss);
-  /* fprintf(stderr, "readRecord: varID %d levelID %d\n", *varID, *levelID); */
+  /* fprintf(stderr, "pstreamInqRecord: streamID = %d\n", streamID); */
+  pstreamInqRecord(streamID, varID, levelID);
+  pstreamReadRecord(streamID, array, nmiss);
+  /* fprintf(stderr, "pstreamReadRecord: varID %d levelID %d\n", *varID, *levelID); */
 
   return (NULL);
 }
diff --git a/src/parse_literal.c b/src/parse_literal.cc
similarity index 100%
rename from src/parse_literal.c
rename to src/parse_literal.cc
diff --git a/src/percentiles.c b/src/percentiles.cc
similarity index 100%
rename from src/percentiles.c
rename to src/percentiles.cc
diff --git a/src/percentiles_hist.c b/src/percentiles_hist.cc
similarity index 100%
rename from src/percentiles_hist.c
rename to src/percentiles_hist.cc
diff --git a/src/pipe.c b/src/pipe.c
deleted file mode 100644
index af33c4a..0000000
--- a/src/pipe.c
+++ /dev/null
@@ -1,619 +0,0 @@
-/*
-  This file is part of CDO. CDO is a collection of Operators to
-  manipulate and analyse Climate model Data.
-
-  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
-  See COPYING file for copying and redistribution conditions.
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-*/
-
-
-#if defined(HAVE_CONFIG_H)
-#  include "config.h"
-#endif
-
-#ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE 600 /* struct timespec */
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <time.h> // time()
-#include "pipe.h"
-#include "pstream_int.h"
-#include <cdi.h>
-#include "cdo.h"
-#include "cdo_int.h"
-#include "error.h"
-#include "dmemory.h"
-
-#if defined(HAVE_LIBPTHREAD)
-
-static int PipeDebug = 0;
-
-static
-void pipe_init(pipe_t *pipe)
-{
-  pthread_mutexattr_t m_attr;
-  pthread_condattr_t c_attr;
-
-  pthread_mutexattr_init(&m_attr);
-  pthread_condattr_init(&c_attr);
-  /*
-#if defined(_POSIX_THREAD_PROCESS_SHARED)
-  if ( PipeDebug )
-    {
-      Message("setpshared mutexattr to PTHREAD_PROCESS_SHARED");
-      Message("setpshared condattr to PTHREAD_PROCESS_SHARED");
-    }
-
-  pthread_mutexattr_setpshared(&m_attr, PTHREAD_PROCESS_SHARED);
-  pthread_condattr_setpshared(&c_attr, PTHREAD_PROCESS_SHARED);
-
-  if ( PipeDebug )
-    {
-      int pshared;
-      pthread_mutexattr_getpshared(&m_attr, &pshared);
-      if ( pshared == PTHREAD_PROCESS_SHARED )
-	Message("getpshared mutexattr is PTHREAD_PROCESS_SHARED");
-      else if ( pshared == PTHREAD_PROCESS_PRIVATE )
-	Message("getpshared mutexattr is PTHREAD_PROCESS_PRIVATE");
-
-      pthread_condattr_getpshared(&c_attr, &pshared);
-      if ( pshared == PTHREAD_PROCESS_SHARED )
-	Message("getpshared condattr is PTHREAD_PROCESS_SHARED");
-      else if ( pshared == PTHREAD_PROCESS_PRIVATE )
-	Message("getpshared condattr is PTHREAD_PROCESS_PRIVATE");
-    }
-#else
-  if ( PipeDebug )
-    Message("_POSIX_THREAD_PROCESS_SHARED undefined");
-#endif
-  */
-  pipe->EOP     = 0;
-
-  pipe->recIDr  = -1;
-  pipe->recIDw  = -1;
-  pipe->tsIDr   = -1;
-  pipe->tsIDw   = -1;
-
-  pipe->nvals   = 0;
-  pipe->nmiss   = 0;
-  pipe->data    = NULL;
-  pipe->hasdata = 0;
-  pipe->usedata = TRUE;
-  pipe->pstreamptr_in = 0;
-
-  pipe->mutex = (pthread_mutex_t*) Malloc(sizeof(pthread_mutex_t));
-  pthread_mutex_init(pipe->mutex, &m_attr);
-
-  pipe->tsDef = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->tsDef, &c_attr);
-  pipe->tsInq = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->tsInq, &c_attr);
-
-  pipe->recDef = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->recDef, &c_attr);
-  pipe->recInq = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->recInq, &c_attr);
-  
-  pipe->vlistDef = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->vlistDef, &c_attr);
-  pipe->isclosed = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->isclosed, &c_attr);
-
-  pipe->writeCond = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->writeCond, &c_attr);
-
-  pipe->readCond = (pthread_cond_t*) Malloc(sizeof(pthread_cond_t));
-  pthread_cond_init(pipe->readCond, &c_attr);
-
-  pthread_mutexattr_destroy(&m_attr);
-  pthread_condattr_destroy(&c_attr);
-}
-
-
-pipe_t *pipeNew()
-{
-  pipe_t *pipe = (pipe_t*) Malloc(sizeof(pipe_t));
-
-  pipe_init(pipe);
-
-  return pipe;
-}
-
-
-void pipeDelete(pipe_t *pipe)
-{
-  if ( pipe )
-    {
-      if ( pipe->mutex )     Free(pipe->mutex);
-      if ( pipe->tsDef )     Free(pipe->tsDef);
-      if ( pipe->tsInq )     Free(pipe->tsInq);
-      if ( pipe->recDef )    Free(pipe->recDef);
-      if ( pipe->recInq )    Free(pipe->recInq);
-      if ( pipe->vlistDef )  Free(pipe->vlistDef);
-      if ( pipe->isclosed )  Free(pipe->isclosed);
-      if ( pipe->writeCond ) Free(pipe->writeCond);
-      if ( pipe->readCond )  Free(pipe->readCond);
-      Free(pipe);
-    }
-}
-
-
-void pipeDefVlist(pstream_t *pstreamptr, int vlistID)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pstreamptr->vlistID = vlistID;
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK  
-
-  pthread_cond_signal(pipe->vlistDef);
-}
-
-#define TIMEOUT  1 // wait 1 seconds
-#define MIN_WAIT_CYCLES   10
-#define MAX_WAIT_CYCLES 3600
-int processNumsActive(void);
-
-int pipeInqVlist(pstream_t *pstreamptr)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-  int vlistID = -1;
-  struct timespec time_to_wait;
-  int retcode = 0;
-  int nwaitcycles = 0;
-
-  time_to_wait.tv_sec  = 0;
-  time_to_wait.tv_nsec = 0;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  time_to_wait.tv_sec = time(NULL);
-  while ( pstreamptr->vlistID == -1 && retcode == 0 )
-    {
-      time_to_wait.tv_sec += TIMEOUT;
-      // fprintf(stderr, "tvsec %g\n", (double) time_to_wait.tv_sec);
-      if ( PipeDebug ) Message("%s wait of vlistDef", pname);
-      // pthread_cond_wait(pipe->vlistDef, pipe->mutex);
-      retcode = pthread_cond_timedwait(pipe->vlistDef, pipe->mutex, &time_to_wait);
-      // fprintf(stderr, "self %d retcode %d %d %d\n", pstreamptr->self, retcode, processNumsActive(), pstreamptr->vlistID);
-      if ( retcode != 0 && nwaitcycles++ < MAX_WAIT_CYCLES )
-	{
-	  if ( processNumsActive() > 1 || (processNumsActive() == 1 && nwaitcycles < MIN_WAIT_CYCLES) ) retcode = 0;
-	}
-    }
-
-  if ( retcode == 0 )
-    vlistID = pstreamptr->vlistID;
-  else if ( PipeDebug ) 
-    Message("%s timeout!", pname);
-
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  return vlistID;
-}
-
-
-int pipeInqTimestep(pstream_t *pstreamptr, int tsID)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-  int nrecs;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pipe->usedata = FALSE;
-  pipe->recIDr  = -1;
-  if ( tsID != pipe->tsIDr+1 )
-    {
-      if ( ! (tsID == pipe->tsIDr && pipe->tsIDr == pipe->tsIDw && pipe->recIDr == -1) ) 
-	Error("%s unexpected tsID %d %d %d", pname, tsID, pipe->tsIDr+1, pipe->tsIDw);
-    }
-  
-  pipe->tsIDr = tsID;
-  while ( pipe->tsIDw != tsID )
-    {
-      if ( pipe->EOP )
-	{
-	  if ( PipeDebug ) Message("%s EOP", pname);
-	  break;
-	}
-      if ( pipe->hasdata )
-	{
-	  if ( PipeDebug ) Message("%s has data", pname);
-	  pipe->hasdata = 0;
-	  pipe->data = NULL;
-	  pthread_cond_signal(pipe->readCond);
-	}
-      else
-	if ( PipeDebug ) Message("%s has no data", pname);
-
-      pthread_cond_signal(pipe->recInq); /* o.k. ??? */
-
-      if ( PipeDebug ) Message("%s wait of tsDef", pname);
-      pthread_cond_wait(pipe->tsDef, pipe->mutex);
-    }
-
-  if ( pipe->EOP )
-    nrecs = 0;
-  else
-    nrecs = pipe->nrecs;
-
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->tsInq);
-
-  return nrecs;
-}
-
-
-void pipeDefTimestep(pstream_t *pstreamptr, int tsID)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-  int nrecs;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pipe->recIDw = -1;
-  pipe->tsIDw++;
-  if ( tsID != pipe->tsIDw )
-    Error("unexpected tsID %d(%d) for %s", tsID, pipe->tsIDw, pname);
-
-  if ( tsID == 0 )
-    nrecs = vlistNrecs(pstreamptr->vlistID);
-  else
-    {
-      int vlistID, varID;
-      vlistID = pstreamptr->vlistID;
-      nrecs = 0;
-      for ( varID = 0; varID < vlistNvars(vlistID); varID++ )
-	if ( vlistInqVarTsteptype(vlistID, varID) != TSTEP_CONSTANT )
-	  nrecs += zaxisInqSize(vlistInqVarZaxis(vlistID, varID));
-      // Message("nrecs = %d nvars = %d", nrecs, vlistNvars(vlistID));
-    }
-
-  pipe->nrecs = nrecs;
-  if ( PipeDebug ) Message("%s nrecs %d tsID %d %d %d", pname, nrecs, tsID, pipe->tsIDw, pipe->tsIDr);
-  if ( nrecs == 0 ) pipe->EOP = TRUE;
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->tsDef);
-  //sleep(1);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  while ( pipe->tsIDr < tsID )
-    {
-      if ( pipe->EOP )
-	{
-	  if ( PipeDebug ) Message("EOP");
-	  break;
-	}
-      if ( PipeDebug ) Message("%s wait of tsInq (tsID %d %d)", pname, tsID, pipe->tsIDr);
-      pthread_cond_wait(pipe->tsInq, pipe->mutex);
-    }
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-}
-
-
-int pipeInqRecord(pstream_t *pstreamptr, int *varID, int *levelID)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-  int condSignal = FALSE;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
- 
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  if ( PipeDebug ) Message("%s has no data %d %d", pname, pipe->recIDr, pipe->recIDw);
-  if ( pipe->hasdata || pipe->usedata )
-    {
-      pipe->hasdata = 0;
-      pipe->data = NULL;
-      pipe->usedata = FALSE;
-      condSignal = TRUE;
-    }	  
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  if ( condSignal ) pthread_cond_signal(pipe->readCond);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pipe->usedata = TRUE;
-  pipe->recIDr++;
-  
-  if ( PipeDebug ) Message("%s recID %d %d", pname, pipe->recIDr, pipe->recIDw);  
-
-  while ( pipe->recIDw != pipe->recIDr )
-    {
-      if ( pipe->EOP )
-	{
-	  if ( PipeDebug ) Message("EOP");
-	  break;
-	}
-      if ( PipeDebug ) Message("%s wait of recDef", pname);
-      pthread_cond_wait(pipe->recDef, pipe->mutex);
-    }
-
-  if ( pipe->EOP )
-    {
-      *varID   = -1;
-      *levelID = -1;
-    }
-  else
-    {
-      *varID   = pipe->varID;
-      *levelID = pipe->levelID;
-    }
-
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->recInq);
-
-  return 0;
-}
-
-
-void pipeDefRecord(pstream_t *pstreamptr, int varID, int levelID)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-  int condSignal = FALSE;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  if ( PipeDebug ) Message("%s has data %d %d", pname, pipe->recIDr, pipe->recIDw);
-  if ( pipe->hasdata )
-    {
-      pipe->hasdata = 0;
-      pipe->data = NULL;
-      condSignal = TRUE;
-    }
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  if ( condSignal ) pthread_cond_signal(pipe->readCond);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pipe->usedata = TRUE;
-  pipe->recIDw++;
-  pipe->varID   = varID;
-  pipe->levelID = levelID;
-  if ( PipeDebug ) Message("%s recID %d %d", pname, pipe->recIDr, pipe->recIDw);  
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->recDef);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  while ( pipe->recIDr < pipe->recIDw )
-    {
-      if ( pipe->tsIDw != pipe->tsIDr ) break;
-      if ( pipe->EOP ) break;
-      if ( PipeDebug ) Message("%s wait of recInq %d", pname, pipe->recIDr);
-      pthread_cond_wait(pipe->recInq, pipe->mutex);
-    }
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-}
-
-
-void pipeCopyRecord(pstream_t *pstreamptr_out, pstream_t *pstreamptr_in)
-{
-  char *ipname = pstreamptr_in->name;
-  char *opname = pstreamptr_out->name;
-  pipe_t *pipe = pstreamptr_out->pipe;
-
-  if ( PipeDebug ) Message("%s pstreamIDin %d", ipname, pstreamptr_in->self);
-  if ( PipeDebug ) Message("%s pstreamIDout %d", opname, pstreamptr_out->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pipe->hasdata = 2; /* pipe */
-  pipe->pstreamptr_in = pstreamptr_in;
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->writeCond);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  while ( pipe->hasdata )
-    {
-      if ( pipe->usedata == FALSE ) break;
-
-      if ( pipe->recIDw != pipe->recIDr ) break;
-
-      if ( pipe->EOP )
-	{
-	  if ( PipeDebug ) Message("EOP");
-	  break;
-	}
-      if ( PipeDebug ) Message("%s wait of readCond", opname);
-      pthread_cond_wait(pipe->readCond, pipe->mutex);
-    }
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-}
-
-
-void pipeReadRecord(pstream_t *pstreamptr, double *data, int *nmiss)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-
-  *nmiss = 0;
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  while ( pipe->hasdata == 0 )
-    {
-      if ( PipeDebug ) Message("%s wait of writeCond", pname);
-      pthread_cond_wait(pipe->writeCond, pipe->mutex);
-    }
-
-  if ( pipe->hasdata == 2 )
-    {
-      pstream_t *pstreamptr_in;
-
-      pstreamptr_in = pipe->pstreamptr_in;
-      /*
-      if ( pstreamptr_in->ispipe )
-	{
-	  pstreamptr_in = pstreamptr_in->pipe->pstreamptr_in;
-	  if ( pstreamptr_in->ispipe )
-	    Error("istream is pipe");
-	}
-      */
-      pstreamptr = pstreamptr_in;
-      while ( pstreamptr_in->ispipe )
-	{
-	  if ( PipeDebug ) fprintf(stderr, "%s: istream %d is pipe\n", __func__, pstreamptr_in->self);
-	  pstreamptr    = pstreamptr_in;
-	  pstreamptr_in = pstreamptr_in->pipe->pstreamptr_in;
-	  if ( pstreamptr_in == 0 ) break;
-	}
-
-      if ( pstreamptr_in == 0 )
-	{
-	  if ( PipeDebug ) fprintf(stderr, "pstreamID = %d\n", pstreamptr->self);
-	  if ( pstreamptr->pipe->hasdata == 1 )
-	    {
-	      int vlistID, datasize;
-
-	      if ( ! pstreamptr->pipe->data )
-		Error("No data pointer for %s", pname);
-
-	      vlistID = pstreamptr->vlistID;
-	      datasize = gridInqSize(vlistInqVarGrid(vlistID, pstreamptr->pipe->varID));
-	      if ( vlistNumber(vlistID) != CDI_REAL ) datasize *= 2;
-	      memcpy(data, pstreamptr->pipe->data, datasize*sizeof(double));
-	      *nmiss = pstreamptr->pipe->nmiss;
-	    }
-	  else
-	    Error("Internal problem! istream undefined");
-	}
-      else
-	{
-	  if ( PipeDebug ) fprintf(stderr, "%s: istream %d is file\n", __func__, pstreamptr_in->self);
-	  streamReadRecord(pstreamptr_in->fileID, data, nmiss);
-	}
-    }
-  else if ( pipe->hasdata == 1 )
-    {
-      int vlistID, datasize;
-
-      if ( ! pipe->data )
-	Error("No data pointer for %s", pname);
-
-      vlistID = pstreamptr->vlistID;
-      datasize = gridInqSize(vlistInqVarGrid(vlistID, pipe->varID));
-      pipe->nvals += datasize;
-      if ( vlistNumber(vlistID) != CDI_REAL ) datasize *= 2;
-      memcpy(data, pipe->data, datasize*sizeof(double));
-      *nmiss = pipe->nmiss;
-    }
-  else
-    {
-      Error("data type %d not implemented", pipe->hasdata);
-    }
-
-  if ( PipeDebug ) Message("%s read record %d", pname, pipe->recIDr);
- 
-
-  pipe->hasdata = 0;
-  pipe->data = NULL;
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->readCond);
-}
-
-
-void pipeWriteRecord(pstream_t *pstreamptr, double *data, int nmiss)
-{
-  char *pname = pstreamptr->name;
-  pipe_t *pipe = pstreamptr->pipe;
-
-  if ( PipeDebug ) Message("%s pstreamID %d", pname, pstreamptr->self);
-
-  /*
-  if ( ! pipe->usedata ) return;
-  */
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  pipe->hasdata = 1; /* data pointer */
-  pipe->data    = data;
-  pipe->nmiss   = nmiss;
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-
-  pthread_cond_signal(pipe->writeCond);
-
-  if ( PipeDebug ) Message("%s write record %d", pname, pipe->recIDw);
-
-  // LOCK
-  pthread_mutex_lock(pipe->mutex);
-  while ( pipe->hasdata )
-    {
-      if ( pipe->usedata == FALSE ) break;
-      /*     
-      printf("ts ids %d %d\n", pipe->tsIDw, pipe->tsIDr);
-      printf("rec ids %d %d\n", pipe->recIDw, pipe->recIDr);
-      */
-      if ( pipe->recIDw != pipe->recIDr ) break;
-
-      if ( pipe->EOP )
-	{
-	  if ( PipeDebug ) Message("EOP");
-	  break;
-	}
-      if ( PipeDebug ) Message("%s wait of readCond", pname);
-      pthread_cond_wait(pipe->readCond, pipe->mutex);
-    }
-  pthread_mutex_unlock(pipe->mutex);
-  // UNLOCK
-}
-
-
-void pipeDebug(int debug)
-{
-  PipeDebug = debug;
-}
-
-#endif
diff --git a/src/pipe.cc b/src/pipe.cc
new file mode 100644
index 0000000..7377b89
--- /dev/null
+++ b/src/pipe.cc
@@ -0,0 +1,679 @@
+/*
+  This file is part of CDO. CDO is a collection of Operators to
+  manipulate and analyse Climate model Data.
+
+  Copyright (C) 2003-2017 Uwe Schulzweida, <uwe.schulzweida AT mpimet.mpg.de>
+  See COPYING file for copying and redistribution conditions.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; version 2 of the License.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+*/
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 600 /* struct timespec */
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <time.h>  // time()
+#include <cdi.h>
+#include "cdo.h"
+#include "cdo_int.h"
+#include "error.h"
+#include "dmemory.h"
+#include "pipe.h"
+#include "pstream_int.h"
+
+#if defined(HAVE_LIBPTHREAD)
+
+static int PipeDebug = 0;
+
+static void
+pipe_init(pipe_t *pipe)
+{
+  pthread_mutexattr_t m_attr;
+  pthread_condattr_t c_attr;
+
+  pthread_mutexattr_init(&m_attr);
+  pthread_condattr_init(&c_attr);
+  /*
+#if defined(_POSIX_THREAD_PROCESS_SHARED)
+  if ( PipeDebug )
+    {
+      Message("setpshared mutexattr to PTHREAD_PROCESS_SHARED");
+      Message("setpshared condattr to PTHREAD_PROCESS_SHARED");
+    }
+
+  pthread_mutexattr_setpshared(&m_attr, PTHREAD_PROCESS_SHARED);
+  pthread_condattr_setpshared(&c_attr, PTHREAD_PROCESS_SHARED);
+
+  if ( PipeDebug )
+    {
+      int pshared;
+      pthread_mutexattr_getpshared(&m_attr, &pshared);
+      if ( pshared == PTHREAD_PROCESS_SHARED )
+        Message("getpshared mutexattr is PTHREAD_PROCESS_SHARED");
+      else if ( pshared == PTHREAD_PROCESS_PRIVATE )
+        Message("getpshared mutexattr is PTHREAD_PROCESS_PRIVATE");
+
+      pthread_condattr_getpshared(&c_attr, &pshared);
+      if ( pshared == PTHREAD_PROCESS_SHARED )
+        Message("getpshared condattr is PTHREAD_PROCESS_SHARED");
+      else if ( pshared == PTHREAD_PROCESS_PRIVATE )
+        Message("getpshared condattr is PTHREAD_PROCESS_PRIVATE");
+    }
+#else
+  if ( PipeDebug )
+    Message("_POSIX_THREAD_PROCESS_SHARED undefined");
+#endif
+  */
+  pipe->EOP = false;
+
+  pipe->recIDr = -1;
+  pipe->recIDw = -1;
+  pipe->tsIDr = -1;
+  pipe->tsIDw = -1;
+
+  pipe->nvals = 0;
+  pipe->nmiss = 0;
+  pipe->data = NULL;
+  pipe->hasdata = 0;
+  pipe->usedata = true;
+  pipe->pstreamptr_in = 0;
+
+  pipe->mutex = (pthread_mutex_t *) Malloc(sizeof(pthread_mutex_t));
+  pthread_mutex_init(pipe->mutex, &m_attr);
+
+  pipe->tsDef = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->tsDef, &c_attr);
+  pipe->tsInq = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->tsInq, &c_attr);
+
+  pipe->recDef = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->recDef, &c_attr);
+  pipe->recInq = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->recInq, &c_attr);
+
+  pipe->vlistDef = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->vlistDef, &c_attr);
+  pipe->isclosed = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->isclosed, &c_attr);
+
+  pipe->writeCond = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->writeCond, &c_attr);
+
+  pipe->readCond = (pthread_cond_t *) Malloc(sizeof(pthread_cond_t));
+  pthread_cond_init(pipe->readCond, &c_attr);
+
+  pthread_mutexattr_destroy(&m_attr);
+  pthread_condattr_destroy(&c_attr);
+}
+
+pipe_t *
+pipeNew()
+{
+  pipe_t *pipe = (pipe_t *) Malloc(sizeof(pipe_t));
+
+  pipe_init(pipe);
+
+  return pipe;
+}
+
+void
+pipeDelete(pipe_t *pipe)
+{
+  if (pipe)
+    {
+      if (pipe->mutex)
+        Free(pipe->mutex);
+      if (pipe->tsDef)
+        Free(pipe->tsDef);
+      if (pipe->tsInq)
+        Free(pipe->tsInq);
+      if (pipe->recDef)
+        Free(pipe->recDef);
+      if (pipe->recInq)
+        Free(pipe->recInq);
+      if (pipe->vlistDef)
+        Free(pipe->vlistDef);
+      if (pipe->isclosed)
+        Free(pipe->isclosed);
+      if (pipe->writeCond)
+        Free(pipe->writeCond);
+      if (pipe->readCond)
+        Free(pipe->readCond);
+      Free(pipe);
+    }
+}
+
+void
+pipeDefVlist(pstream_t *pstreamptr, int vlistID)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pstreamptr->vlistID = vlistID;
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->vlistDef);
+}
+
+#define TIMEOUT 1  // wait 1 seconds
+#define MIN_WAIT_CYCLES 10
+#define MAX_WAIT_CYCLES 3600
+int processNumsActive(void);
+
+int
+pipeInqVlist(pstream_t *pstreamptr)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+  int vlistID = -1;
+  struct timespec time_to_wait;
+  int retcode = 0;
+  int nwaitcycles = 0;
+
+  time_to_wait.tv_sec = 0;
+  time_to_wait.tv_nsec = 0;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  time_to_wait.tv_sec = time(NULL);
+  while (pstreamptr->vlistID == -1 && retcode == 0)
+    {
+      time_to_wait.tv_sec += TIMEOUT;
+      // fprintf(stderr, "tvsec %g\n", (double) time_to_wait.tv_sec);
+      if (PipeDebug)
+        Message("%s wait of vlistDef", pname);
+      // pthread_cond_wait(pipe->vlistDef, pipe->mutex);
+      retcode = pthread_cond_timedwait(pipe->vlistDef, pipe->mutex, &time_to_wait);
+      // fprintf(stderr, "self %d retcode %d %d %d\n", pstreamptr->self, retcode, processNumsActive(),
+      // pstreamptr->vlistID);
+      if (retcode != 0 && nwaitcycles++ < MAX_WAIT_CYCLES)
+        {
+          if (processNumsActive() > 1 || (processNumsActive() == 1 && nwaitcycles < MIN_WAIT_CYCLES))
+            retcode = 0;
+        }
+    }
+
+  if (retcode == 0)
+    vlistID = pstreamptr->vlistID;
+  else if (PipeDebug)
+    Message("%s timeout!", pname);
+
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  return vlistID;
+}
+
+int
+pipeInqTimestep(pstream_t *pstreamptr, int tsID)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+  int nrecs;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pipe->usedata = false;
+  pipe->recIDr = -1;
+  if (tsID != pipe->tsIDr + 1)
+    {
+      if (!(tsID == pipe->tsIDr && pipe->tsIDr == pipe->tsIDw && pipe->recIDr == -1))
+        Error("%s unexpected tsID %d %d %d", pname, tsID, pipe->tsIDr + 1, pipe->tsIDw);
+    }
+
+  pipe->tsIDr = tsID;
+  while (pipe->tsIDw != tsID)
+    {
+      if (pipe->EOP)
+        {
+          if (PipeDebug)
+            Message("%s EOP", pname);
+          break;
+        }
+      if (pipe->hasdata)
+        {
+          if (PipeDebug)
+            Message("%s has data", pname);
+          pipe->hasdata = 0;
+          pipe->data = NULL;
+          pthread_cond_signal(pipe->readCond);
+        }
+      else if (PipeDebug)
+        Message("%s has no data", pname);
+
+      pthread_cond_signal(pipe->recInq); /* o.k. ??? */
+
+      if (PipeDebug)
+        Message("%s wait of tsDef", pname);
+      pthread_cond_wait(pipe->tsDef, pipe->mutex);
+    }
+
+  if (pipe->EOP)
+    nrecs = 0;
+  else
+    nrecs = pipe->nrecs;
+
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->tsInq);
+
+  return nrecs;
+}
+
+void
+pipeDefTimestep(pstream_t *pstreamptr, int tsID)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+  int nrecs;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pipe->recIDw = -1;
+  pipe->tsIDw++;
+  if (tsID != pipe->tsIDw)
+    Error("unexpected tsID %d(%d) for %s", tsID, pipe->tsIDw, pname);
+
+  if (tsID == 0)
+    nrecs = vlistNrecs(pstreamptr->vlistID);
+  else
+    {
+      int vlistID, varID;
+      vlistID = pstreamptr->vlistID;
+      nrecs = 0;
+      for (varID = 0; varID < vlistNvars(vlistID); varID++)
+        if (vlistInqVarTsteptype(vlistID, varID) != TSTEP_CONSTANT)
+          nrecs += zaxisInqSize(vlistInqVarZaxis(vlistID, varID));
+      // Message("nrecs = %d nvars = %d", nrecs, vlistNvars(vlistID));
+    }
+
+  pipe->nrecs = nrecs;
+  if (PipeDebug)
+    Message("%s nrecs %d tsID %d %d %d", pname, nrecs, tsID, pipe->tsIDw, pipe->tsIDr);
+  if (nrecs == 0)
+    pipe->EOP = true;
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->tsDef);
+  // sleep(1);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  while (pipe->tsIDr < tsID)
+    {
+      if (pipe->EOP)
+        {
+          if (PipeDebug)
+            Message("EOP");
+          break;
+        }
+      if (PipeDebug)
+        Message("%s wait of tsInq (tsID %d %d)", pname, tsID, pipe->tsIDr);
+      pthread_cond_wait(pipe->tsInq, pipe->mutex);
+    }
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+}
+
+int
+pipeInqRecord(pstream_t *pstreamptr, int *varID, int *levelID)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+  bool condSignal = false;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  if (PipeDebug)
+    Message("%s has no data %d %d", pname, pipe->recIDr, pipe->recIDw);
+  if (pipe->hasdata || pipe->usedata)
+    {
+      pipe->hasdata = 0;
+      pipe->data = NULL;
+      pipe->usedata = false;
+      condSignal = true;
+    }
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  if (condSignal)
+    pthread_cond_signal(pipe->readCond);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pipe->usedata = true;
+  pipe->recIDr++;
+
+  if (PipeDebug)
+    Message("%s recID %d %d", pname, pipe->recIDr, pipe->recIDw);
+
+  while (pipe->recIDw != pipe->recIDr)
+    {
+      if (pipe->EOP)
+        {
+          if (PipeDebug)
+            Message("EOP");
+          break;
+        }
+      if (PipeDebug)
+        Message("%s wait of recDef", pname);
+      pthread_cond_wait(pipe->recDef, pipe->mutex);
+    }
+
+  if (pipe->EOP)
+    {
+      *varID = -1;
+      *levelID = -1;
+    }
+  else
+    {
+      *varID = pipe->varID;
+      *levelID = pipe->levelID;
+    }
+
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->recInq);
+
+  return 0;
+}
+
+void
+pipeDefRecord(pstream_t *pstreamptr, int varID, int levelID)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+  bool condSignal = false;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  if (PipeDebug)
+    Message("%s has data %d %d", pname, pipe->recIDr, pipe->recIDw);
+  if (pipe->hasdata)
+    {
+      pipe->hasdata = 0;
+      pipe->data = NULL;
+      condSignal = true;
+    }
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  if (condSignal)
+    pthread_cond_signal(pipe->readCond);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pipe->usedata = true;
+  pipe->recIDw++;
+  pipe->varID = varID;
+  pipe->levelID = levelID;
+  if (PipeDebug)
+    Message("%s recID %d %d", pname, pipe->recIDr, pipe->recIDw);
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->recDef);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  while (pipe->recIDr < pipe->recIDw)
+    {
+      if (pipe->tsIDw != pipe->tsIDr)
+        break;
+      if (pipe->EOP)
+        break;
+      if (PipeDebug)
+        Message("%s wait of recInq %d", pname, pipe->recIDr);
+      pthread_cond_wait(pipe->recInq, pipe->mutex);
+    }
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+}
+
+void
+pipeCopyRecord(pstream_t *pstreamptr_out, pstream_t *pstreamptr_in)
+{
+  char *ipname = pstreamptr_in->name;
+  char *opname = pstreamptr_out->name;
+  pipe_t *pipe = pstreamptr_out->pipe;
+
+  if (PipeDebug)
+    Message("%s pstreamIDin %d", ipname, pstreamptr_in->self);
+  if (PipeDebug)
+    Message("%s pstreamIDout %d", opname, pstreamptr_out->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pipe->hasdata = 2; /* pipe */
+  pipe->pstreamptr_in = pstreamptr_in;
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->writeCond);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  while (pipe->hasdata)
+    {
+      if (!pipe->usedata)
+        break;
+
+      if (pipe->recIDw != pipe->recIDr)
+        break;
+
+      if (pipe->EOP)
+        {
+          if (PipeDebug)
+            Message("EOP");
+          break;
+        }
+      if (PipeDebug)
+        Message("%s wait of readCond", opname);
+      pthread_cond_wait(pipe->readCond, pipe->mutex);
+    }
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+}
+
+/***
+ * copys data from a pipe to data
+ *
+ * @param data destination for the record data
+ * @param pipe pipe that has the wanted data
+ */
+void
+pipeReadPipeRecord(pipe_t *pipe, double *data, char *pname, int vlistID, int *nmiss)
+{
+  int datasize;
+
+  if (!pipe->data)
+    Error("No data pointer for %s", pname);
+
+  datasize = gridInqSize(vlistInqVarGrid(vlistID, pipe->varID));
+  pipe->nvals += datasize;
+  if (vlistNumber(vlistID) != CDI_REAL)
+    datasize *= 2;
+  memcpy(data, pipe->data, datasize * sizeof(double));
+  *nmiss = pipe->nmiss;
+}
+
+void
+pipeGetReadTarget(pstream_t *pstreamptr, pstream_t *pstreamptr_in, char *pname)
+{
+
+  pstreamptr_in = pstreamptr->pipe->pstreamptr_in;
+  pstreamptr = pstreamptr_in;
+  while (pstreamptr_in->ispipe)
+    {
+      if (PipeDebug)
+        fprintf(stderr, "%s: istream %d is pipe\n", __func__, pstreamptr_in->self);
+      pstreamptr = pstreamptr_in;
+      pstreamptr_in = pstreamptr_in->pipe->pstreamptr_in;
+      if (pstreamptr_in == 0)
+        break;
+    }
+
+  if (pstreamptr->pipe->hasdata != 1)
+    {
+      Error("Internal problem! istream undefined");
+    }
+  else if (!pstreamptr->pipe->data)
+    {
+      Error("No data pointer for %s", pname);
+    }
+}
+
+void
+pipeReadRecord(pstream_t *pstreamptr, double *data, int *nmiss)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+
+  *nmiss = 0;
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  while (pipe->hasdata == 0)
+    {
+      if (PipeDebug)
+        Message("%s wait of writeCond", pname);
+      pthread_cond_wait(pipe->writeCond, pipe->mutex);
+    }
+
+  if (pipe->hasdata == 2)
+    {
+      pstream_t *pstreamptr_in = 0;
+      pipeGetReadTarget(pstreamptr, pstreamptr_in, pname);
+      if (pstreamptr_in == 0)
+        {
+          if (PipeDebug)
+            fprintf(stderr, "pstreamID = %d\n", pstreamptr->self);
+
+          pipeReadPipeRecord(pstreamptr->pipe, data, pname, pstreamptr->vlistID, nmiss);
+        }
+      else
+        {
+          if (PipeDebug)
+            fprintf(stderr, "%s: istream %d is file\n", __func__, pstreamptr_in->self);
+
+          streamReadRecord(pstreamptr_in->fileID, data, nmiss);
+        }
+    }
+  else if (pipe->hasdata == 1)
+    {
+      pipeReadPipeRecord(pipe, data, pname, pstreamptr->vlistID, nmiss);
+    }
+  else
+    {
+      Error("data type %d not implemented", pipe->hasdata);
+    }
+
+  if (PipeDebug)
+    Message("%s read record %d", pname, pipe->recIDr);
+
+  pipe->hasdata = 0;
+  pipe->data = NULL;
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->readCond);
+}
+
+void
+pipeWriteRecord(pstream_t *pstreamptr, double *data, int nmiss)
+{
+  char *pname = pstreamptr->name;
+  pipe_t *pipe = pstreamptr->pipe;
+
+  if (PipeDebug)
+    Message("%s pstreamID %d", pname, pstreamptr->self);
+
+  /*
+  if ( ! pipe->usedata ) return;
+  */
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  pipe->hasdata = 1; /* data pointer */
+  pipe->data = data;
+  pipe->nmiss = nmiss;
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+
+  pthread_cond_signal(pipe->writeCond);
+
+  if (PipeDebug)
+    Message("%s write record %d", pname, pipe->recIDw);
+
+  // LOCK
+  pthread_mutex_lock(pipe->mutex);
+  while (pipe->hasdata)
+    {
+      if (!pipe->usedata)
+        break;
+      /*
+      printf("ts ids %d %d\n", pipe->tsIDw, pipe->tsIDr);
+      printf("rec ids %d %d\n", pipe->recIDw, pipe->recIDr);
+      */
+      if (pipe->recIDw != pipe->recIDr)
+        break;
+
+      if (pipe->EOP)
+        {
+          if (PipeDebug)
+            Message("EOP");
+          break;
+        }
+      if (PipeDebug)
+        Message("%s wait of readCond", pname);
+      pthread_cond_wait(pipe->readCond, pipe->mutex);
+    }
+  pthread_mutex_unlock(pipe->mutex);
+  // UNLOCK
+}
+
+void
+pipeDebug(int debug)
+{
+  PipeDebug = debug;
+}
+
+#endif
diff --git a/src/pipe.h b/src/pipe.h
index bdaedff..a9b8347 100644
--- a/src/pipe.h
+++ b/src/pipe.h
@@ -15,65 +15,35 @@
   GNU General Public License for more details.
 */
 
-#ifndef _PIPE_H
-#define _PIPE_H
+#ifndef PIPE_H
+#define PIPE_H
 
 #if defined(HAVE_CONFIG_H)
-#  include "config.h"
+#include "config.h"
 #endif
 
+#include <stdbool.h>
 #include <sys/types.h>
 
 #if defined(HAVE_LIBPTHREAD)
 
 #include <pthread.h>
 #include "pthread_debug.h"
+#include "pstream.h"
 
 #endif
 
-typedef struct {
-  short       check_datarange;
-  int         gridsize;
-  int         datatype;
-  double      missval;
-  double      addoffset;
-  double      scalefactor;
-} varlist_t;
-
-
-typedef struct {
-  int            self;
-  int            mode;
-  int            fileID;
-  int            vlistID;
-  int            tsID;
-  int            filetype;
-  int            ispipe;
-  int            isopen;
-  int            tsID0;
-  int            mfiles;
-  int            nfiles;
-  int            varID;           /* next varID defined with streamDefVar */
-  char          *name;
-  char         **mfnames;
-  varlist_t     *varlist;
-#if defined(HAVE_LIBPTHREAD)
-  void          *argument;
-  struct pipe_s *pipe;
-  pthread_t     rthreadID; /* read  thread ID */
-  pthread_t     wthreadID; /* write thread ID */
-#endif
-} pstream_t;
-
-
 #if defined(HAVE_LIBPTHREAD)
 
-struct pipe_s {
-  int     nrecs, EOP;
-  int     varID, levelID;
-  int     recIDr, recIDw, tsIDr, tsIDw;
-  int     hasdata, usedata;
-  int     nmiss;
+struct pipe_s
+{
+  bool EOP;
+  bool usedata;
+  short hasdata;
+  int nrecs;
+  int varID, levelID;
+  int recIDr, recIDw, tsIDr, tsIDw;
+  int nmiss;
   double *data;
   pstream_t *pstreamptr_in;
   /* unsigned long */ off_t nvals;
@@ -86,23 +56,23 @@ struct pipe_s {
 typedef struct pipe_s pipe_t;
 
 pipe_t *pipeNew(void);
-void    pipeDelete(pipe_t *pipe);
+void pipeDelete(pipe_t *pipe);
 
-void  pipeDebug(int debug);
+void pipeDebug(int debug);
 
-void  pipeDefVlist(pstream_t *pstreamptr, int vlistID);
-int   pipeInqVlist(pstream_t *pstreamptr);
+void pipeDefVlist(pstream_t *pstreamptr, int vlistID);
+int pipeInqVlist(pstream_t *pstreamptr);
 
-void  pipeDefTimestep(pstream_t *pstreamptr, int tsID);
-int   pipeInqTimestep(pstream_t *pstreamptr, int tsID);
+void pipeDefTimestep(pstream_t *pstreamptr, int tsID);
+int pipeInqTimestep(pstream_t *pstreamptr, int tsID);
 
-void  pipeDefRecord(pstream_t *pstreamptr, int  varID, int  levelID);
-int   pipeInqRecord(pstream_t *pstreamptr, int *varID, int *levelID);
+void pipeDefRecord(pstream_t *pstreamptr, int varID, int levelID);
+int pipeInqRecord(pstream_t *pstreamptr, int *varID, int *levelID);
 
-void  pipeReadRecord(pstream_t *pstreamptr, double *data, int *nmiss);
-void  pipeWriteRecord(pstream_t *pstreamptr, double *data, int nmiss);
-void  pipeCopyRecord(pstream_t *pstreamptr_dest, pstream_t *pstreamptr_src);
+void pipeReadRecord(pstream_t *pstreamptr, double *data, int *nmiss);
+void pipeWriteRecord(pstream_t *pstreamptr, double *data, int nmiss);
+void pipeCopyRecord(pstream_t *pstreamptr_dest, pstream_t *pstreamptr_src);
 
 #endif
 
-#endif  /* _PIPE_H */
+#endif /* PIPE_H */
diff --git a/src/pmlist.c b/src/pmlist.cc
similarity index 100%
rename from src/pmlist.c
rename to src/pmlist.cc
diff --git a/src/printinfo.h b/src/printinfo.h
index a3a7b06..42da216 100644
--- a/src/printinfo.h
+++ b/src/printinfo.h
@@ -1,11 +1,17 @@
 // This file is used in CDI and CDO !!!
 
 #if defined (HAVE_CONFIG_H)
-#  include "../src/config.h"
+#include "../src/config.h"
 #endif
 
 #include <stdio.h>
 
+#ifdef CDO
+#define  streamInqFiletype        pstreamInqFiletype
+#define  streamInqByteorder       pstreamInqByteorder
+#define  streamInqTimestep        pstreamInqTimestep
+#endif
+
 #define DATE_FORMAT "%5.4d-%2.2d-%2.2d"
 #define TIME_FORMAT "%2.2d:%2.2d:%2.2d"
 
diff --git a/src/process.c b/src/process.cc
similarity index 86%
rename from src/process.c
rename to src/process.cc
index 8a9a423..b76a580 100644
--- a/src/process.c
+++ b/src/process.cc
@@ -40,64 +40,17 @@
 #include "util.h"
 #include "pstream_int.h"
 #include "dmemory.h"
+#include "pthread.h"
 
-
-#define  MAX_PROCESS    128
-#define  MAX_STREAM      64
-#define  MAX_OPERATOR   128
-#define  MAX_OARGC     4096
-#define  MAX_FILES    65536
-
-
-typedef struct {
-  int         f1;
-  int         f2;
-  const char *name;
-  const char *enter;
-}
-oper_t;
-
-typedef struct {
 #if defined(HAVE_LIBPTHREAD)
-  pthread_t   threadID;
-  int         l_threadID;
+pthread_mutex_t processMutex = PTHREAD_MUTEX_INITIALIZER;
 #endif
-  short       nchild;
-  short       nstream;
-  short       streams[MAX_STREAM];
-  double      s_utime;
-  double      s_stime;
-  double      a_utime;
-  double      a_stime;
-  double      cputime;
-
-  off_t       nvals;
-  short       nvars;
-  int         ntimesteps;
-  short       streamCnt;
-  argument_t *streamNames;
-  char       *xoperator;
-  const char *operatorName;
-  char       *operatorArg;
-  int         oargc;
-  char       *oargv[MAX_OARGC];
-  char        prompt[64];
-  short       noper;
-  oper_t      oper[MAX_OPERATOR];
-}
-process_t;
-
 
 static process_t Process[MAX_PROCESS];
 
 static int NumProcess = 0;
 static int NumProcessActive = 0;
 
-#if defined(HAVE_LIBPTHREAD)
-pthread_mutex_t processMutex = PTHREAD_MUTEX_INITIALIZER;
-#endif
-
-
 int processCreate(void)
 {
 #if defined(HAVE_LIBPTHREAD)
@@ -118,7 +71,8 @@ int processCreate(void)
   Process[processID].threadID     = pthread_self();
   Process[processID].l_threadID   = 1;
 #endif
-  Process[processID].nstream      = 0;
+  Process[processID].nInStream      = 0;
+  Process[processID].nOutStream      = 0;
   Process[processID].nchild       = 0;
 
   cdoProcessTime(&Process[processID].s_utime, &Process[processID].s_stime);
@@ -157,7 +111,7 @@ int processSelf(void)
         processID = 0;
     }
 
-  pthread_mutex_unlock(&processMutex);  
+  pthread_mutex_unlock(&processMutex);
 
 #endif
 
@@ -210,18 +164,29 @@ off_t processInqNvals(int processID)
   return Process[processID].nvals;
 }
 
+void processAddOutputStream(int streamID)
+{
+  int processID = processSelf();
+
+  int sindex = Process[processID].nOutStream++;
+
+  if ( sindex >= MAX_STREAM )
+    Error("Limit of %d output streams per process reached (processID = %d)!", MAX_STREAM, processID);
+
+  Process[processID].outputStreams[sindex] = streamID;
+}
 
-void processAddStream(int streamID)
+void processAddInputStream(int streamID)
 {
   int processID = processSelf();
 
   if ( pstreamIsPipe(streamID) ) Process[processID].nchild++;
-  int sindex = Process[processID].nstream++;
+  int sindex = Process[processID].nInStream++;
 
   if ( sindex >= MAX_STREAM )
-    Error("Limit of %d streams per process reached (processID = %d)!", MAX_STREAM, processID);
+    Error("Limit of %d input streams per process reached (processID = %d)!", MAX_STREAM, processID);
 
-  Process[processID].streams[sindex] = streamID;
+  Process[processID].inputStreams[sindex] = streamID;
 }
 
 
@@ -266,11 +231,18 @@ void processAccuTime(double utime, double stime)
 }
 
 
-int processInqStreamNum(void)
+int processInqOutputStreamNum(void)
 {
   int processID = processSelf();
 
-  return Process[processID].nstream;
+  return Process[processID].nOutStream;
+}
+
+int processInqInputStreamNum(void)
+{
+  int processID = processSelf();
+
+  return Process[processID].nInStream;
 }
 
 
@@ -282,13 +254,18 @@ int processInqChildNum(void)
 }
 
 
-int processInqStreamID(int streamindex)
+int processInqOutputStreamID(int streamindex)
 {
   int processID = processSelf();
 
-  return (Process[processID].streams[streamindex]);
+  return (Process[processID].outputStreams[streamindex]);
 }
+int processInqInputStreamID(int streamindex)
+{
+  int processID = processSelf();
 
+  return (Process[processID].inputStreams[streamindex]);
+}
 
 const char *processInqOpername2(int processID)
 {
@@ -409,29 +386,6 @@ const char *processOperator(void)
   return Process[processID].xoperator;
 }
 
-static
-char *getOperatorArg(const char *xoperator)
-{
-  char *operatorArg = NULL;
-
-  if ( xoperator )
-    {
-      char *commapos = (char *)strchr(xoperator, ',');
-
-      if ( commapos )
-        {
-          size_t len = strlen(commapos+1);
-          if ( len )
-            {
-              operatorArg = (char*) Malloc(len+1);
-              strcpy(operatorArg, commapos+1);
-            }
-        }
-    }
-
-  return operatorArg;
-}
-
 static int skipInputStreams(int argc, char *argv[], int globArgc, int nstreams);
 
 static
@@ -969,10 +923,11 @@ int cdoOperatorID(void)
 
   if ( Process[processID].noper > 0 )
     {
-      for ( operID = 0; operID < Process[processID].noper; operID++ )
+      for ( operID = 0; operID < Process[processID].noper; operID++ ){
         if ( Process[processID].oper[operID].name )
           if ( strcmp(Process[processID].operatorName, Process[processID].oper[operID].name) == 0 ) break;
 
+      }
       if ( operID == Process[processID].noper )
         cdoAbort("Operator not callable by this name!");
     }
@@ -1023,3 +978,36 @@ int cdoStreamNumber()
 
   return operatorStreamNumber(Process[processID].operatorName);
 }
+
+void print_process(int p_process_id)
+{
+#if defined(HAVE_LIBPTHREAD)
+  std::cout << " threadID        : " << Process[p_process_id].threadID                     <<  std::endl;
+  std::cout << " l_threadID      : " << Process[p_process_id].l_threadID                   <<  std::endl;
+#endif
+  std::cout << " nchild          : " << Process[p_process_id].nchild                       <<  std::endl;
+  std::cout << " nInStream       : " << Process[p_process_id].nInStream                    <<  std::endl;
+  std::cout << " nOutStream      : " << Process[p_process_id].nOutStream                   <<  std::endl;
+  for(int i = 0; i < Process[p_process_id].nInStream; i++){
+    std::cout << "    " << Process[p_process_id].inputStreams[i]  <<  std::endl;
+  }
+  for(int i = 0; i < Process[p_process_id].nOutStream; i++){
+    std::cout << "    " << Process[p_process_id].outputStreams[i] <<  std::endl;
+  }
+  std::cout << " s_utime         : " << Process[p_process_id].s_utime                      <<  std::endl;
+  std::cout << " s_stime         : " << Process[p_process_id].s_stime                      <<  std::endl;
+  std::cout << " a_utime         : " << Process[p_process_id].a_utime                      <<  std::endl;
+  std::cout << " a_stime         : " << Process[p_process_id].a_stime                      <<  std::endl;
+  std::cout << " cputime         : " << Process[p_process_id].cputime                      <<  std::endl;
+
+  std::cout << " nvals           : " << Process[p_process_id].nvals                        <<  std::endl;
+  std::cout << " nvars           : " << Process[p_process_id].nvars                        <<  std::endl;
+  std::cout << " ntimesteps      : " << Process[p_process_id].ntimesteps                   <<  std::endl;
+  std::cout << " streamCnt       : " << Process[p_process_id].streamCnt                    <<  std::endl;
+  std::cout << " streamNames     : " << Process[p_process_id].streamNames                  <<  std::endl;
+  std::cout << " xoperator       : " << Process[p_process_id].xoperator                    <<  std::endl;
+  std::cout << " operatorName    : " << Process[p_process_id].operatorName                 <<  std::endl;
+  std::cout << " operatorArg     : " << Process[p_process_id].operatorArg                  <<  std::endl;
+  std::cout << " oargc           : " << Process[p_process_id].oargc                        <<  std::endl;
+  std::cout << " noper           : " << Process[p_process_id].noper                        <<  std::endl;
+}
diff --git a/src/process.h b/src/process.h
index feadf97..1a2b969 100644
--- a/src/process.h
+++ b/src/process.h
@@ -19,6 +19,56 @@
 #define _PROCESS_H
 
 #include <sys/types.h> /* off_t */
+#include "util.h"
+
+constexpr int MAX_PROCESS  =   128;
+constexpr int MAX_STREAM   =    64;
+constexpr int MAX_OPERATOR =   128;
+constexpr int MAX_OARGC    =  4096;
+constexpr int MAX_FILES    = 65536;
+
+
+typedef struct {
+  int         f1;
+  int         f2;
+  const char *name;
+  const char *enter;
+}
+oper_t;
+
+typedef struct {
+#if defined(HAVE_LIBPTHREAD)
+  pthread_t   threadID;
+  int         l_threadID;
+#endif
+  short       nchild;
+  short       nInStream;
+  short       nOutStream;
+  short       inputStreams[MAX_STREAM];
+  short       outputStreams[MAX_STREAM];
+  double      s_utime;
+  double      s_stime;
+  double      a_utime;
+  double      a_stime;
+  double      cputime;
+
+  off_t       nvals;
+  short       nvars;
+  int         ntimesteps;
+  short       streamCnt;
+  argument_t *streamNames;
+  char       *xoperator;
+  const char *operatorName;
+  char       *operatorArg;
+  int         oargc;
+  char       *oargv[MAX_OARGC];
+  char        prompt[64];
+  short       noper;
+  oper_t      oper[MAX_OPERATOR];
+}
+process_t;
+
+
 
 int  processSelf(void);
 int  processCreate(void);
@@ -26,9 +76,12 @@ void processDelete(void);
 int  processInqTimesteps(void);
 void processDefTimesteps(int streamID);
 int  processInqVarNum(void);
-int  processInqStreamNum(void);
-int  processInqStreamID(int streamindex);
-void processAddStream(int streamID);
+int  processInqInputStreamNum(void);
+int  processInqOutputStreamNum(void);
+int  processInqInputStreamID(int streamindex);
+int  processInqOutputStreamID(int streamindex);
+void processAddInputStream(int streamID);
+void processAddOutputStream(int streamID);
 void processDelStream(int streamID);
 void processDefVarNum(int nvars, int streamID);
 void processDefArgument(void *vargument);
@@ -51,4 +104,5 @@ const char *processInqOpername(void);
 const char *processInqOpername2(int processID);
 const char *processInqPrompt(void);
 
+void print_process(int p_process_id);
 #endif  /* _PROCESS_H */
diff --git a/src/pstream.c b/src/pstream.cc
similarity index 94%
rename from src/pstream.c
rename to src/pstream.cc
index 260ccf7..a1690c6 100644
--- a/src/pstream.c
+++ b/src/pstream.cc
@@ -16,11 +16,11 @@
 */
 
 #if defined(HAVE_CONFIG_H)
-#  include "config.h"
+#include "config.h"
 #endif
 
 #if defined(_OPENMP)
-#  include <omp.h>
+#include <omp.h>
 #endif
 
 #include <stdio.h>
@@ -52,7 +52,7 @@ static int _pstream_max = MAX_PSTREAMS;
 
 static void pstream_initialize(void);
 
-static int _pstream_init = FALSE;
+static bool _pstream_init = false;
 
 #if defined(HAVE_LIBPTHREAD)
 #include <pthread.h>
@@ -71,14 +71,14 @@ static pthread_mutex_t _pstream_mutex;
 #  define PSTREAM_LOCK()           pthread_mutex_lock(&_pstream_mutex)
 #  define PSTREAM_UNLOCK()         pthread_mutex_unlock(&_pstream_mutex)
 #  define PSTREAM_INIT()	  \
-   if ( _pstream_init == FALSE ) pthread_once(&_pstream_init_thread, pstream_initialize)
+   if ( !_pstream_init ) pthread_once(&_pstream_init_thread, pstream_initialize)
 
 #else
 
 #  define PSTREAM_LOCK()
 #  define PSTREAM_UNLOCK()
 #  define PSTREAM_INIT()	  \
-   if ( _pstream_init == FALSE ) pstream_initialize()
+   if ( !_pstream_init ) pstream_initialize()
 
 #endif
 
@@ -181,8 +181,8 @@ void pstream_init_entry(pstream_t *pstreamptr)
 {
   pstreamptr->self       = pstream_from_pointer(pstreamptr);
 
-  pstreamptr->isopen     = TRUE;
-  pstreamptr->ispipe     = FALSE;
+  pstreamptr->isopen     = true;
+  pstreamptr->ispipe     = false;
   pstreamptr->fileID     = -1;
   pstreamptr->vlistID    = -1;
   pstreamptr->tsID       = -1;
@@ -254,7 +254,7 @@ void pstream_initialize(void)
 
   pstream_init_pointer();
 
-  _pstream_init = TRUE;
+  _pstream_init = true;
 }
 
 static
@@ -285,6 +285,50 @@ int pstreamIsPipe(int pstreamID)
   return pstreamptr->ispipe;
 }
 
+static void createPipeName(char *pipename, int pnlen){
+
+  snprintf(pipename, pnlen, "(pipe%d.%d)", processSelf() + 1, processInqChildNum() + 1);
+}
+
+pthread_t pCreateReadThread(argument_t *argument){
+  pthread_attr_t attr;
+  int status = pthread_attr_init(&attr);
+  if ( status ) SysError("pthread_attr_init failed for '%s'", argument->operatorName.c_str());
+  status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+  if ( status ) SysError("pthread_attr_setdetachstate failed for '%s'", argument->operatorName.c_str());
+  /*
+    param.sched_priority = 0;
+    status = pthread_attr_setschedparam(&attr, &param);
+    if ( status ) SysError("pthread_attr_setschedparam failed for '%s'", newarg+1);
+  */
+  /* status = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED); */
+  /* if ( status ) SysError("pthread_attr_setinheritsched failed for '%s'", newarg+1); */
+
+  pthread_attr_getscope(&attr, &pthreadScope);
+
+  /* status = pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS); */
+  /* if ( status ) SysError("pthread_attr_setscope failed for '%s'", newarg+1); */
+  /* If system scheduling scope is specified, then the thread is scheduled against all threads in the system */
+  /* pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); */
+
+  size_t stacksize = 0;
+  status = pthread_attr_getstacksize(&attr, &stacksize);
+  if ( stacksize < 2097152 )
+    {
+      stacksize = 2097152;
+      pthread_attr_setstacksize(&attr, stacksize);
+    }
+
+  pthread_t thrID;
+  int rval = pthread_create(&thrID, &attr, operatorModule(argument->operatorName.c_str()), argument);
+  if ( rval != 0 )
+    {
+      errno = rval;
+      SysError("pthread_create failed for '%s'", argument->operatorName.c_str());
+    }
+  return thrID;
+}
+
 static
 void pstreamOpenReadPipe(const argument_t *argument, pstream_t *pstreamptr)
 {
@@ -295,9 +339,10 @@ void pstreamOpenReadPipe(const argument_t *argument, pstream_t *pstreamptr)
   char *pipename = (char*) Malloc(pnlen);
   // struct sched_param param;
   
-  argument_t *newargument = (argument_t*) Malloc(sizeof(argument_t));
+  argument_t *newargument = new argument_t();
   newargument->argc = argument->argc + 1;
   newargument->argv = (char **) Malloc(newargument->argc*sizeof(char *));
+  newargument->operatorName = "";
   memcpy(newargument->argv, argument->argv, argument->argc*sizeof(char *));
 
   char *operatorArg  = argument->argv[0];
@@ -306,69 +351,36 @@ void pstreamOpenReadPipe(const argument_t *argument, pstream_t *pstreamptr)
   size_t len = strlen(argument->args);
   char *newarg = (char*) Malloc(len+pnlen);
   strcpy(newarg, argument->args);
-  snprintf(pipename, pnlen, "(pipe%d.%d)", processSelf() + 1, processInqChildNum() + 1);
+  createPipeName(pipename, pnlen);
   newarg[len] = ' ';
   strcpy(&newarg[len+1], pipename);
 
   newargument->argv[argument->argc] = pipename;
   newargument->args = newarg;
+  newargument->operatorName = std::string(operatorName,strlen(operatorName));
   /*
     printf("pstreamOpenRead: new args >%s<\n", newargument->args);
     for ( int i = 0; i < newargument->argc; ++i )
     printf("pstreamOpenRead: new arg %d >%s<\n", i, newargument->argv[i]);
   */
-  pstreamptr->ispipe    = TRUE;
+  pstreamptr->ispipe    = true;
   pstreamptr->name      = pipename;
   pstreamptr->rthreadID = pthread_self();
   pstreamptr->pipe      = pipeNew();
   pstreamptr->argument  = (void *) newargument;
  
-  if ( ! cdoSilentMode )
+  if ( ! cdoSilentMode ){
     cdoPrint("Started child process \"%s\".", newarg+1);
-
-  pthread_attr_t attr;
-  int status = pthread_attr_init(&attr);
-  if ( status ) SysError("pthread_attr_init failed for '%s'", newarg+1);
-  status = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-  if ( status ) SysError("pthread_attr_setdetachstate failed for '%s'", newarg+1);
-  /*
-    param.sched_priority = 0;
-    status = pthread_attr_setschedparam(&attr, &param);
-    if ( status ) SysError("pthread_attr_setschedparam failed for '%s'", newarg+1);
-  */
-  /* status = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED); */
-  /* if ( status ) SysError("pthread_attr_setinheritsched failed for '%s'", newarg+1); */
-
-  pthread_attr_getscope(&attr, &pthreadScope);
-
-  /* status = pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS); */
-  /* if ( status ) SysError("pthread_attr_setscope failed for '%s'", newarg+1); */
-  /* If system scheduling scope is specified, then the thread is scheduled against all threads in the system */
-  /* pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); */
-
-  size_t stacksize = 0;
-  status = pthread_attr_getstacksize(&attr, &stacksize);
-  if ( stacksize < 2097152 )
-    {
-      stacksize = 2097152;
-      pthread_attr_setstacksize(&attr, stacksize);
-    }
-
-  pthread_t thrID;
-  int rval = pthread_create(&thrID, &attr, operatorModule(operatorName), newargument);
-  if ( rval != 0 )
-    {
-      errno = rval;
-      SysError("pthread_create failed for '%s'", newarg+1);
-    }
-
+  }
+  pCreateReadThread(newargument);
   /* Free(operatorName); */
-  processAddStream(pstreamID);
+  processAddInputStream(pstreamID);
   /*      pipeInqInfo(pstreamID); */
   if ( PSTREAM_Debug ) Message("pipe %s", pipename);
 #else
   cdoAbort("Cannot use pipes, pthread support not compiled in!");
 #endif
+
 }
 
 static
@@ -396,11 +408,14 @@ void pstreamCreateFilelist(const argument_t *argument, pstream_t *pstreamptr)
               char line[4096];
               FILE *fp, *fp2;
               fp = fopen(pch, "r");
-              if ( fp == NULL ) cdoAbort("Open failed on %s", pch);
-              
+              if ( fp == NULL )
+              {
+                  cdoAbort("Open failed on %s", pch);
+              }
               if ( cdoVerbose )
+              {
                 cdoPrint("Reading file names from %s", pch);
-
+              }
               /* find number of files */
               nfiles = 0;
               while ( readline(fp, line, 4096) )
@@ -419,7 +434,7 @@ void pstreamCreateFilelist(const argument_t *argument, pstream_t *pstreamptr)
 
               pstreamptr->mfiles = nfiles;
               pstreamptr->mfnames = (char **) Malloc(nfiles*sizeof(char *));
-		  
+
               rewind(fp);
 
               nfiles = 0;
@@ -440,10 +455,15 @@ void pstreamCreateFilelist(const argument_t *argument, pstream_t *pstreamptr)
 
               pstreamptr->mfiles = nfiles;
               pstreamptr->mfnames = (char **) Malloc(nfiles*sizeof(char *));
-		  
+
               strcpy(line, pch);
-              for ( i = 0; i < len; i++ ) if ( line[i] == ',' ) line[i] = 0;
-              
+              for ( i = 0; i < len; i++ )
+              {
+                  if ( line[i] == ',' )
+                  {
+                      line[i] = 0;
+                  }
+              }
               i = 0;
               for ( j = 0; j < nfiles; j++ )
                 {
@@ -489,19 +509,18 @@ void pstreamOpenReadFile(const argument_t *argument, pstream_t *pstreamptr)
 {  
   pstreamCreateFilelist(argument, pstreamptr);
 
-  size_t len;
   char *filename = NULL;
 
   if ( pstreamptr->mfiles )
     {
-      len = strlen(pstreamptr->mfnames[0]);
+      size_t len = strlen(pstreamptr->mfnames[0]);
       filename = (char*) Malloc(len+1);
       strcpy(filename, pstreamptr->mfnames[0]);
       pstreamptr->nfiles = 1;
     }
   else
     {
-      len = strlen(argument->args);
+      size_t len = strlen(argument->args);
       filename = (char*) Malloc(len+1);
       strcpy(filename, argument->args);
     }
@@ -517,7 +536,7 @@ void pstreamOpenReadFile(const argument_t *argument, pstream_t *pstreamptr)
   int fileID = streamOpenRead(filename);
   if ( fileID < 0 )
     {
-      pstreamptr->isopen = FALSE;
+      pstreamptr->isopen = false;
       cdiOpenError(fileID, "Open failed on >%s<", filename);
     }
       
@@ -641,7 +660,7 @@ int pstreamOpenWritePipe(const argument_t *argument, int filetype)
 
   pstreamptr->wthreadID = pthread_self();
   pstreamptr->filetype = filetype;
-  processAddStream(pstreamID);
+  processAddOutputStream(pstreamID);
 #endif
 
   return pstreamID;
@@ -837,18 +856,18 @@ void pstreamClose(int pstreamID)
     {
 #if defined(HAVE_LIBPTHREAD)
       pipe_t *pipe;
-      int lread = FALSE, lwrite = FALSE;
+      bool lread = false, lwrite = false;
       pthread_t threadID = pthread_self();
 
-      if      ( pthread_equal(threadID, pstreamptr->rthreadID) ) lread  = TRUE;
-      else if ( pthread_equal(threadID, pstreamptr->wthreadID) ) lwrite = TRUE;
+      if      ( pthread_equal(threadID, pstreamptr->rthreadID) ) lread  = true;
+      else if ( pthread_equal(threadID, pstreamptr->wthreadID) ) lwrite = true;
       else Error("Internal problem! Close pipe %s", pstreamptr->name);
 
       if ( lread )
 	{
 	  pipe = pstreamptr->pipe;
 	  pthread_mutex_lock(pipe->mutex);
-	  pipe->EOP = TRUE;
+	  pipe->EOP = true;
 	  if ( PSTREAM_Debug ) Message("%s read closed", pstreamptr->name);
 	  pthread_mutex_unlock(pipe->mutex);     
 	  pthread_cond_signal(pipe->tsDef);
@@ -857,7 +876,7 @@ void pstreamClose(int pstreamID)
 	  pthread_cond_signal(pipe->recInq);
 	 
 	  pthread_mutex_lock(pipe->mutex);
-	  pstreamptr->isopen = FALSE;
+	  pstreamptr->isopen = false;
 	  pthread_mutex_unlock(pipe->mutex);     
 	  pthread_cond_signal(pipe->isclosed);
 
@@ -870,7 +889,7 @@ void pstreamClose(int pstreamID)
 	      argument_t *argument = (argument_t *) (pstreamptr->argument);
 	      if ( argument->argv ) Free(argument->argv);
 	      if ( argument->args ) Free(argument->args);
-	      Free(argument);
+          delete(argument);
 	    }
 	  vlistDestroy(pstreamptr->vlistID);
 	  pthread_mutex_unlock(pipe->mutex);
@@ -884,7 +903,7 @@ void pstreamClose(int pstreamID)
 	{
 	  pipe = pstreamptr->pipe;
 	  pthread_mutex_lock(pipe->mutex);
-	  pipe->EOP = TRUE;
+	  pipe->EOP = true;
 	  if ( PSTREAM_Debug ) Message("%s write closed", pstreamptr->name);
 	  pthread_mutex_unlock(pipe->mutex);     
 	  pthread_cond_signal(pipe->tsDef);
@@ -1021,7 +1040,7 @@ void pstreamDefVarlist(pstream_t *pstreamptr, int vlistID)
       varlist[varID].addoffset   = vlistInqVarAddoffset(vlistID, varID);
       varlist[varID].scalefactor = vlistInqVarScalefactor(vlistID, varID);
 
-      varlist[varID].check_datarange = FALSE;
+      varlist[varID].check_datarange = false;
 
       int laddoffset   = IS_NOT_EQUAL(varlist[varID].addoffset, 0);
       int lscalefactor = IS_NOT_EQUAL(varlist[varID].scalefactor, 1);
@@ -1048,11 +1067,11 @@ void pstreamDefVarlist(pstream_t *pstreamptr, int vlistID)
 		   datatype == CDI_DATATYPE_UINT8  ||
 		   datatype == CDI_DATATYPE_INT16  ||
 		   datatype == CDI_DATATYPE_UINT16 )
-		varlist[varID].check_datarange = TRUE;
+		varlist[varID].check_datarange = true;
 	    }
 	  else if ( cdoCheckDatarange )
 	    {
-	      varlist[varID].check_datarange = TRUE;
+	      varlist[varID].check_datarange = true;
 	    }
 	}
     }
@@ -1286,6 +1305,7 @@ void pstreamCheckDatarange(pstream_t *pstreamptr, int varID, double *array, int
 
       double vmin = 0, vmax = 0;
 
+      // clang-format off
       if      ( datatype == CDI_DATATYPE_INT8   ) { vmin =        -128.; vmax =        127.; }
       else if ( datatype == CDI_DATATYPE_UINT8  ) { vmin =           0.; vmax =        255.; }
       else if ( datatype == CDI_DATATYPE_INT16  ) { vmin =      -32768.; vmax =      32767.; }
@@ -1293,7 +1313,8 @@ void pstreamCheckDatarange(pstream_t *pstreamptr, int varID, double *array, int
       else if ( datatype == CDI_DATATYPE_INT32  ) { vmin = -2147483648.; vmax = 2147483647.; }
       else if ( datatype == CDI_DATATYPE_UINT32 ) { vmin =           0.; vmax = 4294967295.; }
       else if ( datatype == CDI_DATATYPE_FLT32  ) { vmin = -3.40282e+38; vmax = 3.40282e+38; }
-      else                                    { vmin =     -1.e+300; vmax =     1.e+300; }
+      else                                        { vmin =     -1.e+300; vmax =     1.e+300; }
+      // clang-format on
 
       if ( smin < vmin || smax > vmax )
 	cdoWarning("Some data values (min=%g max=%g) are outside the\n"
@@ -1578,10 +1599,22 @@ void pstreamCloseAll(void)
 static
 void processClosePipes(void)
 {
-  int nstream = processInqStreamNum();
+  int nstream = processInqInputStreamNum();
   for ( int sindex = 0; sindex < nstream; sindex++ )
     {
-      int pstreamID = processInqStreamID(sindex);
+      int pstreamID = processInqInputStreamID(sindex);
+      pstream_t *pstreamptr = pstream_to_pointer(pstreamID);
+
+      if ( PSTREAM_Debug )
+	Message("process %d  stream %d  close streamID %d", processSelf(), sindex, pstreamID);
+
+      if ( pstreamptr ) pstreamClose(pstreamID);
+    }
+
+  nstream = processInqOutputStreamNum();
+  for ( int sindex = 0; sindex < nstream; sindex++ )
+    {
+      int pstreamID = processInqOutputStreamID(sindex);
       pstream_t *pstreamptr = pstream_to_pointer(pstreamID);
 
       if ( PSTREAM_Debug )
@@ -1699,7 +1732,6 @@ void cdoFinish(void)
       if ( ! cdoSilentMode )
 	fprintf(stderr, " ( %.2fs )\n", c_cputime);
     }
-
   if ( cdoBenchmark && processID == 0 )
     fprintf(stderr, "total: user %.2fs  sys %.2fs  cpu %.2fs  mem%s\n",
 	    p_usertime, p_systime, p_cputime, memstring);
diff --git a/src/pstream.h b/src/pstream.h
index b76b346..7542e31 100644
--- a/src/pstream.h
+++ b/src/pstream.h
@@ -15,35 +15,37 @@
   GNU General Public License for more details.
 */
 
-#ifndef _PSTREAM_H
-#define _PSTREAM_H
+#ifndef PSTREAM_H
+#define PSTREAM_H
 
 #include "pstream_write.h"
+#include "varlist.h"
 
 #include <sys/types.h> /* off_t */
 
-#define  streamOpenRead           pstreamOpenRead
-#define  streamOpenAppend         pstreamOpenAppend
-#define  streamClose              pstreamClose
-
-#define  streamInqFiletype        pstreamInqFiletype
-#define  streamInqByteorder       pstreamInqByteorder
-
-#define  streamInqVlist           pstreamInqVlist
-
-#define  streamInqTimestep        pstreamInqTimestep
-
-#define  streamInqRecord          pstreamInqRecord
-
-#define  streamReadRecord         pstreamReadRecord
-#define  streamReadRecordF        pstreamReadRecordF
-
-#define  streamCopyRecord         pstreamCopyRecord
-
-#define  streamInqGRIBinfo        pstreamInqGRIBinfo
-
-#define  vlistCopyFlag            cdoVlistCopyFlag
-
+typedef struct {
+  int            self;
+  int            mode;
+  int            fileID;
+  int            vlistID;
+  int            tsID;
+  int            filetype;
+  int            tsID0;
+  int            mfiles;
+  int            nfiles;
+  int            varID;           /* next varID defined with streamDefVar */
+  bool           ispipe;
+  bool           isopen;
+  char          *name;
+  char         **mfnames;
+  varlist_t     *varlist;
+#if defined(HAVE_LIBPTHREAD)
+  void          *argument;
+  struct pipe_s *pipe;
+  pthread_t     rthreadID; /* read  thread ID */
+  pthread_t     wthreadID; /* write thread ID */
+#endif
+} pstream_t;
 
 int     pstreamOpenRead(const argument_t *argument);
 int     pstreamOpenAppend(const argument_t *argument);
@@ -68,4 +70,4 @@ int     pstreamFileID(int pstreamID);
 
 void    cdoVlistCopyFlag(int vlistID2, int vlistID1);
 
-#endif  /* _PSTREAM_H */
+#endif  /* PSTREAM_H */
diff --git a/src/pstream_int.h b/src/pstream_int.h
index f708ed3..22599f4 100644
--- a/src/pstream_int.h
+++ b/src/pstream_int.h
@@ -22,5 +22,6 @@
 
 void  pstreamDebug(int debug);
 int   pstreamIsPipe(int streamID);
+pthread_t  pCreateReadThread(argument_t *argument);
 
 #endif  /* _PSTREAM_INT_H */
diff --git a/src/pstream_write.h b/src/pstream_write.h
index 1fefa0c..8070bcf 100644
--- a/src/pstream_write.h
+++ b/src/pstream_write.h
@@ -15,20 +15,8 @@
   GNU General Public License for more details.
 */
 
-#ifndef _PSTREAM_WRITE_H
-#define _PSTREAM_WRITE_H
-
-#define  streamOpenWrite          pstreamOpenWrite
-
-#define  streamDefVlist           pstreamDefVlist
-
-#define  streamDefTimestep        pstreamDefTimestep
-
-#define  streamDefRecord          pstreamDefRecord
-
-#define  streamWriteRecord        pstreamWriteRecord
-#define  streamWriteRecordF       pstreamWriteRecordF
-
+#ifndef PSTREAM_WRITE_H
+#define PSTREAM_WRITE_H
 
 int     pstreamOpenWrite(const argument_t *argument, int filetype);
 void    pstreamClose(int pstreamID);
@@ -42,4 +30,4 @@ void    pstreamDefRecord(int pstreamID, int  varID, int  levelID);
 void    pstreamWriteRecord(int pstreamID, double *data, int nmiss);
 void    pstreamWriteRecordF(int pstreamID, float *data, int nmiss);
 
-#endif  /* _PSTREAM_WRITE_H */
+#endif  /* PSTREAM_WRITE_H */
diff --git a/src/pthread_debug.c b/src/pthread_debug.cc
similarity index 100%
rename from src/pthread_debug.c
rename to src/pthread_debug.cc
diff --git a/src/readline.c b/src/readline.cc
similarity index 100%
rename from src/readline.c
rename to src/readline.cc
diff --git a/src/realtime.c b/src/realtime.cc
similarity index 100%
rename from src/realtime.c
rename to src/realtime.cc
diff --git a/src/remap.h b/src/remap.h
index ce89747..a4975ab 100644
--- a/src/remap.h
+++ b/src/remap.h
@@ -214,7 +214,6 @@ void write_remap_scrip(const char *interp_file, int map_type, int submap_type, i
 void read_remap_scrip(const char *interp_file, int gridID1, int gridID2, int *map_type, int *submap_type, int *num_neighbors,
 		      int *remap_order, remapgrid_t *src_grid, remapgrid_t *tgt_grid, remapvars_t *rv);
 
-void calc_bin_addr(long gridsize, long nbins, const restr_t* restrict bin_lats, const restr_t* restrict cell_bound_box, int* restrict bin_addr);
 void calc_lat_bins(remapgrid_t* src_grid, remapgrid_t* tgt_grid, int map_type);
 long get_srch_cells(long tgt_cell_add, long nbins, int *bin_addr1, int *bin_addr2,
 		    restr_t *tgt_cell_bound_box, restr_t *src_cell_bound_box, long src_grid_size, int *srch_add);
diff --git a/src/remap_bicubic_scrip.c b/src/remap_bicubic_scrip.cc
similarity index 100%
rename from src/remap_bicubic_scrip.c
rename to src/remap_bicubic_scrip.cc
diff --git a/src/remap_bilinear_scrip.c b/src/remap_bilinear_scrip.cc
similarity index 100%
rename from src/remap_bilinear_scrip.c
rename to src/remap_bilinear_scrip.cc
diff --git a/src/remap_conserv.c b/src/remap_conserv.cc
similarity index 99%
rename from src/remap_conserv.c
rename to src/remap_conserv.cc
index ad5e6e1..03a6687 100644
--- a/src/remap_conserv.c
+++ b/src/remap_conserv.cc
@@ -5,13 +5,13 @@
 #include "remap_store_link.h"
 
 #ifdef __cplusplus
-//extern "C" {
+extern "C" {
 #endif
 #include "clipping/clipping.h"
 #include "clipping/area.h"
 #include "clipping/geometry.h"
 #ifdef __cplusplus
-//}
+}
 #endif
 
 //#define STIMER
@@ -448,12 +448,12 @@ void cdo_compute_concave_overlap_areas(unsigned N, search_t *search, struct grid
   double coordinates_y[3] = {-1, -1, -1};
   double coordinates_xyz[9] = {-1, -1, -1};
   enum yac_edge_type edge_types[3] = {GREAT_CIRCLE, GREAT_CIRCLE, GREAT_CIRCLE};
-  struct grid_cell target_partial_cell =
-    {.coordinates_x   = coordinates_x,
-     .coordinates_y   = coordinates_y,
-     .coordinates_xyz = coordinates_xyz,
-     .edge_type       = edge_types,
-     .num_corners     = 3};
+  struct grid_cell target_partial_cell;
+  target_partial_cell.coordinates_x   = coordinates_x;
+  target_partial_cell.coordinates_y   = coordinates_y;
+  target_partial_cell.coordinates_xyz = coordinates_xyz;
+  target_partial_cell.edge_type       = edge_types;
+  target_partial_cell.num_corners     = 3;
 
   /* Do the clipping and get the cell for the overlapping area */
 
diff --git a/src/remap_conserv_scrip.c b/src/remap_conserv_scrip.cc
similarity index 100%
rename from src/remap_conserv_scrip.c
rename to src/remap_conserv_scrip.cc
diff --git a/src/remap_distwgt.c b/src/remap_distwgt.cc
similarity index 100%
rename from src/remap_distwgt.c
rename to src/remap_distwgt.cc
diff --git a/src/remap_scrip_io.c b/src/remap_scrip_io.cc
similarity index 100%
rename from src/remap_scrip_io.c
rename to src/remap_scrip_io.cc
diff --git a/src/remap_search_latbins.c b/src/remap_search_latbins.cc
similarity index 84%
rename from src/remap_search_latbins.c
rename to src/remap_search_latbins.cc
index 90cc906..2ad919a 100644
--- a/src/remap_search_latbins.c
+++ b/src/remap_search_latbins.cc
@@ -1,61 +1,14 @@
 #include "cdo_int.h"
 #include "grid.h"
 #include "remap.h"
-/*
-#if defined(_OPENMP)
-#  include <omp.h>
-#endif
-*/
-
-void calc_bin_addr(long gridsize, long nbins, const restr_t* restrict bin_lats, const restr_t* restrict cell_bound_box, int* restrict bin_addr)
-{
-  long n, n2, nele, nele4;
-  restr_t cell_bound_box_lat1, cell_bound_box_lat2;
 
-  for ( n = 0; n < nbins; ++n )
-    {
-      n2 = n<<1;
-      bin_addr[n2  ] = gridsize;
-      bin_addr[n2+1] = 0;
-    }
 
-  for ( nele = 0; nele < gridsize; ++nele )
-    {
-      nele4 = nele<<2;
-      cell_bound_box_lat1 = cell_bound_box[nele4  ];
-      cell_bound_box_lat2 = cell_bound_box[nele4+1];
-      for ( n = 0; n < nbins; ++n )
-	{
-	  n2 = n<<1;
-	  if ( cell_bound_box_lat1 <= bin_lats[n2+1] &&
-	       cell_bound_box_lat2 >= bin_lats[n2  ] )
-	    {
-	      bin_addr[n2  ] = MIN(nele, bin_addr[n2  ]);
-	      bin_addr[n2+1] = MAX(nele, bin_addr[n2+1]);
-	    }
-	}
-    }
-}
-
-/*
-void calc_bin_addr_omp(long gridsize, long nbins, const restr_t* restrict bin_lats, const restr_t* restrict cell_bound_box, int* restrict bin_addr)
+static
+void calc_bin_addr(long gridsize, long nbins, const restr_t* restrict bin_lats, const restr_t* restrict cell_bound_box, int* restrict bin_addr)
 {
-  long n, n2, nele, nele4;
-  restr_t cell_bound_box_lat1, cell_bound_box_lat2;
-#if defined(_OPENMP)
-  extern int ompNumThreads;
-  restr_t (*omp_bin_addr)[ompNumThreads] = Malloc(nbins*sizeof(*omp_bin_addr));
-
-  for ( int ompthID = 0; ompthID < ompNumThreads; ++ompthID )
-    for ( n = 0; n < nbins; ++n )
-      {
-	n2 = n<<1;
-	omp_bin_addr[ompthID][n2  ] = gridsize;
-	omp_bin_addr[ompthID][n2+1] = 0;
-      }
-#endif
+  long n2;
 
-  for ( n = 0; n < nbins; ++n )
+  for ( long n = 0; n < nbins; ++n )
     {
       n2 = n<<1;
       bin_addr[n2  ] = gridsize;
@@ -64,48 +17,31 @@ void calc_bin_addr_omp(long gridsize, long nbins, const restr_t* restrict bin_la
 
 #if defined(_OPENMP)
 #pragma omp parallel for default(none) \
-  private(n, n2, nele4, cell_bound_box_lat1, cell_bound_box_lat2)  \
-  shared(gridsize, nbins, bin_lats, cell_bound_box, omp_bin_addr)
+  private(n2)  shared(gridsize, nbins, bin_lats, bin_addr, cell_bound_box)
 #endif
-  for ( nele = 0; nele < gridsize; ++nele )
+  for ( long nele = 0; nele < gridsize; ++nele )
     {
-#if defined(_OPENMP)
-      int ompthID = omp_get_thread_num();
-#endif
-      nele4 = nele<<2;
-      cell_bound_box_lat1 = cell_bound_box[nele4  ];
-      cell_bound_box_lat2 = cell_bound_box[nele4+1];
-      for ( n = 0; n < nbins; ++n )
+      long nele4 = nele<<2;
+      restr_t cell_bound_box_lat1 = cell_bound_box[nele4  ];
+      restr_t cell_bound_box_lat2 = cell_bound_box[nele4+1];
+      for ( long n = 0; n < nbins; ++n )
 	{
 	  n2 = n<<1;
 	  if ( cell_bound_box_lat1 <= bin_lats[n2+1] &&
 	       cell_bound_box_lat2 >= bin_lats[n2  ] )
 	    {
 #if defined(_OPENMP)
-	      omp_bin_addr[ompthID][n2  ] = MIN(nele, omp_bin_addr[ompthID][n2  ]);
-	      omp_bin_addr[ompthID][n2+1] = MAX(nele, omp_bin_addr[ompthID][n2+1]);
-#else
-	      bin_addr[n2  ] = MIN(nele, bin_addr[n2  ]);
-	      bin_addr[n2+1] = MAX(nele, bin_addr[n2+1]);
+#pragma omp critical
 #endif
-	    }
+              {
+                bin_addr[n2  ] = MIN(nele, bin_addr[n2  ]);
+                bin_addr[n2+1] = MAX(nele, bin_addr[n2+1]);
+              }
+            }
 	}
     }
-#if defined(_OPENMP)
-  for ( int ompthID = 0; ompthID < ompNumThreads; ++ompthID )
-    {
-      for ( n = 0; n < nbins; ++n )
-	{
-	  n2 = n<<1;
-	  bin_addr[n2  ] = MIN(omp_bin_addr[ompthID][n2  ], bin_addr[n2  ]);
-	  bin_addr[n2+1] = MAX(omp_bin_addr[ompthID][n2+1], bin_addr[n2+1]);
-	}
-    }
-
-  Free(omp_bin_addr);
-#endif
 }
-*/
+
 
 void calc_lat_bins(remapgrid_t* src_grid, remapgrid_t* tgt_grid, int map_type)
 {
diff --git a/src/remap_search_reg2d.c b/src/remap_search_reg2d.cc
similarity index 100%
rename from src/remap_search_reg2d.c
rename to src/remap_search_reg2d.cc
diff --git a/src/remap_store_link.c b/src/remap_store_link.cc
similarity index 100%
rename from src/remap_store_link.c
rename to src/remap_store_link.cc
diff --git a/src/remap_store_link_cnsrv.c b/src/remap_store_link_cnsrv.cc
similarity index 100%
rename from src/remap_store_link_cnsrv.c
rename to src/remap_store_link_cnsrv.cc
diff --git a/src/remaplib.c b/src/remaplib.cc
similarity index 99%
rename from src/remaplib.c
rename to src/remaplib.cc
index d868aae..b93ffaf 100644
--- a/src/remaplib.c
+++ b/src/remaplib.cc
@@ -567,8 +567,13 @@ void remap_define_reg2d(int gridID, remapgrid_t *grid)
   char yunits[CDI_MAX_NAME]; yunits[0] = 0;
   cdiGridInqKeyStr(gridID, CDI_KEY_YUNITS, CDI_MAX_NAME, yunits);
 
-  grid_to_radian(yunits, nx, grid->reg2d_center_lon, "grid reg2d center lon"); 
-  grid_to_radian(yunits, ny, grid->reg2d_center_lat, "grid reg2d center lat"); 
+  grid_to_radian(yunits, nx, grid->reg2d_center_lon, "grid reg2d center lon");
+  grid_to_radian(yunits, ny, grid->reg2d_center_lat, "grid reg2d center lat");
+
+  if ( grid->reg2d_center_lon[nx-1] < grid->reg2d_center_lon[0] )
+    for ( long i = 1; i < nx; ++i )
+      if ( grid->reg2d_center_lon[i] < grid->reg2d_center_lon[i-1] )
+        grid->reg2d_center_lon[i] += PI2;
 
   if ( grid->is_cyclic ) grid->reg2d_center_lon[nx] = grid->reg2d_center_lon[0] + PI2;
 
diff --git a/src/remapsort.c b/src/remapsort.cc
similarity index 99%
rename from src/remapsort.c
rename to src/remapsort.cc
index 53f6211..b092ab3 100644
--- a/src/remapsort.c
+++ b/src/remapsort.cc
@@ -601,7 +601,7 @@ void sort_par(long num_links, long num_wts, int *restrict add1, int *restrict ad
 
   const int nsplit = 2;                      /* (only 2 allowed) number of segments to split the data */
   int nl[nsplit];                            /* number of links in each sub-array              */
-  int who_am_i,depth;                        /* current depth, depth of children and index
+  int who_am_i;                              /* current depth, depth of children and index
 						to be parent in next call to sort_par          */
   int add_srt[nsplit]/*, add_end[nsplit]*/;  /* arrays for start and end index of sub array    */
   int *add1s[nsplit], *add2s[nsplit];        /* pointers to sub arrays for sort and merge step */
@@ -638,9 +638,9 @@ void sort_par(long num_links, long num_wts, int *restrict add1, int *restrict ad
   nl[0]      = num_links/nsplit;   nl[1]      = num_links-nl[0];
   //add_end[0] = nl[0];              add_end[1] = num_links;
 
-  depth = (int) (log(parent)/log(2));
-
 #if defined(_OPENMP)
+  int depth = (int) (log(parent)/log(2));
+
   /* Allow for nested parallelism */
   if ( omp_in_parallel() && depth<par_depth ) 
     {
diff --git a/src/results_template_parser.c b/src/results_template_parser.cc
similarity index 100%
rename from src/results_template_parser.c
rename to src/results_template_parser.cc
diff --git a/src/sellist.c b/src/sellist.cc
similarity index 100%
rename from src/sellist.c
rename to src/sellist.cc
diff --git a/src/specspace.c b/src/specspace.cc
similarity index 100%
rename from src/specspace.c
rename to src/specspace.cc
diff --git a/src/statistic.c b/src/statistic.cc
similarity index 100%
rename from src/statistic.c
rename to src/statistic.cc
diff --git a/src/statistic.h b/src/statistic.h
index 941f3cf..fc304f7 100644
--- a/src/statistic.h
+++ b/src/statistic.h
@@ -32,7 +32,7 @@ double beta_distr_inv (double a, double b, double p, const char *prompt);
 void beta_distr_constants (double a, double b, double p, double *c1, double *c2, const char *prompt);
 double fisher (double m, double n, double x, const char *prompt);
 
-// make heap sort accessible for eigen value computation in EOFs.c
+// make heap sort accessible for eigen value computation in EOFs.cc
 void heap_sort (double *eig_val, double **a, int n);
 
 // make parallel eigen solution accessible for eigen value computation in EOF3d.c
diff --git a/src/stdnametable.c b/src/stdnametable.cc
similarity index 100%
rename from src/stdnametable.c
rename to src/stdnametable.cc
diff --git a/src/table.c b/src/table.cc
similarity index 100%
rename from src/table.c
rename to src/table.cc
diff --git a/src/template_parser.c b/src/template_parser.cc
similarity index 61%
rename from src/template_parser.c
rename to src/template_parser.cc
index cab207c..4bba8d2 100644
--- a/src/template_parser.c
+++ b/src/template_parser.cc
@@ -19,62 +19,6 @@ xmlDoc *param_doc;
 
 void *magics_node, *results_node;
 
-// not used
-static
-int template_parser(  char *Filename, const char *varname )
-{
-#if defined(HAVE_LIBXML2)
-  xmlDoc         *doc = NULL;
-  xmlNode        *root_element = NULL;
-
-  doc = xmlReadFile( Filename, NULL, 0 );
-  if ( doc == NULL )
-    {
-      printf( "Error: Could not parse the file \"%s\"\n", Filename );
-      return (1);
-    }
-  else
-    {
-      /* 
-         Get the name of the root element node 
-         If "magics" , call "magics" parser
-         If "results", call "results" parser
-      */                      
-
-      root_element = xmlDocGetRootElement( doc );
-		  
-      if( !strcmp( (const char*)root_element->name, "magics" ) )
-        {
-          if ( magics_template_parser( root_element ) == 1 )
-            {
-              printf( "Un-Supported version of Magics++! \n" );
-              return (2);
-            }
-        }
-      else if( !strcmp( (const char*)root_element->name, "results" ) )
-        {
-          results_template_parser( root_element, varname );
-          /* Needs some error handling */
-        }
-
-      /*** free the document ***/
-      xmlFreeDoc( doc );
-    }
-  
-  /*** Free the global variables that may
-   *   have been allocated by the parser. 
-   ***/
-
-  xmlCleanupParser();
-#else
-  
-  cdoAbort("XML2 support not compiled in!");
-  
-#endif
-
-  return 0;
-}
-
 
 int init_XMLtemplate_parser( char *Filename )
 {
diff --git a/src/text.c b/src/text.cc
similarity index 100%
rename from src/text.c
rename to src/text.cc
diff --git a/src/timer.c b/src/timer.cc
similarity index 100%
rename from src/timer.c
rename to src/timer.cc
diff --git a/src/userlog.c b/src/userlog.cc
similarity index 100%
rename from src/userlog.c
rename to src/userlog.cc
diff --git a/src/util.c b/src/util.cc
similarity index 93%
rename from src/util.c
rename to src/util.cc
index 944dec3..dda1d02 100644
--- a/src/util.c
+++ b/src/util.cc
@@ -15,10 +15,6 @@
   GNU General Public License for more details.
 */
 
-#ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE 600 /* ftello */
-#endif
-
 #if defined(HAVE_CONFIG_H)
 #  include "config.h"
 #endif
@@ -50,12 +46,12 @@
 
 /* refactor: moved here from *.c */
 
-int CDO_opterr = 0;      // refactor: moved here from cdo_getopt.c
-const char *CDO_optarg = NULL; // refactor: moved here from cdo_getopt.c
-int CDO_optind = 1;      // refactor: moved here from cdo_getopt.c
+int CDO_opterr = 0;      // refactor: moved here from cdo_getopt.cc
+const char *CDO_optarg = NULL; // refactor: moved here from cdo_getopt.cc
+int CDO_optind = 1;      // refactor: moved here from cdo_getopt.cc
 
 
-/* refactor: moved here from cdo.c */
+/* refactor: moved here from cdo.cc */
 
 char *Progname;
 const char *CDO_Version = "Climate Data Operators version " VERSION" (http://mpimet.mpg.de/cdo)";
@@ -72,7 +68,7 @@ int cdoDefaultFileType   = CDI_UNDEFID;
 int cdoDefaultDataType   = CDI_UNDEFID;
 int cdoDefaultByteorder  = CDI_UNDEFID;
 int cdoDefaultTableID    = CDI_UNDEFID;
-int cdoDefaultInstID     = CDI_UNDEFID;     // moved here from institution.c, was UNDEFID
+int cdoDefaultInstID     = CDI_UNDEFID;     // moved here from institution.cc, was UNDEFID
 int cdoDefaultTimeType   = CDI_UNDEFID;
 
 int cdoLockIO            = FALSE;
@@ -120,8 +116,6 @@ const char *cdoExpName         = NULL;
 
 int timer_read, timer_write;
 
-
-
 const char *cdoComment(void)
 {
   static char comment[256];
@@ -221,7 +215,6 @@ char *getOperator(const char *argument)
   return operatorArg;
 }
 
-const char *operatorAlias(const char *operatorName);
 
 const char *getOperatorName(const char *operatorArg)
 {
@@ -229,8 +222,10 @@ const char *getOperatorName(const char *operatorArg)
 
   if ( operatorArg )
     {
-      if ( operatorArg[0] == '-' ) operatorArg++;
-
+      if ( operatorArg[0] == '-' )
+      {
+          operatorArg++;
+      }
       char *commapos = (char *)strchr(operatorArg, ',');
       size_t len = (commapos != NULL) ? (size_t)(commapos - operatorArg) : strlen(operatorArg);
 
@@ -241,7 +236,33 @@ const char *getOperatorName(const char *operatorArg)
     }
 
   /*  return operatorName; */
-  return operatorAlias(operatorName);
+  if(is_alias(operatorName))
+  {
+    get_original(operatorName);
+  }
+    return operatorName;
+}
+
+char *getOperatorArg(const char *xoperator)
+{
+  char *operatorArg = NULL;
+
+  if ( xoperator )
+    {
+      char *commapos = (char *)strchr(xoperator, ',');
+
+      if ( commapos )
+        {
+          size_t len = strlen(commapos+1);
+          if ( len )
+            {
+              operatorArg = (char*) Malloc(len+1);
+              strcpy(operatorArg, commapos+1);
+            }
+        }
+    }
+
+  return operatorArg;
 }
 
 
@@ -390,7 +411,15 @@ void input_int(char *arg, int intarr[], int maxint, int *nintfound)
   *nintfound = nint;
 }
 
-
+std::string string2lower(std::string str)
+{
+    std::string lower_case_string = str;
+    for(char c : str)
+    {
+       c = tolower(c); 
+    }
+    return lower_case_string;
+}
 void strtolower(char *str)
 {
   if ( str )
@@ -719,14 +748,14 @@ const char *filetypeext(int filetype)
   switch ( filetype )
     {
     case CDI_FILETYPE_GRB:
-    case CDI_FILETYPE_GRB2: return ".grb";   break;
+    case CDI_FILETYPE_GRB2: return ".grb";
     case CDI_FILETYPE_NC:
     case CDI_FILETYPE_NC2:
     case CDI_FILETYPE_NC4:
-    case CDI_FILETYPE_NC4C: return ".nc";    break;
-    case CDI_FILETYPE_SRV:  return ".srv";   break;
-    case CDI_FILETYPE_EXT:  return ".ext";   break;
-    case CDI_FILETYPE_IEG:  return ".ieg";   break;
+    case CDI_FILETYPE_NC4C: return ".nc";
+    case CDI_FILETYPE_SRV:  return ".srv";
+    case CDI_FILETYPE_EXT:  return ".ext";
+    case CDI_FILETYPE_IEG:  return ".ieg";
     default:                return "";
     }
 }
@@ -914,3 +943,17 @@ void cdo_check_round(void)
         }
     }
 }
+
+void print_argument(argument_t * p_argument)
+{
+    std::cout << "argv with " << p_argument->argc << " arguments:" << std::endl;
+    for(int i = 0; i < p_argument->argc; i++)
+    {
+        std::cout << p_argument->argv[i] << " ";
+    }
+    std::cout << std::endl;
+
+    std::cout << "OperatorName: "<< p_argument->operatorName << std::endl;
+
+    std::cout << "operatorArguments: " << p_argument->operatorArguments << std::endl;
+}
diff --git a/src/util.h b/src/util.h
index 12e6bbb..d3833a5 100644
--- a/src/util.h
+++ b/src/util.h
@@ -43,6 +43,7 @@
 
 #define  UNCHANGED_RECORD  (processSelf() == 0 && cdoStreamName(0)->argv[0][0] != '-' && cdoRegulargrid == FALSE && cdoDefaultFileType == -1 && cdoDefaultDataType == -1 && cdoDefaultByteorder == -1 )
 
+#include <string>
 extern char *Progname;
 extern char *cdoGridSearchDir;
 extern int CDO_Reduce_Dim;
@@ -50,7 +51,7 @@ extern int CDO_Memtype;
 extern int CDO_Parallel_Read;
 extern int CDO_Append_History;
 extern int CDO_Reset_History;
-extern int timer_read, timer_write; // refactor: both pstream.c and CDIread.c CDIwrite.c defined in cdo.c
+extern int timer_read, timer_write; // refactor: both pstream.cc and CDIread.cc CDIwrite.cc defined in cdo.cc
 
 extern int CDO_optind;
 extern const char *CDO_optarg;
@@ -112,10 +113,12 @@ extern const char *CDO_Version;
 
 
 typedef struct {
+  int process_id;
   int    argc;
-  int    argl;
   char **argv;
   char  *args;
+  std::string operatorName;
+  char * operatorArguments;
 } argument_t;
 
 argument_t *file_argument_new(const char *filename);
@@ -125,8 +128,9 @@ void        argument_free(argument_t *argument);
 void        argument_fill(argument_t *argument, int argc, char *argv[]);
 
 char *getProgname(char *string);
-char *getOperator(const char *argument);
+char *GetOperator(const char *argument);
 const char *getOperatorName(const char *xoperator);
+char *getOperatorArg(const char *xoperator);
 const char *cdoComment(void);
 
 argument_t makeArgument(int argc, char *argv[]);
@@ -221,16 +225,18 @@ int zaxisFromName(const char *zaxisname);
 /* refactor: moved here from cdo.h */
 int cdo_omp_get_thread_num(void);
 void cdo_omp_set_num_threads(int nthreads);
+std::string string2lower(std::string str);
 void strtolower(char *str);
 void strtoupper(char *str);
 
-/* refactor: moved here from cdo.c */
-void exp_run(int argc, char *argv[], const char *cdoExpName); // job.c
-void printFeatures(void); // features.c
-void printLibraries(void);  // features.c  
+/* refactor: moved here from cdo.cc */
+void exp_run(int argc, char *argv[], const char *cdoExpName); // job.cc
+void printFeatures(void); // features.cc
+void printLibraries(void);  // features.cc  
 
 int wildcardmatch(const char *w, const char *s);
 
 void cdo_check_round(void);
 
+void print_argument(argument_t *argument);
 #endif  /* _UTIL_H */
diff --git a/src/varlist.h b/src/varlist.h
new file mode 100644
index 0000000..49b2cef
--- /dev/null
+++ b/src/varlist.h
@@ -0,0 +1,13 @@
+#ifndef VARLIST_H
+#define VARLIST_H
+
+typedef struct {
+  bool        check_datarange;
+  int         gridsize;
+  int         datatype;
+  double      missval;
+  double      addoffset;
+  double      scalefactor;
+} varlist_t;
+
+#endif
diff --git a/src/zaxis.c b/src/zaxis.cc
similarity index 100%
rename from src/zaxis.c
rename to src/zaxis.cc
diff --git a/src/zaxis_print.c b/src/zaxis_print.cc
similarity index 100%
rename from src/zaxis_print.c
rename to src/zaxis_print.cc
diff --git a/test/Ensstat.test.in b/test/Ensstat.test.in
index 6c1e0ad..0d995ba 100644
--- a/test/Ensstat.test.in
+++ b/test/Ensstat.test.in
@@ -1,12 +1,12 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
 #
 CDOOUT=cout$$
 CDOERR=cerr$$
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/ts_mm_5years
 export CDO_FILE_SUFFIX=NULL
diff --git a/test/Expr.test.in b/test/Expr.test.in
index c806fb7..d03068a 100644
--- a/test/Expr.test.in
+++ b/test/Expr.test.in
@@ -56,7 +56,7 @@ function testfunc()
 INSTR="_clev=clev(var130);pottemp=var130*((100000/_clev)^0.287);"
 testfunc
 #
-INSTR="var1=(var129>0)?(var130-273.15):var152;"
+INSTR="var1=var129>0?var130-273.15:1*var152;"
 testfunc
 #
 rm -f $CDOOUT $CDOERR
diff --git a/test/Fldstat.test.in b/test/Fldstat.test.in
index 92c45c4..35822cc 100644
--- a/test/Fldstat.test.in
+++ b/test/Fldstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -9,7 +9,7 @@ CDOERR=cerr$$
 FORMAT="-f srv -b 32"
 #
 TYPE=fld
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/t21_geosp_tsurf.grb
 #
diff --git a/test/Gridboxstat.test.in b/test/Gridboxstat.test.in
index 2a624a6..b6660f7 100644
--- a/test/Gridboxstat.test.in
+++ b/test/Gridboxstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -9,7 +9,7 @@ CDOERR=cerr$$
 FORMAT="-f srv -b 32"
 #
 TYPE=gridbox
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/t21_geosp_tsurf.grb
 #
diff --git a/test/Makefile.am b/test/Makefile.am
index 60fbb59..f89094b 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -17,8 +17,8 @@ TESTS = threads.test tsformat.test wildcard.test File.test Comp.test Compc.test
         Ensstat.test Enspctl.test Gridboxstat.test \
         Vertstat.test Fldstat.test Fldpctl.test Merstat.test Zonstat.test \
         Timstat.test Timselstat.test Seasstat.test \
-        Runstat.test Multiyearstat.test \
-        EOF.test \
+        Runstat.test Multiyearstat.test Ydrunstat.test \
+        Mergetime.test EOF.test \
         Vertint.test Afterburner.test Arithc.test Arith.test Expr.test \
         Gradsdes.test Collgrid.test MapReduce.test Ninfo.test
 
diff --git a/test/Makefile.in b/test/Makefile.in
index 77add64..98237b1 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -90,11 +90,12 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(srcdir)/Spectral.test.in $(srcdir)/Vertint.test.in \
 	$(srcdir)/Timstat.test.in $(srcdir)/Timselstat.test.in \
 	$(srcdir)/Seasstat.test.in $(srcdir)/Runstat.test.in \
-	$(srcdir)/Multiyearstat.test.in $(srcdir)/Gridboxstat.test.in \
-	$(srcdir)/Vertstat.test.in $(srcdir)/Fldstat.test.in \
-	$(srcdir)/Fldpctl.test.in $(srcdir)/Ensstat.test.in \
-	$(srcdir)/Enspctl.test.in $(srcdir)/Merstat.test.in \
-	$(srcdir)/Zonstat.test.in $(srcdir)/Afterburner.test.in \
+	$(srcdir)/Multiyearstat.test.in $(srcdir)/Ydrunstat.test.in \
+	$(srcdir)/Gridboxstat.test.in $(srcdir)/Vertstat.test.in \
+	$(srcdir)/Fldstat.test.in $(srcdir)/Fldpctl.test.in \
+	$(srcdir)/Ensstat.test.in $(srcdir)/Enspctl.test.in \
+	$(srcdir)/Merstat.test.in $(srcdir)/Zonstat.test.in \
+	$(srcdir)/Mergetime.test.in $(srcdir)/Afterburner.test.in \
 	$(srcdir)/Detrend.test.in $(srcdir)/Arithc.test.in \
 	$(srcdir)/Arith.test.in $(srcdir)/Expr.test.in \
 	$(srcdir)/Gradsdes.test.in $(srcdir)/Collgrid.test.in \
@@ -103,6 +104,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(srcdir)/Ninfo.test.in README
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_options.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
@@ -115,12 +118,12 @@ CONFIG_CLEAN_FILES = File.test Read_grib.test Read_netcdf.test \
 	Copy_netcdf.test Comp.test Compc.test Cat.test Gridarea.test \
 	Genweights.test Remap.test Remap2.test EOF.test Select.test \
 	Spectral.test Vertint.test Timstat.test Timselstat.test \
-	Seasstat.test Runstat.test Multiyearstat.test Gridboxstat.test \
-	Vertstat.test Fldstat.test Fldpctl.test Ensstat.test \
-	Enspctl.test Merstat.test Zonstat.test Afterburner.test \
-	Detrend.test Arithc.test Arith.test Expr.test Gradsdes.test \
-	Collgrid.test threads.test tsformat.test wildcard.test \
-	MapReduce.test Ninfo.test
+	Seasstat.test Runstat.test Multiyearstat.test Ydrunstat.test \
+	Gridboxstat.test Vertstat.test Fldstat.test Fldpctl.test \
+	Ensstat.test Enspctl.test Merstat.test Zonstat.test \
+	Mergetime.test Afterburner.test Detrend.test Arithc.test \
+	Arith.test Expr.test Gradsdes.test Collgrid.test threads.test \
+	tsformat.test wildcard.test MapReduce.test Ninfo.test
 CONFIG_CLEAN_VPATH_FILES =
 AM_V_P = $(am__v_P_ at AM_V@)
 am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
@@ -375,13 +378,14 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 ENABLE_CDI_LIB = @ENABLE_CDI_LIB@
 ENABLE_CGRIBEX = @ENABLE_CGRIBEX@
-ENABLE_CXX = @ENABLE_CXX@
 ENABLE_DATA = @ENABLE_DATA@
 ENABLE_EXTRA = @ENABLE_EXTRA@
 ENABLE_GRIB = @ENABLE_GRIB@
@@ -399,6 +403,7 @@ FGREP = @FGREP@
 GREP = @GREP@
 GRIB_API_INCLUDE = @GRIB_API_INCLUDE@
 GRIB_API_LIBS = @GRIB_API_LIBS@
+HAVE_CXX11 = @HAVE_CXX11@
 HDF5_INCLUDE = @HDF5_INCLUDE@
 HDF5_LIBS = @HDF5_LIBS@
 HDF5_ROOT = @HDF5_ROOT@
@@ -536,8 +541,8 @@ TESTS = threads.test tsformat.test wildcard.test File.test Comp.test Compc.test
         Ensstat.test Enspctl.test Gridboxstat.test \
         Vertstat.test Fldstat.test Fldpctl.test Merstat.test Zonstat.test \
         Timstat.test Timselstat.test Seasstat.test \
-        Runstat.test Multiyearstat.test \
-        EOF.test \
+        Runstat.test Multiyearstat.test Ydrunstat.test \
+        Mergetime.test EOF.test \
         Vertint.test Afterburner.test Arithc.test Arith.test Expr.test \
         Gradsdes.test Collgrid.test MapReduce.test Ninfo.test
 
@@ -628,6 +633,8 @@ Runstat.test: $(top_builddir)/config.status $(srcdir)/Runstat.test.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 Multiyearstat.test: $(top_builddir)/config.status $(srcdir)/Multiyearstat.test.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+Ydrunstat.test: $(top_builddir)/config.status $(srcdir)/Ydrunstat.test.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 Gridboxstat.test: $(top_builddir)/config.status $(srcdir)/Gridboxstat.test.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 Vertstat.test: $(top_builddir)/config.status $(srcdir)/Vertstat.test.in
@@ -644,6 +651,8 @@ Merstat.test: $(top_builddir)/config.status $(srcdir)/Merstat.test.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 Zonstat.test: $(top_builddir)/config.status $(srcdir)/Zonstat.test.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+Mergetime.test: $(top_builddir)/config.status $(srcdir)/Mergetime.test.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 Afterburner.test: $(top_builddir)/config.status $(srcdir)/Afterburner.test.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 Detrend.test: $(top_builddir)/config.status $(srcdir)/Detrend.test.in
diff --git a/test/Vertstat.test.in b/test/Mergetime.test.in
similarity index 58%
copy from test/Vertstat.test.in
copy to test/Mergetime.test.in
index 4358915..2f7da1a 100644
--- a/test/Vertstat.test.in
+++ b/test/Mergetime.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..10 # Number of tests to be executed.
+echo 1..2 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -8,25 +8,27 @@ CDOOUT=cout$$
 CDOERR=cerr$$
 FORMAT="-f srv -b 32"
 #
-TYPE=vert
-STATS="min max sum avg mean std std1 var var1 int"
-#
-IFILE=$DATAPATH/pl_data.grb
+IFILE1=$DATAPATH/mergetime_y2
+IFILE2=$DATAPATH/mergetime_y12
 #
 NTEST=1
 #
-for STAT in $STATS; do
+for X in 1 2; do
   RSTAT=0
-  RFILE=$DATAPATH/${TYPE}${STAT}_ref
-  OFILE=${TYPE}${STAT}_res
+  RFILE=$DATAPATH/mergetime_ref
+  OFILE=mergetime_res
 
-  CDOTEST="${TYPE}$STAT"
-  CDOCOMMAND="$CDO $FORMAT ${TYPE}${STAT} $IFILE $OFILE"
+  CDOTEST="mergetime"
+  if [ "$X" = "1" ] ; then
+    CDOCOMMAND="$CDO $FORMAT mergetime $IFILE1 $IFILE2 $OFILE"
+  else
+    CDOCOMMAND="$CDO $FORMAT mergetime $IFILE2 $IFILE1 $OFILE"
+  fi
 
   echo "Running test: $NTEST"
   echo "$CDOCOMMAND"
 
-  $CDOCOMMAND
+  env SKIP_SAME_TIME=1 $CDOCOMMAND
   test $? -eq 0 || let RSTAT+=1
 
   $CDO diff $OFILE $RFILE > $CDOOUT 2> $CDOERR
diff --git a/test/Merstat.test.in b/test/Merstat.test.in
index bb4d23a..4836903 100644
--- a/test/Merstat.test.in
+++ b/test/Merstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -9,7 +9,7 @@ CDOERR=cerr$$
 FORMAT="-f srv -b 32"
 #
 TYPE=mer
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/t21_geosp_tsurf.grb
 #
diff --git a/test/Multiyearstat.test.in b/test/Multiyearstat.test.in
index fc559ac..5a80209 100644
--- a/test/Multiyearstat.test.in
+++ b/test/Multiyearstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..36 # Number of tests to be executed.
+echo 1..40 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -7,7 +7,7 @@ test -n "$DATAPATH" || DATAPATH=./data
 CDOOUT=cout$$
 CDOERR=cerr$$
 TYPES="ymon yday yhour yseas"
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/ts_mm_5years
 NTEST=1
diff --git a/test/Runstat.test.in b/test/Runstat.test.in
index 3df185e..1ea9470 100644
--- a/test/Runstat.test.in
+++ b/test/Runstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -7,7 +7,7 @@ test -n "$DATAPATH" || DATAPATH=./data
 CDOOUT=cout$$
 CDOERR=cerr$$
 TYPE=run
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 NTEST=1
 #
 IFILE=$DATAPATH/ts_mm_5years
diff --git a/test/Seasstat.test.in b/test/Seasstat.test.in
index 81ab0db..691e659 100644
--- a/test/Seasstat.test.in
+++ b/test/Seasstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -7,7 +7,7 @@ test -n "$DATAPATH" || DATAPATH=./data
 CDOOUT=cout$$
 CDOERR=cerr$$
 TYPE=seas
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 NTEST=1
 #
 IFILE=$DATAPATH/ts_mm_5years
diff --git a/test/Timselstat.test.in b/test/Timselstat.test.in
index 6967bcf..f25ad78 100644
--- a/test/Timselstat.test.in
+++ b/test/Timselstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -7,7 +7,7 @@ test -n "$DATAPATH" || DATAPATH=./data
 CDOOUT=cout$$
 CDOERR=cerr$$
 TYPE=timsel
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 NTEST=1
 #
 IFILE=$DATAPATH/ts_mm_5years
diff --git a/test/Timstat.test.in b/test/Timstat.test.in
index 62bac46..f4d4def 100644
--- a/test/Timstat.test.in
+++ b/test/Timstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..36 # Number of tests to be executed.
+echo 1..40 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -7,7 +7,7 @@ test -n "$DATAPATH" || DATAPATH=./data
 CDOOUT=cout$$
 CDOERR=cerr$$
 TYPES="tim year mon day"
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 NTEST=1
 #
 for TYPE in $TYPES; do
diff --git a/test/Vertstat.test.in b/test/Vertstat.test.in
index 4358915..394a319 100644
--- a/test/Vertstat.test.in
+++ b/test/Vertstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..10 # Number of tests to be executed.
+echo 1..11 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -9,7 +9,7 @@ CDOERR=cerr$$
 FORMAT="-f srv -b 32"
 #
 TYPE=vert
-STATS="min max sum avg mean std std1 var var1 int"
+STATS="min max range sum avg mean std std1 var var1 int"
 #
 IFILE=$DATAPATH/pl_data.grb
 #
diff --git a/test/Multiyearstat.test.in b/test/Ydrunstat.test.in
similarity index 73%
copy from test/Multiyearstat.test.in
copy to test/Ydrunstat.test.in
index fc559ac..2fdca73 100644
--- a/test/Multiyearstat.test.in
+++ b/test/Ydrunstat.test.in
@@ -1,12 +1,12 @@
 #! @BASH@
-echo 1..36 # Number of tests to be executed.
+echo 1..9 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
 #
 CDOOUT=cout$$
 CDOERR=cerr$$
-TYPES="ymon yday yhour yseas"
+TYPES="ydrun"
 STATS="min max sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/ts_mm_5years
@@ -15,15 +15,11 @@ NTEST=1
 for TYPE in $TYPES; do
   for STAT in $STATS; do
     RSTAT=0
-    if [ $TYPE = yday -o $TYPE = yhour ] ; then
-      RFILE=$DATAPATH/ymon${STAT}_ref
-    else
-      RFILE=$DATAPATH/${TYPE}${STAT}_ref
-    fi
+    RFILE=$DATAPATH/${TYPE}${STAT}_ref
     OFILE=${TYPE}${STAT}_res
 
     CDOTEST="${TYPE}$STAT"
-    CDOCOMMAND="$CDO ${TYPE}${STAT} $IFILE $OFILE"
+    CDOCOMMAND="$CDO ${TYPE}${STAT},8 $IFILE $OFILE"
 
     echo "Running test: $NTEST"
     echo "$CDOCOMMAND"
diff --git a/test/Zonstat.test.in b/test/Zonstat.test.in
index ac4c754..e0b4031 100644
--- a/test/Zonstat.test.in
+++ b/test/Zonstat.test.in
@@ -1,5 +1,5 @@
 #! @BASH@
-echo 1..9 # Number of tests to be executed.
+echo 1..10 # Number of tests to be executed.
 #
 test -n "$CDO"      || CDO=cdo
 test -n "$DATAPATH" || DATAPATH=./data
@@ -9,7 +9,7 @@ CDOERR=cerr$$
 FORMAT="-f srv -b 32"
 #
 TYPE=zon
-STATS="min max sum avg mean std std1 var var1"
+STATS="min max range sum avg mean std std1 var var1"
 #
 IFILE=$DATAPATH/t21_geosp_tsurf.grb
 #
diff --git a/test/data/Makefile.am b/test/data/Makefile.am
index c1f817e..484cc58 100644
--- a/test/data/Makefile.am
+++ b/test/data/Makefile.am
@@ -7,19 +7,20 @@ GRIB_REF     = grib_testfile01_sinfo_ref grib_testfile01_info_ref grib_testfile0
 NETCDF_REF   = netcdf_testfile01_sinfon_ref netcdf_testfile01_infon_ref netcdf_testfile02_sinfon_ref netcdf_testfile02_infon_ref
 COMP_REF     = comp_eqc_ref comp_gec_ref comp_gtc_ref comp_lec_ref comp_ltc_ref comp_nec_ref comptest.srv
 EOF_REF      = eval_ref eof_ref pcoeff00000
-YMONSTAT_REF = ymonmin_ref ymonmax_ref ymonsum_ref ymonavg_ref ymonmean_ref ymonstd_ref ymonstd1_ref ymonvar_ref ymonvar1_ref
-YSEASSTAT_REF = yseasmin_ref yseasmax_ref yseassum_ref yseasavg_ref yseasmean_ref yseasstd_ref yseasstd1_ref yseasvar_ref yseasvar1_ref
-SEASSTAT_REF = seasmin_ref seasmax_ref seassum_ref seasavg_ref seasmean_ref seasstd_ref seasstd1_ref seasvar_ref seasvar1_ref
-RUNSTAT_REF  = runmin_ref runmax_ref runsum_ref runavg_ref runmean_ref runstd_ref runstd1_ref runvar_ref runvar1_ref
-TIMSTAT_REF  = timmin_ref timmax_ref timsum_ref timavg_ref timmean_ref timstd_ref timstd1_ref timvar_ref timvar1_ref
-YEARSTAT_REF = yearmin_ref yearmax_ref yearsum_ref yearavg_ref yearmean_ref yearstd_ref yearstd1_ref yearvar_ref yearvar1_ref
-MONSTAT_REF  = monmin_ref monmax_ref monsum_ref monavg_ref monmean_ref monstd_ref monstd1_ref monvar_ref monvar1_ref
-DAYSTAT_REF  = daymin_ref daymax_ref daysum_ref dayavg_ref daymean_ref daystd_ref daystd1_ref dayvar_ref dayvar1_ref
-VERTSTAT_REF = vertmin_ref vertmax_ref vertsum_ref vertavg_ref vertmean_ref vertstd_ref vertstd1_ref vertvar_ref vertvar1_ref vertint_ref
-FLDSTAT_REF  = fldmin_ref fldmax_ref fldsum_ref fldavg_ref fldmean_ref fldstd_ref fldstd1_ref fldvar_ref fldvar1_ref
+YDRUNSTAT_REF = ydrunmin_ref ydrunmax_ref ydrunsum_ref ydrunavg_ref ydrunmean_ref ydrunstd_ref ydrunstd1_ref ydrunvar_ref ydrunvar1_ref
+YMONSTAT_REF = ymonmin_ref ymonmax_ref ymonsum_ref ymonavg_ref ymonmean_ref ymonstd_ref ymonstd1_ref ymonvar_ref ymonvar1_ref ymonrange_ref
+YSEASSTAT_REF = yseasmin_ref yseasmax_ref yseassum_ref yseasavg_ref yseasmean_ref yseasstd_ref yseasstd1_ref yseasvar_ref yseasvar1_ref yseasrange_ref
+SEASSTAT_REF = seasmin_ref seasmax_ref seassum_ref seasavg_ref seasmean_ref seasstd_ref seasstd1_ref seasvar_ref seasvar1_ref seasrange_ref
+RUNSTAT_REF  = runmin_ref runmax_ref runsum_ref runavg_ref runmean_ref runstd_ref runstd1_ref runvar_ref runvar1_ref runrange_ref
+TIMSTAT_REF  = timmin_ref timmax_ref timsum_ref timavg_ref timmean_ref timstd_ref timstd1_ref timvar_ref timvar1_ref timrange_ref
+YEARSTAT_REF = yearmin_ref yearmax_ref yearsum_ref yearavg_ref yearmean_ref yearstd_ref yearstd1_ref yearvar_ref yearvar1_ref yearrange_ref
+MONSTAT_REF  = monmin_ref monmax_ref monsum_ref monavg_ref monmean_ref monstd_ref monstd1_ref monvar_ref monvar1_ref monrange_ref
+DAYSTAT_REF  = daymin_ref daymax_ref daysum_ref dayavg_ref daymean_ref daystd_ref daystd1_ref dayvar_ref dayvar1_ref dayrange_ref
+VERTSTAT_REF = vertmin_ref vertmax_ref vertsum_ref vertavg_ref vertmean_ref vertstd_ref vertstd1_ref vertvar_ref vertvar1_ref vertint_ref vertrange_ref
+FLDSTAT_REF  = fldmin_ref fldmax_ref fldsum_ref fldavg_ref fldmean_ref fldstd_ref fldstd1_ref fldvar_ref fldvar1_ref fldrange_ref
 FLDPSTAT_REF = fldpctl1_ref fldpctl20_ref fldpctl25_ref fldpctl33_ref fldpctl50_ref fldpctl66_ref fldpctl75_ref fldpctl80_ref fldpctl99_ref fldpctl100_ref
-MERSTAT_REF  = mermin_ref mermax_ref mersum_ref meravg_ref mermean_ref merstd_ref merstd1_ref mervar_ref mervar1_ref
-ZONSTAT_REF  = zonmin_ref zonmax_ref zonsum_ref zonavg_ref zonmean_ref zonstd_ref zonstd1_ref zonvar_ref zonvar1_ref
+MERSTAT_REF  = mermin_ref mermax_ref mersum_ref meravg_ref mermean_ref merstd_ref merstd1_ref mervar_ref mervar1_ref merrange_ref
+ZONSTAT_REF  = zonmin_ref zonmax_ref zonsum_ref zonavg_ref zonmean_ref zonstd_ref zonstd1_ref zonvar_ref zonvar1_ref zonrange_ref
 ENSPSTAT_REF = enspctl1_ref enspctl20_ref enspctl25_ref enspctl33_ref enspctl50_ref enspctl66_ref enspctl75_ref enspctl80_ref enspctl99_ref enspctl100_ref
 SPECTRAL_REF = sp2gp_ref sp2gpl_ref gp2sp_ref gp2spl_ref
 VERTINT_REF  = ml2pl_ref
@@ -37,8 +38,9 @@ THREAD_REF   = thread1_ref tsformat1_ref
 GRADSDES_REF = pl_data.ctl pl_data.gmp
 ARITH_REF    = arithadd_ref arithsub_ref arithmul_ref arithdiv_ref
 MAPREDUCE    = r18x9_grid icon_cell_grid griddes.r18x9 griddes.icon_cell
+MERGETIME    = mergetime_ref mergetime_y1 mergetime_y2 mergetime_y12
 
-EXTRA_DIST = $(INPUTDATA) $(FILE_REF) $(GRIB_REF) $(NETCDF_REF) $(EOF_REF) $(COMP_REF) $(YMONSTAT_REF) $(YSEASSTAT_REF) $(SEASSTAT_REF) \
+EXTRA_DIST = $(INPUTDATA) $(FILE_REF) $(GRIB_REF) $(NETCDF_REF) $(EOF_REF) $(COMP_REF) $(YDRUNSTAT_REF) $(YMONSTAT_REF) $(YSEASSTAT_REF) $(SEASSTAT_REF) \
              $(RUNSTAT_REF) $(TIMSTAT_REF) $(YEARSTAT_REF) $(MONSTAT_REF) $(DAYSTAT_REF) $(VERTSTAT_REF) $(FLDSTAT_REF) $(FLDPSTAT_REF) \
              $(MERSTAT_REF) $(ZONSTAT_REF) $(ENSPSTAT_REF) $(SPECTRAL_REF) $(VERTINT_REF) $(REMAP_REF) $(REMAP2_REF) $(SELECT_REF) $(DETREND_REF) \
-             $(THREAD_REF) $(EXPR_REF) $(GRADSDES_REF) $(ARITH_REF) $(MAPREDUCE)
+             $(THREAD_REF) $(EXPR_REF) $(GRADSDES_REF) $(ARITH_REF) $(MAPREDUCE) $(MERGETIME)
diff --git a/test/data/Makefile.in b/test/data/Makefile.in
index fb5de17..cde4a5f 100644
--- a/test/data/Makefile.in
+++ b/test/data/Makefile.in
@@ -82,6 +82,8 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
 	$(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_options.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+	$(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
 	$(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/libtool.m4 \
 	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
 	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
@@ -144,13 +146,14 @@ DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
+ECCODES_INCLUDE = @ECCODES_INCLUDE@
+ECCODES_LIBS = @ECCODES_LIBS@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 ENABLE_CDI_LIB = @ENABLE_CDI_LIB@
 ENABLE_CGRIBEX = @ENABLE_CGRIBEX@
-ENABLE_CXX = @ENABLE_CXX@
 ENABLE_DATA = @ENABLE_DATA@
 ENABLE_EXTRA = @ENABLE_EXTRA@
 ENABLE_GRIB = @ENABLE_GRIB@
@@ -168,6 +171,7 @@ FGREP = @FGREP@
 GREP = @GREP@
 GRIB_API_INCLUDE = @GRIB_API_INCLUDE@
 GRIB_API_LIBS = @GRIB_API_LIBS@
+HAVE_CXX11 = @HAVE_CXX11@
 HDF5_INCLUDE = @HDF5_INCLUDE@
 HDF5_LIBS = @HDF5_LIBS@
 HDF5_ROOT = @HDF5_ROOT@
@@ -295,19 +299,20 @@ GRIB_REF = grib_testfile01_sinfo_ref grib_testfile01_info_ref grib_testfile02_si
 NETCDF_REF = netcdf_testfile01_sinfon_ref netcdf_testfile01_infon_ref netcdf_testfile02_sinfon_ref netcdf_testfile02_infon_ref
 COMP_REF = comp_eqc_ref comp_gec_ref comp_gtc_ref comp_lec_ref comp_ltc_ref comp_nec_ref comptest.srv
 EOF_REF = eval_ref eof_ref pcoeff00000
-YMONSTAT_REF = ymonmin_ref ymonmax_ref ymonsum_ref ymonavg_ref ymonmean_ref ymonstd_ref ymonstd1_ref ymonvar_ref ymonvar1_ref
-YSEASSTAT_REF = yseasmin_ref yseasmax_ref yseassum_ref yseasavg_ref yseasmean_ref yseasstd_ref yseasstd1_ref yseasvar_ref yseasvar1_ref
-SEASSTAT_REF = seasmin_ref seasmax_ref seassum_ref seasavg_ref seasmean_ref seasstd_ref seasstd1_ref seasvar_ref seasvar1_ref
-RUNSTAT_REF = runmin_ref runmax_ref runsum_ref runavg_ref runmean_ref runstd_ref runstd1_ref runvar_ref runvar1_ref
-TIMSTAT_REF = timmin_ref timmax_ref timsum_ref timavg_ref timmean_ref timstd_ref timstd1_ref timvar_ref timvar1_ref
-YEARSTAT_REF = yearmin_ref yearmax_ref yearsum_ref yearavg_ref yearmean_ref yearstd_ref yearstd1_ref yearvar_ref yearvar1_ref
-MONSTAT_REF = monmin_ref monmax_ref monsum_ref monavg_ref monmean_ref monstd_ref monstd1_ref monvar_ref monvar1_ref
-DAYSTAT_REF = daymin_ref daymax_ref daysum_ref dayavg_ref daymean_ref daystd_ref daystd1_ref dayvar_ref dayvar1_ref
-VERTSTAT_REF = vertmin_ref vertmax_ref vertsum_ref vertavg_ref vertmean_ref vertstd_ref vertstd1_ref vertvar_ref vertvar1_ref vertint_ref
-FLDSTAT_REF = fldmin_ref fldmax_ref fldsum_ref fldavg_ref fldmean_ref fldstd_ref fldstd1_ref fldvar_ref fldvar1_ref
+YDRUNSTAT_REF = ydrunmin_ref ydrunmax_ref ydrunsum_ref ydrunavg_ref ydrunmean_ref ydrunstd_ref ydrunstd1_ref ydrunvar_ref ydrunvar1_ref
+YMONSTAT_REF = ymonmin_ref ymonmax_ref ymonsum_ref ymonavg_ref ymonmean_ref ymonstd_ref ymonstd1_ref ymonvar_ref ymonvar1_ref ymonrange_ref
+YSEASSTAT_REF = yseasmin_ref yseasmax_ref yseassum_ref yseasavg_ref yseasmean_ref yseasstd_ref yseasstd1_ref yseasvar_ref yseasvar1_ref yseasrange_ref
+SEASSTAT_REF = seasmin_ref seasmax_ref seassum_ref seasavg_ref seasmean_ref seasstd_ref seasstd1_ref seasvar_ref seasvar1_ref seasrange_ref
+RUNSTAT_REF = runmin_ref runmax_ref runsum_ref runavg_ref runmean_ref runstd_ref runstd1_ref runvar_ref runvar1_ref runrange_ref
+TIMSTAT_REF = timmin_ref timmax_ref timsum_ref timavg_ref timmean_ref timstd_ref timstd1_ref timvar_ref timvar1_ref timrange_ref
+YEARSTAT_REF = yearmin_ref yearmax_ref yearsum_ref yearavg_ref yearmean_ref yearstd_ref yearstd1_ref yearvar_ref yearvar1_ref yearrange_ref
+MONSTAT_REF = monmin_ref monmax_ref monsum_ref monavg_ref monmean_ref monstd_ref monstd1_ref monvar_ref monvar1_ref monrange_ref
+DAYSTAT_REF = daymin_ref daymax_ref daysum_ref dayavg_ref daymean_ref daystd_ref daystd1_ref dayvar_ref dayvar1_ref dayrange_ref
+VERTSTAT_REF = vertmin_ref vertmax_ref vertsum_ref vertavg_ref vertmean_ref vertstd_ref vertstd1_ref vertvar_ref vertvar1_ref vertint_ref vertrange_ref
+FLDSTAT_REF = fldmin_ref fldmax_ref fldsum_ref fldavg_ref fldmean_ref fldstd_ref fldstd1_ref fldvar_ref fldvar1_ref fldrange_ref
 FLDPSTAT_REF = fldpctl1_ref fldpctl20_ref fldpctl25_ref fldpctl33_ref fldpctl50_ref fldpctl66_ref fldpctl75_ref fldpctl80_ref fldpctl99_ref fldpctl100_ref
-MERSTAT_REF = mermin_ref mermax_ref mersum_ref meravg_ref mermean_ref merstd_ref merstd1_ref mervar_ref mervar1_ref
-ZONSTAT_REF = zonmin_ref zonmax_ref zonsum_ref zonavg_ref zonmean_ref zonstd_ref zonstd1_ref zonvar_ref zonvar1_ref
+MERSTAT_REF = mermin_ref mermax_ref mersum_ref meravg_ref mermean_ref merstd_ref merstd1_ref mervar_ref mervar1_ref merrange_ref
+ZONSTAT_REF = zonmin_ref zonmax_ref zonsum_ref zonavg_ref zonmean_ref zonstd_ref zonstd1_ref zonvar_ref zonvar1_ref zonrange_ref
 ENSPSTAT_REF = enspctl1_ref enspctl20_ref enspctl25_ref enspctl33_ref enspctl50_ref enspctl66_ref enspctl75_ref enspctl80_ref enspctl99_ref enspctl100_ref
 SPECTRAL_REF = sp2gp_ref sp2gpl_ref gp2sp_ref gp2spl_ref
 VERTINT_REF = ml2pl_ref
@@ -327,10 +332,11 @@ THREAD_REF = thread1_ref tsformat1_ref
 GRADSDES_REF = pl_data.ctl pl_data.gmp
 ARITH_REF = arithadd_ref arithsub_ref arithmul_ref arithdiv_ref
 MAPREDUCE = r18x9_grid icon_cell_grid griddes.r18x9 griddes.icon_cell
-EXTRA_DIST = $(INPUTDATA) $(FILE_REF) $(GRIB_REF) $(NETCDF_REF) $(EOF_REF) $(COMP_REF) $(YMONSTAT_REF) $(YSEASSTAT_REF) $(SEASSTAT_REF) \
+MERGETIME = mergetime_ref mergetime_y1 mergetime_y2 mergetime_y12
+EXTRA_DIST = $(INPUTDATA) $(FILE_REF) $(GRIB_REF) $(NETCDF_REF) $(EOF_REF) $(COMP_REF) $(YDRUNSTAT_REF) $(YMONSTAT_REF) $(YSEASSTAT_REF) $(SEASSTAT_REF) \
              $(RUNSTAT_REF) $(TIMSTAT_REF) $(YEARSTAT_REF) $(MONSTAT_REF) $(DAYSTAT_REF) $(VERTSTAT_REF) $(FLDSTAT_REF) $(FLDPSTAT_REF) \
              $(MERSTAT_REF) $(ZONSTAT_REF) $(ENSPSTAT_REF) $(SPECTRAL_REF) $(VERTINT_REF) $(REMAP_REF) $(REMAP2_REF) $(SELECT_REF) $(DETREND_REF) \
-             $(THREAD_REF) $(EXPR_REF) $(GRADSDES_REF) $(ARITH_REF) $(MAPREDUCE)
+             $(THREAD_REF) $(EXPR_REF) $(GRADSDES_REF) $(ARITH_REF) $(MAPREDUCE) $(MERGETIME)
 
 all: all-am
 
diff --git a/test/data/dayrange_ref b/test/data/dayrange_ref
new file mode 100644
index 0000000..5656917
Binary files /dev/null and b/test/data/dayrange_ref differ
diff --git a/test/data/fldrange_ref b/test/data/fldrange_ref
new file mode 100644
index 0000000..3086e45
Binary files /dev/null and b/test/data/fldrange_ref differ
diff --git a/test/data/mergetime_ref b/test/data/mergetime_ref
new file mode 100644
index 0000000..cbf7a1f
Binary files /dev/null and b/test/data/mergetime_ref differ
diff --git a/test/data/mergetime_y1 b/test/data/mergetime_y1
new file mode 100644
index 0000000..a9a3348
Binary files /dev/null and b/test/data/mergetime_y1 differ
diff --git a/test/data/mergetime_y12 b/test/data/mergetime_y12
new file mode 100644
index 0000000..cbf7a1f
Binary files /dev/null and b/test/data/mergetime_y12 differ
diff --git a/test/data/mergetime_y2 b/test/data/mergetime_y2
new file mode 100644
index 0000000..a52b127
Binary files /dev/null and b/test/data/mergetime_y2 differ
diff --git a/test/data/merrange_ref b/test/data/merrange_ref
new file mode 100644
index 0000000..d26d949
Binary files /dev/null and b/test/data/merrange_ref differ
diff --git a/test/data/monrange_ref b/test/data/monrange_ref
new file mode 100644
index 0000000..59a64fd
Binary files /dev/null and b/test/data/monrange_ref differ
diff --git a/test/data/runrange_ref b/test/data/runrange_ref
new file mode 100644
index 0000000..12a4d03
Binary files /dev/null and b/test/data/runrange_ref differ
diff --git a/test/data/seasrange_ref b/test/data/seasrange_ref
new file mode 100644
index 0000000..45d91b4
Binary files /dev/null and b/test/data/seasrange_ref differ
diff --git a/test/data/timrange_ref b/test/data/timrange_ref
new file mode 100644
index 0000000..bb1cabe
Binary files /dev/null and b/test/data/timrange_ref differ
diff --git a/test/data/vertrange_ref b/test/data/vertrange_ref
new file mode 100644
index 0000000..880e559
Binary files /dev/null and b/test/data/vertrange_ref differ
diff --git a/test/data/ydrunavg_ref b/test/data/ydrunavg_ref
new file mode 100644
index 0000000..9818de1
Binary files /dev/null and b/test/data/ydrunavg_ref differ
diff --git a/test/data/ydrunmax_ref b/test/data/ydrunmax_ref
new file mode 100644
index 0000000..77a9cd7
Binary files /dev/null and b/test/data/ydrunmax_ref differ
diff --git a/test/data/ydrunmean_ref b/test/data/ydrunmean_ref
new file mode 100644
index 0000000..9818de1
Binary files /dev/null and b/test/data/ydrunmean_ref differ
diff --git a/test/data/ydrunmin_ref b/test/data/ydrunmin_ref
new file mode 100644
index 0000000..aa5f191
Binary files /dev/null and b/test/data/ydrunmin_ref differ
diff --git a/test/data/ydrunstd1_ref b/test/data/ydrunstd1_ref
new file mode 100644
index 0000000..ddeffb8
Binary files /dev/null and b/test/data/ydrunstd1_ref differ
diff --git a/test/data/ydrunstd_ref b/test/data/ydrunstd_ref
new file mode 100644
index 0000000..4f089d4
Binary files /dev/null and b/test/data/ydrunstd_ref differ
diff --git a/test/data/ydrunsum_ref b/test/data/ydrunsum_ref
new file mode 100644
index 0000000..5ee9b97
Binary files /dev/null and b/test/data/ydrunsum_ref differ
diff --git a/test/data/ydrunvar1_ref b/test/data/ydrunvar1_ref
new file mode 100644
index 0000000..a54dbb5
Binary files /dev/null and b/test/data/ydrunvar1_ref differ
diff --git a/test/data/ydrunvar_ref b/test/data/ydrunvar_ref
new file mode 100644
index 0000000..59df6a9
Binary files /dev/null and b/test/data/ydrunvar_ref differ
diff --git a/test/data/yearrange_ref b/test/data/yearrange_ref
new file mode 100644
index 0000000..521b955
Binary files /dev/null and b/test/data/yearrange_ref differ
diff --git a/test/data/ymonrange_ref b/test/data/ymonrange_ref
new file mode 100644
index 0000000..264a904
Binary files /dev/null and b/test/data/ymonrange_ref differ
diff --git a/test/data/yseasrange_ref b/test/data/yseasrange_ref
new file mode 100644
index 0000000..a62f3b3
Binary files /dev/null and b/test/data/yseasrange_ref differ
diff --git a/test/data/zonrange_ref b/test/data/zonrange_ref
new file mode 100644
index 0000000..547a7c6
Binary files /dev/null and b/test/data/zonrange_ref differ

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/cdo.git



More information about the debian-science-commits mailing list