Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/iccontext.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/iccontext.cpp	(revision 2115)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/iccontext.cpp	(revision 2121)
@@ -68,4 +68,11 @@
    CATCH_DUMP_STACK
 
+   void cxios_context_get_id(XContextPtr context, char * _id, int _id_len)
+   TRY
+   {
+      string_copy(context->getId(),_id,_id_len);
+   }
+   CATCH_DUMP_STACK
+   
    void cxios_context_set_current(XContextPtr context, bool withswap)
    TRY
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/icdata.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/icdata.cpp	(revision 2115)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/icdata.cpp	(revision 2121)
@@ -412,4 +412,19 @@
 
    // ---------------------- Ecriture des donnÃ©es ------------------------------
+   
+   void cxios_write_data_k80_hdl(CField* field, double* data_k8, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
+      field->setData(data);
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
 
    void cxios_write_data_k80(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
@@ -418,18 +433,29 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      cxios_write_data_k80_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+  
+   void cxios_write_data_k81_hdl(CField* field, double* data_k8, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
       CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+   
    void cxios_write_data_k81(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
    TRY
@@ -437,15 +463,23 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
+      cxios_write_data_k81_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
+    
+   }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_write_data_k82_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData);
+      field->setData(data);
 
       CTimer::get("XIOS send field").suspend();
@@ -459,21 +493,31 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
+      cxios_write_data_k82_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+
+
+
+   void cxios_write_data_k83_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+   
    void cxios_write_data_k83(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
    TRY
@@ -481,15 +525,27 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
+      cxios_write_data_k83_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, data_Zsize) ;
+
+
+   }
+   CATCH_DUMP_STACK
+
+
+
+
+
+
+   void cxios_write_data_k84_hdl(CField* field, double* data_k8, int data_0size, int data_1size, int data_2size, int data_3size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
+      field->setData(data);
 
       CTimer::get("XIOS send field").suspend();
@@ -506,12 +562,26 @@
       CTimer::get("XIOS").resume();
       CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
+      cxios_write_data_k84_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+   
+
+   void cxios_write_data_k85_hdl(CField* field, double* data_k8,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size, int data_4size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
+      field->setData(data);
 
       CTimer::get("XIOS send field").suspend();
@@ -527,20 +597,32 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
+      cxios_write_data_k85_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size) ;
+
+   }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_write_data_k86_hdl(CField* field, double* data_k8,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size, int data_4size, int data_5size)
+   TRY
+   {
+ 
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+   
    void cxios_write_data_k86(const char* fieldid, int fieldid_size, double* data_k8,
                              int data_0size, int data_1size, int data_2size,
@@ -550,21 +632,33 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//        context->checkBuffersAndListen();
-
-      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
+      cxios_write_data_k86_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
+
+  }
+   CATCH_DUMP_STACK
+   
+
+
+
+   void cxios_write_data_k87_hdl(CField* field, double* data_k8,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size, int data_4size, int data_5size,
+                             int data_6size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+   
    void cxios_write_data_k87(const char* fieldid, int fieldid_size, double* data_k8,
                              int data_0size, int data_1size, int data_2size,
@@ -575,109 +669,150 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//        context->checkBuffersAndListen();
-
-      CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
-   void cxios_write_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      cxios_write_data_k87_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
+   }
+   CATCH_DUMP_STACK
+   
+
+
+
+
+   void cxios_write_data_k40_hdl(CField* field, float* data_k4, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
       CArray<double, 1> data(data_Xsize) ;
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
-   void cxios_write_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      field->setData(data);
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_write_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_write_data_k40_hdl(CField::get(fieldid_str), data_k4, data_Xsize);
+
+   }
+   CATCH_DUMP_STACK
+   
+   
+   void cxios_write_data_k41_hdl(CField* field, float* data_k4, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
       CArray<double, 1> data(data_Xsize);
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
-   void cxios_write_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_write_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_write_data_k41_hdl(CField::get(fieldid_str), data_k4, data_Xsize);
+   }
+   CATCH_DUMP_STACK
+
+
+   void cxios_write_data_k42_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<float, 2> data_tmp(data_k4, shape(data_Xsize, data_Ysize), neverDeleteData);
       CArray<double, 2> data(data_Xsize, data_Ysize);
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
-   void cxios_write_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_write_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_write_data_k42_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize);
+   }
+   CATCH_DUMP_STACK
+
+
+
+
+   void cxios_write_data_k43_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<float, 3> data_tmp(data_k4, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
       CArray<double, 3> data(data_Xsize, data_Ysize, data_Zsize);
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+    }
+   CATCH_DUMP_STACK
+   
+   void cxios_write_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_write_data_k43_hdl(CField::get(fieldid_str), data_k4, data_Xsize,data_Ysize, data_Zsize);
+    }
+   CATCH_DUMP_STACK
+   
+
+   
+   void cxios_write_data_k44_hdl(CField* field, float* data_k4,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
+      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size);
+      data = data_tmp;
+      field->setData(data);
 
       CTimer::get("XIOS send field").suspend();
@@ -693,17 +828,27 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
-      CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size);
+      cxios_write_data_k44_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size) ;
+    }
+   CATCH_DUMP_STACK
+
+
+
+
+   void cxios_write_data_k45_hdl(CField* field, float* data_k4,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size, int data_4size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
+      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size);
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
+      field->setData(data);
 
       CTimer::get("XIOS send field").suspend();
@@ -719,17 +864,26 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
-      CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size);
+      cxios_write_data_k45_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size) ;
+    }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_write_data_k46_hdl(CField* field, float* data_k4,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size, int data_4size, int data_5size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
+      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size);
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
+      field->setData(data);
 
       CTimer::get("XIOS send field").suspend();
@@ -745,24 +899,10 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
-      CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size);
-      data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-    }
-   CATCH_DUMP_STACK
-
-   void cxios_write_data_k47(const char* fieldid, int fieldid_size, float* data_k4,
+      cxios_write_data_k46_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
+    }
+   CATCH_DUMP_STACK
+
+
+   void cxios_write_data_k47_hdl(CField* field, float* data_k4,
                              int data_0size, int data_1size, int data_2size,
                              int data_3size, int data_4size, int data_5size,
@@ -770,27 +910,54 @@
    TRY
    {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS send field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS send field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<float, 7> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
       CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size);
       data = data_tmp;
-      CField::get(fieldid_str)->setData(data);
-
-      CTimer::get("XIOS send field").suspend();
-      CTimer::get("XIOS").suspend();
-    }
-   CATCH_DUMP_STACK
+      field->setData(data);
+
+      CTimer::get("XIOS send field").suspend();
+      CTimer::get("XIOS").suspend();
+    }
+   CATCH_DUMP_STACK
+
+  void cxios_write_data_k47(const char* fieldid, int fieldid_size, float* data_k4,
+                             int data_0size, int data_1size, int data_2size,
+                             int data_3size, int data_4size, int data_5size,
+                             int data_6size)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_write_data_k47_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
+    }
+   CATCH_DUMP_STACK
+
 
    // ---------------------- Lecture des donnÃ©es ------------------------------
 
+   void cxios_read_data_k80_hdl(CField* field, double* data_k8, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
+      field->getData(data);
+
+      CTimer::get("XIOS recv field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+
    void cxios_read_data_k80(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize)
    TRY
@@ -798,15 +965,21 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      cxios_read_data_k80_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
+   }
+   CATCH_DUMP_STACK
+   
+   
+   void cxios_read_data_k81_hdl(CField* field, double* data_k8, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
 
       CTimer::get("XIOS recv field").suspend();
@@ -820,15 +993,20 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 1> data(data_k8, shape(data_Xsize), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
+      cxios_read_data_k81_hdl(CField::get(fieldid_str), data_k8, data_Xsize) ;
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_read_data_k82_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData);
+      field->getData(data);
 
       CTimer::get("XIOS recv field").suspend();
@@ -842,20 +1020,27 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 2>data(data_k8, shape(data_Xsize, data_Ysize), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
-
-      CTimer::get("XIOS recv field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
+      cxios_read_data_k82_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize) ;
+   }
+   CATCH_DUMP_STACK
+
+
+   void cxios_read_data_k83_hdl(CField* field, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
+      field->getData(data);
+
+      CTimer::get("XIOS recv field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+
 
    void cxios_read_data_k83(const char* fieldid, int fieldid_size, double* data_k8, int data_Xsize, int data_Ysize, int data_Zsize)
@@ -864,15 +1049,22 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 3>data(data_k8, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
+      cxios_read_data_k83_hdl(CField::get(fieldid_str), data_k8, data_Xsize, data_Ysize, data_Zsize) ;
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_read_data_k84_hdl(CField* field, double* data_k8,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
+      field->getData(data);
 
       CTimer::get("XIOS recv field").suspend();
@@ -888,15 +1080,22 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 4>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
+      cxios_read_data_k84_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size) ;
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_read_data_k85_hdl(CField* field, double* data_k8,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size, int data_4size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
+      field->getData(data);
 
       CTimer::get("XIOS recv field").suspend();
@@ -912,15 +1111,22 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 5>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
+      cxios_read_data_k85_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size) ;
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_read_data_k86_hdl(CField* field, double* data_k8,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size, int data_4size, int data_5size)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
+
+      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
+      field->getData(data);
 
       CTimer::get("XIOS recv field").suspend();
@@ -936,22 +1142,9 @@
       std::string fieldid_str;
       if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
-
-      CArray<double, 6>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
-
-      CTimer::get("XIOS recv field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
-   void cxios_read_data_k87(const char* fieldid, int fieldid_size, double* data_k8,
+      cxios_read_data_k86_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_read_data_k87_hdl(CField* field, double* data_k8,
                             int data_0size, int data_1size, int data_2size,
                             int data_3size, int data_4size, int data_5size,
@@ -959,39 +1152,48 @@
    TRY
    {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 7>data(data_k8, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
-      CField::get(fieldid_str)->getData(data);
-
-      CTimer::get("XIOS recv field").suspend();
-      CTimer::get("XIOS").suspend();
-   }
-   CATCH_DUMP_STACK
-
-   void cxios_read_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      field->getData(data);
+
+      CTimer::get("XIOS recv field").suspend();
+      CTimer::get("XIOS").suspend();
+   }
+   CATCH_DUMP_STACK
+
+   void cxios_read_data_k87(const char* fieldid, int fieldid_size, double* data_k8,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size, int data_4size, int data_5size,
+                            int data_6size)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k87_hdl(CField::get(fieldid_str), data_k8, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+
+
+
+   void cxios_read_data_k40_hdl(CField* field, float* data_k4, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 1> data(data_Xsize);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
       data_tmp = data;
@@ -1002,20 +1204,27 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+   void cxios_read_data_k40(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k40_hdl(CField::get(fieldid_str), data_k4, data_Xsize) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_read_data_k41_hdl(CField* field, float* data_k4, int data_Xsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 1> data(data_Xsize);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 1> data_tmp(data_k4, shape(data_Xsize), neverDeleteData);
       data_tmp = data;
@@ -1026,20 +1235,28 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+   void cxios_read_data_k41(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k41_hdl(CField::get(fieldid_str), data_k4, data_Xsize) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+
+   void cxios_read_data_k42_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 2> data(data_Xsize, data_Ysize);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 2> data_tmp(data_k4, shape(data_Xsize, data_Ysize), neverDeleteData);
       data_tmp = data;
@@ -1050,20 +1267,27 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
-   TRY
-   {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+   void cxios_read_data_k42(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k42_hdl(CField::get(fieldid_str), data_k4, data_Xsize, data_Ysize) ;
+   }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_read_data_k43_hdl(CField* field, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
+   TRY
+   {
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 3> data(data_Xsize, data_Ysize, data_Zsize);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 3> data_tmp(data_k4, shape(data_Xsize, data_Ysize, data_Zsize), neverDeleteData);
       data_tmp = data;
@@ -1074,22 +1298,28 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k44(const char* fieldid, int fieldid_size, float* data_k4,
+   void cxios_read_data_k43(const char* fieldid, int fieldid_size, float* data_k4, int data_Xsize, int data_Ysize, int data_Zsize)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k43_hdl(CField::get(fieldid_str), data_k4,data_Xsize, data_Ysize, data_Zsize) ;
+    }
+   CATCH_DUMP_STACK
+
+
+   void cxios_read_data_k44_hdl(CField* field, float* data_k4,
                             int data_0size, int data_1size, int data_2size,
                             int data_3size)
    TRY
    {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 4> data(data_0size, data_1size, data_2size, data_3size);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 4> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size), neverDeleteData);
       data_tmp = data;
@@ -1100,22 +1330,31 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k45(const char* fieldid, int fieldid_size, float* data_k4,
+   void cxios_read_data_k44(const char* fieldid, int fieldid_size, float* data_k4,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k44_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size) ;
+    }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_read_data_k45_hdl(CField* field, float* data_k4,
                             int data_0size, int data_1size, int data_2size,
                             int data_3size, int data_4size)
    TRY
    {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 5> data(data_0size, data_1size, data_2size, data_3size, data_4size);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 5> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size), neverDeleteData);
       data_tmp = data;
@@ -1126,22 +1365,30 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k46(const char* fieldid, int fieldid_size, float* data_k4,
+   void cxios_read_data_k45(const char* fieldid, int fieldid_size, float* data_k4,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size, int data_4size)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k45_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size) ;
+    }
+   CATCH_DUMP_STACK
+
+
+   void cxios_read_data_k46_hdl(CField* field, float* data_k4,
                             int data_0size, int data_1size, int data_2size,
                             int data_3size, int data_4size, int data_5size)
    TRY
    {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 6> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 6> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size), neverDeleteData);
       data_tmp = data;
@@ -1152,5 +1399,18 @@
    CATCH_DUMP_STACK
 
-   void cxios_read_data_k47(const char* fieldid, int fieldid_size, float* data_k4,
+   void cxios_read_data_k46(const char* fieldid, int fieldid_size, float* data_k4,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size, int data_4size, int data_5size)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k46_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size) ;
+    }
+   CATCH_DUMP_STACK
+
+
+
+   void cxios_read_data_k47_hdl(CField* field, float* data_k4,
                             int data_0size, int data_1size, int data_2size,
                             int data_3size, int data_4size, int data_5size,
@@ -1158,17 +1418,13 @@
    TRY
    {
-      std::string fieldid_str;
-      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
-
-      CTimer::get("XIOS").resume();
-      CTimer::get("XIOS recv field").resume();
-
-      CContext* context = CContext::getCurrent();
-      if (!context->hasServer && !context->client->isAttachedModeEnabled())
-        context->eventLoop();
-//ym        context->checkBuffersAndListen();
+      CTimer::get("XIOS").resume();
+      CTimer::get("XIOS recv field").resume();
+
+      CContext* context = CContext::getCurrent();
+      if (!context->hasServer && !context->client->isAttachedModeEnabled())
+        context->eventLoop();
 
       CArray<double, 7> data(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size);
-      CField::get(fieldid_str)->getData(data);
+      field->getData(data);
       CArray<float, 7> data_tmp(data_k4, shape(data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size), neverDeleteData);
       data_tmp = data;
@@ -1178,3 +1434,15 @@
     }
    CATCH_DUMP_STACK
+ 
+   void cxios_read_data_k47(const char* fieldid, int fieldid_size, float* data_k4,
+                            int data_0size, int data_1size, int data_2size,
+                            int data_3size, int data_4size, int data_5size,
+                            int data_6size)
+   TRY
+   {
+      std::string fieldid_str;
+      if (!cstr2string(fieldid, fieldid_size, fieldid_str)) return;
+      cxios_read_data_k47_hdl(CField::get(fieldid_str), data_k4, data_0size, data_1size, data_2size, data_3size, data_4size, data_5size, data_6size) ;
+    }
+   CATCH_DUMP_STACK
 } // extern "C"
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/context_interface.f90
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/context_interface.f90	(revision 2115)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/context_interface.f90	(revision 2121)
@@ -16,4 +16,11 @@
       END SUBROUTINE cxios_context_get_current
 
+      SUBROUTINE cxios_context_get_id(context, idt, idt_size) BIND(C)
+         import C_CHAR, C_INTPTR_T, C_INT
+         INTEGER (kind = C_INTPTR_T) :: context
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+     END SUBROUTINE cxios_context_get_id
+
       SUBROUTINE cxios_context_set_current(context, withswap) BIND(C)
          import C_BOOL, C_INT, C_INTPTR_T
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/icontext.F90
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/icontext.F90	(revision 2115)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/icontext.F90	(revision 2121)
@@ -17,4 +17,8 @@
    END INTERFACE xios(set_current_context)
 
+   INTERFACE xios(get_current_context)
+      MODULE PROCEDURE xios(get_current_context_hdl), xios(get_current_context_id)
+   END INTERFACE xios(get_current_context)
+
    CONTAINS ! Fonctions disponibles pour les utilisateurs.
 
@@ -27,13 +31,23 @@
    END SUBROUTINE xios(get_context_handle)
 
-   SUBROUTINE xios(get_current_context)(context)
+   SUBROUTINE xios(get_current_context_hdl)(context)
       IMPLICIT NONE
 
-      TYPE(txios(context)), INTENT(IN) :: context
+      TYPE(txios(context)), INTENT(OUT) :: context
 
       CALL cxios_context_get_current(context%daddr)
 
-   END SUBROUTINE xios(get_current_context)
+   END SUBROUTINE xios(get_current_context_hdl)
 
+   SUBROUTINE xios(get_current_context_id)(idt)
+      IMPLICIT NONE
+      CHARACTER(len = *) , INTENT(OUT) :: idt
+      TYPE(txios(context)) :: context
+
+      CALL cxios_context_get_current(context%daddr)
+      CALL cxios_context_get_id(context%daddr, idt, len(idt))
+
+   END SUBROUTINE xios(get_current_context_id)
+   
    SUBROUTINE xios(set_current_context_hdl)(context, withswap)
       IMPLICIT NONE
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/idata.F90
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/idata.F90	(revision 2115)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/idata.F90	(revision 2121)
@@ -4,4 +4,5 @@
    USE, INTRINSIC :: ISO_C_BINDING
    USE ICONTEXT
+   USE IFIELD
 
    INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
@@ -52,4 +53,11 @@
       END SUBROUTINE cxios_solve_inheritance
 
+      SUBROUTINE cxios_write_data_k80_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE)               :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_write_data_k80_hdl
+
       SUBROUTINE cxios_write_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -60,4 +68,11 @@
       END SUBROUTINE cxios_write_data_k80
 
+      SUBROUTINE cxios_write_data_k81_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_write_data_k81_hdl
+
       SUBROUTINE cxios_write_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -67,4 +82,11 @@
          INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
       END SUBROUTINE cxios_write_data_k81
+
+      SUBROUTINE cxios_write_data_k82_hdl(field_hdl, data_k8, data_Xsize, data_Ysize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
+      END SUBROUTINE cxios_write_data_k82_hdl
 
       SUBROUTINE cxios_write_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
@@ -76,4 +98,11 @@
       END SUBROUTINE cxios_write_data_k82
 
+      SUBROUTINE cxios_write_data_k83_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
+      END SUBROUTINE cxios_write_data_k83_hdl
+
       SUBROUTINE cxios_write_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
          USE ISO_C_BINDING
@@ -84,4 +113,14 @@
       END SUBROUTINE cxios_write_data_k83
 
+      SUBROUTINE cxios_write_data_k84_hdl(field_hdl, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
+      END SUBROUTINE cxios_write_data_k84_hdl
+
       SUBROUTINE cxios_write_data_k84(fieldid, fieldid_size, data_k8, &
                                       data_0size, data_1size, data_2size, &
@@ -95,4 +134,14 @@
       END SUBROUTINE cxios_write_data_k84
 
+      SUBROUTINE cxios_write_data_k85_hdl(field_hdl, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
+      END SUBROUTINE cxios_write_data_k85_hdl
+
       SUBROUTINE cxios_write_data_k85(fieldid, fieldid_size, data_k8, &
                                       data_0size, data_1size, data_2size, &
@@ -106,4 +155,14 @@
       END SUBROUTINE cxios_write_data_k85
 
+      SUBROUTINE cxios_write_data_k86_hdl(field_hdl, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+      END SUBROUTINE cxios_write_data_k86_hdl
+
       SUBROUTINE cxios_write_data_k86(fieldid, fieldid_size, data_k8, &
                                       data_0size, data_1size, data_2size, &
@@ -117,9 +176,21 @@
       END SUBROUTINE cxios_write_data_k86
 
-      SUBROUTINE cxios_write_data_k87(fieldid, fieldid_size, data_k8, &
+      SUBROUTINE cxios_write_data_k87_hdl(field_hdl, data_k8, &
                                       data_0size, data_1size, data_2size, &
                                       data_3size, data_4size, data_5size, &
                                       data_6size) BIND(C)
          USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
+      END SUBROUTINE cxios_write_data_k87_hdl
+
+      SUBROUTINE cxios_write_data_k87(fieldid, fieldid_size, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size, &
+                                      data_6size) BIND(C)
+         USE ISO_C_BINDING
          CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
          REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
@@ -130,4 +201,11 @@
       END SUBROUTINE cxios_write_data_k87
 
+      SUBROUTINE cxios_write_data_k40_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT)                :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_write_data_k40_hdl
+
       SUBROUTINE cxios_write_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -138,4 +216,11 @@
       END SUBROUTINE cxios_write_data_k40
 
+      SUBROUTINE cxios_write_data_k41_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_write_data_k41_hdl
+
       SUBROUTINE cxios_write_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -146,4 +231,11 @@
       END SUBROUTINE cxios_write_data_k41
 
+      SUBROUTINE cxios_write_data_k42_hdl(field_hdl, data_k4, data_Xsize, data_Ysize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
+      END SUBROUTINE cxios_write_data_k42_hdl
+ 
       SUBROUTINE cxios_write_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
          USE ISO_C_BINDING
@@ -154,4 +246,11 @@
       END SUBROUTINE cxios_write_data_k42
 
+      SUBROUTINE cxios_write_data_k43_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
+      END SUBROUTINE cxios_write_data_k43_hdl
+
       SUBROUTINE cxios_write_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
          USE ISO_C_BINDING
@@ -162,4 +261,14 @@
       END SUBROUTINE cxios_write_data_k43
 
+      SUBROUTINE cxios_write_data_k44_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
+      END SUBROUTINE cxios_write_data_k44_hdl
+
       SUBROUTINE cxios_write_data_k44(fieldid, fieldid_size, data_k4, &
                                       data_0size, data_1size, data_2size, &
@@ -173,4 +282,14 @@
       END SUBROUTINE cxios_write_data_k44
 
+      SUBROUTINE cxios_write_data_k45_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
+      END SUBROUTINE cxios_write_data_k45_hdl
+
       SUBROUTINE cxios_write_data_k45(fieldid, fieldid_size, data_k4, &
                                       data_0size, data_1size, data_2size, &
@@ -184,4 +303,14 @@
       END SUBROUTINE cxios_write_data_k45
 
+      SUBROUTINE cxios_write_data_k46_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+      END SUBROUTINE cxios_write_data_k46_hdl
+ 
       SUBROUTINE cxios_write_data_k46(fieldid, fieldid_size, data_k4, &
                                       data_0size, data_1size, data_2size, &
@@ -195,9 +324,21 @@
       END SUBROUTINE cxios_write_data_k46
 
-      SUBROUTINE cxios_write_data_k47(fieldid, fieldid_size, data_k4, &
+      SUBROUTINE cxios_write_data_k47_hdl(field_hdl, data_k4, &
                                       data_0size, data_1size, data_2size, &
                                       data_3size, data_4size, data_5size, &
                                       data_6size) BIND(C)
          USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
+      END SUBROUTINE cxios_write_data_k47_hdl
+
+      SUBROUTINE cxios_write_data_k47(fieldid, fieldid_size, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size, &
+                                      data_6size) BIND(C)
+         USE ISO_C_BINDING
          CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
          REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
@@ -208,5 +349,13 @@
       END SUBROUTINE cxios_write_data_k47
 
+
       ! Read data
+      SUBROUTINE cxios_read_data_k80_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE)               :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_read_data_k80_hdl
+
       SUBROUTINE cxios_read_data_k80(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -217,4 +366,11 @@
       END SUBROUTINE cxios_read_data_k80
 
+      SUBROUTINE cxios_read_data_k81_hdl(field_hdl, data_k8, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_read_data_k81_hdl
+
       SUBROUTINE cxios_read_data_k81(fieldid, fieldid_size, data_k8, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -224,4 +380,11 @@
          INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
       END SUBROUTINE cxios_read_data_k81
+
+      SUBROUTINE cxios_read_data_k82_hdl(field_hdl, data_k8, data_Xsize, data_Ysize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
+      END SUBROUTINE cxios_read_data_k82_hdl
 
       SUBROUTINE cxios_read_data_k82(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize) BIND(C)
@@ -233,5 +396,12 @@
       END SUBROUTINE cxios_read_data_k82
 
-      SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+      SUBROUTINE cxios_read_data_k83_hdl(field_hdl, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
+      END SUBROUTINE cxios_read_data_k83_hdl
+
+       SUBROUTINE cxios_read_data_k83(fieldid, fieldid_size, data_k8, data_Xsize, data_Ysize, data_Zsize) BIND(C)
          USE ISO_C_BINDING
          CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
@@ -241,5 +411,15 @@
       END SUBROUTINE cxios_read_data_k83
 
-      SUBROUTINE cxios_read_data_k84(fieldid, fieldid_size, data_k8, &
+     SUBROUTINE cxios_read_data_k84_hdl(field_hdl, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
+      END SUBROUTINE cxios_read_data_k84_hdl
+
+     SUBROUTINE cxios_read_data_k84(fieldid, fieldid_size, data_k8, &
                                       data_0size, data_1size, data_2size, &
                                       data_3size) BIND(C)
@@ -252,4 +432,14 @@
       END SUBROUTINE cxios_read_data_k84
 
+      SUBROUTINE cxios_read_data_k85_hdl(field_hdl, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
+      END SUBROUTINE cxios_read_data_k85_hdl
+
       SUBROUTINE cxios_read_data_k85(fieldid, fieldid_size, data_k8, &
                                       data_0size, data_1size, data_2size, &
@@ -263,4 +453,14 @@
       END SUBROUTINE cxios_read_data_k85
 
+      SUBROUTINE cxios_read_data_k86_hdl(field_hdl, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+      END SUBROUTINE cxios_read_data_k86_hdl
+ 
       SUBROUTINE cxios_read_data_k86(fieldid, fieldid_size, data_k8, &
                                       data_0size, data_1size, data_2size, &
@@ -274,9 +474,21 @@
       END SUBROUTINE cxios_read_data_k86
 
-      SUBROUTINE cxios_read_data_k87(fieldid, fieldid_size, data_k8, &
+      SUBROUTINE cxios_read_data_k87_hdl(field_hdl, data_k8, &
                                       data_0size, data_1size, data_2size, &
                                       data_3size, data_4size, data_5size, &
                                       data_6size) BIND(C)
          USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
+      END SUBROUTINE cxios_read_data_k87_hdl
+
+      SUBROUTINE cxios_read_data_k87(fieldid, fieldid_size, data_k8, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size, &
+                                      data_6size) BIND(C)
+         USE ISO_C_BINDING
          CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: fieldid
          REAL     (kind = C_DOUBLE), DIMENSION(*) :: data_k8
@@ -287,4 +499,11 @@
       END SUBROUTINE cxios_read_data_k87
 
+      SUBROUTINE cxios_read_data_k40_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT)                :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_read_data_k40_hdl
+
       SUBROUTINE cxios_read_data_k40(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -295,4 +514,11 @@
       END SUBROUTINE cxios_read_data_k40
 
+      SUBROUTINE cxios_read_data_k41_hdl(field_hdl, data_k4, data_Xsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
+      END SUBROUTINE cxios_read_data_k41_hdl
+
       SUBROUTINE cxios_read_data_k41(fieldid, fieldid_size, data_k4, data_Xsize) BIND(C)
          USE ISO_C_BINDING
@@ -302,4 +528,11 @@
          INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize
       END SUBROUTINE cxios_read_data_k41
+
+      SUBROUTINE cxios_read_data_k42_hdl(field_hdl, data_k4, data_Xsize, data_Ysize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize
+      END SUBROUTINE cxios_read_data_k42_hdl
 
       SUBROUTINE cxios_read_data_k42(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize) BIND(C)
@@ -311,4 +544,11 @@
       END SUBROUTINE cxios_read_data_k42
 
+      SUBROUTINE cxios_read_data_k43_hdl(field_hdl, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_Xsize, data_Ysize, data_Zsize
+      END SUBROUTINE cxios_read_data_k43_hdl
+
       SUBROUTINE cxios_read_data_k43(fieldid, fieldid_size, data_k4, data_Xsize, data_Ysize, data_Zsize) BIND(C)
          USE ISO_C_BINDING
@@ -319,4 +559,14 @@
       END SUBROUTINE cxios_read_data_k43
 
+      SUBROUTINE cxios_read_data_k44_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size
+      END SUBROUTINE cxios_read_data_k44_hdl
+ 
       SUBROUTINE cxios_read_data_k44(fieldid, fieldid_size, data_k4, &
                                       data_0size, data_1size, data_2size, &
@@ -330,4 +580,14 @@
       END SUBROUTINE cxios_read_data_k44
 
+      SUBROUTINE cxios_read_data_k45_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size
+      END SUBROUTINE cxios_read_data_k45_hdl
+
       SUBROUTINE cxios_read_data_k45(fieldid, fieldid_size, data_k4, &
                                       data_0size, data_1size, data_2size, &
@@ -341,4 +601,14 @@
       END SUBROUTINE cxios_read_data_k45
 
+      SUBROUTINE cxios_read_data_k46_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+      END SUBROUTINE cxios_read_data_k46_hdl
+ 
       SUBROUTINE cxios_read_data_k46(fieldid, fieldid_size, data_k4, &
                                       data_0size, data_1size, data_2size, &
@@ -351,4 +621,16 @@
          INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
       END SUBROUTINE cxios_read_data_k46
+
+      SUBROUTINE cxios_read_data_k47_hdl(field_hdl, data_k4, &
+                                      data_0size, data_1size, data_2size, &
+                                      data_3size, data_4size, data_5size, &
+                                      data_6size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T), VALUE      :: field_hdl
+         REAL     (kind = C_FLOAT) , DIMENSION(*) :: data_k4
+         INTEGER  (kind = C_INT)   , VALUE        :: data_0size, data_1size, data_2size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_3size, data_4size, data_5size
+         INTEGER  (kind = C_INT)   , VALUE        :: data_6size
+      END SUBROUTINE cxios_read_data_k47_hdl
 
       SUBROUTINE cxios_read_data_k47(fieldid, fieldid_size, data_k4, &
@@ -436,5 +718,5 @@
          CHARACTER(kind = C_CHAR)  , DIMENSION(*) :: vardid
          INTEGER  (kind = C_INT)   , VALUE        :: varid_size
-         LOGICAL  (kind = C_BOOL)  , VALUE        :: data_logic
+         LOGICAL  (kind = C_BOOL)       , VALUE   :: data_logic
          LOGICAL  (kind = C_BOOL)                 :: is_var_existed
       END SUBROUTINE cxios_set_variable_data_logic
@@ -534,4 +816,11 @@
 
    ! Send field functions
+   SUBROUTINE xios(send_field_r8_0d_hdl)(field_hdl, data_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), INTENT(IN) :: data_k8
+      CALL cxios_write_data_k80_hdl(field_hdl%daddr, data_k8, 1)
+   END SUBROUTINE xios(send_field_r8_0d_hdl)
+
    SUBROUTINE xios(send_field_r8_0d)(fieldid, data_k8)
    IMPLICIT NONE
@@ -541,4 +830,11 @@
    END SUBROUTINE xios(send_field_r8_0d)
 
+   SUBROUTINE xios(send_field_r8_1d_hdl)(field_hdl, data1d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data1d_k8(:)
+      CALL cxios_write_data_k81_hdl(field_hdl%daddr, data1d_k8, size(data1d_k8, 1))
+   END SUBROUTINE xios(send_field_r8_1d_hdl)
+
    SUBROUTINE xios(send_field_r8_1d)(fieldid, data1d_k8)
    IMPLICIT NONE
@@ -548,4 +844,11 @@
    END SUBROUTINE xios(send_field_r8_1d)
 
+   SUBROUTINE  xios(send_field_r8_2d_hdl)(field_hdl, data2d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data2d_k8(:,:)
+      CALL cxios_write_data_k82_hdl(field_hdl%daddr, data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
+   END SUBROUTINE  xios(send_field_r8_2d_hdl)
+
    SUBROUTINE  xios(send_field_r8_2d)(fieldid, data2d_k8)
    IMPLICIT NONE
@@ -555,4 +858,11 @@
    END SUBROUTINE  xios(send_field_r8_2d)
 
+   SUBROUTINE  xios(send_field_r8_3d_hdl)(field_hdl, data3d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data3d_k8(:,:,:)
+      CALL cxios_write_data_k83_hdl(field_hdl%daddr, data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
+   END SUBROUTINE  xios(send_field_r8_3d_hdl)
+
    SUBROUTINE  xios(send_field_r8_3d)(fieldid, data3d_k8)
    IMPLICIT NONE
@@ -561,4 +871,13 @@
       CALL cxios_write_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
    END SUBROUTINE  xios(send_field_r8_3d)
+
+   SUBROUTINE  xios(send_field_r8_4d_hdl)(field_hdl, data4d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data4d_k8(:,:,:,:)
+      CALL cxios_write_data_k84_hdl(field_hdl%daddr, data4d_k8, &
+                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
+                                size(data4d_k8, 4))
+   END SUBROUTINE  xios(send_field_r8_4d_hdl)
 
    SUBROUTINE  xios(send_field_r8_4d)(fieldid, data4d_k8)
@@ -571,4 +890,13 @@
    END SUBROUTINE  xios(send_field_r8_4d)
 
+   SUBROUTINE  xios(send_field_r8_5d_hdl)(field_hdl, data5d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data5d_k8(:,:,:,:,:)
+      CALL cxios_write_data_k85_hdl(field_hdl%daddr, data5d_k8, &
+                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
+                                size(data5d_k8, 4), size(data5d_k8, 5))
+   END SUBROUTINE  xios(send_field_r8_5d_hdl)
+
    SUBROUTINE  xios(send_field_r8_5d)(fieldid, data5d_k8)
    IMPLICIT NONE
@@ -580,4 +908,13 @@
    END SUBROUTINE  xios(send_field_r8_5d)
 
+   SUBROUTINE  xios(send_field_r8_6d_hdl)(field_hdl, data6d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data6d_k8(:,:,:,:,:,:)
+      CALL cxios_write_data_k86_hdl(field_hdl%daddr, data6d_k8, &
+                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
+                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
+   END SUBROUTINE  xios(send_field_r8_6d_hdl)
+
    SUBROUTINE  xios(send_field_r8_6d)(fieldid, data6d_k8)
    IMPLICIT NONE
@@ -588,4 +925,14 @@
                                 size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
    END SUBROUTINE  xios(send_field_r8_6d)
+
+   SUBROUTINE  xios(send_field_r8_7d_hdl)(field_hdl, data7d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(IN) :: data7d_k8(:,:,:,:,:,:,:)
+      CALL cxios_write_data_k87_hdl(field_hdl%daddr, data7d_k8, &
+                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
+                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
+                                size(data7d_k8, 7))
+   END SUBROUTINE  xios(send_field_r8_7d_hdl)
 
    SUBROUTINE  xios(send_field_r8_7d)(fieldid, data7d_k8)
@@ -599,4 +946,11 @@
    END SUBROUTINE  xios(send_field_r8_7d)
 
+   SUBROUTINE xios(send_field_r4_0d_hdl)(field_hdl, data_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), INTENT(IN) :: data_k4
+      CALL cxios_write_data_k40_hdl(field_hdl%daddr, data_k4, 1)
+   END SUBROUTINE xios(send_field_r4_0d_hdl)
+
    SUBROUTINE xios(send_field_r4_0d)(fieldid, data_k4)
    IMPLICIT NONE
@@ -606,4 +960,11 @@
    END SUBROUTINE xios(send_field_r4_0d)
 
+   SUBROUTINE xios(send_field_r4_1d_hdl)(field_hdl, data1d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data1d_k4(:)
+      CALL cxios_write_data_k41_hdl(field_hdl%daddr, data1d_k4, size(data1d_k4, 1))
+   END SUBROUTINE xios(send_field_r4_1d_hdl)
+
    SUBROUTINE xios(send_field_r4_1d)(fieldid, data1d_k4)
    IMPLICIT NONE
@@ -613,4 +974,11 @@
    END SUBROUTINE xios(send_field_r4_1d)
 
+   SUBROUTINE xios(send_field_r4_2d_hdl)(field_hdl, data2d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data2d_k4(:,:)
+      CALL cxios_write_data_k42_hdl(field_hdl%daddr, data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
+   END SUBROUTINE xios(send_field_r4_2d_hdl)
+
    SUBROUTINE xios(send_field_r4_2d)(fieldid, data2d_k4)
    IMPLICIT NONE
@@ -620,4 +988,11 @@
    END SUBROUTINE xios(send_field_r4_2d)
 
+   SUBROUTINE xios(send_field_r4_3d_hdl)(field_hdl, data3d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data3d_k4(:,:,:)
+      CALL cxios_write_data_k43_hdl(field_hdl%daddr, data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
+   END SUBROUTINE xios(send_field_r4_3d_hdl)
+
    SUBROUTINE xios(send_field_r4_3d)(fieldid, data3d_k4)
    IMPLICIT NONE
@@ -627,4 +1002,13 @@
    END SUBROUTINE xios(send_field_r4_3d)
 
+   SUBROUTINE  xios(send_field_r4_4d_hdl)(field_hdl, data4d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data4d_k4(:,:,:,:)
+      CALL cxios_write_data_k44_hdl(field_hdl%daddr, data4d_k4, &
+                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
+                                size(data4d_k4, 4))
+   END SUBROUTINE  xios(send_field_r4_4d_hdl)
+   
    SUBROUTINE  xios(send_field_r4_4d)(fieldid, data4d_k4)
    IMPLICIT NONE
@@ -636,4 +1020,13 @@
    END SUBROUTINE  xios(send_field_r4_4d)
 
+   SUBROUTINE  xios(send_field_r4_5d_hdl)(field_hdl, data5d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data5d_k4(:,:,:,:,:)
+      CALL cxios_write_data_k45_hdl(field_hdl%daddr, data5d_k4, &
+                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
+                                size(data5d_k4, 4), size(data5d_k4, 5))
+   END SUBROUTINE  xios(send_field_r4_5d_hdl)
+
    SUBROUTINE  xios(send_field_r4_5d)(fieldid, data5d_k4)
    IMPLICIT NONE
@@ -645,4 +1038,13 @@
    END SUBROUTINE  xios(send_field_r4_5d)
 
+   SUBROUTINE  xios(send_field_r4_6d_hdl)(field_hdl, data6d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data6d_k4(:,:,:,:,:,:)
+      CALL cxios_write_data_k46_hdl(field_hdl%daddr, data6d_k4, &
+                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
+                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
+   END SUBROUTINE  xios(send_field_r4_6d_hdl)
+   
    SUBROUTINE  xios(send_field_r4_6d)(fieldid, data6d_k4)
    IMPLICIT NONE
@@ -654,4 +1056,14 @@
    END SUBROUTINE  xios(send_field_r4_6d)
 
+   SUBROUTINE  xios(send_field_r4_7d_hdl)(field_hdl, data7d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(IN) :: data7d_k4(:,:,:,:,:,:,:)
+      CALL cxios_write_data_k47_hdl(field_hdl%daddr, data7d_k4, &
+                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
+                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
+                                size(data7d_k4, 7))
+   END SUBROUTINE  xios(send_field_r4_7d_hdl)
+   
    SUBROUTINE  xios(send_field_r4_7d)(fieldid, data7d_k4)
    IMPLICIT NONE
@@ -665,4 +1077,11 @@
 
    ! Receive field functions
+   SUBROUTINE xios(recv_field_r8_0d_hdl)(field_hdl, data0d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8)              , INTENT(OUT):: data0d_k8
+      CALL cxios_read_data_k80_hdl(field_hdl%daddr, data0d_k8, 1)
+   END SUBROUTINE xios(recv_field_r8_0d_hdl)
+
    SUBROUTINE xios(recv_field_r8_0d)(fieldid, data0d_k8)
    IMPLICIT NONE
@@ -672,4 +1091,11 @@
    END SUBROUTINE xios(recv_field_r8_0d)
 
+   SUBROUTINE xios(recv_field_r8_1d_hdl)(field_hdl, data1d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data1d_k8(:)
+      CALL cxios_read_data_k81_hdl(field_hdl%daddr, data1d_k8, size(data1d_k8, 1))
+   END SUBROUTINE xios(recv_field_r8_1d_hdl)
+
    SUBROUTINE xios(recv_field_r8_1d)(fieldid, data1d_k8)
    IMPLICIT NONE
@@ -679,4 +1105,11 @@
    END SUBROUTINE xios(recv_field_r8_1d)
 
+   SUBROUTINE  xios(recv_field_r8_2d_hdl)(field_hdl, data2d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data2d_k8(:,:)
+      CALL cxios_read_data_k82_hdl(field_hdl%daddr, data2d_k8, size(data2d_k8, 1), size(data2d_k8, 2))
+   END SUBROUTINE  xios(recv_field_r8_2d_hdl)
+
    SUBROUTINE  xios(recv_field_r8_2d)(fieldid, data2d_k8)
    IMPLICIT NONE
@@ -686,4 +1119,11 @@
    END SUBROUTINE  xios(recv_field_r8_2d)
 
+   SUBROUTINE  xios(recv_field_r8_3d_hdl)(field_hdl, data3d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data3d_k8(:,:,:)
+      CALL cxios_read_data_k83_hdl(field_hdl%daddr, data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
+   END SUBROUTINE  xios(recv_field_r8_3d_hdl)
+
    SUBROUTINE  xios(recv_field_r8_3d)(fieldid, data3d_k8)
    IMPLICIT NONE
@@ -692,4 +1132,13 @@
       CALL cxios_read_data_k83(fieldid, len(fieldid), data3d_k8, size(data3d_k8, 1), size(data3d_k8, 2), size(data3d_k8, 3))
    END SUBROUTINE  xios(recv_field_r8_3d)
+
+   SUBROUTINE  xios(recv_field_r8_4d_hdl)(field_hdl, data4d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data4d_k8(:,:,:,:)
+      CALL cxios_read_data_k84_hdl(field_hdl%daddr, data4d_k8, &
+                                size(data4d_k8, 1), size(data4d_k8, 2), size(data4d_k8, 3), &
+                                size(data4d_k8, 4))
+   END SUBROUTINE  xios(recv_field_r8_4d_hdl)
 
    SUBROUTINE  xios(recv_field_r8_4d)(fieldid, data4d_k8)
@@ -702,4 +1151,13 @@
    END SUBROUTINE  xios(recv_field_r8_4d)
 
+   SUBROUTINE  xios(recv_field_r8_5d_hdl)(field_hdl, data5d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data5d_k8(:,:,:,:,:)
+      CALL cxios_read_data_k85_hdl(field_hdl%daddr, data5d_k8, &
+                                size(data5d_k8, 1), size(data5d_k8, 2), size(data5d_k8, 3), &
+                                size(data5d_k8, 4), size(data5d_k8, 5))
+   END SUBROUTINE  xios(recv_field_r8_5d_hdl)
+
    SUBROUTINE  xios(recv_field_r8_5d)(fieldid, data5d_k8)
    IMPLICIT NONE
@@ -711,4 +1169,13 @@
    END SUBROUTINE  xios(recv_field_r8_5d)
 
+   SUBROUTINE  xios(recv_field_r8_6d_hdl)(field_hdl, data6d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data6d_k8(:,:,:,:,:,:)
+      CALL cxios_read_data_k86_hdl(field_hdl%daddr, data6d_k8, &
+                                size(data6d_k8, 1), size(data6d_k8, 2), size(data6d_k8, 3), &
+                                size(data6d_k8, 4), size(data6d_k8, 5), size(data6d_k8, 6))
+   END SUBROUTINE  xios(recv_field_r8_6d_hdl)
+
    SUBROUTINE  xios(recv_field_r8_6d)(fieldid, data6d_k8)
    IMPLICIT NONE
@@ -720,5 +1187,15 @@
    END SUBROUTINE  xios(recv_field_r8_6d)
 
-   SUBROUTINE  xios(recv_field_r8_7d)(fieldid, data7d_k8)
+  SUBROUTINE  xios(recv_field_r8_7d_hdl)(field_hdl, data7d_k8)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 8), DIMENSION(*), INTENT(OUT) :: data7d_k8(:,:,:,:,:,:,:)
+      CALL cxios_read_data_k87_hdl(field_hdl%daddr, data7d_k8, &
+                                size(data7d_k8, 1), size(data7d_k8, 2), size(data7d_k8, 3), &
+                                size(data7d_k8, 4), size(data7d_k8, 5), size(data7d_k8, 6), &
+                                size(data7d_k8, 7))
+   END SUBROUTINE  xios(recv_field_r8_7d_hdl)
+
+  SUBROUTINE  xios(recv_field_r8_7d)(fieldid, data7d_k8)
    IMPLICIT NONE
       CHARACTER(len = *)               , INTENT(IN) :: fieldid
@@ -730,4 +1207,11 @@
    END SUBROUTINE  xios(recv_field_r8_7d)
 
+   SUBROUTINE xios(recv_field_r4_0d_hdl)(field_hdl, data0d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4)              , INTENT(OUT):: data0d_k4
+      CALL cxios_read_data_k40_hdl(field_hdl%daddr, data0d_k4, 1)
+   END SUBROUTINE xios(recv_field_r4_0d_hdl)
+
    SUBROUTINE xios(recv_field_r4_0d)(fieldid, data0d_k4)
    IMPLICIT NONE
@@ -737,4 +1221,11 @@
    END SUBROUTINE xios(recv_field_r4_0d)
 
+   SUBROUTINE xios(recv_field_r4_1d_hdl)(field_hdl, data1d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data1d_k4(:)
+      CALL cxios_read_data_k41_hdl(field_hdl%daddr, data1d_k4, size(data1d_k4, 1))
+   END SUBROUTINE xios(recv_field_r4_1d_hdl)
+
    SUBROUTINE xios(recv_field_r4_1d)(fieldid, data1d_k4)
    IMPLICIT NONE
@@ -744,4 +1235,11 @@
    END SUBROUTINE xios(recv_field_r4_1d)
 
+   SUBROUTINE xios(recv_field_r4_2d_hdl)(field_hdl, data2d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data2d_k4(:,:)
+      CALL cxios_read_data_k42_hdl(field_hdl%daddr, data2d_k4, size(data2d_k4, 1), size(data2d_k4, 2))
+   END SUBROUTINE xios(recv_field_r4_2d_hdl)
+
    SUBROUTINE xios(recv_field_r4_2d)(fieldid, data2d_k4)
    IMPLICIT NONE
@@ -751,4 +1249,11 @@
    END SUBROUTINE xios(recv_field_r4_2d)
 
+   SUBROUTINE xios(recv_field_r4_3d_hdl)(field_hdl, data3d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data3d_k4(:,:,:)
+      CALL cxios_read_data_k43_hdl(field_hdl%daddr, data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
+   END SUBROUTINE xios(recv_field_r4_3d_hdl)
+
    SUBROUTINE xios(recv_field_r4_3d)(fieldid, data3d_k4)
    IMPLICIT NONE
@@ -757,4 +1262,13 @@
       CALL cxios_read_data_k43(fieldid, len(fieldid), data3d_k4, size(data3d_k4, 1), size(data3d_k4, 2), size(data3d_k4, 3))
    END SUBROUTINE xios(recv_field_r4_3d)
+
+   SUBROUTINE  xios(recv_field_r4_4d_hdl)(field_hdl, data4d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data4d_k4(:,:,:,:)
+      CALL cxios_read_data_k44_hdl(field_hdl%daddr, data4d_k4, &
+                                size(data4d_k4, 1), size(data4d_k4, 2), size(data4d_k4, 3), &
+                                size(data4d_k4, 4))
+   END SUBROUTINE  xios(recv_field_r4_4d_hdl)
 
    SUBROUTINE  xios(recv_field_r4_4d)(fieldid, data4d_k4)
@@ -767,4 +1281,13 @@
    END SUBROUTINE  xios(recv_field_r4_4d)
 
+   SUBROUTINE  xios(recv_field_r4_5d_hdl)(field_hdl, data5d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data5d_k4(:,:,:,:,:)
+      CALL cxios_read_data_k45_hdl(field_hdl%daddr, data5d_k4, &
+                                size(data5d_k4, 1), size(data5d_k4, 2), size(data5d_k4, 3), &
+                                size(data5d_k4, 4), size(data5d_k4, 5))
+   END SUBROUTINE  xios(recv_field_r4_5d_hdl)
+
    SUBROUTINE  xios(recv_field_r4_5d)(fieldid, data5d_k4)
    IMPLICIT NONE
@@ -776,4 +1299,13 @@
    END SUBROUTINE  xios(recv_field_r4_5d)
 
+   SUBROUTINE  xios(recv_field_r4_6d_hdl)(field_hdl, data6d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data6d_k4(:,:,:,:,:,:)
+      CALL cxios_read_data_k46_hdl(field_hdl%daddr, data6d_k4, &
+                                size(data6d_k4, 1), size(data6d_k4, 2), size(data6d_k4, 3), &
+                                size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
+   END SUBROUTINE  xios(recv_field_r4_6d_hdl)
+
    SUBROUTINE  xios(recv_field_r4_6d)(fieldid, data6d_k4)
    IMPLICIT NONE
@@ -784,4 +1316,14 @@
                                 size(data6d_k4, 4), size(data6d_k4, 5), size(data6d_k4, 6))
    END SUBROUTINE  xios(recv_field_r4_6d)
+
+   SUBROUTINE  xios(recv_field_r4_7d_hdl)(field_hdl, data7d_k4)
+   IMPLICIT NONE
+      TYPE(txios(field))              :: field_hdl
+      REAL     (kind = 4), DIMENSION(*), INTENT(OUT) :: data7d_k4(:,:,:,:,:,:,:)
+      CALL cxios_read_data_k47_hdl(field_hdl%daddr, data7d_k4, &
+                                size(data7d_k4, 1), size(data7d_k4, 2), size(data7d_k4, 3), &
+                                size(data7d_k4, 4), size(data7d_k4, 5), size(data7d_k4, 6), &
+                                size(data7d_k4, 7))
+   END SUBROUTINE  xios(recv_field_r4_7d_hdl)
 
    SUBROUTINE  xios(recv_field_r4_7d)(fieldid, data7d_k4)
@@ -837,5 +1379,5 @@
       LOGICAL  (kind = C_BOOL)                      :: val
       CHARACTER(len  = *)              , INTENT(IN) :: varId
-      LOGICAL  , INTENT(OUT)                        :: data_logic
+      LOGICAL  ,INTENT(OUT)                         :: data_logic
       LOGICAL (C_BOOL)                              :: data_tmp
 
@@ -885,5 +1427,5 @@
    USE ISO_C_BINDING
    IMPLICIT NONE
-      LOGICAL  (kind = C_BOOL)                      :: val
+      LOGICAL  (kind = C_BOOL)                           :: val
       CHARACTER(len = *)               , INTENT(IN) :: varId
       INTEGER                          , INTENT(IN) :: data_int
@@ -897,7 +1439,7 @@
    USE ISO_C_BINDING
    IMPLICIT NONE
-      LOGICAL  (kind = C_BOOL)                      :: val
+      LOGICAL(kind = C_BOOL)                        :: val
       CHARACTER(len  = *)              , INTENT(IN) :: varId
-      LOGICAL  (kind = 4)              , INTENT(IN) :: data_logic
+      LOGICAL                          , INTENT(IN) :: data_logic
       LOGICAL  (kind = C_BOOL)                      :: data_tmp
 
@@ -906,5 +1448,4 @@
 
       xios(setVar_logic) = val
-
    END FUNCTION xios(setVar_logic)
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/ixios_interfaces.F90
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/ixios_interfaces.F90	(revision 2115)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/fortran/ixios_interfaces.F90	(revision 2121)
@@ -11,8 +11,16 @@
                   xios(send_field_r4_0d), xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d), &
                   xios(send_field_r4_4d), xios(send_field_r4_5d), xios(send_field_r4_6d), xios(send_field_r4_7d), &
+                  xios(send_field_r8_0d_hdl), xios(send_field_r8_1d_hdl), xios(send_field_r8_2d_hdl), xios(send_field_r8_3d_hdl), &
+                  xios(send_field_r8_4d_hdl), xios(send_field_r8_5d_hdl), xios(send_field_r8_6d_hdl), xios(send_field_r8_7d_hdl), &
+                  xios(send_field_r4_0d_hdl), xios(send_field_r4_1d_hdl), xios(send_field_r4_2d_hdl), xios(send_field_r4_3d_hdl), &
+                  xios(send_field_r4_4d_hdl), xios(send_field_r4_5d_hdl), xios(send_field_r4_6d_hdl), xios(send_field_r4_7d_hdl), &
                   xios(recv_field_r8_0d), xios(recv_field_r8_1d), xios(recv_field_r8_2d), xios(recv_field_r8_3d), &
                   xios(recv_field_r8_4d), xios(recv_field_r8_5d), xios(recv_field_r8_6d), xios(recv_field_r8_7d), &
                   xios(recv_field_r4_0d), xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d), &
                   xios(recv_field_r4_4d), xios(recv_field_r4_5d), xios(recv_field_r4_6d), xios(recv_field_r4_7d), &
+                  xios(recv_field_r8_0d_hdl), xios(recv_field_r8_1d_hdl), xios(recv_field_r8_2d_hdl), xios(recv_field_r8_3d_hdl), &
+                  xios(recv_field_r8_4d_hdl), xios(recv_field_r8_5d_hdl), xios(recv_field_r8_6d_hdl), xios(recv_field_r8_7d_hdl), &
+                  xios(recv_field_r4_0d_hdl), xios(recv_field_r4_1d_hdl), xios(recv_field_r4_2d_hdl), xios(recv_field_r4_3d_hdl), &
+                  xios(recv_field_r4_4d_hdl), xios(recv_field_r4_5d_hdl), xios(recv_field_r4_6d_hdl), xios(recv_field_r4_7d_hdl), &
                   xios(getVar_k8), xios(getVar_k4), xios(getVar_int), xios(getVar_logic), xios(getVar_char),      &
                   xios(setVar_k8), xios(setVar_k4), xios(setVar_int), xios(setVar_logic), xios(setVar_char)
@@ -239,5 +247,9 @@
                    xios(send_field_r8_4d), xios(send_field_r8_5d), xios(send_field_r8_6d), xios(send_field_r8_7d), &
                    xios(send_field_r4_0d), xios(send_field_r4_1d), xios(send_field_r4_2d), xios(send_field_r4_3d), &
-                   xios(send_field_r4_4d), xios(send_field_r4_5d), xios(send_field_r4_6d), xios(send_field_r4_7d)
+                   xios(send_field_r4_4d), xios(send_field_r4_5d), xios(send_field_r4_6d), xios(send_field_r4_7d), &
+                   xios(send_field_r8_0d_hdl), xios(send_field_r8_1d_hdl), xios(send_field_r8_2d_hdl), xios(send_field_r8_3d_hdl), &
+                   xios(send_field_r8_4d_hdl), xios(send_field_r8_5d_hdl), xios(send_field_r8_6d_hdl), xios(send_field_r8_7d_hdl), &
+                   xios(send_field_r4_0d_hdl), xios(send_field_r4_1d_hdl), xios(send_field_r4_2d_hdl), xios(send_field_r4_3d_hdl), &
+                   xios(send_field_r4_4d_hdl), xios(send_field_r4_5d_hdl), xios(send_field_r4_6d_hdl), xios(send_field_r4_7d_hdl)
 END INTERFACE xios(send_field)
 
@@ -246,5 +258,9 @@
                    xios(recv_field_r8_4d), xios(recv_field_r8_5d), xios(recv_field_r8_6d), xios(recv_field_r8_7d), &
                    xios(recv_field_r4_0d), xios(recv_field_r4_1d), xios(recv_field_r4_2d), xios(recv_field_r4_3d), &
-                   xios(recv_field_r4_4d), xios(recv_field_r4_5d), xios(recv_field_r4_6d), xios(recv_field_r4_7d)
+                   xios(recv_field_r4_4d), xios(recv_field_r4_5d), xios(recv_field_r4_6d), xios(recv_field_r4_7d), &
+                   xios(recv_field_r8_0d_hdl), xios(recv_field_r8_1d_hdl), xios(recv_field_r8_2d_hdl), xios(recv_field_r8_3d_hdl), &
+                   xios(recv_field_r8_4d_hdl), xios(recv_field_r8_5d_hdl), xios(recv_field_r8_6d_hdl), xios(recv_field_r8_7d_hdl), &
+                   xios(recv_field_r4_0d_hdl), xios(recv_field_r4_1d_hdl), xios(recv_field_r4_2d_hdl), xios(recv_field_r4_3d_hdl), &
+                   xios(recv_field_r4_4d_hdl), xios(recv_field_r4_5d_hdl), xios(recv_field_r4_6d_hdl), xios(recv_field_r4_7d_hdl)
 END INTERFACE xios(recv_field)
 
