From 750d701f0ea9a4bc0d56949cdde8048042c32e55 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Mon, 15 Apr 2019 15:44:12 +0200
Subject: [PATCH] Removed function gridPrint().

---
 ChangeLog               |   1 +
 doc/tex/c_quick_ref.tex | 118 ++++++++++++++++++++++++++++++++----
 doc/tex/f_quick_ref.tex | 129 ++++++++++++++++++++++++++++++++++++----
 src/cdi.h               |  46 +++++++-------
 src/cdi.inc             |  19 ++----
 src/cdiFortran.c        |  13 +---
 src/grid.c              |   6 --
 src/make_fint.c         |  45 ++++++--------
 src/mo_cdi.f90          |   7 ---
 9 files changed, 275 insertions(+), 109 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9d6d897ed..51506e8df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@
 
 2019-04-15  Uwe Schulzweida
 
+	* Removed funtion gridPrint()
 	* Removed funtion zaxisPrint()
 
 2019-04-01  Uwe Schulzweida
diff --git a/doc/tex/c_quick_ref.tex b/doc/tex/c_quick_ref.tex
index e467cb0b4..dbcc18001 100644
--- a/doc/tex/c_quick_ref.tex
+++ b/doc/tex/c_quick_ref.tex
@@ -1,8 +1,7 @@
 \chapter*{Quick Reference}
 \addcontentsline{toc}{chapter}{Quick Reference}
 
-This appendix provide a brief listing of the C language bindings of the
-CDI library routines:
+This appendix provide a brief listing of the C language bindings of the CDI library routines:
 
 \section*{\tt \htmlref{cdiClearAdditionalKeys}{cdiClearAdditionalKeys}}
 
@@ -10,7 +9,7 @@ CDI library routines:
     void cdiClearAdditionalKeys ();
 \end{verbatim}
 
-Clear the list of additional GRIB keys..
+Clear the list of additional GRIB keys.
 
 
 \section*{\tt \htmlref{cdiDefAdditionalKey}{cdiDefAdditionalKey}}
@@ -19,7 +18,7 @@ Clear the list of additional GRIB keys..
     void cdiDefAdditionalKey (const char *string);
 \end{verbatim}
 
-Register an additional GRIB key which is read when file is opened..
+Register an additional GRIB key which is read when file is opened.
 
 
 \section*{\tt \htmlref{cdiDefAttFlt}{cdiDefAttFlt}}
@@ -52,6 +51,42 @@ Define an integer attribute.
 Define a text attribute.
 
 
+\section*{\tt \htmlref{cdiDefKeyInt}{cdiDefKeyInt}}
+
+\begin{verbatim}
+    int cdiDefKeyInt (int cdiID, int varID, int key, int value);
+\end{verbatim}
+
+Define an integer value from a key of a CDI variable.
+
+
+\section*{\tt \htmlref{cdiDefKeyString}{cdiDefKeyString}}
+
+\begin{verbatim}
+    int cdiDefKeyString (int cdiID, int varID, int key, const char *string);
+\end{verbatim}
+
+Define a string value from a key of a CDI variable.
+
+
+\section*{\tt \htmlref{cdiGridDefKeyStr}{cdiGridDefKeyStr}}
+
+\begin{verbatim}
+    int cdiGridDefKeyStr (int gridID, int key, int size, const char *mesg);
+\end{verbatim}
+
+Define a CDI grid string value from a key.
+
+
+\section*{\tt \htmlref{cdiGridInqKeyStr}{cdiGridInqKeyStr}}
+
+\begin{verbatim}
+    int cdiGridInqKeyStr (int gridID, int key, int size, char *mesg);
+\end{verbatim}
+
+Get a CDI grid string value from a key.
+
+
 \section*{\tt \htmlref{cdiInqAtt}{cdiInqAtt}}
 
 \begin{verbatim}
@@ -90,6 +125,33 @@ Get the value(s) of an integer attribute.
 Get the value(s) of a text attribute.
 
 
+\section*{\tt \htmlref{cdiInqKeyInt}{cdiInqKeyInt}}
+
+\begin{verbatim}
+    int cdiInqKeyInt (int cdiID, int varID, int key, int *value);
+\end{verbatim}
+
+Get an integer value from a key of a CDI variable.
+
+
+\section*{\tt \htmlref{cdiInqKeyLen}{cdiInqKeyLen}}
+
+\begin{verbatim}
+    int cdiInqKeyLen (int cdiID, int varID, int key, int *length);
+\end{verbatim}
+
+Get the length of the string representation of the key.
+
+
+\section*{\tt \htmlref{cdiInqKeyString}{cdiInqKeyString}}
+
+\begin{verbatim}
+    int cdiInqKeyString (int cdiID, int varID, int key, char *string, int *length);
+\end{verbatim}
+
+Get a string value from a key of a CDI variable.
+
+
 \section*{\tt \htmlref{cdiInqNatts}{cdiInqNatts}}
 
 \begin{verbatim}
@@ -99,6 +161,42 @@ Get the value(s) of a text attribute.
 Get number of attributes assigned to this variable.
 
 
+\section*{\tt \htmlref{cdiZaxisDefKeyFlt}{cdiZaxisDefKeyFlt}}
+
+\begin{verbatim}
+    int cdiZaxisDefKeyFlt (int zaxisID, int key, double value);
+\end{verbatim}
+
+Define a CDI Z-axis floating point value from a key.
+
+
+\section*{\tt \htmlref{cdiZaxisDefKeyStr}{cdiZaxisDefKeyStr}}
+
+\begin{verbatim}
+    int cdiZaxisDefKeyStr (int zaxisID, int key, int size, const char *mesg);
+\end{verbatim}
+
+Define a CDI Z-axis string value from a key.
+
+
+\section*{\tt \htmlref{cdiZaxisInqKeyFlt}{cdiZaxisInqKeyFlt}}
+
+\begin{verbatim}
+    int cdiZaxisInqKeyFlt (int zaxisID, int key, double *value);
+\end{verbatim}
+
+Get a CDI Z-axis floating point value from a key.
+
+
+\section*{\tt \htmlref{cdiZaxisInqKeyStr}{cdiZaxisInqKeyStr}}
+
+\begin{verbatim}
+    int cdiZaxisInqKeyStr (int zaxisID, int key, int size, char *mesg);
+\end{verbatim}
+
+Get a CDI Z-axis string value from a key.
+
+
 \section*{\tt \htmlref{gridCreate}{gridCreate}}
 
 \begin{verbatim}
@@ -755,7 +853,7 @@ Create a variable subtype.
     void subtypeDefActiveIndex (int subtypeID, int index);
 \end{verbatim}
 
-Set the currently active index of a subtype (e.g. current tile index)..
+Set the currently active index of a subtype (e.g. current tile index).
 
 
 \section*{\tt \htmlref{subtypeInqActiveIndex}{subtypeInqActiveIndex}}
@@ -764,7 +862,7 @@ Set the currently active index of a subtype (e.g. current tile index)..
     int subtypeInqActiveIndex (int subtypeID);
 \end{verbatim}
 
-Get the currently active index of a subtype (e.g. current tile index)..
+Get the currently active index of a subtype (e.g. current tile index).
 
 
 \section*{\tt \htmlref{subtypeInqAttribute}{subtypeInqAttribute}}
@@ -783,7 +881,7 @@ Inquire the value of a subtype attribute. Returns CDI_EINVAL if the attribute do
     int subtypeInqSize (int subtypeID);
 \end{verbatim}
 
-Get the size of a subtype (e.g. no. of tiles)..
+Get the size of a subtype (e.g. no. of tiles).
 
 
 \section*{\tt \htmlref{subtypeInqTile}{subtypeInqTile}}
@@ -792,7 +890,7 @@ Get the size of a subtype (e.g. no. of tiles)..
     int subtypeInqTile (int subtypeID, int tileindex, int attribute);
 \end{verbatim}
 
-Specialized version of subtypeInqSubEntry looking for tile/attribute pair..
+Specialized version of subtypeInqSubEntry looking for tile/attribute pair.
 
 
 \section*{\tt \htmlref{tableRead}{tableRead}}
@@ -1153,7 +1251,7 @@ Duplicate a variable list.
     int vlistHasVarKey (int vlistID, int varID, const char *name);
 \end{verbatim}
 
-returns 1 if meta-data key was read, 0 otherwise..
+returns 1 if meta-data key was read, 0 otherwise.
 
 
 \section*{\tt \htmlref{vlistInqTaxis}{vlistInqTaxis}}
@@ -1261,7 +1359,7 @@ Get the standard name of a Variable.
     int vlistInqVarSubtype (int vlistID, int varID);
 \end{verbatim}
 
-Return subtype ID for a given variable..
+Return subtype ID for a given variable.
 
 
 \section*{\tt \htmlref{vlistInqVarTsteptype}{vlistInqVarTsteptype}}
diff --git a/doc/tex/f_quick_ref.tex b/doc/tex/f_quick_ref.tex
index 662eadf11..7935653a2 100644
--- a/doc/tex/f_quick_ref.tex
+++ b/doc/tex/f_quick_ref.tex
@@ -1,8 +1,7 @@
 \chapter*{Quick Reference}
 \addcontentsline{toc}{chapter}{Quick Reference}
 
-This appendix provide a brief listing of the Fortran language bindings of the
-CDI library routines:
+This appendix provide a brief listing of the Fortran language bindings of the CDI library routines:
 
 \section*{\tt \htmlref{cdiClearAdditionalKeys}{cdiClearAdditionalKeys}}
 
@@ -10,7 +9,7 @@ CDI library routines:
     SUBROUTINE cdiClearAdditionalKeys
 \end{verbatim}
 
-Clear the list of additional GRIB keys..
+Clear the list of additional GRIB keys.
 
 
 \section*{\tt \htmlref{cdiDefAdditionalKey}{cdiDefAdditionalKey}}
@@ -19,7 +18,7 @@ Clear the list of additional GRIB keys..
     SUBROUTINE cdiDefAdditionalKey (CHARACTER*(*) string)
 \end{verbatim}
 
-Register an additional GRIB key which is read when file is opened..
+Register an additional GRIB key which is read when file is opened.
 
 
 \section*{\tt \htmlref{cdiDefAttFlt}{cdiDefAttFlt}}
@@ -52,6 +51,46 @@ Define an integer attribute.
 Define a text attribute.
 
 
+\section*{\tt \htmlref{cdiDefKeyInt}{cdiDefKeyInt}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiDefKeyInt (INTEGER cdiID, INTEGER varID, INTEGER key,
+                                   INTEGER value)
+\end{verbatim}
+
+Define an integer value from a key of a CDI variable.
+
+
+\section*{\tt \htmlref{cdiDefKeyString}{cdiDefKeyString}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiDefKeyString (INTEGER cdiID, INTEGER varID, INTEGER key,
+                                      CHARACTER*(*) string)
+\end{verbatim}
+
+Define a string value from a key of a CDI variable.
+
+
+\section*{\tt \htmlref{cdiGridDefKeyStr}{cdiGridDefKeyStr}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiGridDefKeyStr (INTEGER gridID, INTEGER key, INTEGER size,
+                                       CHARACTER*(*) mesg)
+\end{verbatim}
+
+Define a CDI grid string value from a key.
+
+
+\section*{\tt \htmlref{cdiGridInqKeyStr}{cdiGridInqKeyStr}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiGridInqKeyStr (INTEGER gridID, INTEGER key, INTEGER size,
+                                       CHARACTER*(*) mesg)
+\end{verbatim}
+
+Get a CDI grid string value from a key.
+
+
 \section*{\tt \htmlref{cdiInqAtt}{cdiInqAtt}}
 
 \begin{verbatim}
@@ -92,6 +131,36 @@ Get the value(s) of an integer attribute.
 Get the value(s) of a text attribute.
 
 
+\section*{\tt \htmlref{cdiInqKeyInt}{cdiInqKeyInt}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiInqKeyInt (INTEGER cdiID, INTEGER varID, INTEGER key,
+                                   INTEGER value)
+\end{verbatim}
+
+Get an integer value from a key of a CDI variable.
+
+
+\section*{\tt \htmlref{cdiInqKeyLen}{cdiInqKeyLen}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiInqKeyLen (INTEGER cdiID, INTEGER varID, INTEGER key,
+                                   INTEGER length)
+\end{verbatim}
+
+Get the length of the string representation of the key.
+
+
+\section*{\tt \htmlref{cdiInqKeyString}{cdiInqKeyString}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiInqKeyString (INTEGER cdiID, INTEGER varID, INTEGER key,
+                                      CHARACTER*(*) string, INTEGER length)
+\end{verbatim}
+
+Get a string value from a key of a CDI variable.
+
+
 \section*{\tt \htmlref{cdiInqNatts}{cdiInqNatts}}
 
 \begin{verbatim}
@@ -101,6 +170,46 @@ Get the value(s) of a text attribute.
 Get number of attributes assigned to this variable.
 
 
+\section*{\tt \htmlref{cdiZaxisDefKeyFlt}{cdiZaxisDefKeyFlt}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiZaxisDefKeyFlt (INTEGER zaxisID, INTEGER key,
+                                        DOUBLEPRECISION value)
+\end{verbatim}
+
+Define a CDI Z-axis floating point value from a key.
+
+
+\section*{\tt \htmlref{cdiZaxisDefKeyStr}{cdiZaxisDefKeyStr}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiZaxisDefKeyStr (INTEGER zaxisID, INTEGER key, INTEGER size,
+                                        CHARACTER*(*) mesg)
+\end{verbatim}
+
+Define a CDI Z-axis string value from a key.
+
+
+\section*{\tt \htmlref{cdiZaxisInqKeyFlt}{cdiZaxisInqKeyFlt}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiZaxisInqKeyFlt (INTEGER zaxisID, INTEGER key,
+                                        DOUBLEPRECISION value)
+\end{verbatim}
+
+Get a CDI Z-axis floating point value from a key.
+
+
+\section*{\tt \htmlref{cdiZaxisInqKeyStr}{cdiZaxisInqKeyStr}}
+
+\begin{verbatim}
+    INTEGER FUNCTION cdiZaxisInqKeyStr (INTEGER zaxisID, INTEGER key, INTEGER size,
+                                        CHARACTER*(*) mesg)
+\end{verbatim}
+
+Get a CDI Z-axis string value from a key.
+
+
 \section*{\tt \htmlref{gridCreate}{gridCreate}}
 
 \begin{verbatim}
@@ -759,7 +868,7 @@ Create a variable subtype.
     SUBROUTINE subtypeDefActiveIndex (INTEGER subtypeID, INTEGER index)
 \end{verbatim}
 
-Set the currently active index of a subtype (e.g. current tile index)..
+Set the currently active index of a subtype (e.g. current tile index).
 
 
 \section*{\tt \htmlref{subtypeInqActiveIndex}{subtypeInqActiveIndex}}
@@ -768,7 +877,7 @@ Set the currently active index of a subtype (e.g. current tile index)..
     INTEGER FUNCTION subtypeInqActiveIndex (INTEGER subtypeID)
 \end{verbatim}
 
-Get the currently active index of a subtype (e.g. current tile index)..
+Get the currently active index of a subtype (e.g. current tile index).
 
 
 \section*{\tt \htmlref{subtypeInqAttribute}{subtypeInqAttribute}}
@@ -787,7 +896,7 @@ Inquire the value of a subtype attribute. Returns CDI_EINVAL if the attribute do
     INTEGER FUNCTION subtypeInqSize (INTEGER subtypeID)
 \end{verbatim}
 
-Get the size of a subtype (e.g. no. of tiles)..
+Get the size of a subtype (e.g. no. of tiles).
 
 
 \section*{\tt \htmlref{subtypeInqTile}{subtypeInqTile}}
@@ -797,7 +906,7 @@ Get the size of a subtype (e.g. no. of tiles)..
                                      INTEGER attribute)
 \end{verbatim}
 
-Specialized version of subtypeInqSubEntry looking for tile/attribute pair..
+Specialized version of subtypeInqSubEntry looking for tile/attribute pair.
 
 
 \section*{\tt \htmlref{tableRead}{tableRead}}
@@ -1166,7 +1275,7 @@ Duplicate a variable list.
                                      CHARACTER*(*) name)
 \end{verbatim}
 
-returns 1 if meta-data key was read, 0 otherwise..
+returns 1 if meta-data key was read, 0 otherwise.
 
 
 \section*{\tt \htmlref{vlistInqTaxis}{vlistInqTaxis}}
@@ -1278,7 +1387,7 @@ Get the standard name of a Variable.
     INTEGER FUNCTION vlistInqVarSubtype (INTEGER vlistID, INTEGER varID)
 \end{verbatim}
 
-Return subtype ID for a given variable..
+Return subtype ID for a given variable.
 
 
 \section*{\tt \htmlref{vlistInqVarTsteptype}{vlistInqVarTsteptype}}
diff --git a/src/cdi.h b/src/cdi.h
index 54a0115a3..9b51a2349 100644
--- a/src/cdi.h
+++ b/src/cdi.h
@@ -655,9 +655,9 @@ int     vlistFindLevel(int vlistID, int fvarID, int flevelID);
 int     vlistMergedVar(int vlistID, int varID);
 int     vlistMergedLevel(int vlistID, int varID, int levelID);
 
-/* cdiClearAdditionalKeys: Clear the list of additional GRIB keys. */
+/* cdiClearAdditionalKeys: Clear the list of additional GRIB keys */
 void    cdiClearAdditionalKeys(void);
-/* cdiDefAdditionalKey: Register an additional GRIB key which is read when file is opened. */
+/* cdiDefAdditionalKey: Register an additional GRIB key which is read when file is opened */
 void    cdiDefAdditionalKey(const char *string);
 
 /* vlistDefVarIntKey: Set an arbitrary keyword/integer value pair for GRIB API */
@@ -665,39 +665,39 @@ void    vlistDefVarIntKey(int vlistID, int varID, const char *name, int value);
 /* vlistDefVarDblKey: Set an arbitrary keyword/double value pair for GRIB API */
 void    vlistDefVarDblKey(int vlistID, int varID, const char *name, double value);
 
-/* vlistHasVarKey: returns 1 if meta-data key was read, 0 otherwise. */
+/* vlistHasVarKey: returns 1 if meta-data key was read, 0 otherwise */
 int     vlistHasVarKey(int vlistID, int varID, const char *name);
 /* vlistInqVarDblKey: raw access to GRIB meta-data */
 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);
 
-/* CDI attributes */
+// CDI attributes
 
-/*      cdiInqNatts: Get number of attributes assigned to this variable */
+//      cdiInqNatts: Get number of attributes assigned to this variable
 int     cdiInqNatts(int cdiID, int varID, int *nattsp);
-/*      cdiInqAtt: Get information about an attribute */
+//      cdiInqAtt: Get information about an attribute
 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 */
+//      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 */
+//      cdiDefAttFlt: Define a floating point attribute
 int     cdiDefAttFlt(int cdiID, int varID, const char *name, int type, int len, const double dp[]);
-/*      cdiDefAttTxt: Define a text attribute */
+//      cdiDefAttTxt: Define a text attribute
 int     cdiDefAttTxt(int cdiID, int varID, const char *name, int len, const char *tp_cbuf);
 
-/*      cdiInqAttInt: Get the value(s) of an integer attribute */
+//      cdiInqAttInt: Get the value(s) of an integer attribute
 int     cdiInqAttInt(int cdiID, int varID, const char *name, int mlen, int ip[]);
-/*      cdiInqAttFlt: Get the value(s) of a floating point attribute */
+//      cdiInqAttFlt: Get the value(s) of a floating point attribute
 int     cdiInqAttFlt(int cdiID, int varID, const char *name, int mlen, double dp[]);
-/*      cdiInqAttTxt: Get the value(s) of a text attribute */
+//      cdiInqAttTxt: Get the value(s) of a text attribute
 int     cdiInqAttTxt(int cdiID, int varID, const char *name, int mlen, char *tp_cbuf);
 
 
-/* GRID routines */
+// GRID routines
 
 void    gridName(int gridtype, char *gridname);
 const char *gridNamePtr(int gridtype);
@@ -710,8 +710,6 @@ int     gridInqMaskGME(int gridID, int mask[]);
 void    gridDefMask(int gridID, const int mask[]);
 int     gridInqMask(int gridID, int mask[]);
 
-void    gridPrint(int gridID, int opt);
-
 //      gridCreate: Create a horizontal Grid
 int     gridCreate(int gridtype, size_t size);
 
@@ -1250,34 +1248,34 @@ int     subtypeCreate(int subtype);
 /*      Gives a textual summary of the variable subtype */
 void    subtypePrint(int subtypeID);
 
-/* Compares two subtype data structures. */
+/* Compares two subtype data structures */
 int     subtypeCompare(int subtypeID1, int subtypeID2);
 
-/*      subtypeInqSize: Get the size of a subtype (e.g. no. of tiles). */
+/*      subtypeInqSize: Get the size of a subtype (e.g. no. of tiles) */
 int     subtypeInqSize(int subtypeID);
 
-/*      subtypeInqActiveIndex: Get the currently active index of a subtype (e.g. current tile index). */
+/*      subtypeInqActiveIndex: Get the currently active index of a subtype (e.g. current tile index) */
 int     subtypeInqActiveIndex(int subtypeID);
 
-/*      subtypeDefActiveIndex: Set the currently active index of a subtype (e.g. current tile index). */
+/*      subtypeDefActiveIndex: Set the currently active index of a subtype (e.g. current tile index) */
 void    subtypeDefActiveIndex(int subtypeID, int index);
 
-/*      Generate a "query object" out of a key-value pair. */
+/*      Generate a "query object" out of a key-value pair */
 subtype_query_t keyValuePair(const char *key, int value);
 
-/*       Generate an AND-combined "query object" out of two previous query objects. */
+/*       Generate an AND-combined "query object" out of two previous query objects */
 subtype_query_t matchAND(subtype_query_t q1, subtype_query_t q2);
 
-/*      subtypeInqSubEntry: Returns subtype entry ID for a given criterion. */
+/*      subtypeInqSubEntry: Returns subtype entry ID for a given criterion */
 int     subtypeInqSubEntry(int subtypeID, subtype_query_t criterion);
 
-/*      subtypeInqTile: Specialized version of subtypeInqSubEntry looking for tile/attribute pair. */
+/*      subtypeInqTile: Specialized version of subtypeInqSubEntry looking for tile/attribute pair */
 int     subtypeInqTile(int subtypeID, int tileindex, int attribute);
 
 /*      subtypeInqAttribute: Inquire the value of a subtype attribute. Returns CDI_EINVAL if the attribute does not exist.*/
 int     subtypeInqAttribute(int subtypeID, int index, const char *key, int *outValue);
 
-/*      vlistInqVarSubtype: Return subtype ID for a given variable. */
+/*      vlistInqVarSubtype: Return subtype ID for a given variable */
 int     vlistInqVarSubtype(int vlistID, int varID);
 
 void gribapiLibraryVersion(int *major_version, int *minor_version, int *revision_version);
diff --git a/src/cdi.inc b/src/cdi.inc
index 470bf3fe5..722630dc7 100644
--- a/src/cdi.inc
+++ b/src/cdi.inc
@@ -1,6 +1,6 @@
 ! This file was automatically generated, don't edit!
 !
-! Fortran interface for CDI library version 1.9.5
+! Fortran interface for CDI library version 1.9.7
 !
 ! Author:
 ! -------
@@ -1303,9 +1303,6 @@
 !                                     CHARACTER*(*)   name)
       EXTERNAL        vlistInqVarIntKey
 
-!
-!  CDI attributes
-!
       INTEGER         cdiInqNatts
 !                                    (INTEGER         cdiID,
 !                                     INTEGER         varID,
@@ -1384,9 +1381,6 @@
 !                                     CHARACTER*(*)   tp_cbuf)
       EXTERNAL        cdiInqAttTxt
 
-!
-!  GRID routines
-!
 !                     gridName
 !                                    (INTEGER         gridtype,
 !                                     CHARACTER*(*)   gridname)
@@ -1420,11 +1414,6 @@
 !                                     INTEGER         mask(*))
       EXTERNAL        gridInqMask
 
-!                     gridPrint
-!                                    (INTEGER         gridID,
-!                                     INTEGER         opt)
-      EXTERNAL        gridPrint
-
       INTEGER         gridCreate
 !                                    (INTEGER         gridtype,
 !                                     INTEGER         size)
@@ -2563,7 +2552,7 @@
       EXTERNAL        subtypePrint
 
 !
-!  Compares two subtype data structures.
+!  Compares two subtype data structures
 !
       INTEGER         subtypeCompare
 !                                    (INTEGER         subtypeID1,
@@ -2584,10 +2573,10 @@
       EXTERNAL        subtypeDefActiveIndex
 
 !
-!  Generate a "query object" out of a key-value pair.
+!  Generate a "query object" out of a key-value pair
 !
 !
-!  Generate an AND-combined "query object" out of two previous query objects.
+!  Generate an AND-combined "query object" out of two previous query objects
 !
       INTEGER         subtypeInqTile
 !                                    (INTEGER         subtypeID,
diff --git a/src/cdiFortran.c b/src/cdiFortran.c
index 04cbebc51..598f4c4c2 100644
--- a/src/cdiFortran.c
+++ b/src/cdiFortran.c
@@ -400,9 +400,6 @@ FCALLSCSUB4 (vlistDefVarDblKey, VLISTDEFVARDBLKEY, vlistdefvardblkey, INT, INT,
 FCALLSCFUN3 (INT, vlistHasVarKey, VLISTHASVARKEY, vlisthasvarkey, INT, INT, STRING)
 FCALLSCFUN3 (DOUBLE, vlistInqVarDblKey, VLISTINQVARDBLKEY, vlistinqvardblkey, INT, INT, STRING)
 FCALLSCFUN3 (INT, vlistInqVarIntKey, VLISTINQVARINTKEY, vlistinqvarintkey, INT, INT, STRING)
-
-/*  CDI attributes  */
-
 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)
@@ -413,9 +410,6 @@ FCALLSCFUN5 (INT, cdiDefAttTxt, CDIDEFATTTXT, cdidefatttxt, INT, INT, STRING, IN
 FCALLSCFUN5 (INT, cdiInqAttInt, CDIINQATTINT, cdiinqattint, INT, INT, STRING, INT, INTV)
 FCALLSCFUN5 (INT, cdiInqAttFlt, CDIINQATTFLT, cdiinqattflt, INT, INT, STRING, INT, DOUBLEV)
 FCALLSCFUN5 (INT, cdiInqAttTxt, CDIINQATTTXT, cdiinqatttxt, INT, INT, STRING, INT, PPSTRING)
-
-/*  GRID routines  */
-
 FCALLSCSUB2 (gridName, GRIDNAME, gridname, INT, PSTRING)
 FCALLSCFUN1 (STRING, gridNamePtr, GRIDNAMEPTR, gridnameptr, INT)
 FCALLSCSUB1 (gridCompress, GRIDCOMPRESS, gridcompress, INT)
@@ -423,7 +417,6 @@ 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)
-FCALLSCSUB2 (gridPrint, GRIDPRINT, gridprint, INT, INT)
 static int gridCreate_fwrap(int gridtype, int size)
 {
   int v;
@@ -797,17 +790,17 @@ FCALLSCFUN1 (INT, subtypeCreate, SUBTYPECREATE, subtypecreate, INT)
 
 FCALLSCSUB1 (subtypePrint, SUBTYPEPRINT, subtypeprint, INT)
 
-/*  Compares two subtype data structures.  */
+/*  Compares two subtype data structures  */
 
 FCALLSCFUN2 (INT, subtypeCompare, SUBTYPECOMPARE, subtypecompare, INT, INT)
 FCALLSCFUN1 (INT, subtypeInqSize, SUBTYPEINQSIZE, subtypeinqsize, INT)
 FCALLSCFUN1 (INT, subtypeInqActiveIndex, SUBTYPEINQACTIVEINDEX, subtypeinqactiveindex, INT)
 FCALLSCSUB2 (subtypeDefActiveIndex, SUBTYPEDEFACTIVEINDEX, subtypedefactiveindex, INT, INT)
 
-/*  Generate a "query object" out of a key-value pair.  */
+/*  Generate a "query object" out of a key-value pair  */
 
 
-/*  Generate an AND-combined "query object" out of two previous query objects.  */
+/*  Generate an AND-combined "query object" out of two previous query objects  */
 
 FCALLSCFUN3 (INT, subtypeInqTile, SUBTYPEINQTILE, subtypeinqtile, INT, INT, INT)
 FCALLSCFUN4 (INT, subtypeInqAttribute, SUBTYPEINQATTRIBUTE, subtypeinqattribute, INT, INT, STRING, PINT)
diff --git a/src/grid.c b/src/grid.c
index 371a6826c..67e4f3794 100644
--- a/src/grid.c
+++ b/src/grid.c
@@ -3733,12 +3733,6 @@ void gridPrintKernel(int gridID, int opt, FILE *fp)
 }
 
 
-void gridPrint(int gridID, int opt)
-{
-  gridPrintKernel(gridID, opt, stdout);
-}
-
-
 void gridPrintP(void *voidptr, FILE *fp)
 {
   grid_t *gridptr = (grid_t *) voidptr;
diff --git a/src/make_fint.c b/src/make_fint.c
index 887f31b61..4cf8c0755 100644
--- a/src/make_fint.c
+++ b/src/make_fint.c
@@ -15,7 +15,7 @@
 #endif
 
 //#include "config.h"
-#define VERSION "1.9.5"
+#define VERSION "1.9.7"
 typedef struct
 {
   size_t naline;
@@ -60,13 +60,11 @@ static int doccmp(const void *s1, const void *s2)
 
 static void doctotex(FILE *fp, Docu *doc, size_t ndoc)
 {
-  size_t i, k;
-
-  for ( i = 0; i < ndoc; i++ )
+  for ( size_t i = 0; i < ndoc; i++ )
     {
       fprintf(fp, "\\section*{\\tt \\htmlref{%s}{%s}}\n\n", doc[i].fname, doc[i].fname);
       fprintf(fp, "\\begin{verbatim}\n");
-      for ( k = 0; k < doc[i].naline; k++ )
+      for ( size_t k = 0; k < doc[i].naline; k++ )
 	fprintf(fp, "    %s\n", doc[i].aline[k]);
       fprintf(fp, "\\end{verbatim}\n");
       fprintf(fp, "\n%s.\n\n\n", doc[i].text);
@@ -280,7 +278,7 @@ static int detectComment(char **line_, ssize_t *lineLen, size_t *lineBufSize,
                          char *xname, size_t *xnameLen, char **xdes,
                          int *lineno, FILE *fpin, FILE *fpinc, FILE *fpint);
 
-static regex_t commentStartRE, commentEndRE, commentRE, docCommentRE;
+static regex_t commentStartRE, commentEndRE, commentRE, docCommentRE, docLineCommentRE;
 
 static inline int
 arrayArgRank(int argType);
@@ -372,10 +370,12 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
   }
   /* compile documentation comment regular expression */
   {
-    static const char docCommentREString[] = "^"WS"*/\\*"WS"*"SYMRE":("
-      WS"*).*"NWS"("WS"*)\\*/";
+    static const char docCommentREString[]     = "^"WS"*/\\*"WS"*"SYMRE":("WS"*).*"NWS"("WS"*)\\*/";
+    static const char docLineCommentREString[] = "^"WS"*//"WS"*"SYMRE":("WS"*).*"NWS"("WS"*)";
     if (reCompile(&docCommentRE, docCommentREString, &line, &lineBufSize))
       exit(EXIT_FAILURE);
+    if (reCompile(&docLineCommentRE, docLineCommentREString, &line, &lineBufSize))
+      exit(EXIT_FAILURE);
   }
   regex_t cppCondRE;
   {
@@ -818,8 +818,7 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
 	  fprintf(fpint, ")\n");
 
 
-	  if ( funcnameLen == xnameLen
-               && memcmp(funcname, xname, funcnameLen) == 0 )
+	  if ( funcnameLen == xnameLen && memcmp(funcname, xname, funcnameLen) == 0 )
 	    {
 	      char xline[128];
               size_t xlineLen = 0;
@@ -831,8 +830,7 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
 	      cdoc[ncdoc].text   = NULL;
 	      cdoc[ncdoc].fname  = strdup(funcname);
 
-	      nch = sprintf(xline, funRet[functype].cfmt,
-                            "", (int)funcnameLen, funcname);
+	      nch = sprintf(xline, funRet[functype].cfmt, "", (int)funcnameLen, funcname);
               xline[nch++] = ' ';
               xline[nch++] = '(';
               xline[nch] = '\0';
@@ -852,11 +850,9 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
                   char farg[128];
                   /* - 1 to omit closing paren ) or comma , */
                   int nchn = snprintf(farg, sizeof (farg), "%.*s",
-                                      (int)(funcargfull[i].rm_eo
-                                            - funcargfull[i].rm_so - 1),
+                                      (int)(funcargfull[i].rm_eo - funcargfull[i].rm_so - 1),
                                       line + funcargfull[i].rm_so);
-                  if (nchn < 0)
-                    abort();
+                  if (nchn < 0) abort();
                   /* compress white-space */
                   nchn = (int)compress_whitespace((size_t)nchn, farg);
 		  if ( (xlineLen + (size_t)nchn) > (size_t)80 )
@@ -917,8 +913,7 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
                                      - funcargname[i].rm_so),
                                line + funcargname[i].rm_so,
                                argDimsF);
-                  if (nchn < 0)
-                    abort();
+                  if (nchn < 0) abort();
 		  if ( (xlineLen + (size_t)nchn) > 80 )
 		    {
                       if (i) xline[--xlineLen] = 0;
@@ -1104,8 +1099,7 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
       fputs("\\chapter*{Quick Reference}\n"
             "\\addcontentsline{toc}{chapter}{Quick Reference}\n"
             "\n"
-            "This appendix provide a brief listing of the C language bindings of the\n"
-            "CDI library routines:\n"
+            "This appendix provide a brief listing of the C language bindings of the CDI library routines:\n"
             "\n", fp);
 
       doctotex(fp, cdoc, ncdoc);
@@ -1126,8 +1120,7 @@ static void fortran_interface(char *fname, char *fnameinc, char *fnameint,
       fputs("\\chapter*{Quick Reference}\n"
             "\\addcontentsline{toc}{chapter}{Quick Reference}\n"
             "\n"
-            "This appendix provide a brief listing of the Fortran language bindings of the\n"
-            "CDI library routines:\n"
+            "This appendix provide a brief listing of the Fortran language bindings of the CDI library routines:\n"
             "\n", fp);
 
       doctotex(fp, fdoc, nfdoc);
@@ -1403,7 +1396,7 @@ static int detectComment(char **line_, ssize_t *lineLen, size_t *lineBufSize,
   char *restrict line = *line_;
   int matchType;
   do {
-    if (!regexec(&docCommentRE, line, maxMatch, reMatch, 0))
+    if (!regexec(&docCommentRE, line, maxMatch, reMatch, 0) || !regexec(&docLineCommentRE, line, maxMatch, reMatch, 0))
       {
         /* found documentation comment */
         size_t nameMatchLen = (size_t)(reMatch[1].rm_eo - reMatch[1].rm_so),
@@ -1422,15 +1415,13 @@ static int detectComment(char **line_, ssize_t *lineLen, size_t *lineBufSize,
               /* delete whitespace following newline */
               size_t squeezeLen = strspn(eol, " \t*");
               char *startoftext = eol + squeezeLen;
-              memmove(eol, startoftext,
-                      docMatchLen - (size_t)(startoftext - xdes));
+              memmove(eol, startoftext, docMatchLen - (size_t)(startoftext - xdes));
               docMatchLen -= squeezeLen;
               xdes[docMatchLen] = 0;
             }
         }
         if (verbose || debug)
-          printf("Found documentation for \"%s\": \"%s\"\n", xname,
-                 xdes);
+          printf("Found documentation for \"%s\": \"%s\"\n", xname, xdes);
         matchType = FOUND_DOCCOMMENT;
         break;
       }
diff --git a/src/mo_cdi.f90 b/src/mo_cdi.f90
index d2f6ba59f..562a9137d 100644
--- a/src/mo_cdi.f90
+++ b/src/mo_cdi.f90
@@ -431,7 +431,6 @@ module mo_cdi
   public :: gridInqMaskGME
   public :: gridDefMask
   public :: gridInqMask
-  public :: gridPrint
   public :: gridCreate
   public :: gridDestroy
   public :: gridDuplicate
@@ -1774,12 +1773,6 @@ module mo_cdi
       integer(c_int) :: f_result
     end function gridInqMask
 
-    subroutine gridPrint(gridID_dummy, opt_dummy) bind(c, name = 'gridPrint')
-      import c_int
-      integer(c_int), value :: gridID_dummy
-      integer(c_int), value :: opt_dummy
-    end subroutine gridPrint
-
     function gridCreate(gridtype_dummy, size_dummy) bind(c, name =&
     & 'gridCreate') result(f_result)
       import c_int, c_size_t
-- 
GitLab