Index: XIOS/dev/branch_openmp/src/array.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/array.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/array.hpp	(revision 1545)
@@ -4,5 +4,4 @@
 /// boost headers ///
 #include <boost/cstdint.hpp>
-#include <boost/shared_ptr.hpp>
 #include <boost/multi_array.hpp>
 
Index: XIOS/dev/branch_openmp/src/array_mac.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/array_mac.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/array_mac.hpp	(revision 1545)
@@ -5,5 +5,5 @@
 
 // Type Fortran
-#define ARRAY(valuetype, numdims) boost::shared_ptr<CArray<valuetype, numdims> >
+#define ARRAY(valuetype, numdims) std::shared_ptr<CArray<valuetype, numdims> >
 
 #define ARRAY_ASSIGN(value, valuetype, numdims, extent)\
Index: XIOS/dev/branch_openmp/src/attribute_template_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/attribute_template_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/attribute_template_impl.hpp	(revision 1545)
@@ -66,5 +66,4 @@
         inheritedValue.reset() ;
       }
-
 
       template <class T>
@@ -80,5 +79,5 @@
         }
       }
-      
+
       template <class T>
       T CAttributeTemplate<T>::getValue(void) const
@@ -86,5 +85,4 @@
         return CType<T>::get() ;
       }
-
 
 
Index: XIOS/dev/branch_openmp/src/buffer_client.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/buffer_client.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/buffer_client.cpp	(revision 1545)
@@ -15,6 +15,6 @@
   size_t CClientBuffer::maxRequestSize = 0;
 
-  CClientBuffer::CClientBuffer(MPI_Comm interComm, int serverRank, StdSize bufferSize, StdSize estimatedMaxEventSize, StdSize maxBufferedEvents): 
-    interComm(interComm)
+  CClientBuffer::CClientBuffer(MPI_Comm interComm, int serverRank, StdSize bufferSize, StdSize estimatedMaxEventSize, StdSize maxBufferedEvents)
+    : interComm(interComm)
     , serverRank(serverRank)
     , bufferSize(bufferSize)
Index: XIOS/dev/branch_openmp/src/buffer_client.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/buffer_client.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/buffer_client.hpp	(revision 1545)
@@ -43,5 +43,5 @@
 
       CBufferOut* retBuffer;
-      ep_lib::MPI_Comm interComm;
+      const ep_lib::MPI_Comm interComm;
   };
 }
Index: XIOS/dev/branch_openmp/src/calendar_util.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/calendar_util.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/calendar_util.cpp	(revision 1545)
@@ -132,5 +132,4 @@
       CDuration dur( dt0.getYear() - dt1.getYear(), dt0.getMonth()  - dt1.getMonth() , dt0.getDay()   - dt1.getDay(),
       dt0.getHour() - dt1.getHour(), dt0.getMinute() - dt1.getMinute(), dt0.getSecond() - dt1.getSecond() );
-
       return (dur.resolve(dt0.getRelCalendar()));
     }
Index: XIOS/dev/branch_openmp/src/client.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/client.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/client.cpp	(revision 1545)
@@ -18,5 +18,4 @@
     MPI_Comm CClient::intraComm ;
     MPI_Comm CClient::interComm ;
-    //std::list<MPI_Comm> CClient::contextInterComms;
     std::list<MPI_Comm> *CClient::contextInterComms_ptr = 0;
     int CClient::serverLeader ;
@@ -110,4 +109,6 @@
             MPI_Comm_size(intraComm,&intraCommSize) ;
             MPI_Comm_rank(intraComm,&intraCommRank) ;
+
+            MPI_Intercomm_create(intraComm, 0, CXios::globalComm, serverLeader, 0, &interComm) ;
             #pragma omp critical (_output)
             {
@@ -115,6 +116,5 @@
                    <<" intraCommRank :"<<intraCommRank<<"  clientLeader "<< serverLeader<<endl ;
             } 
-            MPI_Intercomm_create(intraComm, 0, CXios::globalComm, serverLeader, 0, &interComm) ;
-            //rank_ = intraCommRank;
+            
           }
           else
@@ -198,5 +198,4 @@
         CContext::setCurrent(id);
 
-        //contextInterComms.push_back(contextInterComm);
         if(contextInterComms_ptr == NULL) contextInterComms_ptr = new std::list<MPI_Comm>;
         contextInterComms_ptr->push_back(contextInterComm);
@@ -234,5 +233,4 @@
         context->initClient(contextComm,contextInterComm) ;
 
-        //contextInterComms.push_back(contextInterComm);
         if(contextInterComms_ptr == NULL) contextInterComms_ptr = new std::list<MPI_Comm>;
         contextInterComms_ptr->push_back(contextInterComm);
@@ -260,5 +258,4 @@
       }
 
-      //for (std::list<MPI_Comm>::iterator it = contextInterComms.begin(); it != contextInterComms.end(); it++)
       for (std::list<MPI_Comm>::iterator it = contextInterComms_ptr->begin(); it != contextInterComms_ptr->end(); it++)
         MPI_Comm_free(&(*it));
@@ -333,5 +330,5 @@
       if (!fb->is_open())
         ERROR("void CClient::openStream(const StdString& fileName, const StdString& ext, std::filebuf* fb)",
-              << std::endl << "Can not open <" << fileNameClient << "> file to write the client log(s).");
+              << std::endl << "Can not open <" << fileNameClient.str() << "> file to write the client log(s).");
     }
 
Index: XIOS/dev/branch_openmp/src/client_client_dht_template.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/client_client_dht_template.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/client_client_dht_template.hpp	(revision 1545)
@@ -15,5 +15,5 @@
 #include "mpi.hpp"
 #include "policy.hpp"
-#include <boost/unordered_map.hpp>
+#include  <unordered_map>
 #include "dht_data_types.hpp"
 
@@ -34,7 +34,7 @@
     typedef T InfoType;
     static const int infoTypeSize = sizeof(InfoType);
-//    typedef typename boost::unordered_map<InfoType, std::vector<size_t> > InfoType2IndexMap;
-    typedef typename boost::unordered_map<size_t,InfoType> Index2InfoTypeMap;
-    typedef typename boost::unordered_map<size_t,std::vector<InfoType> > Index2VectorInfoTypeMap;
+
+    typedef typename std::unordered_map<size_t,InfoType> Index2InfoTypeMap;
+    typedef typename std::unordered_map<size_t,std::vector<InfoType> > Index2VectorInfoTypeMap;
 
   public:
Index: XIOS/dev/branch_openmp/src/client_client_dht_template_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/client_client_dht_template_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/client_client_dht_template_impl.hpp	(revision 1545)
@@ -116,5 +116,5 @@
   size_t index;
   HashXIOS<size_t> hashGlobalIndex;
-  boost::unordered_map<size_t,int> nbIndices;
+  std::unordered_map<size_t,int> nbIndices;
   nbIndices.rehash(std::ceil(ssize/nbIndices.max_load_factor()));
   for (int i = 0; i < ssize; ++i)
@@ -131,5 +131,5 @@
   }
 
-  boost::unordered_map<int, size_t* > client2ClientIndex;
+  std::unordered_map<int, size_t* > client2ClientIndex;
   for (int idx = 0; idx < nbClient; ++idx)
   {
@@ -191,13 +191,11 @@
     if (0 != recvNbIndexClientCount[idx])
       recvIndexFromClients(recvRankClient[idx], recvIndexBuff+currentIndex, recvNbIndexClientCount[idx], commLevel, &request[request_position++]);
-      //recvIndexFromClients(recvRankClient[idx], recvIndexBuff+currentIndex, recvNbIndexClientCount[idx], commLevel, request);
     currentIndex += recvNbIndexClientCount[idx];
   }
 
-  boost::unordered_map<int, size_t* >::iterator itbIndex = client2ClientIndex.begin(), itIndex,
+  std::unordered_map<int, size_t* >::iterator itbIndex = client2ClientIndex.begin(), itIndex,
                                                 iteIndex = client2ClientIndex.end();
   for (itIndex = itbIndex; itIndex != iteIndex; ++itIndex)
     sendIndexToClients(itIndex->first, (itIndex->second), sendNbIndexBuff[itIndex->first-groupRankBegin], commLevel, &request[request_position++]);
-    //sendIndexToClients(itIndex->first, (itIndex->second), sendNbIndexBuff[itIndex->first-groupRankBegin], commLevel, request);
 
   std::vector<ep_lib::MPI_Status> status(request.size());
@@ -280,9 +278,4 @@
     if (0 != recvNbIndexOnReturn[idx])
     {
-      //recvIndexFromClients(recvRankOnReturn[idx], recvIndexBuffOnReturn+currentIndex, recvNbIndexOnReturn[idx], commLevel, requestOnReturn);
-      //recvInfoFromClients(recvRankOnReturn[idx],
-      //                    recvInfoBuffOnReturn+currentIndex*ProcessDHTElement<InfoType>::typeSize(),
-      //                    recvNbIndexOnReturn[idx]*ProcessDHTElement<InfoType>::typeSize(),
-      //                    commLevel, requestOnReturn);
       recvIndexFromClients(recvRankOnReturn[idx], recvIndexBuffOnReturn+currentIndex, recvNbIndexOnReturn[idx], commLevel, &requestOnReturn[requestOnReturn_position++]);
       recvInfoFromClients(recvRankOnReturn[idx],
@@ -294,6 +287,6 @@
   }
 
-  boost::unordered_map<int,unsigned char*> client2ClientInfoOnReturn;
-  boost::unordered_map<int,size_t*> client2ClientIndexOnReturn;
+  std::unordered_map<int,unsigned char*> client2ClientInfoOnReturn;
+  std::unordered_map<int,size_t*> client2ClientIndexOnReturn;
   currentIndex = 0;
   for (int idx = 0; idx < nbRecvClient; ++idx)
@@ -322,8 +315,4 @@
       }
 
-      //sendIndexToClients(rank, client2ClientIndexOnReturn[rank],
-      //                   sendNbIndexOnReturn[idx], commLevel, requestOnReturn);
-      //sendInfoToClients(rank, client2ClientInfoOnReturn[rank],
-      //                  sendNbIndexOnReturn[idx]*ProcessDHTElement<InfoType>::typeSize(), commLevel, requestOnReturn);
       sendIndexToClients(rank, client2ClientIndexOnReturn[rank],
                          sendNbIndexOnReturn[idx], commLevel, &requestOnReturn[requestOnReturn_position++]);
@@ -349,5 +338,5 @@
   indexToInfoMappingLevel_.swap(indexToInfoMapping);
   if (0 != recvNbIndexCount) delete [] recvIndexBuff;
-  for (boost::unordered_map<int,size_t*>::const_iterator it = client2ClientIndex.begin();
+  for (std::unordered_map<int,size_t*>::const_iterator it = client2ClientIndex.begin();
                                                         it != client2ClientIndex.end(); ++it)
       delete [] it->second;
@@ -360,9 +349,9 @@
   }
 
-  for (boost::unordered_map<int,unsigned char*>::const_iterator it = client2ClientInfoOnReturn.begin();
+  for (std::unordered_map<int,unsigned char*>::const_iterator it = client2ClientInfoOnReturn.begin();
                                                                it != client2ClientInfoOnReturn.end(); ++it)
       delete [] it->second;
 
-  for (boost::unordered_map<int,size_t*>::const_iterator it = client2ClientIndexOnReturn.begin();
+  for (std::unordered_map<int,size_t*>::const_iterator it = client2ClientIndexOnReturn.begin();
                                             it != client2ClientIndexOnReturn.end(); ++it)
       delete [] it->second;
@@ -430,6 +419,6 @@
   }
 
-  boost::unordered_map<int, size_t*> client2ClientIndex;
-  boost::unordered_map<int, unsigned char*> client2ClientInfo;
+  std::unordered_map<int, size_t*> client2ClientIndex;
+  std::unordered_map<int, unsigned char*> client2ClientInfo;
   for (int idx = 0; idx < nbClient; ++idx)
   {
@@ -500,9 +489,4 @@
     if (0 != recvNbIndexClientCount[idx])
     {
-      //recvIndexFromClients(recvRankClient[idx], recvIndexBuff+currentIndex, recvNbIndexClientCount[idx], commLevel, request);
-      //recvInfoFromClients(recvRankClient[idx],
-      //                    recvInfoBuff+currentIndex*ProcessDHTElement<InfoType>::typeSize(),
-      //                    recvNbIndexClientCount[idx]*ProcessDHTElement<InfoType>::typeSize(),
-      //                    commLevel, request);
         recvIndexFromClients(recvRankClient[idx], recvIndexBuff+currentIndex, recvNbIndexClientCount[idx], commLevel, &request[request_position++]);
         recvInfoFromClients(recvRankClient[idx],
@@ -514,14 +498,12 @@
   }
 
-  boost::unordered_map<int, size_t* >::iterator itbIndex = client2ClientIndex.begin(), itIndex,
+  std::unordered_map<int, size_t* >::iterator itbIndex = client2ClientIndex.begin(), itIndex,
                                                 iteIndex = client2ClientIndex.end();
   for (itIndex = itbIndex; itIndex != iteIndex; ++itIndex)
     sendIndexToClients(itIndex->first, itIndex->second, sendNbIndexBuff[itIndex->first-groupRankBegin], commLevel, &request[request_position++]);
-    //sendIndexToClients(itIndex->first, itIndex->second, sendNbIndexBuff[itIndex->first-groupRankBegin], commLevel, request);
-  boost::unordered_map<int, unsigned char*>::iterator itbInfo = client2ClientInfo.begin(), itInfo,
+  std::unordered_map<int, unsigned char*>::iterator itbInfo = client2ClientInfo.begin(), itInfo,
                                                       iteInfo = client2ClientInfo.end();
   for (itInfo = itbInfo; itInfo != iteInfo; ++itInfo)
     sendInfoToClients(itInfo->first, itInfo->second, sendNbInfo[itInfo->first-groupRankBegin], commLevel, &request[request_position++]);
-    //sendInfoToClients(itInfo->first, itInfo->second, sendNbInfo[itInfo->first-groupRankBegin], commLevel, request);
 
   std::vector<ep_lib::MPI_Status> status(request.size());
@@ -551,9 +533,9 @@
     delete [] recvInfoBuff;
   }
-  for (boost::unordered_map<int,unsigned char*>::const_iterator it = client2ClientInfo.begin();
+  for (std::unordered_map<int,unsigned char*>::const_iterator it = client2ClientInfo.begin();
                                                                it != client2ClientInfo.end(); ++it)
       delete [] it->second;
 
-  for (boost::unordered_map<int,size_t*>::const_iterator it = client2ClientIndex.begin();
+  for (std::unordered_map<int,size_t*>::const_iterator it = client2ClientIndex.begin();
                                                         it != client2ClientIndex.end(); ++it)
       delete [] it->second;
Index: XIOS/dev/branch_openmp/src/client_server_mapping.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/client_server_mapping.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/client_server_mapping.hpp	(revision 1545)
@@ -13,5 +13,5 @@
 #include "array_new.hpp"
 #include "mpi.hpp"
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 
 namespace xios {
@@ -25,5 +25,5 @@
 {
 public:
-  typedef boost::unordered_map<int, std::vector<size_t> > GlobalIndexMap;
+  typedef std::unordered_map<int, std::vector<size_t> > GlobalIndexMap;
   public:
     /** Default constructor */
Index: XIOS/dev/branch_openmp/src/client_server_mapping_distributed.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/client_server_mapping_distributed.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/client_server_mapping_distributed.cpp	(revision 1545)
@@ -20,5 +20,5 @@
 {
 
-CClientServerMappingDistributed::CClientServerMappingDistributed(const boost::unordered_map<size_t,int>& globalIndexOfServer,
+CClientServerMappingDistributed::CClientServerMappingDistributed(const std::unordered_map<size_t,int>& globalIndexOfServer,
                                                                  const MPI_Comm& clientIntraComm, bool isDataDistributed)
   : CClientServerMapping(), ccDHT_(0)
Index: XIOS/dev/branch_openmp/src/client_server_mapping_distributed.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/client_server_mapping_distributed.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/client_server_mapping_distributed.hpp	(revision 1545)
@@ -16,5 +16,5 @@
 #include "array_new.hpp"
 #include "mpi.hpp"
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 #include "client_client_dht_template.hpp"
 
@@ -34,5 +34,5 @@
   public:
     /** Default constructor */
-    CClientServerMappingDistributed(const boost::unordered_map<size_t,int>& globalIndexOfServer,
+    CClientServerMappingDistributed(const std::unordered_map<size_t,int>& globalIndexOfServer,
                                     const ep_lib::MPI_Comm& clientIntraComm,
                                     bool isDataDistributed = true);
Index: XIOS/dev/branch_openmp/src/config/axis_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/axis_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/axis_attribute.conf	(revision 1545)
@@ -2,4 +2,6 @@
 DECLARE_ATTRIBUTE(StdString, standard_name)
 DECLARE_ATTRIBUTE(StdString, long_name)
+
+DECLARE_ATTRIBUTE(StdString, comment)
 
 DECLARE_ATTRIBUTE(StdString, unit)
Index: XIOS/dev/branch_openmp/src/config/calendar_wrapper_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/calendar_wrapper_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/calendar_wrapper_attribute.conf	(revision 1545)
@@ -1,2 +1,3 @@
+DECLARE_ATTRIBUTE(StdString, comment)
 DECLARE_ENUM6(type, D360, AllLeap, NoLeap, Julian, Gregorian, user_defined)
 DECLARE_ATTRIBUTE(CDuration, timestep)
Index: XIOS/dev/branch_openmp/src/config/domain_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/domain_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/domain_attribute.conf	(revision 1545)
@@ -9,4 +9,6 @@
 DECLARE_ATTRIBUTE(StdString       , dim_i_name)
 DECLARE_ATTRIBUTE(StdString       , dim_j_name)
+
+DECLARE_ATTRIBUTE(StdString, comment)
 
 /* GLOBAL */
Index: XIOS/dev/branch_openmp/src/config/field_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/field_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/field_attribute.conf	(revision 1545)
@@ -2,4 +2,6 @@
 DECLARE_ATTRIBUTE(StdString, standard_name)
 DECLARE_ATTRIBUTE(StdString, long_name)
+
+DECLARE_ATTRIBUTE(StdString, comment)
 
 DECLARE_ATTRIBUTE(StdString, unit)
@@ -18,7 +20,7 @@
 DECLARE_ATTRIBUTE(bool,      check_if_active)
 
-DECLARE_ATTRIBUTE(StdString, domain_ref)
-DECLARE_ATTRIBUTE(StdString, axis_ref)
-DECLARE_ATTRIBUTE(StdString, scalar_ref)
+DECLARE_ATTRIBUTE(StdString, domain_ref, false)
+DECLARE_ATTRIBUTE(StdString, axis_ref, false)
+DECLARE_ATTRIBUTE(StdString, scalar_ref, false)
 DECLARE_ATTRIBUTE(StdString, grid_ref)
 DECLARE_ATTRIBUTE(StdString, field_ref)
Index: XIOS/dev/branch_openmp/src/config/file_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/file_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/file_attribute.conf	(revision 1545)
@@ -1,4 +1,6 @@
 DECLARE_ATTRIBUTE(StdString, name)
 DECLARE_ATTRIBUTE(StdString, description)
+
+DECLARE_ATTRIBUTE(StdString, comment)
 
 DECLARE_ATTRIBUTE(StdString, name_suffix)
Index: XIOS/dev/branch_openmp/src/config/grid_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/grid_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/grid_attribute.conf	(revision 1545)
@@ -1,4 +1,6 @@
 DECLARE_ATTRIBUTE(StdString, name)
 DECLARE_ATTRIBUTE(StdString, description)
+
+DECLARE_ATTRIBUTE(StdString, comment)
 
 DECLARE_ARRAY(bool, 1, mask_1d, false)
Index: XIOS/dev/branch_openmp/src/config/scalar_attribute.conf
===================================================================
--- XIOS/dev/branch_openmp/src/config/scalar_attribute.conf	(revision 1544)
+++ XIOS/dev/branch_openmp/src/config/scalar_attribute.conf	(revision 1545)
@@ -2,4 +2,6 @@
 DECLARE_ATTRIBUTE(StdString, standard_name)
 DECLARE_ATTRIBUTE(StdString, long_name)
+
+DECLARE_ATTRIBUTE(StdString, comment)
 
 DECLARE_ATTRIBUTE(StdString, unit)
Index: XIOS/dev/branch_openmp/src/context_client.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/context_client.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/context_client.cpp	(revision 1545)
@@ -102,5 +102,4 @@
         typeId_in=event.getTypeId() ;
         classId_in=event.getClassId() ;
-        //MPI_Allreduce(&timeLine,&timeLine_out, 1, MPI_UINT64_T, MPI_SUM, intraComm) ;
         MPI_Allreduce(&timeLine,&timeLine_out, 1, MPI_LONG_LONG_INT, MPI_SUM, intraComm) ;
         MPI_Allreduce(&typeId_in,&typeId, 1, MPI_INT, MPI_SUM, intraComm) ;
@@ -342,5 +341,4 @@
        if (ratio < minBufferSizeEventSizeRatio) minBufferSizeEventSizeRatio = ratio;
      }
-     //MPI_Allreduce(MPI_IN_PLACE, &minBufferSizeEventSizeRatio, 1, MPI_DOUBLE, MPI_MIN, intraComm);
      MPI_Allreduce(&minBufferSizeEventSizeRatio, &minBufferSizeEventSizeRatio, 1, MPI_DOUBLE, MPI_MIN, intraComm);
 
Index: XIOS/dev/branch_openmp/src/context_server.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/context_server.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/context_server.cpp	(revision 1545)
@@ -130,5 +130,4 @@
        MPI_Irecv(&buffSize, 1, MPI_LONG, rank, 20, interComm, &request);
        MPI_Wait(&request, &status);
-       //MPI_Recv(&buffSize, 1, MPI_LONG, rank, 20, interComm, &status);
        mapBufferSize_.insert(std::make_pair(rank, buffSize));
        it=(buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(buffSize)))).first;
Index: XIOS/dev/branch_openmp/src/cxios.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/cxios.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/cxios.cpp	(revision 1545)
@@ -66,5 +66,5 @@
     usingServer2=getin<bool>("using_server2",false) ;
     ratioServer2=getin<int>("ratio_server2",50);
-    nbPoolsServer2=getin<int>("number_pools_server2",1);
+    nbPoolsServer2=getin<int>("number_pools_server2",0);
     info.setLevel(getin<int>("info_level",0)) ;
     report.setLevel(getin<int>("info_level",50));
@@ -108,5 +108,4 @@
       MPI_Comm_create_endpoints(MPI_COMM_WORLD->mpi_comm, num_ep, info, ep_comm);  // servers should reach here too.
       passage = ep_comm; 
-      //::MPI_Comm_group(to_mpi_comm(MPI_COMM_WORLD->mpi_comm), &MPI_GROUP_WORLD); 
     }
         
Index: XIOS/dev/branch_openmp/src/data_output.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/data_output.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/data_output.cpp	(revision 1545)
@@ -87,5 +87,5 @@
       {
          CContext* context = CContext::getCurrent() ;
-         boost::shared_ptr<CCalendar> calendar = context->getCalendar();
+         std::shared_ptr<CCalendar> calendar = context->getCalendar();
 
          this->writeTimeAxis_(field, calendar);
Index: XIOS/dev/branch_openmp/src/data_output.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/data_output.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/data_output.hpp	(revision 1545)
@@ -59,5 +59,5 @@
             virtual void writeTimeDimension_(void)           = 0;
             virtual void writeTimeAxis_ (CField*     field,
-                                         const boost::shared_ptr<CCalendar> cal) = 0;
+                                         const std::shared_ptr<CCalendar> cal) = 0;
 
             /// PropriÃ©tÃ©s protÃ©gÃ©es ///
Index: XIOS/dev/branch_openmp/src/date.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/date.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/date.cpp	(revision 1545)
@@ -235,7 +235,12 @@
       void CDate::addMonth(int value)
       {// Value doit Ãªtre Ã©gale Ã  1 ou -1.
+
+        const CCalendar& c = getRelCalendar();
+        int nbMonthsPerYear = c.getYearLength();
+
         this->month += value;
-        if (this->month == 13) { year++; this->month = 1; }
-        if (this->month == 0)  { year--; this->month = 12; }
+
+        if (this->month == nbMonthsPerYear + 1) { year++; this->month = 1; }
+        if (this->month == 0)  { year--; this->month = nbMonthsPerYear; }
       }
 
Index: XIOS/dev/branch_openmp/src/distribution.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/distribution.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/distribution.hpp	(revision 1545)
@@ -12,5 +12,5 @@
 #include "xios_spl.hpp"
 #include "array_new.hpp"
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 
 namespace xios {
@@ -24,5 +24,5 @@
 {
   public:
-  typedef boost::unordered_map<size_t,int> GlobalLocalMap;
+  typedef std::unordered_map<size_t,int> GlobalLocalMap;
 
   public:
Index: XIOS/dev/branch_openmp/src/duration.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/duration.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/duration.cpp	(revision 1545)
@@ -7,5 +7,5 @@
 {
       /// ////////////////////// DÃ©finitions ////////////////////// ///
-                      
+
       const CDuration Year     ( 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
       const CDuration Month    ( 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
@@ -25,4 +25,5 @@
       }
 
+      ///---------------------------------------------------------------
 
       CDuration& CDuration::operator=(const CDuration& duration)
Index: XIOS/dev/branch_openmp/src/duration.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/duration.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/duration.hpp	(revision 1545)
@@ -21,5 +21,5 @@
          public:
             CDuration(double year=0.0, double month=0.0, double day=0.0, double hour=0.0, double minute=0.0, double second=0.0, double timestep=0.0);
-            
+
             /// OpÃ©rateurs ///
             CDuration& operator=(const CDuration& duration);
Index: XIOS/dev/branch_openmp/src/filter/binary_arithmetic_filter.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/binary_arithmetic_filter.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/binary_arithmetic_filter.hpp	(revision 1545)
@@ -5,4 +5,5 @@
 #include <string>
 #include "operator_expr.hpp"
+#include <unordered_map>
 
 namespace xios
Index: XIOS/dev/branch_openmp/src/filter/data_packet.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/data_packet.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/data_packet.hpp	(revision 1545)
@@ -2,5 +2,5 @@
 #define __XIOS_CDataPacket__
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "array_new.hpp"
@@ -43,6 +43,6 @@
   }; // struct CDataPacket
 
-  typedef boost::shared_ptr<CDataPacket> CDataPacketPtr;
-  typedef boost::shared_ptr<const CDataPacket> CConstDataPacketPtr;
+  typedef std::shared_ptr<CDataPacket> CDataPacketPtr;
+  typedef std::shared_ptr<const CDataPacket> CConstDataPacketPtr;
 } // namespace xios
 
Index: XIOS/dev/branch_openmp/src/filter/output_pin.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/output_pin.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/output_pin.cpp	(revision 1545)
@@ -9,5 +9,5 @@
   { /* Nothing to do */ }
 
-  void COutputPin::connectOutput(boost::shared_ptr<CInputPin> inputPin, size_t inputSlot)
+  void COutputPin::connectOutput(std::shared_ptr<CInputPin> inputPin, size_t inputSlot)
   {
     if (!inputPin)
@@ -42,5 +42,5 @@
             "The packet cannot be null.");
 
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
       it->first->setInput(it->second, packet);
@@ -68,5 +68,5 @@
   bool COutputPin::mustAutoTrigger() const
   {
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
     {
@@ -80,5 +80,5 @@
   void COutputPin::setOutputTriggers()
   {
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
       it->first->setInputTrigger(it->second, this);
@@ -87,5 +87,5 @@
   bool COutputPin::isDataExpected(const CDate& date) const
   {
-    std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
+    std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> >::const_iterator it, itEnd;
     for (it = outputs.begin(), itEnd = outputs.end(); it != itEnd; ++it)
     {
Index: XIOS/dev/branch_openmp/src/filter/output_pin.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/output_pin.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/output_pin.hpp	(revision 1545)
@@ -29,5 +29,5 @@
        * \param inputSlot the input slot number
        */
-      void connectOutput(boost::shared_ptr<CInputPin> inputPin, size_t inputSlot);
+      void connectOutput(std::shared_ptr<CInputPin> inputPin, size_t inputSlot);
 
       /*!
@@ -93,5 +93,5 @@
 
       //!< The list of connected filters and the corresponding slot numbers
-      std::vector<std::pair<boost::shared_ptr<CInputPin>, size_t> > outputs;
+      std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> > outputs;
 
       //! Output buffer, store the packets until the output is triggered
Index: XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.cpp	(revision 1545)
@@ -13,13 +13,13 @@
   { /* Nothing to do */ }
 
-  std::pair<boost::shared_ptr<CSpatialTransformFilter>, boost::shared_ptr<CSpatialTransformFilter> >
+  std::pair<std::shared_ptr<CSpatialTransformFilter>, std::shared_ptr<CSpatialTransformFilter> >
   CSpatialTransformFilter::buildFilterGraph(CGarbageCollector& gc, CGrid* srcGrid, CGrid* destGrid, bool hasMissingValue, double missingValue)
   {
     if (!srcGrid || !destGrid)
-      ERROR("std::pair<boost::shared_ptr<CSpatialTransformFilter>, boost::shared_ptr<CSpatialTransformFilter> >"
+      ERROR("std::pair<std::shared_ptr<CSpatialTransformFilter>, std::shared_ptr<CSpatialTransformFilter> >"
             "buildFilterGraph(CGarbageCollector& gc, CGrid* srcGrid, CGrid* destGrid)",
             "Impossible to build the filter graph if either the source or the destination grid are null.");
 
-    boost::shared_ptr<CSpatialTransformFilter> firstFilter, lastFilter;
+    std::shared_ptr<CSpatialTransformFilter> firstFilter, lastFilter;
     // Note that this loop goes from the last transformation to the first transformation
     do
@@ -38,7 +38,7 @@
       for (it=algoList.begin();it!=algoList.end();++it)  if (it->second.first == TRANS_TEMPORAL_SPLITTING) isSpatialTemporal=true ;
 
-      boost::shared_ptr<CSpatialTransformFilter> filter ;
-      if( isSpatialTemporal) filter = boost::shared_ptr<CSpatialTransformFilter>(new CSpatialTemporalFilter(gc, engine, gridTransformation, defaultValue, inputCount));
-      else filter = boost::shared_ptr<CSpatialTransformFilter>(new CSpatialTransformFilter(gc, engine, defaultValue, inputCount));
+      std::shared_ptr<CSpatialTransformFilter> filter ;
+      if( isSpatialTemporal) filter = std::shared_ptr<CSpatialTransformFilter>(new CSpatialTemporalFilter(gc, engine, gridTransformation, defaultValue, inputCount));
+      else filter = std::shared_ptr<CSpatialTransformFilter>(new CSpatialTransformFilter(gc, engine, defaultValue, inputCount));
 
       
@@ -142,6 +142,5 @@
   }
 
-  //std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > CSpatialTransformFilterEngine::engines;
-  std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > *CSpatialTransformFilterEngine::engines_ptr = 0;
+  std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > *CSpatialTransformFilterEngine::engines_ptr = 0;
 
   CSpatialTransformFilterEngine* CSpatialTransformFilterEngine::get(CGridTransformation* gridTransformation)
@@ -151,13 +150,11 @@
             "Impossible to get the requested engine, the grid transformation is invalid.");
     
-    if(engines_ptr == NULL) engines_ptr = new std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >;
-
-    //std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines.find(gridTransformation);
-    std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines_ptr->find(gridTransformation);
-    //if (it == engines.end())
+    if(engines_ptr == NULL) engines_ptr = new std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> >;
+
+
+    std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> >::iterator it = engines_ptr->find(gridTransformation);
     if (it == engines_ptr->end())
     {
-      boost::shared_ptr<CSpatialTransformFilterEngine> engine(new CSpatialTransformFilterEngine(gridTransformation));
-      //it = engines.insert(std::make_pair(gridTransformation, engine)).first;
+      std::shared_ptr<CSpatialTransformFilterEngine> engine(new CSpatialTransformFilterEngine(gridTransformation));
       it = engines_ptr->insert(std::make_pair(gridTransformation, engine)).first;
     }
Index: XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/spatial_transform_filter.hpp	(revision 1545)
@@ -36,5 +36,5 @@
        * \return the first and the last filters of the filter graph
        */
-      static std::pair<boost::shared_ptr<CSpatialTransformFilter>, boost::shared_ptr<CSpatialTransformFilter> >
+      static std::pair<std::shared_ptr<CSpatialTransformFilter>, std::shared_ptr<CSpatialTransformFilter> >
       buildFilterGraph(CGarbageCollector& gc, CGrid* srcGrid, CGrid* destGrid, bool hasMissingValue, double defaultValue);
 
@@ -141,6 +141,6 @@
 
       //! The allocated engines
-      //static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > engines;
-      static std::map<CGridTransformation*, boost::shared_ptr<CSpatialTransformFilterEngine> > *engines_ptr;
+
+      static std::map<CGridTransformation*, std::shared_ptr<CSpatialTransformFilterEngine> > *engines_ptr;
       #pragma omp threadprivate(engines_ptr)
   }; // class CSpatialTransformFilterEngine
Index: XIOS/dev/branch_openmp/src/filter/temporal_filter.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/filter/temporal_filter.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/filter/temporal_filter.cpp	(revision 1545)
@@ -22,5 +22,5 @@
                         this->samplingOffset.second, this->samplingOffset.timestep)
     , initDate(initDate)
-    , nextSamplingDate(initDate + (this->samplingOffset + initDate.getRelCalendar().getTimeStep()))
+    , nextSamplingDate(initDate + offsetMonth + ( offsetAllButMonth + initDate.getRelCalendar().getTimeStep()))
     , nbOperationDates(1)
     , nbSamplingDates(0)
Index: XIOS/dev/branch_openmp/src/generate_fortran_interface.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/generate_fortran_interface.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/generate_fortran_interface.cpp	(revision 1545)
@@ -302,4 +302,5 @@
   file.open((path+"iexpand_domain_attr.F90").c_str());
   expandDomain.generateFortranInterface(file);
+  file.close();
 
   file.open((path+"reorder_domain_interface_attr.F90").c_str());
Index: XIOS/dev/branch_openmp/src/group_factory.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/group_factory.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/group_factory.hpp	(revision 1545)
@@ -1,7 +1,4 @@
 #ifndef __XIOS_CGroupFactory__
 #define __XIOS_CGroupFactory__
-
-/// boost headers ///
-#include <boost/shared_ptr.hpp>
 
 /// XIOS headers ///
@@ -23,10 +20,10 @@
 
          template <typename U>
-            static void AddGroup(boost::shared_ptr<U> pgroup,
-                                        boost::shared_ptr<U> cgroup);
+            static void AddGroup(std::shared_ptr<U> pgroup,
+                                        std::shared_ptr<U> cgroup);
 
          template <typename U>
-            static void AddChild(boost::shared_ptr<U> group,
-                                        boost::shared_ptr<typename U::RelChild> child);
+            static void AddChild(std::shared_ptr<U> group,
+                                        std::shared_ptr<typename U::RelChild> child);
 
          /// Accesseurs ///
@@ -34,35 +31,35 @@
 
          template <typename U>
-            static boost::shared_ptr<U>
-               GetGroup(boost::shared_ptr<U> group, const StdString & id);
+            static std::shared_ptr<U>
+               GetGroup(std::shared_ptr<U> group, const StdString & id);
 
          template <typename U>
-            static boost::shared_ptr<typename U::RelChild>
-               GetChild(boost::shared_ptr<U> group, const StdString & id);
+            static std::shared_ptr<typename U::RelChild>
+               GetChild(std::shared_ptr<U> group, const StdString & id);
 
          template <typename U>
-            static int GetGroupNum(boost::shared_ptr<U> group);
+            static int GetGroupNum(std::shared_ptr<U> group);
          template <typename U>
-            static int GetGroupIdNum(boost::shared_ptr<U> group);
+            static int GetGroupIdNum(std::shared_ptr<U> group);
          template <typename U>
-            static int GetChildNum(boost::shared_ptr<U> group);
+            static int GetChildNum(std::shared_ptr<U> group);
          template <typename U>
-            static int GetChildIdNum(boost::shared_ptr<U> group);
+            static int GetChildIdNum(std::shared_ptr<U> group);
 
          /// Tests ///
          template <typename U>
-            static bool HasGroup(boost::shared_ptr<U> group, const StdString & id);
+            static bool HasGroup(std::shared_ptr<U> group, const StdString & id);
 
          template <typename U>
-            static bool HasChild(boost::shared_ptr<U> group, const StdString & id);
+            static bool HasChild(std::shared_ptr<U> group, const StdString & id);
 
          /// Instanciateur ///
          template <typename U>
-            static boost::shared_ptr<U>
-               CreateGroup(boost::shared_ptr<U> group, const StdString & id = StdString(""));
+            static std::shared_ptr<U>
+               CreateGroup(std::shared_ptr<U> group, const StdString & id = StdString(""));
 
          template <typename U>
-            static boost::shared_ptr<typename U::RelChild>
-               CreateChild(boost::shared_ptr<U> group, const StdString & id = StdString(""));
+            static std::shared_ptr<typename U::RelChild>
+               CreateChild(std::shared_ptr<U> group, const StdString & id = StdString(""));
 
       private :
Index: XIOS/dev/branch_openmp/src/group_factory_decl.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/group_factory_decl.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/group_factory_decl.cpp	(revision 1545)
@@ -5,16 +5,16 @@
 {
 # define  macro(U) \
-  template void CGroupFactory::AddGroup<U>(boost::shared_ptr<U> pgroup,boost::shared_ptr<U> cgroup); \
-  template void CGroupFactory::AddChild<U>(boost::shared_ptr<U> group, boost::shared_ptr<U::RelChild> child); \
-  template boost::shared_ptr<U>  CGroupFactory::GetGroup<U>(boost::shared_ptr<U> group, const StdString & id); \
-  template boost::shared_ptr<U::RelChild> CGroupFactory::GetChild<U>(boost::shared_ptr<U> group, const StdString & id); \
-  template int CGroupFactory::GetGroupNum<U>(boost::shared_ptr<U> group); \
-  template int CGroupFactory::GetGroupIdNum<U>(boost::shared_ptr<U> group); \
-  template int CGroupFactory::GetChildNum<U>(boost::shared_ptr<U> group); \
-  template int CGroupFactory::GetChildIdNum<U>(boost::shared_ptr<U> group); \
-  template bool CGroupFactory::HasGroup<U>(boost::shared_ptr<U> group, const StdString & id); \
-  template bool CGroupFactory::HasChild<U>(boost::shared_ptr<U> group, const StdString & id); \
-  template boost::shared_ptr<U> CGroupFactory::CreateGroup<U>(boost::shared_ptr<U> group, const StdString & id ); \
-  template boost::shared_ptr<U::RelChild>  CGroupFactory::CreateChild<U>(boost::shared_ptr<U> group, const StdString & id);
+  template void CGroupFactory::AddGroup<U>(std::shared_ptr<U> pgroup, std::shared_ptr<U> cgroup); \
+  template void CGroupFactory::AddChild<U>(std::shared_ptr<U> group, std::shared_ptr<U::RelChild> child); \
+  template std::shared_ptr<U>  CGroupFactory::GetGroup<U>(std::shared_ptr<U> group, const StdString & id); \
+  template std::shared_ptr<U::RelChild> CGroupFactory::GetChild<U>( std::shared_ptr<U> group, const StdString & id); \
+  template int CGroupFactory::GetGroupNum<U>(std::shared_ptr<U> group); \
+  template int CGroupFactory::GetGroupIdNum<U>(std::shared_ptr<U> group); \
+  template int CGroupFactory::GetChildNum<U>(std::shared_ptr<U> group); \
+  template int CGroupFactory::GetChildIdNum<U>(std::shared_ptr<U> group); \
+  template bool CGroupFactory::HasGroup<U>(std::shared_ptr<U> group, const StdString & id); \
+  template bool CGroupFactory::HasChild<U>(std::shared_ptr<U> group, const StdString & id); \
+  template std::shared_ptr<U> CGroupFactory::CreateGroup<U>(std::shared_ptr<U> group, const StdString & id ); \
+  template std::shared_ptr<U::RelChild>  CGroupFactory::CreateChild<U>(std::shared_ptr<U> group, const StdString & id);
 
   macro(CFieldGroup)
Index: XIOS/dev/branch_openmp/src/group_factory_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/group_factory_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/group_factory_impl.hpp	(revision 1545)
@@ -9,9 +9,9 @@
 
    template <typename U>
-      void CGroupFactory::AddGroup(boost::shared_ptr<U> pgroup,
-                                   boost::shared_ptr<U> cgroup)
+      void CGroupFactory::AddGroup(std::shared_ptr<U> pgroup,
+                                   std::shared_ptr<U> cgroup)
    {
       if (cgroup.get() == NULL || pgroup.get() == NULL )
-         ERROR("CGroupFactory::AddGroup(boost::shared_ptr<U> pgroup, boost::shared_ptr<U> cgroup)",
+         ERROR("CGroupFactory::AddGroup(std::shared_ptr<U> pgroup, std::shared_ptr<U> cgroup)",
                << " pgroup or cgroup NULL !");
       if (!cgroup->hasId())
@@ -25,9 +25,9 @@
 
    template <typename U>
-      void CGroupFactory::AddChild(boost::shared_ptr<U> group,
-                                   boost::shared_ptr<typename U::RelChild> child)
+      void CGroupFactory::AddChild(std::shared_ptr<U> group,
+                                   std::shared_ptr<typename U::RelChild> child)
    {
       if (group.get() == NULL || child.get() == NULL )
-         ERROR("CGroupFactory::AddGroup(boost::shared_ptr<U> pgroup, boost::shared_ptr<U> cgroup)",
+         ERROR("CGroupFactory::AddGroup(std::shared_ptr<U> pgroup, std::shared_ptr<U> cgroup)",
                << " pgroup or cgroup NULL !");
       if (!child->hasId())
@@ -41,6 +41,6 @@
 
    template <typename U>
-      boost::shared_ptr<U>
-         CGroupFactory::CreateGroup(boost::shared_ptr<U> group, const StdString & id)
+      std::shared_ptr<U>
+         CGroupFactory::CreateGroup(std::shared_ptr<U> group, const StdString & id)
    {
       CObjectFactory::SetCurrentContextId
@@ -48,5 +48,5 @@
       if (id.size() == 0)
       {
-         boost::shared_ptr<U> value = CObjectFactory::CreateObject<U>(CObjectFactory::GenUId<U>());
+         std::shared_ptr<U> value = CObjectFactory::CreateObject<U>(CObjectFactory::GenUId<U>());
          group->groupList.insert(group->groupList.end(), value.get());
          group->groupMap.insert(std::make_pair(value->getId(), value.get()));
@@ -57,5 +57,5 @@
       else
       {
-         boost::shared_ptr<U> value = CObjectFactory::CreateObject<U>(id);
+         std::shared_ptr<U> value = CObjectFactory::CreateObject<U>(id);
          group->groupList.insert(group->groupList.end(), value.get());
          group->groupMap.insert(std::make_pair(id, value.get()));
@@ -65,6 +65,6 @@
 
    template <typename U>
-      boost::shared_ptr<typename U::RelChild>
-         CGroupFactory::CreateChild(boost::shared_ptr<U> group, const StdString & id)
+      std::shared_ptr<typename U::RelChild>
+         CGroupFactory::CreateChild(std::shared_ptr<U> group, const StdString & id)
    {
       CObjectFactory::SetCurrentContextId
@@ -72,5 +72,5 @@
       if (id.size() == 0)
       {
-         boost::shared_ptr<typename U::RelChild> value =
+         std::shared_ptr<typename U::RelChild> value =
                CObjectFactory::CreateObject<typename U::RelChild>();
          group->childList.insert(group->childList.end(), value.get());
@@ -82,5 +82,5 @@
       else
       {
-         boost::shared_ptr<typename U::RelChild> value =
+         std::shared_ptr<typename U::RelChild> value =
                CObjectFactory::CreateObject<typename U::RelChild>(id);
          group->childList.insert(group->childList.end(), value.get());
@@ -91,33 +91,33 @@
 
    template <typename U>
-      bool CGroupFactory::HasGroup(boost::shared_ptr<U> group, const StdString & id)
+      bool CGroupFactory::HasGroup(std::shared_ptr<U> group, const StdString & id)
    {  return (group->groupMap.find(id) != group->groupMap.end()); }
 
    template <typename U>
-      bool CGroupFactory::HasChild(boost::shared_ptr<U> group, const StdString & id)
+      bool CGroupFactory::HasChild(std::shared_ptr<U> group, const StdString & id)
    {  return (group->childMap.find(id) != group->childMap.end()); }
 
    template <typename U>
-      int CGroupFactory::GetGroupNum(boost::shared_ptr<U> group)
+      int CGroupFactory::GetGroupNum(std::shared_ptr<U> group)
    { return (group->groupList.size()); }
 
    template <typename U>
-      int CGroupFactory::GetGroupIdNum(boost::shared_ptr<U> group)
+      int CGroupFactory::GetGroupIdNum(std::shared_ptr<U> group)
    { return (group->groupMap.size()); }
 
    template <typename U>
-      int CGroupFactory::GetChildNum(boost::shared_ptr<U> group)
+      int CGroupFactory::GetChildNum(std::shared_ptr<U> group)
    { return (group->childList.size()); }
 
    template <typename U>
-      int CGroupFactory::GetChildIdNum(boost::shared_ptr<U> group)
+      int CGroupFactory::GetChildIdNum(std::shared_ptr<U> group)
    { return (group->childMap.size()); }
 
    template <typename U>
-      boost::shared_ptr<U>
-         CGroupFactory::GetGroup(boost::shared_ptr<U> group, const StdString & id)
+      std::shared_ptr<U>
+         CGroupFactory::GetGroup(std::shared_ptr<U> group, const StdString & id)
    {
       if (!CGroupFactory::HasGroup<U>(group, id))
-         ERROR("CGroupFactory::GetGroup(boost::shared_ptr<U> group, const StdString & id)",
+         ERROR("CGroupFactory::GetGroup(std::shared_ptr<U> group, const StdString & id)",
                << "[ id = " << id << ", U = " << U::GetName() << " ] "
                << " group is not referenced !");
@@ -126,9 +126,9 @@
 
    template <typename U>
-      boost::shared_ptr<typename U::RelChild>
-         CGroupFactory::GetChild(boost::shared_ptr<U> group, const StdString & id)
+      std::shared_ptr<typename U::RelChild>
+         CGroupFactory::GetChild(std::shared_ptr<U> group, const StdString & id)
    {
       if (!CGroupFactory::HasChild<U>(group, id))
-         ERROR("CGroupFactory::GetChild(boost::shared_ptr<U> group, const StdString & id)",
+         ERROR("CGroupFactory::GetChild(std::shared_ptr<U> group, const StdString & id)",
                << "[ id = " << id << ", U = " << U::GetName() << " ] "
                << " child is not referenced !");
Index: XIOS/dev/branch_openmp/src/group_template.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/group_template.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/group_template.hpp	(revision 1545)
@@ -46,6 +46,4 @@
          virtual void fromString(const StdString & str);
          
-//         virtual void toBinary  (StdOStream & os) const;
-//         virtual void fromBinary(StdIStream & is);
 
          virtual void parse(xml::CXMLNode & node);
@@ -63,7 +61,6 @@
          virtual void solveDescInheritance(bool apply, const CAttributeMap * const parent = 0);
          void solveRefInheritance(void);
-//         static bool has(const string & id); 
-//         static boost::shared_ptr<V> get(const string& id) ;
-//         static boost::shared_ptr<V> create(const string& id=string("")) ;
+
+
          U* createChild(const string& id="") ;
           
Index: XIOS/dev/branch_openmp/src/group_template_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/group_template_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/group_template_impl.hpp	(revision 1545)
@@ -319,27 +319,4 @@
    { /* Ne rien faire de plus */ }
    
-//   template <class U, class V, class W>
-//   bool CGroupTemplate<U, V, W>::has(const string& id) 
-//   {
-//       return CObjectFactory::HasObject<V>(id) ;
-//   }
-
-//   template <class U, class V, class W>
-//   boost::shared_ptr<V> CGroupTemplate<U, V, W>::get(const string& id) 
-//   {
-//       return CObjectFactory::GetObject<V>(id) ;
-//   }
-
-//   template <class U, class V, class W>
-//   boost::shared_ptr<V> CGroupTemplate<U, V, W>::get() 
-//   {
-//       return CObjectFactory::GetObject<V>(this) ;
-//   }
-   
-//   template <class U, class V, class W>
-//   boost::shared_ptr<V> CGroupTemplate<U, V, W>::create(const string& id) 
-//   {
-//       return CObjectFactory::CreateObject<V>(id) ;
-//   }
    ///--------------------------------------------------------------
 
Index: XIOS/dev/branch_openmp/src/interface/c/icaxis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icaxis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icaxis.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/iccalendar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/iccalendar.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/iccalendar.cpp	(revision 1545)
@@ -24,5 +24,5 @@
     CTimer::get("XIOS").resume();
     const xios::CContext* context = CContext::getCurrent();
-    const boost::shared_ptr<xios::CCalendar> cal = context->getCalendar();
+    const std::shared_ptr<xios::CCalendar> cal = context->getCalendar();
     if (!cal)
       ERROR("void cxios_get_current_date(cxios_date* current_date_c)",
@@ -41,5 +41,5 @@
   {
     CTimer::get("XIOS").resume();
-    const boost::shared_ptr<xios::CCalendar> cal = CContext::getCurrent()->getCalendar();
+    const std::shared_ptr<xios::CCalendar> cal = CContext::getCurrent()->getCalendar();
     if (!cal)
       ERROR("int cxios_get_year_length_in_seconds(int year)",
@@ -54,5 +54,5 @@
   {
     CTimer::get("XIOS").resume();
-    const boost::shared_ptr<xios::CCalendar> cal = CContext::getCurrent()->getCalendar();
+    const std::shared_ptr<xios::CCalendar> cal = CContext::getCurrent()->getCalendar();
     if (!cal)
       ERROR("int cxios_get_day_length_in_seconds()",
Index: XIOS/dev/branch_openmp/src/interface/c/iccalendar_wrapper.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/iccalendar_wrapper.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/iccalendar_wrapper.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/iccompute_connectivity_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/iccompute_connectivity_domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/iccompute_connectivity_domain.cpp	(revision 1545)
@@ -4,5 +4,4 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/iccontext.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/iccontext.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/iccontext.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icdata.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icdata.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icdata.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include <string>
 #include <cstring>
Index: XIOS/dev/branch_openmp/src/interface/c/icdate.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icdate.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icdate.cpp	(revision 1545)
@@ -4,5 +4,4 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
 
 #include "xios.hpp"
@@ -27,5 +26,5 @@
   if (!context)
     ERROR(idFunc, << "Impossible to do calendar operations: no current context available.");
-  const boost::shared_ptr<xios::CCalendar> cal = context->getCalendar();
+  const std::shared_ptr<xios::CCalendar> cal = context->getCalendar();
   if (!cal)
     ERROR(idFunc, << "Impossible to do calendar operations: no calendar was defined.");
@@ -82,4 +81,5 @@
                                    date_c.hour, date_c.minute, date_c.second);
     xios::CDuration dur( dur_c.year, dur_c.month, dur_c.day, dur_c.hour, dur_c.minute, dur_c.second, dur_c.timestep );
+
     xios::CDate res = date - dur;
     return { res.getYear(), res.getMonth(), res.getDay(), res.getHour(), res.getMinute(), res.getSecond() };
Index: XIOS/dev/branch_openmp/src/interface/c/icdomain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icdomain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icdomain.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icduplicate_scalar_to_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icduplicate_scalar_to_axis.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c/icduplicate_scalar_to_axis.cpp	(revision 1545)
@@ -0,0 +1,47 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <memory>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "duplicate_scalar_to_axis.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CDuplicateScalarToAxis      * XDuplicateScalarToAxisPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_duplicate_scalar_to_axis_handle_create(XDuplicateScalarToAxisPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CDuplicateScalarToAxis::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_duplicate_scalar_to_axis_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CDuplicateScalarToAxis::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: XIOS/dev/branch_openmp/src/interface/c/icduration.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icduration.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icduration.cpp	(revision 1545)
@@ -8,4 +8,5 @@
   {
     xios::CDuration dur( dur_c.year, dur_c.month, dur_c.day, dur_c.hour, dur_c.minute, dur_c.second, dur_c.timestep );
+
     if (!string_copy(dur.toString(), str, str_size))
       ERROR("void cxios_duration_convert_to_string(cxios_duration dur_c, char* str, int str_size)", << "Input string is too short");
@@ -27,4 +28,5 @@
     xios::CDuration dur1( dur1_c.year, dur1_c.month, dur1_c.day, dur1_c.hour, dur1_c.minute, dur1_c.second, dur1_c.timestep );
     xios::CDuration dur2( dur2_c.year, dur2_c.month, dur2_c.day, dur2_c.hour, dur2_c.minute, dur2_c.second, dur2_c.timestep );
+
     xios::CDuration res = dur1 + dur2;
     return { res.year, res.month, res.day, res.hour, res.minute, res.second, res.timestep };
@@ -35,4 +37,5 @@
     xios::CDuration dur1( dur1_c.year, dur1_c.month, dur1_c.day, dur1_c.hour, dur1_c.minute, dur1_c.second, dur1_c.timestep );
     xios::CDuration dur2( dur2_c.year, dur2_c.month, dur2_c.day, dur2_c.hour, dur2_c.minute, dur2_c.second, dur2_c.timestep );
+
     xios::CDuration res = dur1 - dur2;
     return { res.year, res.month, res.day, res.hour, res.minute, res.second, res.timestep };
Index: XIOS/dev/branch_openmp/src/interface/c/icexpand_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icexpand_domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icexpand_domain.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icextract_to_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icextract_to_axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icextract_to_axis.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icextract_to_scalar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icextract_to_scalar.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icextract_to_scalar.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icfield.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icfield.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icfield.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icfile.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icfile.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icfile.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icgenerate_rectilinear_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icgenerate_rectilinear_domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icgenerate_rectilinear_domain.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icgrid.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icgrid.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icgrid.cpp	(revision 1545)
@@ -4,5 +4,4 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icinterpolate.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icinterpolate.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icinterpolate.cpp	(revision 1545)
@@ -4,5 +4,4 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icinverse_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icinverse_axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icinverse_axis.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icreduce_axis_to_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icreduce_axis_to_axis.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c/icreduce_axis_to_axis.cpp	(revision 1545)
@@ -0,0 +1,48 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+
+#include <memory>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "reduce_axis_to_axis.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CReduceAxisToAxis      * XReduceAxisToAxisPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_reduce_axis_to_axis_handle_create(XReduceAxisToAxisPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceAxisToAxis::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_reduce_axis_to_axis_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceAxisToAxis::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: XIOS/dev/branch_openmp/src/interface/c/icreduce_scalar_to_scalar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icreduce_scalar_to_scalar.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c/icreduce_scalar_to_scalar.cpp	(revision 1545)
@@ -0,0 +1,48 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+
+#include <memory>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "reduce_scalar_to_scalar.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CReduceScalarToScalar      * XReduceScalarToScalarPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_reduce_scalar_to_scalar_handle_create(XReduceScalarToScalarPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceScalarToScalar::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_reduce_scalar_to_scalar_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReduceScalarToScalar::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: XIOS/dev/branch_openmp/src/interface/c/icreduce_to_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icreduce_to_axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icreduce_to_axis.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icreduce_to_scalar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icreduce_to_scalar.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icreduce_to_scalar.cpp	(revision 1545)
@@ -4,5 +4,4 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icreorder_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icreorder_domain.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c/icreorder_domain.cpp	(revision 1545)
@@ -0,0 +1,47 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+
+#include <memory>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "reorder_domain.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CReorderDomain * XReorderDomainPtr;
+
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_reorder_domain_handle_create(XReorderDomainPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReorderDomain::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_reorder_domain_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CReorderDomain::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+} // extern "C"
Index: XIOS/dev/branch_openmp/src/interface/c/icscalar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icscalar.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icscalar.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/ictemporal_splitting.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/ictemporal_splitting.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c/ictemporal_splitting.cpp	(revision 1545)
@@ -0,0 +1,48 @@
+/* ************************************************************************** *
+ *      Copyright Â© IPSL/LSCE, xios, Avril 2010 - Octobre 2011         *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+
+#include <memory>
+
+#include "xios.hpp"
+
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "attribute_template.hpp"
+
+#include "icutil.hpp"
+#include "timer.hpp"
+#include "temporal_splitting.hpp"
+
+extern "C"
+{
+// /////////////////////////////// DÃ©finitions ////////////////////////////// //
+
+   // ----------------------- RedÃ©finition de types ----------------------------
+
+   typedef xios::CTemporalSplitting      * XTemporalSplittingPtr;
+   
+   // ------------------------ CrÃ©ation des handle -----------------------------
+   void cxios_temporal_splitting_handle_create(XTemporalSplittingPtr * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CTemporalSplitting::get(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+   // -------------------- VÃ©rification des identifiants -----------------------
+   void cxios_temporal_splitting_valid_id(bool * _ret, const char * _id, int _id_len)
+   {
+      std::string id;
+      if (!cstr2string(_id, _id_len, id)) return;
+
+      CTimer::get("XIOS").resume() ;
+      *_ret = xios::CTemporalSplitting::has(id);
+      CTimer::get("XIOS").suspend() ;
+   }
+
+} // extern "C"
Index: XIOS/dev/branch_openmp/src/interface/c/icvariable.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icvariable.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icvariable.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/icxml_tree.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/icxml_tree.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/icxml_tree.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c/iczoom.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c/iczoom.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c/iczoom.cpp	(revision 1545)
@@ -4,5 +4,6 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+
+#include <memory>
 
 #include "xios.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icaxis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icaxis_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icaxis_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -44,4 +44,30 @@
 
 
+  void cxios_set_axis_axis_type(axis_Ptr axis_hdl, const char * axis_type, int axis_type_size)
+  {
+    std::string axis_type_str;
+    if (!cstr2string(axis_type, axis_type_size, axis_type_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->axis_type.fromString(axis_type_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_axis_type(axis_Ptr axis_hdl, char * axis_type, int axis_type_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->axis_type.getInheritedStringValue(), axis_type, axis_type_size))
+      ERROR("void cxios_get_axis_axis_type(axis_Ptr axis_hdl, char * axis_type, int axis_type_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_axis_type(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->axis_type.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axis_begin(axis_Ptr axis_hdl, int begin)
   {
@@ -92,4 +118,56 @@
 
 
+  void cxios_set_axis_bounds_name(axis_Ptr axis_hdl, const char * bounds_name, int bounds_name_size)
+  {
+    std::string bounds_name_str;
+    if (!cstr2string(bounds_name, bounds_name_size, bounds_name_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->bounds_name.setValue(bounds_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_bounds_name(axis_Ptr axis_hdl, char * bounds_name, int bounds_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->bounds_name.getInheritedValue(), bounds_name, bounds_name_size))
+      ERROR("void cxios_get_axis_bounds_name(axis_Ptr axis_hdl, char * bounds_name, int bounds_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_bounds_name(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->bounds_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axis_comment(axis_Ptr axis_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_comment(axis_Ptr axis_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_axis_comment(axis_Ptr axis_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_comment(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axis_data_begin(axis_Ptr axis_hdl, int data_begin)
   {
@@ -158,4 +236,134 @@
      CTimer::get("XIOS").resume();
      bool isDefined = axis_hdl->data_n.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axis_dim_name(axis_Ptr axis_hdl, const char * dim_name, int dim_name_size)
+  {
+    std::string dim_name_str;
+    if (!cstr2string(dim_name, dim_name_size, dim_name_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->dim_name.setValue(dim_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_dim_name(axis_Ptr axis_hdl, char * dim_name, int dim_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->dim_name.getInheritedValue(), dim_name, dim_name_size))
+      ERROR("void cxios_get_axis_dim_name(axis_Ptr axis_hdl, char * dim_name, int dim_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_dim_name(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->dim_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axis_formula(axis_Ptr axis_hdl, const char * formula, int formula_size)
+  {
+    std::string formula_str;
+    if (!cstr2string(formula, formula_size, formula_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->formula.setValue(formula_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_formula(axis_Ptr axis_hdl, char * formula, int formula_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->formula.getInheritedValue(), formula, formula_size))
+      ERROR("void cxios_get_axis_formula(axis_Ptr axis_hdl, char * formula, int formula_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_formula(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->formula.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axis_formula_bounds(axis_Ptr axis_hdl, const char * formula_bounds, int formula_bounds_size)
+  {
+    std::string formula_bounds_str;
+    if (!cstr2string(formula_bounds, formula_bounds_size, formula_bounds_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->formula_bounds.setValue(formula_bounds_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_formula_bounds(axis_Ptr axis_hdl, char * formula_bounds, int formula_bounds_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->formula_bounds.getInheritedValue(), formula_bounds, formula_bounds_size))
+      ERROR("void cxios_get_axis_formula_bounds(axis_Ptr axis_hdl, char * formula_bounds, int formula_bounds_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_formula_bounds(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->formula_bounds.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axis_formula_term(axis_Ptr axis_hdl, const char * formula_term, int formula_term_size)
+  {
+    std::string formula_term_str;
+    if (!cstr2string(formula_term, formula_term_size, formula_term_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->formula_term.setValue(formula_term_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_formula_term(axis_Ptr axis_hdl, char * formula_term, int formula_term_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->formula_term.getInheritedValue(), formula_term, formula_term_size))
+      ERROR("void cxios_get_axis_formula_term(axis_Ptr axis_hdl, char * formula_term, int formula_term_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_formula_term(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->formula_term.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axis_formula_term_bounds(axis_Ptr axis_hdl, const char * formula_term_bounds, int formula_term_bounds_size)
+  {
+    std::string formula_term_bounds_str;
+    if (!cstr2string(formula_term_bounds, formula_term_bounds_size, formula_term_bounds_str)) return;
+    CTimer::get("XIOS").resume();
+    axis_hdl->formula_term_bounds.setValue(formula_term_bounds_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axis_formula_term_bounds(axis_Ptr axis_hdl, char * formula_term_bounds, int formula_term_bounds_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axis_hdl->formula_term_bounds.getInheritedValue(), formula_term_bounds, formula_term_bounds_size))
+      ERROR("void cxios_get_axis_formula_term_bounds(axis_Ptr axis_hdl, char * formula_term_bounds, int formula_term_bounds_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axis_formula_term_bounds(axis_Ptr axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axis_hdl->formula_term_bounds.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icaxisgroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icaxisgroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -44,4 +44,30 @@
 
 
+  void cxios_set_axisgroup_axis_type(axisgroup_Ptr axisgroup_hdl, const char * axis_type, int axis_type_size)
+  {
+    std::string axis_type_str;
+    if (!cstr2string(axis_type, axis_type_size, axis_type_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->axis_type.fromString(axis_type_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_axis_type(axisgroup_Ptr axisgroup_hdl, char * axis_type, int axis_type_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->axis_type.getInheritedStringValue(), axis_type, axis_type_size))
+      ERROR("void cxios_get_axisgroup_axis_type(axisgroup_Ptr axisgroup_hdl, char * axis_type, int axis_type_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_axis_type(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->axis_type.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axisgroup_begin(axisgroup_Ptr axisgroup_hdl, int begin)
   {
@@ -92,4 +118,56 @@
 
 
+  void cxios_set_axisgroup_bounds_name(axisgroup_Ptr axisgroup_hdl, const char * bounds_name, int bounds_name_size)
+  {
+    std::string bounds_name_str;
+    if (!cstr2string(bounds_name, bounds_name_size, bounds_name_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->bounds_name.setValue(bounds_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_bounds_name(axisgroup_Ptr axisgroup_hdl, char * bounds_name, int bounds_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->bounds_name.getInheritedValue(), bounds_name, bounds_name_size))
+      ERROR("void cxios_get_axisgroup_bounds_name(axisgroup_Ptr axisgroup_hdl, char * bounds_name, int bounds_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_bounds_name(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->bounds_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axisgroup_comment(axisgroup_Ptr axisgroup_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_comment(axisgroup_Ptr axisgroup_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_axisgroup_comment(axisgroup_Ptr axisgroup_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_comment(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_axisgroup_data_begin(axisgroup_Ptr axisgroup_hdl, int data_begin)
   {
@@ -158,4 +236,134 @@
      CTimer::get("XIOS").resume();
      bool isDefined = axisgroup_hdl->data_n.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axisgroup_dim_name(axisgroup_Ptr axisgroup_hdl, const char * dim_name, int dim_name_size)
+  {
+    std::string dim_name_str;
+    if (!cstr2string(dim_name, dim_name_size, dim_name_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->dim_name.setValue(dim_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_dim_name(axisgroup_Ptr axisgroup_hdl, char * dim_name, int dim_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->dim_name.getInheritedValue(), dim_name, dim_name_size))
+      ERROR("void cxios_get_axisgroup_dim_name(axisgroup_Ptr axisgroup_hdl, char * dim_name, int dim_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_dim_name(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->dim_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axisgroup_formula(axisgroup_Ptr axisgroup_hdl, const char * formula, int formula_size)
+  {
+    std::string formula_str;
+    if (!cstr2string(formula, formula_size, formula_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->formula.setValue(formula_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_formula(axisgroup_Ptr axisgroup_hdl, char * formula, int formula_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->formula.getInheritedValue(), formula, formula_size))
+      ERROR("void cxios_get_axisgroup_formula(axisgroup_Ptr axisgroup_hdl, char * formula, int formula_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_formula(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->formula.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axisgroup_formula_bounds(axisgroup_Ptr axisgroup_hdl, const char * formula_bounds, int formula_bounds_size)
+  {
+    std::string formula_bounds_str;
+    if (!cstr2string(formula_bounds, formula_bounds_size, formula_bounds_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->formula_bounds.setValue(formula_bounds_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_formula_bounds(axisgroup_Ptr axisgroup_hdl, char * formula_bounds, int formula_bounds_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->formula_bounds.getInheritedValue(), formula_bounds, formula_bounds_size))
+      ERROR("void cxios_get_axisgroup_formula_bounds(axisgroup_Ptr axisgroup_hdl, char * formula_bounds, int formula_bounds_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_formula_bounds(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->formula_bounds.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axisgroup_formula_term(axisgroup_Ptr axisgroup_hdl, const char * formula_term, int formula_term_size)
+  {
+    std::string formula_term_str;
+    if (!cstr2string(formula_term, formula_term_size, formula_term_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->formula_term.setValue(formula_term_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_formula_term(axisgroup_Ptr axisgroup_hdl, char * formula_term, int formula_term_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->formula_term.getInheritedValue(), formula_term, formula_term_size))
+      ERROR("void cxios_get_axisgroup_formula_term(axisgroup_Ptr axisgroup_hdl, char * formula_term, int formula_term_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_formula_term(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->formula_term.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_axisgroup_formula_term_bounds(axisgroup_Ptr axisgroup_hdl, const char * formula_term_bounds, int formula_term_bounds_size)
+  {
+    std::string formula_term_bounds_str;
+    if (!cstr2string(formula_term_bounds, formula_term_bounds_size, formula_term_bounds_str)) return;
+    CTimer::get("XIOS").resume();
+    axisgroup_hdl->formula_term_bounds.setValue(formula_term_bounds_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_axisgroup_formula_term_bounds(axisgroup_Ptr axisgroup_hdl, char * formula_term_bounds, int formula_term_bounds_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(axisgroup_hdl->formula_term_bounds.getInheritedValue(), formula_term_bounds, formula_term_bounds_size))
+      ERROR("void cxios_get_axisgroup_formula_term_bounds(axisgroup_Ptr axisgroup_hdl, char * formula_term_bounds, int formula_term_bounds_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_axisgroup_formula_term_bounds(axisgroup_Ptr axisgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = axisgroup_hdl->formula_term_bounds.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
Index: XIOS/dev/branch_openmp/src/interface/c_attr/iccalendar_wrapper_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/iccalendar_wrapper_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/iccalendar_wrapper_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -17,4 +17,30 @@
 {
   typedef xios::CCalendarWrapper* calendar_wrapper_Ptr;
+
+  void cxios_set_calendar_wrapper_comment(calendar_wrapper_Ptr calendar_wrapper_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    calendar_wrapper_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_calendar_wrapper_comment(calendar_wrapper_Ptr calendar_wrapper_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(calendar_wrapper_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_calendar_wrapper_comment(calendar_wrapper_Ptr calendar_wrapper_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_calendar_wrapper_comment(calendar_wrapper_Ptr calendar_wrapper_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = calendar_wrapper_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
 
   void cxios_set_calendar_wrapper_day_length(calendar_wrapper_Ptr calendar_wrapper_hdl, int day_length)
Index: XIOS/dev/branch_openmp/src/interface/c_attr/iccompute_connectivity_domain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/iccompute_connectivity_domain_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/iccompute_connectivity_domain_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/iccontext_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/iccontext_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/iccontext_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icdomain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icdomain_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icdomain_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -93,4 +93,30 @@
 
 
+  void cxios_set_domain_bounds_lat_name(domain_Ptr domain_hdl, const char * bounds_lat_name, int bounds_lat_name_size)
+  {
+    std::string bounds_lat_name_str;
+    if (!cstr2string(bounds_lat_name, bounds_lat_name_size, bounds_lat_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->bounds_lat_name.setValue(bounds_lat_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_bounds_lat_name(domain_Ptr domain_hdl, char * bounds_lat_name, int bounds_lat_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->bounds_lat_name.getInheritedValue(), bounds_lat_name, bounds_lat_name_size))
+      ERROR("void cxios_get_domain_bounds_lat_name(domain_Ptr domain_hdl, char * bounds_lat_name, int bounds_lat_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_bounds_lat_name(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->bounds_lat_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domain_bounds_lon_1d(domain_Ptr domain_hdl, double* bounds_lon_1d, int* extent)
   {
@@ -143,4 +169,56 @@
 
 
+  void cxios_set_domain_bounds_lon_name(domain_Ptr domain_hdl, const char * bounds_lon_name, int bounds_lon_name_size)
+  {
+    std::string bounds_lon_name_str;
+    if (!cstr2string(bounds_lon_name, bounds_lon_name_size, bounds_lon_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->bounds_lon_name.setValue(bounds_lon_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_bounds_lon_name(domain_Ptr domain_hdl, char * bounds_lon_name, int bounds_lon_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->bounds_lon_name.getInheritedValue(), bounds_lon_name, bounds_lon_name_size))
+      ERROR("void cxios_get_domain_bounds_lon_name(domain_Ptr domain_hdl, char * bounds_lon_name, int bounds_lon_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_bounds_lon_name(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->bounds_lon_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_domain_comment(domain_Ptr domain_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_comment(domain_Ptr domain_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_domain_comment(domain_Ptr domain_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_comment(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domain_data_dim(domain_Ptr domain_hdl, int data_dim)
   {
@@ -308,4 +386,56 @@
 
 
+  void cxios_set_domain_dim_i_name(domain_Ptr domain_hdl, const char * dim_i_name, int dim_i_name_size)
+  {
+    std::string dim_i_name_str;
+    if (!cstr2string(dim_i_name, dim_i_name_size, dim_i_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->dim_i_name.setValue(dim_i_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_dim_i_name(domain_Ptr domain_hdl, char * dim_i_name, int dim_i_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->dim_i_name.getInheritedValue(), dim_i_name, dim_i_name_size))
+      ERROR("void cxios_get_domain_dim_i_name(domain_Ptr domain_hdl, char * dim_i_name, int dim_i_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_dim_i_name(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->dim_i_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_domain_dim_j_name(domain_Ptr domain_hdl, const char * dim_j_name, int dim_j_name_size)
+  {
+    std::string dim_j_name_str;
+    if (!cstr2string(dim_j_name, dim_j_name_size, dim_j_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->dim_j_name.setValue(dim_j_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_dim_j_name(domain_Ptr domain_hdl, char * dim_j_name, int dim_j_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->dim_j_name.getInheritedValue(), dim_j_name, dim_j_name_size))
+      ERROR("void cxios_get_domain_dim_j_name(domain_Ptr domain_hdl, char * dim_j_name, int dim_j_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_dim_j_name(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->dim_j_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domain_domain_ref(domain_Ptr domain_hdl, const char * domain_ref, int domain_ref_size)
   {
@@ -430,4 +560,30 @@
 
 
+  void cxios_set_domain_lat_name(domain_Ptr domain_hdl, const char * lat_name, int lat_name_size)
+  {
+    std::string lat_name_str;
+    if (!cstr2string(lat_name, lat_name_size, lat_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->lat_name.setValue(lat_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_lat_name(domain_Ptr domain_hdl, char * lat_name, int lat_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->lat_name.getInheritedValue(), lat_name, lat_name_size))
+      ERROR("void cxios_get_domain_lat_name(domain_Ptr domain_hdl, char * lat_name, int lat_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_lat_name(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->lat_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domain_latvalue_1d(domain_Ptr domain_hdl, double* latvalue_1d, int* extent)
   {
@@ -480,4 +636,30 @@
 
 
+  void cxios_set_domain_lon_name(domain_Ptr domain_hdl, const char * lon_name, int lon_name_size)
+  {
+    std::string lon_name_str;
+    if (!cstr2string(lon_name, lon_name_size, lon_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domain_hdl->lon_name.setValue(lon_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domain_lon_name(domain_Ptr domain_hdl, char * lon_name, int lon_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domain_hdl->lon_name.getInheritedValue(), lon_name, lon_name_size))
+      ERROR("void cxios_get_domain_lon_name(domain_Ptr domain_hdl, char * lon_name, int lon_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domain_lon_name(domain_Ptr domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domain_hdl->lon_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domain_long_name(domain_Ptr domain_hdl, const char * long_name, int long_name_size)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icdomaingroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icdomaingroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -93,4 +93,30 @@
 
 
+  void cxios_set_domaingroup_bounds_lat_name(domaingroup_Ptr domaingroup_hdl, const char * bounds_lat_name, int bounds_lat_name_size)
+  {
+    std::string bounds_lat_name_str;
+    if (!cstr2string(bounds_lat_name, bounds_lat_name_size, bounds_lat_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->bounds_lat_name.setValue(bounds_lat_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_bounds_lat_name(domaingroup_Ptr domaingroup_hdl, char * bounds_lat_name, int bounds_lat_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->bounds_lat_name.getInheritedValue(), bounds_lat_name, bounds_lat_name_size))
+      ERROR("void cxios_get_domaingroup_bounds_lat_name(domaingroup_Ptr domaingroup_hdl, char * bounds_lat_name, int bounds_lat_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_bounds_lat_name(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->bounds_lat_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domaingroup_bounds_lon_1d(domaingroup_Ptr domaingroup_hdl, double* bounds_lon_1d, int* extent)
   {
@@ -143,4 +169,56 @@
 
 
+  void cxios_set_domaingroup_bounds_lon_name(domaingroup_Ptr domaingroup_hdl, const char * bounds_lon_name, int bounds_lon_name_size)
+  {
+    std::string bounds_lon_name_str;
+    if (!cstr2string(bounds_lon_name, bounds_lon_name_size, bounds_lon_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->bounds_lon_name.setValue(bounds_lon_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_bounds_lon_name(domaingroup_Ptr domaingroup_hdl, char * bounds_lon_name, int bounds_lon_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->bounds_lon_name.getInheritedValue(), bounds_lon_name, bounds_lon_name_size))
+      ERROR("void cxios_get_domaingroup_bounds_lon_name(domaingroup_Ptr domaingroup_hdl, char * bounds_lon_name, int bounds_lon_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_bounds_lon_name(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->bounds_lon_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_domaingroup_comment(domaingroup_Ptr domaingroup_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_comment(domaingroup_Ptr domaingroup_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_domaingroup_comment(domaingroup_Ptr domaingroup_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_comment(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domaingroup_data_dim(domaingroup_Ptr domaingroup_hdl, int data_dim)
   {
@@ -308,4 +386,56 @@
 
 
+  void cxios_set_domaingroup_dim_i_name(domaingroup_Ptr domaingroup_hdl, const char * dim_i_name, int dim_i_name_size)
+  {
+    std::string dim_i_name_str;
+    if (!cstr2string(dim_i_name, dim_i_name_size, dim_i_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->dim_i_name.setValue(dim_i_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_dim_i_name(domaingroup_Ptr domaingroup_hdl, char * dim_i_name, int dim_i_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->dim_i_name.getInheritedValue(), dim_i_name, dim_i_name_size))
+      ERROR("void cxios_get_domaingroup_dim_i_name(domaingroup_Ptr domaingroup_hdl, char * dim_i_name, int dim_i_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_dim_i_name(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->dim_i_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_domaingroup_dim_j_name(domaingroup_Ptr domaingroup_hdl, const char * dim_j_name, int dim_j_name_size)
+  {
+    std::string dim_j_name_str;
+    if (!cstr2string(dim_j_name, dim_j_name_size, dim_j_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->dim_j_name.setValue(dim_j_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_dim_j_name(domaingroup_Ptr domaingroup_hdl, char * dim_j_name, int dim_j_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->dim_j_name.getInheritedValue(), dim_j_name, dim_j_name_size))
+      ERROR("void cxios_get_domaingroup_dim_j_name(domaingroup_Ptr domaingroup_hdl, char * dim_j_name, int dim_j_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_dim_j_name(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->dim_j_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domaingroup_domain_ref(domaingroup_Ptr domaingroup_hdl, const char * domain_ref, int domain_ref_size)
   {
@@ -456,4 +586,30 @@
 
 
+  void cxios_set_domaingroup_lat_name(domaingroup_Ptr domaingroup_hdl, const char * lat_name, int lat_name_size)
+  {
+    std::string lat_name_str;
+    if (!cstr2string(lat_name, lat_name_size, lat_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->lat_name.setValue(lat_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_lat_name(domaingroup_Ptr domaingroup_hdl, char * lat_name, int lat_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->lat_name.getInheritedValue(), lat_name, lat_name_size))
+      ERROR("void cxios_get_domaingroup_lat_name(domaingroup_Ptr domaingroup_hdl, char * lat_name, int lat_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_lat_name(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->lat_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domaingroup_latvalue_1d(domaingroup_Ptr domaingroup_hdl, double* latvalue_1d, int* extent)
   {
@@ -506,4 +662,30 @@
 
 
+  void cxios_set_domaingroup_lon_name(domaingroup_Ptr domaingroup_hdl, const char * lon_name, int lon_name_size)
+  {
+    std::string lon_name_str;
+    if (!cstr2string(lon_name, lon_name_size, lon_name_str)) return;
+    CTimer::get("XIOS").resume();
+    domaingroup_hdl->lon_name.setValue(lon_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_domaingroup_lon_name(domaingroup_Ptr domaingroup_hdl, char * lon_name, int lon_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(domaingroup_hdl->lon_name.getInheritedValue(), lon_name, lon_name_size))
+      ERROR("void cxios_get_domaingroup_lon_name(domaingroup_Ptr domaingroup_hdl, char * lon_name, int lon_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_domaingroup_lon_name(domaingroup_Ptr domaingroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = domaingroup_hdl->lon_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_domaingroup_long_name(domaingroup_Ptr domaingroup_hdl, const char * long_name, int long_name_size)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icduplicate_scalar_to_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icduplicate_scalar_to_axis_attr.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icduplicate_scalar_to_axis_attr.cpp	(revision 1545)
@@ -0,0 +1,18 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <memory>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CDuplicateScalarToAxis* duplicate_scalar_to_axis_Ptr;}
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icexpand_domain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icexpand_domain_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icexpand_domain_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icextract_axis_to_scalar_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icextract_axis_to_scalar_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icextract_axis_to_scalar_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icextract_domain_to_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icextract_domain_to_axis_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icextract_domain_to_axis_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icfield_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icfield_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icfield_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -137,4 +137,30 @@
      CTimer::get("XIOS").resume();
      bool isDefined = field_hdl->check_if_active.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_field_comment(field_Ptr field_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    field_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_field_comment(field_Ptr field_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(field_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_field_comment(field_Ptr field_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_field_comment(field_Ptr field_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = field_hdl->comment.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icfieldgroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icfieldgroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -137,4 +137,30 @@
      CTimer::get("XIOS").resume();
      bool isDefined = fieldgroup_hdl->check_if_active.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_fieldgroup_comment(fieldgroup_Ptr fieldgroup_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    fieldgroup_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_fieldgroup_comment(fieldgroup_Ptr fieldgroup_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(fieldgroup_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_fieldgroup_comment(fieldgroup_Ptr fieldgroup_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_fieldgroup_comment(fieldgroup_Ptr fieldgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = fieldgroup_hdl->comment.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icfile_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icfile_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icfile_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -36,4 +36,30 @@
      CTimer::get("XIOS").resume();
      bool isDefined = file_hdl->append.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_file_comment(file_Ptr file_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    file_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_file_comment(file_Ptr file_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(file_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_file_comment(file_Ptr file_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_file_comment(file_Ptr file_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = file_hdl->comment.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -402,4 +428,27 @@
 
 
+  void cxios_set_file_read_metadata_par(file_Ptr file_hdl, bool read_metadata_par)
+  {
+    CTimer::get("XIOS").resume();
+    file_hdl->read_metadata_par.setValue(read_metadata_par);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_file_read_metadata_par(file_Ptr file_hdl, bool* read_metadata_par)
+  {
+    CTimer::get("XIOS").resume();
+    *read_metadata_par = file_hdl->read_metadata_par.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_file_read_metadata_par(file_Ptr file_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = file_hdl->read_metadata_par.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_file_record_offset(file_Ptr file_hdl, int record_offset)
   {
@@ -420,4 +469,42 @@
      CTimer::get("XIOS").resume();
      bool isDefined = file_hdl->record_offset.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_file_split_end_offset(file_Ptr file_hdl, cxios_duration split_end_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    file_hdl->split_end_offset.allocate();
+    CDuration& split_end_offset = file_hdl->split_end_offset.get();
+    split_end_offset.year = split_end_offset_c.year;
+    split_end_offset.month = split_end_offset_c.month;
+    split_end_offset.day = split_end_offset_c.day;
+    split_end_offset.hour = split_end_offset_c.hour;
+    split_end_offset.minute = split_end_offset_c.minute;
+    split_end_offset.second = split_end_offset_c.second;
+    split_end_offset.timestep = split_end_offset_c.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_file_split_end_offset(file_Ptr file_hdl, cxios_duration* split_end_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    CDuration split_end_offset = file_hdl->split_end_offset.getInheritedValue();
+    split_end_offset_c->year = split_end_offset.year;
+    split_end_offset_c->month = split_end_offset.month;
+    split_end_offset_c->day = split_end_offset.day;
+    split_end_offset_c->hour = split_end_offset.hour;
+    split_end_offset_c->minute = split_end_offset.minute;
+    split_end_offset_c->second = split_end_offset.second;
+    split_end_offset_c->timestep = split_end_offset.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_file_split_end_offset(file_Ptr file_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = file_hdl->split_end_offset.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -489,4 +576,68 @@
 
 
+  void cxios_set_file_split_last_date(file_Ptr file_hdl, const char * split_last_date, int split_last_date_size)
+  {
+    std::string split_last_date_str;
+    if (!cstr2string(split_last_date, split_last_date_size, split_last_date_str)) return;
+    CTimer::get("XIOS").resume();
+    file_hdl->split_last_date.setValue(split_last_date_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_file_split_last_date(file_Ptr file_hdl, char * split_last_date, int split_last_date_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(file_hdl->split_last_date.getInheritedValue(), split_last_date, split_last_date_size))
+      ERROR("void cxios_get_file_split_last_date(file_Ptr file_hdl, char * split_last_date, int split_last_date_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_file_split_last_date(file_Ptr file_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = file_hdl->split_last_date.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_file_split_start_offset(file_Ptr file_hdl, cxios_duration split_start_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    file_hdl->split_start_offset.allocate();
+    CDuration& split_start_offset = file_hdl->split_start_offset.get();
+    split_start_offset.year = split_start_offset_c.year;
+    split_start_offset.month = split_start_offset_c.month;
+    split_start_offset.day = split_start_offset_c.day;
+    split_start_offset.hour = split_start_offset_c.hour;
+    split_start_offset.minute = split_start_offset_c.minute;
+    split_start_offset.second = split_start_offset_c.second;
+    split_start_offset.timestep = split_start_offset_c.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_file_split_start_offset(file_Ptr file_hdl, cxios_duration* split_start_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    CDuration split_start_offset = file_hdl->split_start_offset.getInheritedValue();
+    split_start_offset_c->year = split_start_offset.year;
+    split_start_offset_c->month = split_start_offset.month;
+    split_start_offset_c->day = split_start_offset.day;
+    split_start_offset_c->hour = split_start_offset.hour;
+    split_start_offset_c->minute = split_start_offset.minute;
+    split_start_offset_c->second = split_start_offset.second;
+    split_start_offset_c->timestep = split_start_offset.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_file_split_start_offset(file_Ptr file_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = file_hdl->split_start_offset.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_file_sync_freq(file_Ptr file_hdl, cxios_duration sync_freq_c)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icfilegroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icfilegroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icfilegroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -36,4 +36,30 @@
      CTimer::get("XIOS").resume();
      bool isDefined = filegroup_hdl->append.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_filegroup_comment(filegroup_Ptr filegroup_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    filegroup_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_filegroup_comment(filegroup_Ptr filegroup_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(filegroup_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_filegroup_comment(filegroup_Ptr filegroup_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_filegroup_comment(filegroup_Ptr filegroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = filegroup_hdl->comment.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -428,4 +454,27 @@
 
 
+  void cxios_set_filegroup_read_metadata_par(filegroup_Ptr filegroup_hdl, bool read_metadata_par)
+  {
+    CTimer::get("XIOS").resume();
+    filegroup_hdl->read_metadata_par.setValue(read_metadata_par);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_filegroup_read_metadata_par(filegroup_Ptr filegroup_hdl, bool* read_metadata_par)
+  {
+    CTimer::get("XIOS").resume();
+    *read_metadata_par = filegroup_hdl->read_metadata_par.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_filegroup_read_metadata_par(filegroup_Ptr filegroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = filegroup_hdl->read_metadata_par.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_filegroup_record_offset(filegroup_Ptr filegroup_hdl, int record_offset)
   {
@@ -446,4 +495,42 @@
      CTimer::get("XIOS").resume();
      bool isDefined = filegroup_hdl->record_offset.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_filegroup_split_end_offset(filegroup_Ptr filegroup_hdl, cxios_duration split_end_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    filegroup_hdl->split_end_offset.allocate();
+    CDuration& split_end_offset = filegroup_hdl->split_end_offset.get();
+    split_end_offset.year = split_end_offset_c.year;
+    split_end_offset.month = split_end_offset_c.month;
+    split_end_offset.day = split_end_offset_c.day;
+    split_end_offset.hour = split_end_offset_c.hour;
+    split_end_offset.minute = split_end_offset_c.minute;
+    split_end_offset.second = split_end_offset_c.second;
+    split_end_offset.timestep = split_end_offset_c.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_filegroup_split_end_offset(filegroup_Ptr filegroup_hdl, cxios_duration* split_end_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    CDuration split_end_offset = filegroup_hdl->split_end_offset.getInheritedValue();
+    split_end_offset_c->year = split_end_offset.year;
+    split_end_offset_c->month = split_end_offset.month;
+    split_end_offset_c->day = split_end_offset.day;
+    split_end_offset_c->hour = split_end_offset.hour;
+    split_end_offset_c->minute = split_end_offset.minute;
+    split_end_offset_c->second = split_end_offset.second;
+    split_end_offset_c->timestep = split_end_offset.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_filegroup_split_end_offset(filegroup_Ptr filegroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = filegroup_hdl->split_end_offset.hasInheritedValue();
      CTimer::get("XIOS").suspend();
      return isDefined;
@@ -515,4 +602,68 @@
 
 
+  void cxios_set_filegroup_split_last_date(filegroup_Ptr filegroup_hdl, const char * split_last_date, int split_last_date_size)
+  {
+    std::string split_last_date_str;
+    if (!cstr2string(split_last_date, split_last_date_size, split_last_date_str)) return;
+    CTimer::get("XIOS").resume();
+    filegroup_hdl->split_last_date.setValue(split_last_date_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_filegroup_split_last_date(filegroup_Ptr filegroup_hdl, char * split_last_date, int split_last_date_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(filegroup_hdl->split_last_date.getInheritedValue(), split_last_date, split_last_date_size))
+      ERROR("void cxios_get_filegroup_split_last_date(filegroup_Ptr filegroup_hdl, char * split_last_date, int split_last_date_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_filegroup_split_last_date(filegroup_Ptr filegroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = filegroup_hdl->split_last_date.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_filegroup_split_start_offset(filegroup_Ptr filegroup_hdl, cxios_duration split_start_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    filegroup_hdl->split_start_offset.allocate();
+    CDuration& split_start_offset = filegroup_hdl->split_start_offset.get();
+    split_start_offset.year = split_start_offset_c.year;
+    split_start_offset.month = split_start_offset_c.month;
+    split_start_offset.day = split_start_offset_c.day;
+    split_start_offset.hour = split_start_offset_c.hour;
+    split_start_offset.minute = split_start_offset_c.minute;
+    split_start_offset.second = split_start_offset_c.second;
+    split_start_offset.timestep = split_start_offset_c.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_filegroup_split_start_offset(filegroup_Ptr filegroup_hdl, cxios_duration* split_start_offset_c)
+  {
+    CTimer::get("XIOS").resume();
+    CDuration split_start_offset = filegroup_hdl->split_start_offset.getInheritedValue();
+    split_start_offset_c->year = split_start_offset.year;
+    split_start_offset_c->month = split_start_offset.month;
+    split_start_offset_c->day = split_start_offset.day;
+    split_start_offset_c->hour = split_start_offset.hour;
+    split_start_offset_c->minute = split_start_offset.minute;
+    split_start_offset_c->second = split_start_offset.second;
+    split_start_offset_c->timestep = split_start_offset.timestep;
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_filegroup_split_start_offset(filegroup_Ptr filegroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = filegroup_hdl->split_start_offset.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_filegroup_sync_freq(filegroup_Ptr filegroup_hdl, cxios_duration sync_freq_c)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icgenerate_rectilinear_domain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icgenerate_rectilinear_domain_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icgenerate_rectilinear_domain_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icgrid_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icgrid_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icgrid_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -18,4 +18,30 @@
   typedef xios::CGrid* grid_Ptr;
 
+  void cxios_set_grid_comment(grid_Ptr grid_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    grid_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_grid_comment(grid_Ptr grid_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(grid_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_grid_comment(grid_Ptr grid_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_grid_comment(grid_Ptr grid_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = grid_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_grid_description(grid_Ptr grid_hdl, const char * description, int description_size)
   {
@@ -44,4 +70,29 @@
 
 
+  void cxios_set_grid_mask_0d(grid_Ptr grid_hdl, bool* mask_0d, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<bool,1> tmp(mask_0d, shape(extent[0]), neverDeleteData);
+    grid_hdl->mask_0d.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_grid_mask_0d(grid_Ptr grid_hdl, bool* mask_0d, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<bool,1> tmp(mask_0d, shape(extent[0]), neverDeleteData);
+    tmp=grid_hdl->mask_0d.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_grid_mask_0d(grid_Ptr grid_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = grid_hdl->mask_0d.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_grid_mask_1d(grid_Ptr grid_hdl, bool* mask_1d, int* extent)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icgridgroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icgridgroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icgridgroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -18,4 +18,30 @@
   typedef xios::CGridGroup* gridgroup_Ptr;
 
+  void cxios_set_gridgroup_comment(gridgroup_Ptr gridgroup_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    gridgroup_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_gridgroup_comment(gridgroup_Ptr gridgroup_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(gridgroup_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_gridgroup_comment(gridgroup_Ptr gridgroup_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_gridgroup_comment(gridgroup_Ptr gridgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = gridgroup_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_gridgroup_description(gridgroup_Ptr gridgroup_hdl, const char * description, int description_size)
   {
@@ -70,4 +96,29 @@
 
 
+  void cxios_set_gridgroup_mask_0d(gridgroup_Ptr gridgroup_hdl, bool* mask_0d, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<bool,1> tmp(mask_0d, shape(extent[0]), neverDeleteData);
+    gridgroup_hdl->mask_0d.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_gridgroup_mask_0d(gridgroup_Ptr gridgroup_hdl, bool* mask_0d, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<bool,1> tmp(mask_0d, shape(extent[0]), neverDeleteData);
+    tmp=gridgroup_hdl->mask_0d.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_gridgroup_mask_0d(gridgroup_Ptr gridgroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = gridgroup_hdl->mask_0d.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_gridgroup_mask_1d(gridgroup_Ptr gridgroup_hdl, bool* mask_1d, int* extent)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icinterpolate_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icinterpolate_axis_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icinterpolate_axis_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icinterpolate_domain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icinterpolate_domain_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icinterpolate_domain_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -18,4 +18,27 @@
   typedef xios::CInterpolateDomain* interpolate_domain_Ptr;
 
+  void cxios_set_interpolate_domain_detect_missing_value(interpolate_domain_Ptr interpolate_domain_hdl, bool detect_missing_value)
+  {
+    CTimer::get("XIOS").resume();
+    interpolate_domain_hdl->detect_missing_value.setValue(detect_missing_value);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_interpolate_domain_detect_missing_value(interpolate_domain_Ptr interpolate_domain_hdl, bool* detect_missing_value)
+  {
+    CTimer::get("XIOS").resume();
+    *detect_missing_value = interpolate_domain_hdl->detect_missing_value.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_interpolate_domain_detect_missing_value(interpolate_domain_Ptr interpolate_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = interpolate_domain_hdl->detect_missing_value.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_interpolate_domain_mode(interpolate_domain_Ptr interpolate_domain_hdl, const char * mode, int mode_size)
   {
@@ -90,4 +113,30 @@
 
 
+  void cxios_set_interpolate_domain_read_write_convention(interpolate_domain_Ptr interpolate_domain_hdl, const char * read_write_convention, int read_write_convention_size)
+  {
+    std::string read_write_convention_str;
+    if (!cstr2string(read_write_convention, read_write_convention_size, read_write_convention_str)) return;
+    CTimer::get("XIOS").resume();
+    interpolate_domain_hdl->read_write_convention.fromString(read_write_convention_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_interpolate_domain_read_write_convention(interpolate_domain_Ptr interpolate_domain_hdl, char * read_write_convention, int read_write_convention_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(interpolate_domain_hdl->read_write_convention.getInheritedStringValue(), read_write_convention, read_write_convention_size))
+      ERROR("void cxios_get_interpolate_domain_read_write_convention(interpolate_domain_Ptr interpolate_domain_hdl, char * read_write_convention, int read_write_convention_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_interpolate_domain_read_write_convention(interpolate_domain_Ptr interpolate_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = interpolate_domain_hdl->read_write_convention.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_interpolate_domain_renormalize(interpolate_domain_Ptr interpolate_domain_hdl, bool renormalize)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icinverse_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icinverse_axis_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icinverse_axis_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_axis_to_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_axis_to_axis_attr.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_axis_to_axis_attr.cpp	(revision 1545)
@@ -0,0 +1,44 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <memory>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CReduceAxisToAxis* reduce_axis_to_axis_Ptr;
+
+  void cxios_set_reduce_axis_to_axis_operation(reduce_axis_to_axis_Ptr reduce_axis_to_axis_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if (!cstr2string(operation, operation_size, operation_str)) return;
+    CTimer::get("XIOS").resume();
+    reduce_axis_to_axis_hdl->operation.fromString(operation_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_axis_to_axis_operation(reduce_axis_to_axis_Ptr reduce_axis_to_axis_hdl, char * operation, int operation_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(reduce_axis_to_axis_hdl->operation.getInheritedStringValue(), operation, operation_size))
+      ERROR("void cxios_get_reduce_axis_to_axis_operation(reduce_axis_to_axis_Ptr reduce_axis_to_axis_hdl, char * operation, int operation_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_axis_to_axis_operation(reduce_axis_to_axis_Ptr reduce_axis_to_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_axis_to_axis_hdl->operation.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_axis_to_scalar_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_axis_to_scalar_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_axis_to_scalar_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_domain_to_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_domain_to_axis_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_domain_to_axis_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -44,4 +44,27 @@
 
 
+  void cxios_set_reduce_domain_to_axis_local(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, bool local)
+  {
+    CTimer::get("XIOS").resume();
+    reduce_domain_to_axis_hdl->local.setValue(local);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_domain_to_axis_local(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, bool* local)
+  {
+    CTimer::get("XIOS").resume();
+    *local = reduce_domain_to_axis_hdl->local.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_domain_to_axis_local(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_domain_to_axis_hdl->local.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_reduce_domain_to_axis_operation(reduce_domain_to_axis_Ptr reduce_domain_to_axis_hdl, const char * operation, int operation_size)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_domain_to_scalar_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_domain_to_scalar_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_domain_to_scalar_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -17,4 +17,27 @@
 {
   typedef xios::CReduceDomainToScalar* reduce_domain_to_scalar_Ptr;
+
+  void cxios_set_reduce_domain_to_scalar_local(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl, bool local)
+  {
+    CTimer::get("XIOS").resume();
+    reduce_domain_to_scalar_hdl->local.setValue(local);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_domain_to_scalar_local(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl, bool* local)
+  {
+    CTimer::get("XIOS").resume();
+    *local = reduce_domain_to_scalar_hdl->local.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_domain_to_scalar_local(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_domain_to_scalar_hdl->local.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
 
   void cxios_set_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_Ptr reduce_domain_to_scalar_hdl, const char * operation, int operation_size)
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_scalar_to_scalar_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_scalar_to_scalar_attr.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icreduce_scalar_to_scalar_attr.cpp	(revision 1545)
@@ -0,0 +1,44 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <memory>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CReduceScalarToScalar* reduce_scalar_to_scalar_Ptr;
+
+  void cxios_set_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_Ptr reduce_scalar_to_scalar_hdl, const char * operation, int operation_size)
+  {
+    std::string operation_str;
+    if (!cstr2string(operation, operation_size, operation_str)) return;
+    CTimer::get("XIOS").resume();
+    reduce_scalar_to_scalar_hdl->operation.fromString(operation_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_Ptr reduce_scalar_to_scalar_hdl, char * operation, int operation_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(reduce_scalar_to_scalar_hdl->operation.getInheritedStringValue(), operation, operation_size))
+      ERROR("void cxios_get_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_Ptr reduce_scalar_to_scalar_hdl, char * operation, int operation_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_Ptr reduce_scalar_to_scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reduce_scalar_to_scalar_hdl->operation.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icreorder_domain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icreorder_domain_attr.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icreorder_domain_attr.cpp	(revision 1545)
@@ -0,0 +1,110 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <memory>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CReorderDomain* reorder_domain_Ptr;
+
+  void cxios_set_reorder_domain_invert_lat(reorder_domain_Ptr reorder_domain_hdl, bool invert_lat)
+  {
+    CTimer::get("XIOS").resume();
+    reorder_domain_hdl->invert_lat.setValue(invert_lat);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reorder_domain_invert_lat(reorder_domain_Ptr reorder_domain_hdl, bool* invert_lat)
+  {
+    CTimer::get("XIOS").resume();
+    *invert_lat = reorder_domain_hdl->invert_lat.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reorder_domain_invert_lat(reorder_domain_Ptr reorder_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reorder_domain_hdl->invert_lat.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_reorder_domain_max_lon(reorder_domain_Ptr reorder_domain_hdl, double max_lon)
+  {
+    CTimer::get("XIOS").resume();
+    reorder_domain_hdl->max_lon.setValue(max_lon);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reorder_domain_max_lon(reorder_domain_Ptr reorder_domain_hdl, double* max_lon)
+  {
+    CTimer::get("XIOS").resume();
+    *max_lon = reorder_domain_hdl->max_lon.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reorder_domain_max_lon(reorder_domain_Ptr reorder_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reorder_domain_hdl->max_lon.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_reorder_domain_min_lon(reorder_domain_Ptr reorder_domain_hdl, double min_lon)
+  {
+    CTimer::get("XIOS").resume();
+    reorder_domain_hdl->min_lon.setValue(min_lon);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reorder_domain_min_lon(reorder_domain_Ptr reorder_domain_hdl, double* min_lon)
+  {
+    CTimer::get("XIOS").resume();
+    *min_lon = reorder_domain_hdl->min_lon.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reorder_domain_min_lon(reorder_domain_Ptr reorder_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reorder_domain_hdl->min_lon.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_reorder_domain_shift_lon_fraction(reorder_domain_Ptr reorder_domain_hdl, double shift_lon_fraction)
+  {
+    CTimer::get("XIOS").resume();
+    reorder_domain_hdl->shift_lon_fraction.setValue(shift_lon_fraction);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_reorder_domain_shift_lon_fraction(reorder_domain_Ptr reorder_domain_hdl, double* shift_lon_fraction)
+  {
+    CTimer::get("XIOS").resume();
+    *shift_lon_fraction = reorder_domain_hdl->shift_lon_fraction.getInheritedValue();
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_reorder_domain_shift_lon_fraction(reorder_domain_Ptr reorder_domain_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = reorder_domain_hdl->shift_lon_fraction.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+}
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icscalar_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icscalar_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icscalar_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -18,4 +18,133 @@
   typedef xios::CScalar* scalar_Ptr;
 
+  void cxios_set_scalar_axis_type(scalar_Ptr scalar_hdl, const char * axis_type, int axis_type_size)
+  {
+    std::string axis_type_str;
+    if (!cstr2string(axis_type, axis_type_size, axis_type_str)) return;
+    CTimer::get("XIOS").resume();
+    scalar_hdl->axis_type.fromString(axis_type_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalar_axis_type(scalar_Ptr scalar_hdl, char * axis_type, int axis_type_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalar_hdl->axis_type.getInheritedStringValue(), axis_type, axis_type_size))
+      ERROR("void cxios_get_scalar_axis_type(scalar_Ptr scalar_hdl, char * axis_type, int axis_type_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalar_axis_type(scalar_Ptr scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalar_hdl->axis_type.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalar_bounds(scalar_Ptr scalar_hdl, double* bounds, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,1> tmp(bounds, shape(extent[0]), neverDeleteData);
+    scalar_hdl->bounds.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalar_bounds(scalar_Ptr scalar_hdl, double* bounds, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,1> tmp(bounds, shape(extent[0]), neverDeleteData);
+    tmp=scalar_hdl->bounds.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalar_bounds(scalar_Ptr scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalar_hdl->bounds.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalar_bounds_name(scalar_Ptr scalar_hdl, const char * bounds_name, int bounds_name_size)
+  {
+    std::string bounds_name_str;
+    if (!cstr2string(bounds_name, bounds_name_size, bounds_name_str)) return;
+    CTimer::get("XIOS").resume();
+    scalar_hdl->bounds_name.setValue(bounds_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalar_bounds_name(scalar_Ptr scalar_hdl, char * bounds_name, int bounds_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalar_hdl->bounds_name.getInheritedValue(), bounds_name, bounds_name_size))
+      ERROR("void cxios_get_scalar_bounds_name(scalar_Ptr scalar_hdl, char * bounds_name, int bounds_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalar_bounds_name(scalar_Ptr scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalar_hdl->bounds_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalar_comment(scalar_Ptr scalar_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    scalar_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalar_comment(scalar_Ptr scalar_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalar_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_scalar_comment(scalar_Ptr scalar_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalar_comment(scalar_Ptr scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalar_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalar_label(scalar_Ptr scalar_hdl, const char * label, int label_size)
+  {
+    std::string label_str;
+    if (!cstr2string(label, label_size, label_str)) return;
+    CTimer::get("XIOS").resume();
+    scalar_hdl->label.setValue(label_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalar_label(scalar_Ptr scalar_hdl, char * label, int label_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalar_hdl->label.getInheritedValue(), label, label_size))
+      ERROR("void cxios_get_scalar_label(scalar_Ptr scalar_hdl, char * label, int label_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalar_label(scalar_Ptr scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalar_hdl->label.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_scalar_long_name(scalar_Ptr scalar_hdl, const char * long_name, int long_name_size)
   {
@@ -70,4 +199,30 @@
 
 
+  void cxios_set_scalar_positive(scalar_Ptr scalar_hdl, const char * positive, int positive_size)
+  {
+    std::string positive_str;
+    if (!cstr2string(positive, positive_size, positive_str)) return;
+    CTimer::get("XIOS").resume();
+    scalar_hdl->positive.fromString(positive_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalar_positive(scalar_Ptr scalar_hdl, char * positive, int positive_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalar_hdl->positive.getInheritedStringValue(), positive, positive_size))
+      ERROR("void cxios_get_scalar_positive(scalar_Ptr scalar_hdl, char * positive, int positive_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalar_positive(scalar_Ptr scalar_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalar_hdl->positive.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_scalar_prec(scalar_Ptr scalar_hdl, int prec)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icscalargroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icscalargroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icscalargroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
@@ -18,4 +18,107 @@
   typedef xios::CScalarGroup* scalargroup_Ptr;
 
+  void cxios_set_scalargroup_axis_type(scalargroup_Ptr scalargroup_hdl, const char * axis_type, int axis_type_size)
+  {
+    std::string axis_type_str;
+    if (!cstr2string(axis_type, axis_type_size, axis_type_str)) return;
+    CTimer::get("XIOS").resume();
+    scalargroup_hdl->axis_type.fromString(axis_type_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalargroup_axis_type(scalargroup_Ptr scalargroup_hdl, char * axis_type, int axis_type_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalargroup_hdl->axis_type.getInheritedStringValue(), axis_type, axis_type_size))
+      ERROR("void cxios_get_scalargroup_axis_type(scalargroup_Ptr scalargroup_hdl, char * axis_type, int axis_type_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalargroup_axis_type(scalargroup_Ptr scalargroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalargroup_hdl->axis_type.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalargroup_bounds(scalargroup_Ptr scalargroup_hdl, double* bounds, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,1> tmp(bounds, shape(extent[0]), neverDeleteData);
+    scalargroup_hdl->bounds.reference(tmp.copy());
+     CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalargroup_bounds(scalargroup_Ptr scalargroup_hdl, double* bounds, int* extent)
+  {
+    CTimer::get("XIOS").resume();
+    CArray<double,1> tmp(bounds, shape(extent[0]), neverDeleteData);
+    tmp=scalargroup_hdl->bounds.getInheritedValue();
+     CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalargroup_bounds(scalargroup_Ptr scalargroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalargroup_hdl->bounds.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalargroup_bounds_name(scalargroup_Ptr scalargroup_hdl, const char * bounds_name, int bounds_name_size)
+  {
+    std::string bounds_name_str;
+    if (!cstr2string(bounds_name, bounds_name_size, bounds_name_str)) return;
+    CTimer::get("XIOS").resume();
+    scalargroup_hdl->bounds_name.setValue(bounds_name_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalargroup_bounds_name(scalargroup_Ptr scalargroup_hdl, char * bounds_name, int bounds_name_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalargroup_hdl->bounds_name.getInheritedValue(), bounds_name, bounds_name_size))
+      ERROR("void cxios_get_scalargroup_bounds_name(scalargroup_Ptr scalargroup_hdl, char * bounds_name, int bounds_name_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalargroup_bounds_name(scalargroup_Ptr scalargroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalargroup_hdl->bounds_name.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
+  void cxios_set_scalargroup_comment(scalargroup_Ptr scalargroup_hdl, const char * comment, int comment_size)
+  {
+    std::string comment_str;
+    if (!cstr2string(comment, comment_size, comment_str)) return;
+    CTimer::get("XIOS").resume();
+    scalargroup_hdl->comment.setValue(comment_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalargroup_comment(scalargroup_Ptr scalargroup_hdl, char * comment, int comment_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalargroup_hdl->comment.getInheritedValue(), comment, comment_size))
+      ERROR("void cxios_get_scalargroup_comment(scalargroup_Ptr scalargroup_hdl, char * comment, int comment_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalargroup_comment(scalargroup_Ptr scalargroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalargroup_hdl->comment.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_scalargroup_group_ref(scalargroup_Ptr scalargroup_hdl, const char * group_ref, int group_ref_size)
   {
@@ -44,4 +147,30 @@
 
 
+  void cxios_set_scalargroup_label(scalargroup_Ptr scalargroup_hdl, const char * label, int label_size)
+  {
+    std::string label_str;
+    if (!cstr2string(label, label_size, label_str)) return;
+    CTimer::get("XIOS").resume();
+    scalargroup_hdl->label.setValue(label_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalargroup_label(scalargroup_Ptr scalargroup_hdl, char * label, int label_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalargroup_hdl->label.getInheritedValue(), label, label_size))
+      ERROR("void cxios_get_scalargroup_label(scalargroup_Ptr scalargroup_hdl, char * label, int label_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalargroup_label(scalargroup_Ptr scalargroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalargroup_hdl->label.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_scalargroup_long_name(scalargroup_Ptr scalargroup_hdl, const char * long_name, int long_name_size)
   {
@@ -96,4 +225,30 @@
 
 
+  void cxios_set_scalargroup_positive(scalargroup_Ptr scalargroup_hdl, const char * positive, int positive_size)
+  {
+    std::string positive_str;
+    if (!cstr2string(positive, positive_size, positive_str)) return;
+    CTimer::get("XIOS").resume();
+    scalargroup_hdl->positive.fromString(positive_str);
+    CTimer::get("XIOS").suspend();
+  }
+
+  void cxios_get_scalargroup_positive(scalargroup_Ptr scalargroup_hdl, char * positive, int positive_size)
+  {
+    CTimer::get("XIOS").resume();
+    if (!string_copy(scalargroup_hdl->positive.getInheritedStringValue(), positive, positive_size))
+      ERROR("void cxios_get_scalargroup_positive(scalargroup_Ptr scalargroup_hdl, char * positive, int positive_size)", << "Input string is too short");
+    CTimer::get("XIOS").suspend();
+  }
+
+  bool cxios_is_defined_scalargroup_positive(scalargroup_Ptr scalargroup_hdl)
+  {
+     CTimer::get("XIOS").resume();
+     bool isDefined = scalargroup_hdl->positive.hasInheritedValue();
+     CTimer::get("XIOS").suspend();
+     return isDefined;
+  }
+
+
   void cxios_set_scalargroup_prec(scalargroup_Ptr scalargroup_hdl, int prec)
   {
Index: XIOS/dev/branch_openmp/src/interface/c_attr/ictemporal_splitting_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/ictemporal_splitting_attr.cpp	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/ictemporal_splitting_attr.cpp	(revision 1545)
@@ -0,0 +1,18 @@
+/* ************************************************************************** *
+ *               Interface auto generated - do not modify                     *
+ * ************************************************************************** */
+
+#include <boost/multi_array.hpp>
+#include <memory>
+#include "xios.hpp"
+#include "attribute_template.hpp"
+#include "object_template.hpp"
+#include "group_template.hpp"
+#include "icutil.hpp"
+#include "icdate.hpp"
+#include "timer.hpp"
+#include "node_type.hpp"
+
+extern "C"
+{
+  typedef xios::CTemporalSplitting* temporal_splitting_Ptr;}
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icvariable_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icvariable_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icvariable_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/icvariablegroup_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/icvariablegroup_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/icvariablegroup_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/iczoom_axis_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/iczoom_axis_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/iczoom_axis_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/c_attr/iczoom_domain_attr.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/interface/c_attr/iczoom_domain_attr.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/c_attr/iczoom_domain_attr.cpp	(revision 1545)
@@ -4,5 +4,5 @@
 
 #include <boost/multi_array.hpp>
-#include <boost/shared_ptr.hpp>
+#include <memory>
 #include "xios.hpp"
 #include "attribute_template.hpp"
Index: XIOS/dev/branch_openmp/src/interface/fortran/duplicate_scalar_to_axis_interface.f90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/duplicate_scalar_to_axis_interface.f90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/duplicate_scalar_to_axis_interface.f90	(revision 1545)
@@ -0,0 +1,22 @@
+MODULE DUPLICATE_SCALAR_TO_AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_duplicate_scalar_to_axis_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_duplicate_scalar_to_axis_handle_create
+
+      SUBROUTINE cxios_duplicate_scalar_to_axis_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_duplicate_scalar_to_axis_valid_id
+
+   END INTERFACE
+
+END MODULE DUPLICATE_SCALAR_TO_AXIS_INTERFACE
Index: XIOS/dev/branch_openmp/src/interface/fortran/iduplicate_scalar_to_axis_interface.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/iduplicate_scalar_to_axis_interface.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/iduplicate_scalar_to_axis_interface.F90	(revision 1545)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IDUPLICATE_SCALAR_TO_AXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE DUPLICATE_SCALAR_TO_AXIS_INTERFACE
+
+   TYPE txios(duplicate_scalar_to_axis)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(duplicate_scalar_to_axis)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_duplicate_scalar_to_axis_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(OUT):: ret
+      CALL cxios_duplicate_scalar_to_axis_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_duplicate_scalar_to_axis_handle)
+
+   LOGICAL FUNCTION xios(is_valid_duplicate_scalar_to_axis)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_duplicate_scalar_to_axis_valid_id(val, idt, len(idt))
+      xios(is_valid_duplicate_scalar_to_axis) = val
+
+   END FUNCTION  xios(is_valid_duplicate_scalar_to_axis)
+
+END MODULE IDUPLICATE_SCALAR_TO_AXIS
Index: XIOS/dev/branch_openmp/src/interface/fortran/ireduce_axis_to_axis.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/ireduce_axis_to_axis.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/ireduce_axis_to_axis.F90	(revision 1545)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IREDUCE_AXIS_TO_AXIS
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE REDUCE_AXIS_TO_AXIS_INTERFACE
+
+   TYPE txios(reduce_axis_to_axis)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(reduce_axis_to_axis)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_reduce_axis_to_axis_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(OUT):: ret
+      CALL cxios_reduce_axis_to_axis_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_reduce_axis_to_axis_handle)
+
+   LOGICAL FUNCTION xios(is_valid_reduce_axis_to_axis)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_reduce_axis_to_axis_valid_id(val, idt, len(idt))
+      xios(is_valid_reduce_axis_to_axis) = val
+
+   END FUNCTION  xios(is_valid_reduce_axis_to_axis)
+
+END MODULE IREDUCE_AXIS_TO_AXIS
Index: XIOS/dev/branch_openmp/src/interface/fortran/ireduce_scalar_to_scalar.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/ireduce_scalar_to_scalar.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/ireduce_scalar_to_scalar.F90	(revision 1545)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IREDUCE_SCALAR_TO_SCALAR
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE REDUCE_SCALAR_TO_SCALAR_INTERFACE
+
+   TYPE txios(reduce_scalar_to_scalar)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(reduce_scalar_to_scalar)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_reduce_scalar_to_scalar_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(OUT):: ret
+      CALL cxios_reduce_scalar_to_scalar_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_reduce_scalar_to_scalar_handle)
+
+   LOGICAL FUNCTION xios(is_valid_reduce_scalar_to_scalar)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_reduce_scalar_to_scalar_valid_id(val, idt, len(idt))
+      xios(is_valid_reduce_scalar_to_scalar) = val
+
+   END FUNCTION  xios(is_valid_reduce_scalar_to_scalar)
+
+END MODULE IREDUCE_SCALAR_TO_SCALAR
Index: XIOS/dev/branch_openmp/src/interface/fortran/ireorder_domain.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/ireorder_domain.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/ireorder_domain.F90	(revision 1545)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE IREORDER_DOMAIN
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE REORDER_DOMAIN_INTERFACE
+
+   TYPE txios(reorder_domain)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(reorder_domain)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_reorder_domain_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(reorder_domain)) , INTENT(OUT):: ret
+      CALL cxios_reorder_domain_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_reorder_domain_handle)
+
+   LOGICAL FUNCTION xios(is_valid_reorder_domain)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_reorder_domain_valid_id(val, idt, len(idt))
+      xios(is_valid_reorder_domain) = val
+
+   END FUNCTION  xios(is_valid_reorder_domain)
+
+END MODULE IREORDER_DOMAIN
Index: XIOS/dev/branch_openmp/src/interface/fortran/itemporal_splitting.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/itemporal_splitting.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/itemporal_splitting.F90	(revision 1545)
@@ -0,0 +1,30 @@
+#include "xios_fortran_prefix.hpp"
+
+MODULE ITEMPORAL_SPLITTING
+   USE, INTRINSIC :: ISO_C_BINDING
+   USE TEMPORAL_SPLITTING_INTERFACE
+
+   TYPE txios(temporal_splitting)
+      INTEGER(kind = C_INTPTR_T) :: daddr
+   END TYPE txios(temporal_splitting)
+
+   CONTAINS ! Fonctions disponibles pour les utilisateurs.
+
+   SUBROUTINE xios(get_temporal_splitting_handle)(idt,ret)
+      IMPLICIT NONE
+      CHARACTER(len = *), INTENT(IN) :: idt
+      TYPE(txios(temporal_splitting)) , INTENT(OUT):: ret
+      CALL cxios_temporal_splitting_handle_create(ret%daddr, idt, len(idt))
+   END SUBROUTINE xios(get_temporal_splitting_handle)
+
+   LOGICAL FUNCTION xios(is_valid_temporal_splitting)(idt)
+      IMPLICIT NONE
+      CHARACTER(len  = *)    , INTENT(IN) :: idt
+      LOGICAL  (kind = 1)                 :: val
+
+      CALL cxios_temporal_splitting_valid_id(val, idt, len(idt))
+      xios(is_valid_temporal_splitting) = val
+
+   END FUNCTION  xios(is_valid_temporal_splitting)
+
+END MODULE ITEMPORAL_SPLITTING
Index: XIOS/dev/branch_openmp/src/interface/fortran/reduce_axis_to_axis_interface.f90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/reduce_axis_to_axis_interface.f90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/reduce_axis_to_axis_interface.f90	(revision 1545)
@@ -0,0 +1,22 @@
+MODULE REDUCE_AXIS_TO_AXIS_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_reduce_axis_to_axis_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_axis_to_axis_handle_create
+
+      SUBROUTINE cxios_reduce_axis_to_axis_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_axis_to_axis_valid_id
+
+   END INTERFACE
+
+END MODULE REDUCE_AXIS_TO_AXIS_INTERFACE
Index: XIOS/dev/branch_openmp/src/interface/fortran/reduce_scalar_to_scalar_interface.f90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/reduce_scalar_to_scalar_interface.f90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/reduce_scalar_to_scalar_interface.f90	(revision 1545)
@@ -0,0 +1,22 @@
+MODULE REDUCE_SCALAR_TO_SCALAR_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_reduce_scalar_to_scalar_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_scalar_to_scalar_handle_create
+
+      SUBROUTINE cxios_reduce_scalar_to_scalar_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reduce_scalar_to_scalar_valid_id
+
+   END INTERFACE
+
+END MODULE REDUCE_SCALAR_TO_SCALAR_INTERFACE
Index: XIOS/dev/branch_openmp/src/interface/fortran/reorder_domain_interface.f90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/reorder_domain_interface.f90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/reorder_domain_interface.f90	(revision 1545)
@@ -0,0 +1,22 @@
+MODULE REORDER_DOMAIN_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_reorder_domain_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reorder_domain_handle_create
+
+      SUBROUTINE cxios_reorder_domain_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_reorder_domain_valid_id
+
+   END INTERFACE
+
+END MODULE REORDER_DOMAIN_INTERFACE
Index: XIOS/dev/branch_openmp/src/interface/fortran/temporal_splitting_interface.f90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran/temporal_splitting_interface.f90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran/temporal_splitting_interface.f90	(revision 1545)
@@ -0,0 +1,22 @@
+MODULE TEMPORAL_SPLITTING_INTERFACE
+   USE, INTRINSIC :: ISO_C_BINDING
+
+   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
+
+      SUBROUTINE cxios_temporal_splitting_handle_create(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         INTEGER  (kind = C_INTPTR_T)               :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_temporal_splitting_handle_create
+
+      SUBROUTINE cxios_temporal_splitting_valid_id(ret, idt, idt_size) BIND(C)
+         USE ISO_C_BINDING
+         LOGICAL  (kind = C_BOOL)                   :: ret
+         CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: idt
+         INTEGER  (kind = C_INT)     , VALUE        :: idt_size
+      END SUBROUTINE cxios_temporal_splitting_valid_id
+
+   END INTERFACE
+
+END MODULE TEMPORAL_SPLITTING_INTERFACE
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/axis_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/axis_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/axis_interface_attr.F90	(revision 1545)
@@ -31,4 +31,25 @@
 
 
+    SUBROUTINE cxios_set_axis_axis_type(axis_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_set_axis_axis_type
+
+    SUBROUTINE cxios_get_axis_axis_type(axis_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_get_axis_axis_type
+
+    FUNCTION cxios_is_defined_axis_axis_type(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_axis_type
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_axis_type
+
+
     SUBROUTINE cxios_set_axis_begin(axis_hdl, begin) BIND(C)
       USE ISO_C_BINDING
@@ -71,4 +92,46 @@
 
 
+    SUBROUTINE cxios_set_axis_bounds_name(axis_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_set_axis_bounds_name
+
+    SUBROUTINE cxios_get_axis_bounds_name(axis_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_get_axis_bounds_name
+
+    FUNCTION cxios_is_defined_axis_bounds_name(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_bounds_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_bounds_name
+
+
+    SUBROUTINE cxios_set_axis_comment(axis_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_axis_comment
+
+    SUBROUTINE cxios_get_axis_comment(axis_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_axis_comment
+
+    FUNCTION cxios_is_defined_axis_comment(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_comment
+
+
     SUBROUTINE cxios_set_axis_data_begin(axis_hdl, data_begin) BIND(C)
       USE ISO_C_BINDING
@@ -128,4 +191,109 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
     END FUNCTION cxios_is_defined_axis_data_n
+
+
+    SUBROUTINE cxios_set_axis_dim_name(axis_hdl, dim_name, dim_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_name_size
+    END SUBROUTINE cxios_set_axis_dim_name
+
+    SUBROUTINE cxios_get_axis_dim_name(axis_hdl, dim_name, dim_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_name_size
+    END SUBROUTINE cxios_get_axis_dim_name
+
+    FUNCTION cxios_is_defined_axis_dim_name(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_dim_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_dim_name
+
+
+    SUBROUTINE cxios_set_axis_formula(axis_hdl, formula, formula_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_size
+    END SUBROUTINE cxios_set_axis_formula
+
+    SUBROUTINE cxios_get_axis_formula(axis_hdl, formula, formula_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_size
+    END SUBROUTINE cxios_get_axis_formula
+
+    FUNCTION cxios_is_defined_axis_formula(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_formula
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_formula
+
+
+    SUBROUTINE cxios_set_axis_formula_bounds(axis_hdl, formula_bounds, formula_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_bounds_size
+    END SUBROUTINE cxios_set_axis_formula_bounds
+
+    SUBROUTINE cxios_get_axis_formula_bounds(axis_hdl, formula_bounds, formula_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_bounds_size
+    END SUBROUTINE cxios_get_axis_formula_bounds
+
+    FUNCTION cxios_is_defined_axis_formula_bounds(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_formula_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_formula_bounds
+
+
+    SUBROUTINE cxios_set_axis_formula_term(axis_hdl, formula_term, formula_term_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_size
+    END SUBROUTINE cxios_set_axis_formula_term
+
+    SUBROUTINE cxios_get_axis_formula_term(axis_hdl, formula_term, formula_term_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_size
+    END SUBROUTINE cxios_get_axis_formula_term
+
+    FUNCTION cxios_is_defined_axis_formula_term(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_formula_term
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_formula_term
+
+
+    SUBROUTINE cxios_set_axis_formula_term_bounds(axis_hdl, formula_term_bounds, formula_term_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_bounds_size
+    END SUBROUTINE cxios_set_axis_formula_term_bounds
+
+    SUBROUTINE cxios_get_axis_formula_term_bounds(axis_hdl, formula_term_bounds, formula_term_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_bounds_size
+    END SUBROUTINE cxios_get_axis_formula_term_bounds
+
+    FUNCTION cxios_is_defined_axis_formula_term_bounds(axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axis_formula_term_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: axis_hdl
+    END FUNCTION cxios_is_defined_axis_formula_term_bounds
 
 
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/axisgroup_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/axisgroup_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/axisgroup_interface_attr.F90	(revision 1545)
@@ -31,4 +31,25 @@
 
 
+    SUBROUTINE cxios_set_axisgroup_axis_type(axisgroup_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_set_axisgroup_axis_type
+
+    SUBROUTINE cxios_get_axisgroup_axis_type(axisgroup_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_get_axisgroup_axis_type
+
+    FUNCTION cxios_is_defined_axisgroup_axis_type(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_axis_type
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_axis_type
+
+
     SUBROUTINE cxios_set_axisgroup_begin(axisgroup_hdl, begin) BIND(C)
       USE ISO_C_BINDING
@@ -71,4 +92,46 @@
 
 
+    SUBROUTINE cxios_set_axisgroup_bounds_name(axisgroup_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_set_axisgroup_bounds_name
+
+    SUBROUTINE cxios_get_axisgroup_bounds_name(axisgroup_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_get_axisgroup_bounds_name
+
+    FUNCTION cxios_is_defined_axisgroup_bounds_name(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_bounds_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_bounds_name
+
+
+    SUBROUTINE cxios_set_axisgroup_comment(axisgroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_axisgroup_comment
+
+    SUBROUTINE cxios_get_axisgroup_comment(axisgroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_axisgroup_comment
+
+    FUNCTION cxios_is_defined_axisgroup_comment(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_comment
+
+
     SUBROUTINE cxios_set_axisgroup_data_begin(axisgroup_hdl, data_begin) BIND(C)
       USE ISO_C_BINDING
@@ -128,4 +191,109 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
     END FUNCTION cxios_is_defined_axisgroup_data_n
+
+
+    SUBROUTINE cxios_set_axisgroup_dim_name(axisgroup_hdl, dim_name, dim_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_name_size
+    END SUBROUTINE cxios_set_axisgroup_dim_name
+
+    SUBROUTINE cxios_get_axisgroup_dim_name(axisgroup_hdl, dim_name, dim_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_name_size
+    END SUBROUTINE cxios_get_axisgroup_dim_name
+
+    FUNCTION cxios_is_defined_axisgroup_dim_name(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_dim_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_dim_name
+
+
+    SUBROUTINE cxios_set_axisgroup_formula(axisgroup_hdl, formula, formula_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_size
+    END SUBROUTINE cxios_set_axisgroup_formula
+
+    SUBROUTINE cxios_get_axisgroup_formula(axisgroup_hdl, formula, formula_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_size
+    END SUBROUTINE cxios_get_axisgroup_formula
+
+    FUNCTION cxios_is_defined_axisgroup_formula(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_formula
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_formula
+
+
+    SUBROUTINE cxios_set_axisgroup_formula_bounds(axisgroup_hdl, formula_bounds, formula_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_bounds_size
+    END SUBROUTINE cxios_set_axisgroup_formula_bounds
+
+    SUBROUTINE cxios_get_axisgroup_formula_bounds(axisgroup_hdl, formula_bounds, formula_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_bounds_size
+    END SUBROUTINE cxios_get_axisgroup_formula_bounds
+
+    FUNCTION cxios_is_defined_axisgroup_formula_bounds(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_formula_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_formula_bounds
+
+
+    SUBROUTINE cxios_set_axisgroup_formula_term(axisgroup_hdl, formula_term, formula_term_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_size
+    END SUBROUTINE cxios_set_axisgroup_formula_term
+
+    SUBROUTINE cxios_get_axisgroup_formula_term(axisgroup_hdl, formula_term, formula_term_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_size
+    END SUBROUTINE cxios_get_axisgroup_formula_term
+
+    FUNCTION cxios_is_defined_axisgroup_formula_term(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_formula_term
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_formula_term
+
+
+    SUBROUTINE cxios_set_axisgroup_formula_term_bounds(axisgroup_hdl, formula_term_bounds, formula_term_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_bounds_size
+    END SUBROUTINE cxios_set_axisgroup_formula_term_bounds
+
+    SUBROUTINE cxios_get_axisgroup_formula_term_bounds(axisgroup_hdl, formula_term_bounds, formula_term_bounds_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: formula_term_bounds
+      INTEGER  (kind = C_INT)     , VALUE        :: formula_term_bounds_size
+    END SUBROUTINE cxios_get_axisgroup_formula_term_bounds
+
+    FUNCTION cxios_is_defined_axisgroup_formula_term_bounds(axisgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_axisgroup_formula_term_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: axisgroup_hdl
+    END FUNCTION cxios_is_defined_axisgroup_formula_term_bounds
 
 
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/calendar_wrapper_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/calendar_wrapper_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/calendar_wrapper_interface_attr.F90	(revision 1545)
@@ -10,4 +10,25 @@
     ! Do not call directly / interface FORTRAN 2003 <-> C99
 
+    SUBROUTINE cxios_set_calendar_wrapper_comment(calendar_wrapper_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_calendar_wrapper_comment
+
+    SUBROUTINE cxios_get_calendar_wrapper_comment(calendar_wrapper_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_calendar_wrapper_comment
+
+    FUNCTION cxios_is_defined_calendar_wrapper_comment(calendar_wrapper_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_calendar_wrapper_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: calendar_wrapper_hdl
+    END FUNCTION cxios_is_defined_calendar_wrapper_comment
+
+
     SUBROUTINE cxios_set_calendar_wrapper_day_length(calendar_wrapper_hdl, day_length) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/domain_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/domain_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/domain_interface_attr.F90	(revision 1545)
@@ -73,4 +73,25 @@
 
 
+    SUBROUTINE cxios_set_domain_bounds_lat_name(domain_hdl, bounds_lat_name, bounds_lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lat_name_size
+    END SUBROUTINE cxios_set_domain_bounds_lat_name
+
+    SUBROUTINE cxios_get_domain_bounds_lat_name(domain_hdl, bounds_lat_name, bounds_lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lat_name_size
+    END SUBROUTINE cxios_get_domain_bounds_lat_name
+
+    FUNCTION cxios_is_defined_domain_bounds_lat_name(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_bounds_lat_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_bounds_lat_name
+
+
     SUBROUTINE cxios_set_domain_bounds_lon_1d(domain_hdl, bounds_lon_1d, extent) BIND(C)
       USE ISO_C_BINDING
@@ -113,4 +134,46 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
     END FUNCTION cxios_is_defined_domain_bounds_lon_2d
+
+
+    SUBROUTINE cxios_set_domain_bounds_lon_name(domain_hdl, bounds_lon_name, bounds_lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lon_name_size
+    END SUBROUTINE cxios_set_domain_bounds_lon_name
+
+    SUBROUTINE cxios_get_domain_bounds_lon_name(domain_hdl, bounds_lon_name, bounds_lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lon_name_size
+    END SUBROUTINE cxios_get_domain_bounds_lon_name
+
+    FUNCTION cxios_is_defined_domain_bounds_lon_name(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_bounds_lon_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_bounds_lon_name
+
+
+    SUBROUTINE cxios_set_domain_comment(domain_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_domain_comment
+
+    SUBROUTINE cxios_get_domain_comment(domain_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_domain_comment
+
+    FUNCTION cxios_is_defined_domain_comment(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_comment
 
 
@@ -250,4 +313,46 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
     END FUNCTION cxios_is_defined_domain_data_nj
+
+
+    SUBROUTINE cxios_set_domain_dim_i_name(domain_hdl, dim_i_name, dim_i_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_i_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_i_name_size
+    END SUBROUTINE cxios_set_domain_dim_i_name
+
+    SUBROUTINE cxios_get_domain_dim_i_name(domain_hdl, dim_i_name, dim_i_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_i_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_i_name_size
+    END SUBROUTINE cxios_get_domain_dim_i_name
+
+    FUNCTION cxios_is_defined_domain_dim_i_name(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_dim_i_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_dim_i_name
+
+
+    SUBROUTINE cxios_set_domain_dim_j_name(domain_hdl, dim_j_name, dim_j_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_j_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_j_name_size
+    END SUBROUTINE cxios_set_domain_dim_j_name
+
+    SUBROUTINE cxios_get_domain_dim_j_name(domain_hdl, dim_j_name, dim_j_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_j_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_j_name_size
+    END SUBROUTINE cxios_get_domain_dim_j_name
+
+    FUNCTION cxios_is_defined_domain_dim_j_name(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_dim_j_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_dim_j_name
 
 
@@ -353,4 +458,25 @@
 
 
+    SUBROUTINE cxios_set_domain_lat_name(domain_hdl, lat_name, lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lat_name_size
+    END SUBROUTINE cxios_set_domain_lat_name
+
+    SUBROUTINE cxios_get_domain_lat_name(domain_hdl, lat_name, lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lat_name_size
+    END SUBROUTINE cxios_get_domain_lat_name
+
+    FUNCTION cxios_is_defined_domain_lat_name(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_lat_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_lat_name
+
+
     SUBROUTINE cxios_set_domain_latvalue_1d(domain_hdl, latvalue_1d, extent) BIND(C)
       USE ISO_C_BINDING
@@ -393,4 +519,25 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
     END FUNCTION cxios_is_defined_domain_latvalue_2d
+
+
+    SUBROUTINE cxios_set_domain_lon_name(domain_hdl, lon_name, lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lon_name_size
+    END SUBROUTINE cxios_set_domain_lon_name
+
+    SUBROUTINE cxios_get_domain_lon_name(domain_hdl, lon_name, lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lon_name_size
+    END SUBROUTINE cxios_get_domain_lon_name
+
+    FUNCTION cxios_is_defined_domain_lon_name(domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domain_lon_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domain_hdl
+    END FUNCTION cxios_is_defined_domain_lon_name
 
 
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/domaingroup_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/domaingroup_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/domaingroup_interface_attr.F90	(revision 1545)
@@ -73,4 +73,25 @@
 
 
+    SUBROUTINE cxios_set_domaingroup_bounds_lat_name(domaingroup_hdl, bounds_lat_name, bounds_lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lat_name_size
+    END SUBROUTINE cxios_set_domaingroup_bounds_lat_name
+
+    SUBROUTINE cxios_get_domaingroup_bounds_lat_name(domaingroup_hdl, bounds_lat_name, bounds_lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lat_name_size
+    END SUBROUTINE cxios_get_domaingroup_bounds_lat_name
+
+    FUNCTION cxios_is_defined_domaingroup_bounds_lat_name(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_bounds_lat_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_bounds_lat_name
+
+
     SUBROUTINE cxios_set_domaingroup_bounds_lon_1d(domaingroup_hdl, bounds_lon_1d, extent) BIND(C)
       USE ISO_C_BINDING
@@ -113,4 +134,46 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
     END FUNCTION cxios_is_defined_domaingroup_bounds_lon_2d
+
+
+    SUBROUTINE cxios_set_domaingroup_bounds_lon_name(domaingroup_hdl, bounds_lon_name, bounds_lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lon_name_size
+    END SUBROUTINE cxios_set_domaingroup_bounds_lon_name
+
+    SUBROUTINE cxios_get_domaingroup_bounds_lon_name(domaingroup_hdl, bounds_lon_name, bounds_lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_lon_name_size
+    END SUBROUTINE cxios_get_domaingroup_bounds_lon_name
+
+    FUNCTION cxios_is_defined_domaingroup_bounds_lon_name(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_bounds_lon_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_bounds_lon_name
+
+
+    SUBROUTINE cxios_set_domaingroup_comment(domaingroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_domaingroup_comment
+
+    SUBROUTINE cxios_get_domaingroup_comment(domaingroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_domaingroup_comment
+
+    FUNCTION cxios_is_defined_domaingroup_comment(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_comment
 
 
@@ -250,4 +313,46 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
     END FUNCTION cxios_is_defined_domaingroup_data_nj
+
+
+    SUBROUTINE cxios_set_domaingroup_dim_i_name(domaingroup_hdl, dim_i_name, dim_i_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_i_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_i_name_size
+    END SUBROUTINE cxios_set_domaingroup_dim_i_name
+
+    SUBROUTINE cxios_get_domaingroup_dim_i_name(domaingroup_hdl, dim_i_name, dim_i_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_i_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_i_name_size
+    END SUBROUTINE cxios_get_domaingroup_dim_i_name
+
+    FUNCTION cxios_is_defined_domaingroup_dim_i_name(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_dim_i_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_dim_i_name
+
+
+    SUBROUTINE cxios_set_domaingroup_dim_j_name(domaingroup_hdl, dim_j_name, dim_j_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_j_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_j_name_size
+    END SUBROUTINE cxios_set_domaingroup_dim_j_name
+
+    SUBROUTINE cxios_get_domaingroup_dim_j_name(domaingroup_hdl, dim_j_name, dim_j_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: dim_j_name
+      INTEGER  (kind = C_INT)     , VALUE        :: dim_j_name_size
+    END SUBROUTINE cxios_get_domaingroup_dim_j_name
+
+    FUNCTION cxios_is_defined_domaingroup_dim_j_name(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_dim_j_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_dim_j_name
 
 
@@ -374,4 +479,25 @@
 
 
+    SUBROUTINE cxios_set_domaingroup_lat_name(domaingroup_hdl, lat_name, lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lat_name_size
+    END SUBROUTINE cxios_set_domaingroup_lat_name
+
+    SUBROUTINE cxios_get_domaingroup_lat_name(domaingroup_hdl, lat_name, lat_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lat_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lat_name_size
+    END SUBROUTINE cxios_get_domaingroup_lat_name
+
+    FUNCTION cxios_is_defined_domaingroup_lat_name(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_lat_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_lat_name
+
+
     SUBROUTINE cxios_set_domaingroup_latvalue_1d(domaingroup_hdl, latvalue_1d, extent) BIND(C)
       USE ISO_C_BINDING
@@ -414,4 +540,25 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
     END FUNCTION cxios_is_defined_domaingroup_latvalue_2d
+
+
+    SUBROUTINE cxios_set_domaingroup_lon_name(domaingroup_hdl, lon_name, lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lon_name_size
+    END SUBROUTINE cxios_set_domaingroup_lon_name
+
+    SUBROUTINE cxios_get_domaingroup_lon_name(domaingroup_hdl, lon_name, lon_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: lon_name
+      INTEGER  (kind = C_INT)     , VALUE        :: lon_name_size
+    END SUBROUTINE cxios_get_domaingroup_lon_name
+
+    FUNCTION cxios_is_defined_domaingroup_lon_name(domaingroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_domaingroup_lon_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: domaingroup_hdl
+    END FUNCTION cxios_is_defined_domaingroup_lon_name
 
 
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/duplicate_scalar_to_axis_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/duplicate_scalar_to_axis_interface_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/duplicate_scalar_to_axis_interface_attr.F90	(revision 1545)
@@ -0,0 +1,13 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE duplicate_scalar_to_axis_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+  END INTERFACE
+
+END MODULE duplicate_scalar_to_axis_interface_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/field_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/field_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/field_interface_attr.F90	(revision 1545)
@@ -111,4 +111,25 @@
 
 
+    SUBROUTINE cxios_set_field_comment(field_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_field_comment
+
+    SUBROUTINE cxios_get_field_comment(field_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_field_comment
+
+    FUNCTION cxios_is_defined_field_comment(field_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_field_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: field_hdl
+    END FUNCTION cxios_is_defined_field_comment
+
+
     SUBROUTINE cxios_set_field_compression_level(field_hdl, compression_level) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/fieldgroup_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/fieldgroup_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/fieldgroup_interface_attr.F90	(revision 1545)
@@ -111,4 +111,25 @@
 
 
+    SUBROUTINE cxios_set_fieldgroup_comment(fieldgroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_fieldgroup_comment
+
+    SUBROUTINE cxios_get_fieldgroup_comment(fieldgroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_fieldgroup_comment
+
+    FUNCTION cxios_is_defined_fieldgroup_comment(fieldgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_fieldgroup_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: fieldgroup_hdl
+    END FUNCTION cxios_is_defined_fieldgroup_comment
+
+
     SUBROUTINE cxios_set_fieldgroup_compression_level(fieldgroup_hdl, compression_level) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/file_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/file_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/file_interface_attr.F90	(revision 1545)
@@ -29,4 +29,25 @@
 
 
+    SUBROUTINE cxios_set_file_comment(file_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_file_comment
+
+    SUBROUTINE cxios_get_file_comment(file_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_file_comment
+
+    FUNCTION cxios_is_defined_file_comment(file_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+    END FUNCTION cxios_is_defined_file_comment
+
+
     SUBROUTINE cxios_set_file_compression_level(file_hdl, compression_level) BIND(C)
       USE ISO_C_BINDING
@@ -313,4 +334,23 @@
 
 
+    SUBROUTINE cxios_set_file_read_metadata_par(file_hdl, read_metadata_par) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: read_metadata_par
+    END SUBROUTINE cxios_set_file_read_metadata_par
+
+    SUBROUTINE cxios_get_file_read_metadata_par(file_hdl, read_metadata_par) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      LOGICAL (KIND=C_BOOL)             :: read_metadata_par
+    END SUBROUTINE cxios_get_file_read_metadata_par
+
+    FUNCTION cxios_is_defined_file_read_metadata_par(file_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_read_metadata_par
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+    END FUNCTION cxios_is_defined_file_read_metadata_par
+
+
     SUBROUTINE cxios_set_file_record_offset(file_hdl, record_offset) BIND(C)
       USE ISO_C_BINDING
@@ -330,4 +370,25 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
     END FUNCTION cxios_is_defined_file_record_offset
+
+
+    SUBROUTINE cxios_set_file_split_end_offset(file_hdl, split_end_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      TYPE(txios(duration)), VALUE :: split_end_offset
+    END SUBROUTINE cxios_set_file_split_end_offset
+
+    SUBROUTINE cxios_get_file_split_end_offset(file_hdl, split_end_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      TYPE(txios(duration)) :: split_end_offset
+    END SUBROUTINE cxios_get_file_split_end_offset
+
+    FUNCTION cxios_is_defined_file_split_end_offset(file_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_split_end_offset
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+    END FUNCTION cxios_is_defined_file_split_end_offset
 
 
@@ -374,4 +435,46 @@
 
 
+    SUBROUTINE cxios_set_file_split_last_date(file_hdl, split_last_date, split_last_date_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: split_last_date
+      INTEGER  (kind = C_INT)     , VALUE        :: split_last_date_size
+    END SUBROUTINE cxios_set_file_split_last_date
+
+    SUBROUTINE cxios_get_file_split_last_date(file_hdl, split_last_date, split_last_date_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: split_last_date
+      INTEGER  (kind = C_INT)     , VALUE        :: split_last_date_size
+    END SUBROUTINE cxios_get_file_split_last_date
+
+    FUNCTION cxios_is_defined_file_split_last_date(file_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_split_last_date
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+    END FUNCTION cxios_is_defined_file_split_last_date
+
+
+    SUBROUTINE cxios_set_file_split_start_offset(file_hdl, split_start_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      TYPE(txios(duration)), VALUE :: split_start_offset
+    END SUBROUTINE cxios_set_file_split_start_offset
+
+    SUBROUTINE cxios_get_file_split_start_offset(file_hdl, split_start_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+      TYPE(txios(duration)) :: split_start_offset
+    END SUBROUTINE cxios_get_file_split_start_offset
+
+    FUNCTION cxios_is_defined_file_split_start_offset(file_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_file_split_start_offset
+      INTEGER (kind = C_INTPTR_T), VALUE :: file_hdl
+    END FUNCTION cxios_is_defined_file_split_start_offset
+
+
     SUBROUTINE cxios_set_file_sync_freq(file_hdl, sync_freq) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/filegroup_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/filegroup_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/filegroup_interface_attr.F90	(revision 1545)
@@ -29,4 +29,25 @@
 
 
+    SUBROUTINE cxios_set_filegroup_comment(filegroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_filegroup_comment
+
+    SUBROUTINE cxios_get_filegroup_comment(filegroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_filegroup_comment
+
+    FUNCTION cxios_is_defined_filegroup_comment(filegroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+    END FUNCTION cxios_is_defined_filegroup_comment
+
+
     SUBROUTINE cxios_set_filegroup_compression_level(filegroup_hdl, compression_level) BIND(C)
       USE ISO_C_BINDING
@@ -334,4 +355,23 @@
 
 
+    SUBROUTINE cxios_set_filegroup_read_metadata_par(filegroup_hdl, read_metadata_par) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: read_metadata_par
+    END SUBROUTINE cxios_set_filegroup_read_metadata_par
+
+    SUBROUTINE cxios_get_filegroup_read_metadata_par(filegroup_hdl, read_metadata_par) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      LOGICAL (KIND=C_BOOL)             :: read_metadata_par
+    END SUBROUTINE cxios_get_filegroup_read_metadata_par
+
+    FUNCTION cxios_is_defined_filegroup_read_metadata_par(filegroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_read_metadata_par
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+    END FUNCTION cxios_is_defined_filegroup_read_metadata_par
+
+
     SUBROUTINE cxios_set_filegroup_record_offset(filegroup_hdl, record_offset) BIND(C)
       USE ISO_C_BINDING
@@ -351,4 +391,25 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
     END FUNCTION cxios_is_defined_filegroup_record_offset
+
+
+    SUBROUTINE cxios_set_filegroup_split_end_offset(filegroup_hdl, split_end_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      TYPE(txios(duration)), VALUE :: split_end_offset
+    END SUBROUTINE cxios_set_filegroup_split_end_offset
+
+    SUBROUTINE cxios_get_filegroup_split_end_offset(filegroup_hdl, split_end_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      TYPE(txios(duration)) :: split_end_offset
+    END SUBROUTINE cxios_get_filegroup_split_end_offset
+
+    FUNCTION cxios_is_defined_filegroup_split_end_offset(filegroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_split_end_offset
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+    END FUNCTION cxios_is_defined_filegroup_split_end_offset
 
 
@@ -395,4 +456,46 @@
 
 
+    SUBROUTINE cxios_set_filegroup_split_last_date(filegroup_hdl, split_last_date, split_last_date_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: split_last_date
+      INTEGER  (kind = C_INT)     , VALUE        :: split_last_date_size
+    END SUBROUTINE cxios_set_filegroup_split_last_date
+
+    SUBROUTINE cxios_get_filegroup_split_last_date(filegroup_hdl, split_last_date, split_last_date_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: split_last_date
+      INTEGER  (kind = C_INT)     , VALUE        :: split_last_date_size
+    END SUBROUTINE cxios_get_filegroup_split_last_date
+
+    FUNCTION cxios_is_defined_filegroup_split_last_date(filegroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_split_last_date
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+    END FUNCTION cxios_is_defined_filegroup_split_last_date
+
+
+    SUBROUTINE cxios_set_filegroup_split_start_offset(filegroup_hdl, split_start_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      TYPE(txios(duration)), VALUE :: split_start_offset
+    END SUBROUTINE cxios_set_filegroup_split_start_offset
+
+    SUBROUTINE cxios_get_filegroup_split_start_offset(filegroup_hdl, split_start_offset) BIND(C)
+      USE ISO_C_BINDING
+      USE IDURATION
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+      TYPE(txios(duration)) :: split_start_offset
+    END SUBROUTINE cxios_get_filegroup_split_start_offset
+
+    FUNCTION cxios_is_defined_filegroup_split_start_offset(filegroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_filegroup_split_start_offset
+      INTEGER (kind = C_INTPTR_T), VALUE :: filegroup_hdl
+    END FUNCTION cxios_is_defined_filegroup_split_start_offset
+
+
     SUBROUTINE cxios_set_filegroup_sync_freq(filegroup_hdl, sync_freq) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/grid_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/grid_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/grid_interface_attr.F90	(revision 1545)
@@ -10,4 +10,25 @@
     ! Do not call directly / interface FORTRAN 2003 <-> C99
 
+    SUBROUTINE cxios_set_grid_comment(grid_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_grid_comment
+
+    SUBROUTINE cxios_get_grid_comment(grid_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_grid_comment
+
+    FUNCTION cxios_is_defined_grid_comment(grid_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+    END FUNCTION cxios_is_defined_grid_comment
+
+
     SUBROUTINE cxios_set_grid_description(grid_hdl, description, description_size) BIND(C)
       USE ISO_C_BINDING
@@ -31,4 +52,25 @@
 
 
+    SUBROUTINE cxios_set_grid_mask_0d(grid_hdl, mask_0d, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_0d
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_set_grid_mask_0d
+
+    SUBROUTINE cxios_get_grid_mask_0d(grid_hdl, mask_0d, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: grid_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_0d
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_get_grid_mask_0d
+
+    FUNCTION cxios_is_defined_grid_mask_0d(grid_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_grid_mask_0d
+      INTEGER (kind = C_INTPTR_T), VALUE :: grid_hdl
+    END FUNCTION cxios_is_defined_grid_mask_0d
+
+
     SUBROUTINE cxios_set_grid_mask_1d(grid_hdl, mask_1d, extent) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/gridgroup_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/gridgroup_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/gridgroup_interface_attr.F90	(revision 1545)
@@ -10,4 +10,25 @@
     ! Do not call directly / interface FORTRAN 2003 <-> C99
 
+    SUBROUTINE cxios_set_gridgroup_comment(gridgroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_gridgroup_comment
+
+    SUBROUTINE cxios_get_gridgroup_comment(gridgroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_gridgroup_comment
+
+    FUNCTION cxios_is_defined_gridgroup_comment(gridgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+    END FUNCTION cxios_is_defined_gridgroup_comment
+
+
     SUBROUTINE cxios_set_gridgroup_description(gridgroup_hdl, description, description_size) BIND(C)
       USE ISO_C_BINDING
@@ -52,4 +73,25 @@
 
 
+    SUBROUTINE cxios_set_gridgroup_mask_0d(gridgroup_hdl, mask_0d, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_0d
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_set_gridgroup_mask_0d
+
+    SUBROUTINE cxios_get_gridgroup_mask_0d(gridgroup_hdl, mask_0d, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: gridgroup_hdl
+      LOGICAL (KIND=C_BOOL)     , DIMENSION(*) :: mask_0d
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_get_gridgroup_mask_0d
+
+    FUNCTION cxios_is_defined_gridgroup_mask_0d(gridgroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_gridgroup_mask_0d
+      INTEGER (kind = C_INTPTR_T), VALUE :: gridgroup_hdl
+    END FUNCTION cxios_is_defined_gridgroup_mask_0d
+
+
     SUBROUTINE cxios_set_gridgroup_mask_1d(gridgroup_hdl, mask_1d, extent) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/iaxis_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/iaxis_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/iaxis_attr.F90	(revision 1545)
@@ -12,7 +12,8 @@
 
   SUBROUTINE xios(set_axis_attr)  &
-    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-    , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-     )
+    ( axis_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+    , value )
 
     IMPLICIT NONE
@@ -20,9 +21,17 @@
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
       INTEGER  , OPTIONAL, INTENT(IN) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_bounds
       INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
       CHARACTER(len=*) , OPTIONAL, INTENT(IN) :: label(:)
@@ -43,23 +52,33 @@
       (axis_id,axis_hdl)
       CALL xios(set_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-      , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-       )
+      ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+      , value )
 
   END SUBROUTINE xios(set_axis_attr)
 
   SUBROUTINE xios(set_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-    , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-     )
+    ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+    , value )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
       INTEGER  , OPTIONAL, INTENT(IN) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_bounds
       INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
       CHARACTER(len=*) , OPTIONAL, INTENT(IN) :: label(:)
@@ -78,23 +97,33 @@
 
       CALL xios(set_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-      , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-       )
+      ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+      , value )
 
   END SUBROUTINE xios(set_axis_attr_hdl)
 
   SUBROUTINE xios(set_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, index_, label_, long_name_  &
-    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_, unit_  &
-    , value_ )
+    ( axis_hdl, axis_ref_, axis_type_, begin_, bounds_, bounds_name_, comment_, data_begin_, data_index_  &
+    , data_n_, dim_name_, formula_, formula_bounds_, formula_term_, formula_term_bounds_, index_  &
+    , label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_  &
+    , unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type_
       INTEGER  , OPTIONAL, INTENT(IN) :: begin_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_bounds_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_bounds_
       INTEGER  , OPTIONAL, INTENT(IN) :: index_(:)
       CHARACTER(len=*) , OPTIONAL, INTENT(IN) :: label_(:)
@@ -117,4 +146,9 @@
       ENDIF
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_set_axis_axis_type &
+      (axis_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
       IF (PRESENT(begin_)) THEN
         CALL cxios_set_axis_begin &
@@ -127,4 +161,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_set_axis_bounds_name &
+      (axis_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_axis_comment &
+      (axis_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_set_axis_data_begin &
@@ -140,4 +184,29 @@
         CALL cxios_set_axis_data_n &
       (axis_hdl%daddr, data_n_)
+      ENDIF
+
+      IF (PRESENT(dim_name_)) THEN
+        CALL cxios_set_axis_dim_name &
+      (axis_hdl%daddr, dim_name_, len(dim_name_))
+      ENDIF
+
+      IF (PRESENT(formula_)) THEN
+        CALL cxios_set_axis_formula &
+      (axis_hdl%daddr, formula_, len(formula_))
+      ENDIF
+
+      IF (PRESENT(formula_bounds_)) THEN
+        CALL cxios_set_axis_formula_bounds &
+      (axis_hdl%daddr, formula_bounds_, len(formula_bounds_))
+      ENDIF
+
+      IF (PRESENT(formula_term_)) THEN
+        CALL cxios_set_axis_formula_term &
+      (axis_hdl%daddr, formula_term_, len(formula_term_))
+      ENDIF
+
+      IF (PRESENT(formula_term_bounds_)) THEN
+        CALL cxios_set_axis_formula_term_bounds &
+      (axis_hdl%daddr, formula_term_bounds_, len(formula_term_bounds_))
       ENDIF
 
@@ -212,7 +281,8 @@
 
   SUBROUTINE xios(get_axis_attr)  &
-    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-    , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-     )
+    ( axis_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+    , value )
 
     IMPLICIT NONE
@@ -220,9 +290,17 @@
       CHARACTER(LEN=*), INTENT(IN) ::axis_id
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
       INTEGER  , OPTIONAL, INTENT(OUT) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_bounds
       INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
       CHARACTER(len=*) , OPTIONAL, INTENT(OUT) :: label(:)
@@ -243,23 +321,33 @@
       (axis_id,axis_hdl)
       CALL xios(get_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-      , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-       )
+      ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+      , value )
 
   END SUBROUTINE xios(get_axis_attr)
 
   SUBROUTINE xios(get_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-    , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-     )
+    ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+    , value )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
       INTEGER  , OPTIONAL, INTENT(OUT) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_bounds
       INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
       CHARACTER(len=*) , OPTIONAL, INTENT(OUT) :: label(:)
@@ -278,23 +366,33 @@
 
       CALL xios(get_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-      , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-       )
+      ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+      , value )
 
   END SUBROUTINE xios(get_axis_attr_hdl)
 
   SUBROUTINE xios(get_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, index_, label_, long_name_  &
-    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_, unit_  &
-    , value_ )
+    ( axis_hdl, axis_ref_, axis_type_, begin_, bounds_, bounds_name_, comment_, data_begin_, data_index_  &
+    , data_n_, dim_name_, formula_, formula_bounds_, formula_term_, formula_term_bounds_, index_  &
+    , label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_  &
+    , unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(axis)) , INTENT(IN) :: axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type_
       INTEGER  , OPTIONAL, INTENT(OUT) :: begin_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_bounds_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_bounds_
       INTEGER  , OPTIONAL, INTENT(OUT) :: index_(:)
       CHARACTER(len=*) , OPTIONAL, INTENT(OUT) :: label_(:)
@@ -317,4 +415,9 @@
       ENDIF
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_get_axis_axis_type &
+      (axis_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
       IF (PRESENT(begin_)) THEN
         CALL cxios_get_axis_begin &
@@ -327,4 +430,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_get_axis_bounds_name &
+      (axis_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_axis_comment &
+      (axis_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_get_axis_data_begin &
@@ -340,4 +453,29 @@
         CALL cxios_get_axis_data_n &
       (axis_hdl%daddr, data_n_)
+      ENDIF
+
+      IF (PRESENT(dim_name_)) THEN
+        CALL cxios_get_axis_dim_name &
+      (axis_hdl%daddr, dim_name_, len(dim_name_))
+      ENDIF
+
+      IF (PRESENT(formula_)) THEN
+        CALL cxios_get_axis_formula &
+      (axis_hdl%daddr, formula_, len(formula_))
+      ENDIF
+
+      IF (PRESENT(formula_bounds_)) THEN
+        CALL cxios_get_axis_formula_bounds &
+      (axis_hdl%daddr, formula_bounds_, len(formula_bounds_))
+      ENDIF
+
+      IF (PRESENT(formula_term_)) THEN
+        CALL cxios_get_axis_formula_term &
+      (axis_hdl%daddr, formula_term_, len(formula_term_))
+      ENDIF
+
+      IF (PRESENT(formula_term_bounds_)) THEN
+        CALL cxios_get_axis_formula_term_bounds &
+      (axis_hdl%daddr, formula_term_bounds_, len(formula_term_bounds_))
       ENDIF
 
@@ -412,7 +550,8 @@
 
   SUBROUTINE xios(is_defined_axis_attr)  &
-    ( axis_id, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-    , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-     )
+    ( axis_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+    , value )
 
     IMPLICIT NONE
@@ -421,8 +560,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: begin
       LOGICAL(KIND=C_BOOL) :: begin_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
       LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -431,4 +576,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n
       LOGICAL(KIND=C_BOOL) :: data_n_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_name
+      LOGICAL(KIND=C_BOOL) :: dim_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula
+      LOGICAL(KIND=C_BOOL) :: formula_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term
+      LOGICAL(KIND=C_BOOL) :: formula_term_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_term_bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: index
       LOGICAL(KIND=C_BOOL) :: index_tmp
@@ -461,14 +616,16 @@
       (axis_id,axis_hdl)
       CALL xios(is_defined_axis_attr_hdl_)   &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-      , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-       )
+      ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+      , value )
 
   END SUBROUTINE xios(is_defined_axis_attr)
 
   SUBROUTINE xios(is_defined_axis_attr_hdl)  &
-    ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-    , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-     )
+    ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+    , value )
 
     IMPLICIT NONE
@@ -476,8 +633,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: begin
       LOGICAL(KIND=C_BOOL) :: begin_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
       LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -486,4 +649,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n
       LOGICAL(KIND=C_BOOL) :: data_n_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_name
+      LOGICAL(KIND=C_BOOL) :: dim_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula
+      LOGICAL(KIND=C_BOOL) :: formula_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term
+      LOGICAL(KIND=C_BOOL) :: formula_term_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_term_bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: index
       LOGICAL(KIND=C_BOOL) :: index_tmp
@@ -514,14 +687,16 @@
 
       CALL xios(is_defined_axis_attr_hdl_)  &
-      ( axis_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, index, label, long_name  &
-      , mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit, value  &
-       )
+      ( axis_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, index, label  &
+      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
+      , value )
 
   END SUBROUTINE xios(is_defined_axis_attr_hdl)
 
   SUBROUTINE xios(is_defined_axis_attr_hdl_)   &
-    ( axis_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, index_, label_, long_name_  &
-    , mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_, unit_  &
-    , value_ )
+    ( axis_hdl, axis_ref_, axis_type_, begin_, bounds_, bounds_name_, comment_, data_begin_, data_index_  &
+    , data_n_, dim_name_, formula_, formula_bounds_, formula_term_, formula_term_bounds_, index_  &
+    , label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_  &
+    , unit_, value_ )
 
     IMPLICIT NONE
@@ -529,8 +704,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_
       LOGICAL(KIND=C_BOOL) :: axis_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type_
+      LOGICAL(KIND=C_BOOL) :: axis_type__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: begin_
       LOGICAL(KIND=C_BOOL) :: begin__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
       LOGICAL(KIND=C_BOOL) :: bounds__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_
       LOGICAL(KIND=C_BOOL) :: data_begin__tmp
@@ -539,4 +720,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n_
       LOGICAL(KIND=C_BOOL) :: data_n__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_name_
+      LOGICAL(KIND=C_BOOL) :: dim_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_
+      LOGICAL(KIND=C_BOOL) :: formula__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_bounds_
+      LOGICAL(KIND=C_BOOL) :: formula_bounds__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_
+      LOGICAL(KIND=C_BOOL) :: formula_term__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_bounds_
+      LOGICAL(KIND=C_BOOL) :: formula_term_bounds__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: index_
       LOGICAL(KIND=C_BOOL) :: index__tmp
@@ -572,4 +763,10 @@
       ENDIF
 
+      IF (PRESENT(axis_type_)) THEN
+        axis_type__tmp = cxios_is_defined_axis_axis_type &
+      (axis_hdl%daddr)
+        axis_type_ = axis_type__tmp
+      ENDIF
+
       IF (PRESENT(begin_)) THEN
         begin__tmp = cxios_is_defined_axis_begin &
@@ -584,4 +781,16 @@
       ENDIF
 
+      IF (PRESENT(bounds_name_)) THEN
+        bounds_name__tmp = cxios_is_defined_axis_bounds_name &
+      (axis_hdl%daddr)
+        bounds_name_ = bounds_name__tmp
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_axis_comment &
+      (axis_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         data_begin__tmp = cxios_is_defined_axis_data_begin &
@@ -602,4 +811,34 @@
       ENDIF
 
+      IF (PRESENT(dim_name_)) THEN
+        dim_name__tmp = cxios_is_defined_axis_dim_name &
+      (axis_hdl%daddr)
+        dim_name_ = dim_name__tmp
+      ENDIF
+
+      IF (PRESENT(formula_)) THEN
+        formula__tmp = cxios_is_defined_axis_formula &
+      (axis_hdl%daddr)
+        formula_ = formula__tmp
+      ENDIF
+
+      IF (PRESENT(formula_bounds_)) THEN
+        formula_bounds__tmp = cxios_is_defined_axis_formula_bounds &
+      (axis_hdl%daddr)
+        formula_bounds_ = formula_bounds__tmp
+      ENDIF
+
+      IF (PRESENT(formula_term_)) THEN
+        formula_term__tmp = cxios_is_defined_axis_formula_term &
+      (axis_hdl%daddr)
+        formula_term_ = formula_term__tmp
+      ENDIF
+
+      IF (PRESENT(formula_term_bounds_)) THEN
+        formula_term_bounds__tmp = cxios_is_defined_axis_formula_term_bounds &
+      (axis_hdl%daddr)
+        formula_term_bounds_ = formula_term_bounds__tmp
+      ENDIF
+
       IF (PRESENT(index_)) THEN
         index__tmp = cxios_is_defined_axis_index &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/iaxisgroup_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/iaxisgroup_attr.F90	(revision 1545)
@@ -12,7 +12,8 @@
 
   SUBROUTINE xios(set_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-    , value )
+    ( axisgroup_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+    , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+    , unit, value )
 
     IMPLICIT NONE
@@ -20,9 +21,17 @@
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
       INTEGER  , OPTIONAL, INTENT(IN) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_bounds
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
       INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
@@ -44,23 +53,33 @@
       (axisgroup_id,axisgroup_hdl)
       CALL xios(set_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-      , value )
+      ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+      , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+      , unit, value )
 
   END SUBROUTINE xios(set_axisgroup_attr)
 
   SUBROUTINE xios(set_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-    , value )
+    ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+    , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+    , unit, value )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
       INTEGER  , OPTIONAL, INTENT(IN) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_bounds
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
       INTEGER  , OPTIONAL, INTENT(IN) :: index(:)
@@ -80,23 +99,33 @@
 
       CALL xios(set_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-      , value )
+      ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+      , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+      , unit, value )
 
   END SUBROUTINE xios(set_axisgroup_attr_hdl)
 
   SUBROUTINE xios(set_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, index_  &
-    , label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_  &
-    , unit_, value_ )
+    ( axisgroup_hdl, axis_ref_, axis_type_, begin_, bounds_, bounds_name_, comment_, data_begin_  &
+    , data_index_, data_n_, dim_name_, formula_, formula_bounds_, formula_term_, formula_term_bounds_  &
+    , group_ref_, index_, label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_  &
+    , positive_, prec_, standard_name_, unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type_
       INTEGER  , OPTIONAL, INTENT(IN) :: begin_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_index_(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: data_n_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_bounds_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: formula_term_bounds_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
       INTEGER  , OPTIONAL, INTENT(IN) :: index_(:)
@@ -120,4 +149,9 @@
       ENDIF
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_set_axisgroup_axis_type &
+      (axisgroup_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
       IF (PRESENT(begin_)) THEN
         CALL cxios_set_axisgroup_begin &
@@ -130,4 +164,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_set_axisgroup_bounds_name &
+      (axisgroup_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_axisgroup_comment &
+      (axisgroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_set_axisgroup_data_begin &
@@ -143,4 +187,29 @@
         CALL cxios_set_axisgroup_data_n &
       (axisgroup_hdl%daddr, data_n_)
+      ENDIF
+
+      IF (PRESENT(dim_name_)) THEN
+        CALL cxios_set_axisgroup_dim_name &
+      (axisgroup_hdl%daddr, dim_name_, len(dim_name_))
+      ENDIF
+
+      IF (PRESENT(formula_)) THEN
+        CALL cxios_set_axisgroup_formula &
+      (axisgroup_hdl%daddr, formula_, len(formula_))
+      ENDIF
+
+      IF (PRESENT(formula_bounds_)) THEN
+        CALL cxios_set_axisgroup_formula_bounds &
+      (axisgroup_hdl%daddr, formula_bounds_, len(formula_bounds_))
+      ENDIF
+
+      IF (PRESENT(formula_term_)) THEN
+        CALL cxios_set_axisgroup_formula_term &
+      (axisgroup_hdl%daddr, formula_term_, len(formula_term_))
+      ENDIF
+
+      IF (PRESENT(formula_term_bounds_)) THEN
+        CALL cxios_set_axisgroup_formula_term_bounds &
+      (axisgroup_hdl%daddr, formula_term_bounds_, len(formula_term_bounds_))
       ENDIF
 
@@ -220,7 +289,8 @@
 
   SUBROUTINE xios(get_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-    , value )
+    ( axisgroup_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+    , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+    , unit, value )
 
     IMPLICIT NONE
@@ -228,9 +298,17 @@
       CHARACTER(LEN=*), INTENT(IN) ::axisgroup_id
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
       INTEGER  , OPTIONAL, INTENT(OUT) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_bounds
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
       INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
@@ -252,23 +330,33 @@
       (axisgroup_id,axisgroup_hdl)
       CALL xios(get_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-      , value )
+      ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+      , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+      , unit, value )
 
   END SUBROUTINE xios(get_axisgroup_attr)
 
   SUBROUTINE xios(get_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-    , value )
+    ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+    , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+    , unit, value )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
       INTEGER  , OPTIONAL, INTENT(OUT) :: begin
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_bounds
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_bounds
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
       INTEGER  , OPTIONAL, INTENT(OUT) :: index(:)
@@ -288,23 +376,33 @@
 
       CALL xios(get_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-      , value )
+      ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+      , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+      , unit, value )
 
   END SUBROUTINE xios(get_axisgroup_attr_hdl)
 
   SUBROUTINE xios(get_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, index_  &
-    , label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_  &
-    , unit_, value_ )
+    ( axisgroup_hdl, axis_ref_, axis_type_, begin_, bounds_, bounds_name_, comment_, data_begin_  &
+    , data_index_, data_n_, dim_name_, formula_, formula_bounds_, formula_term_, formula_term_bounds_  &
+    , group_ref_, index_, label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_  &
+    , positive_, prec_, standard_name_, unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(axisgroup)) , INTENT(IN) :: axisgroup_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type_
       INTEGER  , OPTIONAL, INTENT(OUT) :: begin_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_begin_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_index_(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_n_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_bounds_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: formula_term_bounds_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
       INTEGER  , OPTIONAL, INTENT(OUT) :: index_(:)
@@ -328,4 +426,9 @@
       ENDIF
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_get_axisgroup_axis_type &
+      (axisgroup_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
       IF (PRESENT(begin_)) THEN
         CALL cxios_get_axisgroup_begin &
@@ -338,4 +441,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_get_axisgroup_bounds_name &
+      (axisgroup_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_axisgroup_comment &
+      (axisgroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         CALL cxios_get_axisgroup_data_begin &
@@ -351,4 +464,29 @@
         CALL cxios_get_axisgroup_data_n &
       (axisgroup_hdl%daddr, data_n_)
+      ENDIF
+
+      IF (PRESENT(dim_name_)) THEN
+        CALL cxios_get_axisgroup_dim_name &
+      (axisgroup_hdl%daddr, dim_name_, len(dim_name_))
+      ENDIF
+
+      IF (PRESENT(formula_)) THEN
+        CALL cxios_get_axisgroup_formula &
+      (axisgroup_hdl%daddr, formula_, len(formula_))
+      ENDIF
+
+      IF (PRESENT(formula_bounds_)) THEN
+        CALL cxios_get_axisgroup_formula_bounds &
+      (axisgroup_hdl%daddr, formula_bounds_, len(formula_bounds_))
+      ENDIF
+
+      IF (PRESENT(formula_term_)) THEN
+        CALL cxios_get_axisgroup_formula_term &
+      (axisgroup_hdl%daddr, formula_term_, len(formula_term_))
+      ENDIF
+
+      IF (PRESENT(formula_term_bounds_)) THEN
+        CALL cxios_get_axisgroup_formula_term_bounds &
+      (axisgroup_hdl%daddr, formula_term_bounds_, len(formula_term_bounds_))
       ENDIF
 
@@ -428,7 +566,8 @@
 
   SUBROUTINE xios(is_defined_axisgroup_attr)  &
-    ( axisgroup_id, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-    , value )
+    ( axisgroup_id, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+    , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+    , unit, value )
 
     IMPLICIT NONE
@@ -437,8 +576,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: begin
       LOGICAL(KIND=C_BOOL) :: begin_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
       LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -447,4 +592,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n
       LOGICAL(KIND=C_BOOL) :: data_n_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_name
+      LOGICAL(KIND=C_BOOL) :: dim_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula
+      LOGICAL(KIND=C_BOOL) :: formula_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term
+      LOGICAL(KIND=C_BOOL) :: formula_term_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_term_bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
@@ -479,14 +634,16 @@
       (axisgroup_id,axisgroup_hdl)
       CALL xios(is_defined_axisgroup_attr_hdl_)   &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-      , value )
+      ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+      , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+      , unit, value )
 
   END SUBROUTINE xios(is_defined_axisgroup_attr)
 
   SUBROUTINE xios(is_defined_axisgroup_attr_hdl)  &
-    ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-    , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-    , value )
+    ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+    , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+    , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+    , unit, value )
 
     IMPLICIT NONE
@@ -494,8 +651,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref
       LOGICAL(KIND=C_BOOL) :: axis_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: begin
       LOGICAL(KIND=C_BOOL) :: begin_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
       LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin
       LOGICAL(KIND=C_BOOL) :: data_begin_tmp
@@ -504,4 +667,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n
       LOGICAL(KIND=C_BOOL) :: data_n_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_name
+      LOGICAL(KIND=C_BOOL) :: dim_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula
+      LOGICAL(KIND=C_BOOL) :: formula_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term
+      LOGICAL(KIND=C_BOOL) :: formula_term_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_bounds
+      LOGICAL(KIND=C_BOOL) :: formula_term_bounds_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
@@ -534,14 +707,16 @@
 
       CALL xios(is_defined_axisgroup_attr_hdl_)  &
-      ( axisgroup_hdl, axis_ref, begin, bounds, data_begin, data_index, data_n, group_ref, index, label  &
-      , long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name, unit  &
-      , value )
+      ( axisgroup_hdl, axis_ref, axis_type, begin, bounds, bounds_name, comment, data_begin, data_index  &
+      , data_n, dim_name, formula, formula_bounds, formula_term, formula_term_bounds, group_ref, index  &
+      , label, long_name, mask, n, n_distributed_partition, n_glo, name, positive, prec, standard_name  &
+      , unit, value )
 
   END SUBROUTINE xios(is_defined_axisgroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_axisgroup_attr_hdl_)   &
-    ( axisgroup_hdl, axis_ref_, begin_, bounds_, data_begin_, data_index_, data_n_, group_ref_, index_  &
-    , label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_, positive_, prec_, standard_name_  &
-    , unit_, value_ )
+    ( axisgroup_hdl, axis_ref_, axis_type_, begin_, bounds_, bounds_name_, comment_, data_begin_  &
+    , data_index_, data_n_, dim_name_, formula_, formula_bounds_, formula_term_, formula_term_bounds_  &
+    , group_ref_, index_, label_, long_name_, mask_, n_, n_distributed_partition_, n_glo_, name_  &
+    , positive_, prec_, standard_name_, unit_, value_ )
 
     IMPLICIT NONE
@@ -549,8 +724,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: axis_ref_
       LOGICAL(KIND=C_BOOL) :: axis_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type_
+      LOGICAL(KIND=C_BOOL) :: axis_type__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: begin_
       LOGICAL(KIND=C_BOOL) :: begin__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
       LOGICAL(KIND=C_BOOL) :: bounds__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_begin_
       LOGICAL(KIND=C_BOOL) :: data_begin__tmp
@@ -559,4 +740,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_n_
       LOGICAL(KIND=C_BOOL) :: data_n__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_name_
+      LOGICAL(KIND=C_BOOL) :: dim_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_
+      LOGICAL(KIND=C_BOOL) :: formula__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_bounds_
+      LOGICAL(KIND=C_BOOL) :: formula_bounds__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_
+      LOGICAL(KIND=C_BOOL) :: formula_term__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: formula_term_bounds_
+      LOGICAL(KIND=C_BOOL) :: formula_term_bounds__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
       LOGICAL(KIND=C_BOOL) :: group_ref__tmp
@@ -594,4 +785,10 @@
       ENDIF
 
+      IF (PRESENT(axis_type_)) THEN
+        axis_type__tmp = cxios_is_defined_axisgroup_axis_type &
+      (axisgroup_hdl%daddr)
+        axis_type_ = axis_type__tmp
+      ENDIF
+
       IF (PRESENT(begin_)) THEN
         begin__tmp = cxios_is_defined_axisgroup_begin &
@@ -606,4 +803,16 @@
       ENDIF
 
+      IF (PRESENT(bounds_name_)) THEN
+        bounds_name__tmp = cxios_is_defined_axisgroup_bounds_name &
+      (axisgroup_hdl%daddr)
+        bounds_name_ = bounds_name__tmp
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_axisgroup_comment &
+      (axisgroup_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(data_begin_)) THEN
         data_begin__tmp = cxios_is_defined_axisgroup_data_begin &
@@ -624,4 +833,34 @@
       ENDIF
 
+      IF (PRESENT(dim_name_)) THEN
+        dim_name__tmp = cxios_is_defined_axisgroup_dim_name &
+      (axisgroup_hdl%daddr)
+        dim_name_ = dim_name__tmp
+      ENDIF
+
+      IF (PRESENT(formula_)) THEN
+        formula__tmp = cxios_is_defined_axisgroup_formula &
+      (axisgroup_hdl%daddr)
+        formula_ = formula__tmp
+      ENDIF
+
+      IF (PRESENT(formula_bounds_)) THEN
+        formula_bounds__tmp = cxios_is_defined_axisgroup_formula_bounds &
+      (axisgroup_hdl%daddr)
+        formula_bounds_ = formula_bounds__tmp
+      ENDIF
+
+      IF (PRESENT(formula_term_)) THEN
+        formula_term__tmp = cxios_is_defined_axisgroup_formula_term &
+      (axisgroup_hdl%daddr)
+        formula_term_ = formula_term__tmp
+      ENDIF
+
+      IF (PRESENT(formula_term_bounds_)) THEN
+        formula_term_bounds__tmp = cxios_is_defined_axisgroup_formula_term_bounds &
+      (axisgroup_hdl%daddr)
+        formula_term_bounds_ = formula_term_bounds__tmp
+      ENDIF
+
       IF (PRESENT(group_ref_)) THEN
         group_ref__tmp = cxios_is_defined_axisgroup_group_ref &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/icalendar_wrapper_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/icalendar_wrapper_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/icalendar_wrapper_attr.F90	(revision 1545)
@@ -12,5 +12,5 @@
 
   SUBROUTINE xios(set_calendar_wrapper_attr)  &
-    ( calendar_wrapper_id, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+    ( calendar_wrapper_id, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
     , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -18,4 +18,5 @@
       TYPE(txios(calendar_wrapper))  :: calendar_wrapper_hdl
       CHARACTER(LEN=*), INTENT(IN) ::calendar_wrapper_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: day_length
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift
@@ -32,5 +33,5 @@
       (calendar_wrapper_id,calendar_wrapper_hdl)
       CALL xios(set_calendar_wrapper_attr_hdl_)   &
-      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+      ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
       , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -38,9 +39,10 @@
 
   SUBROUTINE xios(set_calendar_wrapper_attr_hdl)  &
-    ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
-    , month_lengths, start_date, time_origin, timestep, type, year_length )
-
-    IMPLICIT NONE
-      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+    ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+    , month_lengths, start_date, time_origin, timestep, type, year_length )
+
+    IMPLICIT NONE
+      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: day_length
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift
@@ -55,5 +57,5 @@
 
       CALL xios(set_calendar_wrapper_attr_hdl_)  &
-      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+      ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
       , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -61,9 +63,10 @@
 
   SUBROUTINE xios(set_calendar_wrapper_attr_hdl_)   &
-    ( calendar_wrapper_hdl, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  &
+    ( calendar_wrapper_hdl, comment_, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  &
     , month_lengths_, start_date_, time_origin_, timestep_, type_, year_length_ )
 
     IMPLICIT NONE
       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: day_length_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: leap_year_drift_
@@ -77,4 +80,9 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: year_length_
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_calendar_wrapper_comment &
+      (calendar_wrapper_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(day_length_)) THEN
         CALL cxios_set_calendar_wrapper_day_length &
@@ -130,5 +138,5 @@
 
   SUBROUTINE xios(get_calendar_wrapper_attr)  &
-    ( calendar_wrapper_id, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+    ( calendar_wrapper_id, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
     , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -136,4 +144,5 @@
       TYPE(txios(calendar_wrapper))  :: calendar_wrapper_hdl
       CHARACTER(LEN=*), INTENT(IN) ::calendar_wrapper_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: day_length
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift
@@ -150,5 +159,5 @@
       (calendar_wrapper_id,calendar_wrapper_hdl)
       CALL xios(get_calendar_wrapper_attr_hdl_)   &
-      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+      ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
       , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -156,9 +165,10 @@
 
   SUBROUTINE xios(get_calendar_wrapper_attr_hdl)  &
-    ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
-    , month_lengths, start_date, time_origin, timestep, type, year_length )
-
-    IMPLICIT NONE
-      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+    ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+    , month_lengths, start_date, time_origin, timestep, type, year_length )
+
+    IMPLICIT NONE
+      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: day_length
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift
@@ -173,5 +183,5 @@
 
       CALL xios(get_calendar_wrapper_attr_hdl_)  &
-      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+      ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
       , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -179,9 +189,10 @@
 
   SUBROUTINE xios(get_calendar_wrapper_attr_hdl_)   &
-    ( calendar_wrapper_hdl, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  &
+    ( calendar_wrapper_hdl, comment_, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  &
     , month_lengths_, start_date_, time_origin_, timestep_, type_, year_length_ )
 
     IMPLICIT NONE
       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: day_length_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: leap_year_drift_
@@ -195,4 +206,9 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: year_length_
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_calendar_wrapper_comment &
+      (calendar_wrapper_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(day_length_)) THEN
         CALL cxios_get_calendar_wrapper_day_length &
@@ -248,5 +264,5 @@
 
   SUBROUTINE xios(is_defined_calendar_wrapper_attr)  &
-    ( calendar_wrapper_id, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+    ( calendar_wrapper_id, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
     , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -254,4 +270,6 @@
       TYPE(txios(calendar_wrapper))  :: calendar_wrapper_hdl
       CHARACTER(LEN=*), INTENT(IN) ::calendar_wrapper_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: day_length
       LOGICAL(KIND=C_BOOL) :: day_length_tmp
@@ -278,5 +296,5 @@
       (calendar_wrapper_id,calendar_wrapper_hdl)
       CALL xios(is_defined_calendar_wrapper_attr_hdl_)   &
-      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+      ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
       , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -284,9 +302,11 @@
 
   SUBROUTINE xios(is_defined_calendar_wrapper_attr_hdl)  &
-    ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
-    , month_lengths, start_date, time_origin, timestep, type, year_length )
-
-    IMPLICIT NONE
-      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+    ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+    , month_lengths, start_date, time_origin, timestep, type, year_length )
+
+    IMPLICIT NONE
+      TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: day_length
       LOGICAL(KIND=C_BOOL) :: day_length_tmp
@@ -311,5 +331,5 @@
 
       CALL xios(is_defined_calendar_wrapper_attr_hdl_)  &
-      ( calendar_wrapper_hdl, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
+      ( calendar_wrapper_hdl, comment, day_length, leap_year_drift, leap_year_drift_offset, leap_year_month  &
       , month_lengths, start_date, time_origin, timestep, type, year_length )
 
@@ -317,9 +337,11 @@
 
   SUBROUTINE xios(is_defined_calendar_wrapper_attr_hdl_)   &
-    ( calendar_wrapper_hdl, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  &
+    ( calendar_wrapper_hdl, comment_, day_length_, leap_year_drift_, leap_year_drift_offset_, leap_year_month_  &
     , month_lengths_, start_date_, time_origin_, timestep_, type_, year_length_ )
 
     IMPLICIT NONE
       TYPE(txios(calendar_wrapper)) , INTENT(IN) :: calendar_wrapper_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: day_length_
       LOGICAL(KIND=C_BOOL) :: day_length__tmp
@@ -343,4 +365,10 @@
       LOGICAL(KIND=C_BOOL) :: year_length__tmp
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_calendar_wrapper_comment &
+      (calendar_wrapper_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(day_length_)) THEN
         day_length__tmp = cxios_is_defined_calendar_wrapper_day_length &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/idomain_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/idomain_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/idomain_attr.F90	(revision 1545)
@@ -12,8 +12,9 @@
 
   SUBROUTINE xios(set_domain_attr)  &
-    ( domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-    , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-    , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-    , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+    , nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -23,6 +24,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
       INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
@@ -32,4 +36,6 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
       INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
       INTEGER  , OPTIONAL, INTENT(IN) :: i_index(:)
@@ -37,6 +43,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_1d(:)
@@ -59,16 +67,18 @@
       (domain_id,domain_hdl)
       CALL xios(set_domain_attr_hdl_)   &
-      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-      , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-      , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-      , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+      , nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(set_domain_attr)
 
   SUBROUTINE xios(set_domain_attr_hdl)  &
-    ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-    , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-    , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-    , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+    , nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -77,6 +87,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
       INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
@@ -86,4 +99,6 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
       INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
       INTEGER  , OPTIONAL, INTENT(IN) :: i_index(:)
@@ -91,6 +106,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_1d(:)
@@ -111,17 +128,18 @@
 
       CALL xios(set_domain_attr_hdl_)  &
-      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-      , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-      , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-      , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+      , nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(set_domain_attr_hdl)
 
   SUBROUTINE xios(set_domain_attr_hdl_)   &
-    ( domain_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lon_1d_, bounds_lon_2d_, data_dim_  &
-    , data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_ni_, data_nj_, domain_ref_  &
-    , i_index_, ibegin_, j_index_, jbegin_, latvalue_1d_, latvalue_2d_, long_name_, lonvalue_1d_  &
-    , lonvalue_2d_, mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_  &
-    , type_ )
+    ( domain_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lat_name_, bounds_lon_1d_, bounds_lon_2d_  &
+    , bounds_lon_name_, comment_, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_  &
+    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, i_index_, ibegin_, j_index_, jbegin_  &
+    , lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_, mask_1d_  &
+    , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_, type_ )
 
     IMPLICIT NONE
@@ -130,6 +148,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lon_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_dim_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index_(:)
@@ -139,4 +160,6 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_ni_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_i_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_j_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_
       INTEGER  , OPTIONAL, INTENT(IN) :: i_index_(:)
@@ -144,6 +167,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: j_index_(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: jbegin_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_1d_(:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_2d_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lon_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_1d_(:)
@@ -178,4 +203,9 @@
       ENDIF
 
+      IF (PRESENT(bounds_lat_name_)) THEN
+        CALL cxios_set_domain_bounds_lat_name &
+      (domain_hdl%daddr, bounds_lat_name_, len(bounds_lat_name_))
+      ENDIF
+
       IF (PRESENT(bounds_lon_1d_)) THEN
         CALL cxios_set_domain_bounds_lon_1d &
@@ -188,4 +218,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_lon_name_)) THEN
+        CALL cxios_set_domain_bounds_lon_name &
+      (domain_hdl%daddr, bounds_lon_name_, len(bounds_lon_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_domain_comment &
+      (domain_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_dim_)) THEN
         CALL cxios_set_domain_data_dim &
@@ -223,4 +263,14 @@
       ENDIF
 
+      IF (PRESENT(dim_i_name_)) THEN
+        CALL cxios_set_domain_dim_i_name &
+      (domain_hdl%daddr, dim_i_name_, len(dim_i_name_))
+      ENDIF
+
+      IF (PRESENT(dim_j_name_)) THEN
+        CALL cxios_set_domain_dim_j_name &
+      (domain_hdl%daddr, dim_j_name_, len(dim_j_name_))
+      ENDIF
+
       IF (PRESENT(domain_ref_)) THEN
         CALL cxios_set_domain_domain_ref &
@@ -248,4 +298,9 @@
       ENDIF
 
+      IF (PRESENT(lat_name_)) THEN
+        CALL cxios_set_domain_lat_name &
+      (domain_hdl%daddr, lat_name_, len(lat_name_))
+      ENDIF
+
       IF (PRESENT(latvalue_1d_)) THEN
         CALL cxios_set_domain_latvalue_1d &
@@ -256,4 +311,9 @@
         CALL cxios_set_domain_latvalue_2d &
       (domain_hdl%daddr, latvalue_2d_, SHAPE(latvalue_2d_))
+      ENDIF
+
+      IF (PRESENT(lon_name_)) THEN
+        CALL cxios_set_domain_lon_name &
+      (domain_hdl%daddr, lon_name_, len(lon_name_))
       ENDIF
 
@@ -335,8 +395,9 @@
 
   SUBROUTINE xios(get_domain_attr)  &
-    ( domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-    , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-    , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-    , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+    , nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -346,6 +407,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
@@ -355,4 +419,6 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
       INTEGER  , OPTIONAL, INTENT(OUT) :: i_index(:)
@@ -360,6 +426,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_1d(:)
@@ -382,16 +450,18 @@
       (domain_id,domain_hdl)
       CALL xios(get_domain_attr_hdl_)   &
-      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-      , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-      , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-      , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+      , nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(get_domain_attr)
 
   SUBROUTINE xios(get_domain_attr_hdl)  &
-    ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-    , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-    , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-    , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+    , nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -400,6 +470,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
@@ -409,4 +482,6 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
       INTEGER  , OPTIONAL, INTENT(OUT) :: i_index(:)
@@ -414,6 +489,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_1d(:)
@@ -434,17 +511,18 @@
 
       CALL xios(get_domain_attr_hdl_)  &
-      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-      , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-      , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-      , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+      , nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(get_domain_attr_hdl)
 
   SUBROUTINE xios(get_domain_attr_hdl_)   &
-    ( domain_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lon_1d_, bounds_lon_2d_, data_dim_  &
-    , data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_ni_, data_nj_, domain_ref_  &
-    , i_index_, ibegin_, j_index_, jbegin_, latvalue_1d_, latvalue_2d_, long_name_, lonvalue_1d_  &
-    , lonvalue_2d_, mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_  &
-    , type_ )
+    ( domain_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lat_name_, bounds_lon_1d_, bounds_lon_2d_  &
+    , bounds_lon_name_, comment_, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_  &
+    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, i_index_, ibegin_, j_index_, jbegin_  &
+    , lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_, mask_1d_  &
+    , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_, type_ )
 
     IMPLICIT NONE
@@ -453,6 +531,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lon_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index_(:)
@@ -462,4 +543,6 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_i_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_j_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_
       INTEGER  , OPTIONAL, INTENT(OUT) :: i_index_(:)
@@ -467,6 +550,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: j_index_(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_1d_(:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_2d_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lon_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_1d_(:)
@@ -501,4 +586,9 @@
       ENDIF
 
+      IF (PRESENT(bounds_lat_name_)) THEN
+        CALL cxios_get_domain_bounds_lat_name &
+      (domain_hdl%daddr, bounds_lat_name_, len(bounds_lat_name_))
+      ENDIF
+
       IF (PRESENT(bounds_lon_1d_)) THEN
         CALL cxios_get_domain_bounds_lon_1d &
@@ -511,4 +601,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_lon_name_)) THEN
+        CALL cxios_get_domain_bounds_lon_name &
+      (domain_hdl%daddr, bounds_lon_name_, len(bounds_lon_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_domain_comment &
+      (domain_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_dim_)) THEN
         CALL cxios_get_domain_data_dim &
@@ -546,4 +646,14 @@
       ENDIF
 
+      IF (PRESENT(dim_i_name_)) THEN
+        CALL cxios_get_domain_dim_i_name &
+      (domain_hdl%daddr, dim_i_name_, len(dim_i_name_))
+      ENDIF
+
+      IF (PRESENT(dim_j_name_)) THEN
+        CALL cxios_get_domain_dim_j_name &
+      (domain_hdl%daddr, dim_j_name_, len(dim_j_name_))
+      ENDIF
+
       IF (PRESENT(domain_ref_)) THEN
         CALL cxios_get_domain_domain_ref &
@@ -571,4 +681,9 @@
       ENDIF
 
+      IF (PRESENT(lat_name_)) THEN
+        CALL cxios_get_domain_lat_name &
+      (domain_hdl%daddr, lat_name_, len(lat_name_))
+      ENDIF
+
       IF (PRESENT(latvalue_1d_)) THEN
         CALL cxios_get_domain_latvalue_1d &
@@ -579,4 +694,9 @@
         CALL cxios_get_domain_latvalue_2d &
       (domain_hdl%daddr, latvalue_2d_, SHAPE(latvalue_2d_))
+      ENDIF
+
+      IF (PRESENT(lon_name_)) THEN
+        CALL cxios_get_domain_lon_name &
+      (domain_hdl%daddr, lon_name_, len(lon_name_))
       ENDIF
 
@@ -658,8 +778,9 @@
 
   SUBROUTINE xios(is_defined_domain_attr)  &
-    ( domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-    , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-    , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-    , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domain_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+    , nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -672,8 +793,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lat_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lon_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim
       LOGICAL(KIND=C_BOOL) :: data_dim_tmp
@@ -690,4 +817,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj
       LOGICAL(KIND=C_BOOL) :: data_nj_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name
+      LOGICAL(KIND=C_BOOL) :: dim_i_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name
+      LOGICAL(KIND=C_BOOL) :: dim_j_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref
       LOGICAL(KIND=C_BOOL) :: domain_ref_tmp
@@ -700,8 +831,12 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin
       LOGICAL(KIND=C_BOOL) :: jbegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name
+      LOGICAL(KIND=C_BOOL) :: lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d
       LOGICAL(KIND=C_BOOL) :: latvalue_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d
       LOGICAL(KIND=C_BOOL) :: latvalue_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name
+      LOGICAL(KIND=C_BOOL) :: lon_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -736,16 +871,18 @@
       (domain_id,domain_hdl)
       CALL xios(is_defined_domain_attr_hdl_)   &
-      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-      , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-      , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-      , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+      , nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(is_defined_domain_attr)
 
   SUBROUTINE xios(is_defined_domain_attr_hdl)  &
-    ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-    , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-    , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-    , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+    , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+    , nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -757,8 +894,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lat_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lon_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim
       LOGICAL(KIND=C_BOOL) :: data_dim_tmp
@@ -775,4 +918,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj
       LOGICAL(KIND=C_BOOL) :: data_nj_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name
+      LOGICAL(KIND=C_BOOL) :: dim_i_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name
+      LOGICAL(KIND=C_BOOL) :: dim_j_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref
       LOGICAL(KIND=C_BOOL) :: domain_ref_tmp
@@ -785,8 +932,12 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin
       LOGICAL(KIND=C_BOOL) :: jbegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name
+      LOGICAL(KIND=C_BOOL) :: lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d
       LOGICAL(KIND=C_BOOL) :: latvalue_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d
       LOGICAL(KIND=C_BOOL) :: latvalue_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name
+      LOGICAL(KIND=C_BOOL) :: lon_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -819,17 +970,18 @@
 
       CALL xios(is_defined_domain_attr_hdl_)  &
-      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim, data_i_index  &
-      , data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, i_index, ibegin, j_index  &
-      , jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name  &
-      , ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domain_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, i_index, ibegin, j_index, jbegin, lat_name, latvalue_1d  &
+      , latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d, name, ni, ni_glo  &
+      , nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(is_defined_domain_attr_hdl)
 
   SUBROUTINE xios(is_defined_domain_attr_hdl_)   &
-    ( domain_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lon_1d_, bounds_lon_2d_, data_dim_  &
-    , data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_ni_, data_nj_, domain_ref_  &
-    , i_index_, ibegin_, j_index_, jbegin_, latvalue_1d_, latvalue_2d_, long_name_, lonvalue_1d_  &
-    , lonvalue_2d_, mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_  &
-    , type_ )
+    ( domain_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lat_name_, bounds_lon_1d_, bounds_lon_2d_  &
+    , bounds_lon_name_, comment_, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_  &
+    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, i_index_, ibegin_, j_index_, jbegin_  &
+    , lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_, mask_1d_  &
+    , mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_, type_ )
 
     IMPLICIT NONE
@@ -841,8 +993,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d_
       LOGICAL(KIND=C_BOOL) :: bounds_lat_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_lat_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d_
       LOGICAL(KIND=C_BOOL) :: bounds_lon_1d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d_
       LOGICAL(KIND=C_BOOL) :: bounds_lon_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_lon_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim_
       LOGICAL(KIND=C_BOOL) :: data_dim__tmp
@@ -859,4 +1017,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj_
       LOGICAL(KIND=C_BOOL) :: data_nj__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name_
+      LOGICAL(KIND=C_BOOL) :: dim_i_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name_
+      LOGICAL(KIND=C_BOOL) :: dim_j_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref_
       LOGICAL(KIND=C_BOOL) :: domain_ref__tmp
@@ -869,8 +1031,12 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin_
       LOGICAL(KIND=C_BOOL) :: jbegin__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name_
+      LOGICAL(KIND=C_BOOL) :: lat_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d_
       LOGICAL(KIND=C_BOOL) :: latvalue_1d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d_
       LOGICAL(KIND=C_BOOL) :: latvalue_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name_
+      LOGICAL(KIND=C_BOOL) :: lon_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
@@ -920,4 +1086,10 @@
       ENDIF
 
+      IF (PRESENT(bounds_lat_name_)) THEN
+        bounds_lat_name__tmp = cxios_is_defined_domain_bounds_lat_name &
+      (domain_hdl%daddr)
+        bounds_lat_name_ = bounds_lat_name__tmp
+      ENDIF
+
       IF (PRESENT(bounds_lon_1d_)) THEN
         bounds_lon_1d__tmp = cxios_is_defined_domain_bounds_lon_1d &
@@ -932,4 +1104,16 @@
       ENDIF
 
+      IF (PRESENT(bounds_lon_name_)) THEN
+        bounds_lon_name__tmp = cxios_is_defined_domain_bounds_lon_name &
+      (domain_hdl%daddr)
+        bounds_lon_name_ = bounds_lon_name__tmp
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_domain_comment &
+      (domain_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(data_dim_)) THEN
         data_dim__tmp = cxios_is_defined_domain_data_dim &
@@ -974,4 +1158,16 @@
       ENDIF
 
+      IF (PRESENT(dim_i_name_)) THEN
+        dim_i_name__tmp = cxios_is_defined_domain_dim_i_name &
+      (domain_hdl%daddr)
+        dim_i_name_ = dim_i_name__tmp
+      ENDIF
+
+      IF (PRESENT(dim_j_name_)) THEN
+        dim_j_name__tmp = cxios_is_defined_domain_dim_j_name &
+      (domain_hdl%daddr)
+        dim_j_name_ = dim_j_name__tmp
+      ENDIF
+
       IF (PRESENT(domain_ref_)) THEN
         domain_ref__tmp = cxios_is_defined_domain_domain_ref &
@@ -1004,4 +1200,10 @@
       ENDIF
 
+      IF (PRESENT(lat_name_)) THEN
+        lat_name__tmp = cxios_is_defined_domain_lat_name &
+      (domain_hdl%daddr)
+        lat_name_ = lat_name__tmp
+      ENDIF
+
       IF (PRESENT(latvalue_1d_)) THEN
         latvalue_1d__tmp = cxios_is_defined_domain_latvalue_1d &
@@ -1016,4 +1218,10 @@
       ENDIF
 
+      IF (PRESENT(lon_name_)) THEN
+        lon_name__tmp = cxios_is_defined_domain_lon_name &
+      (domain_hdl%daddr)
+        lon_name_ = lon_name__tmp
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         long_name__tmp = cxios_is_defined_domain_long_name &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/idomaingroup_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/idomaingroup_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/idomaingroup_attr.F90	(revision 1545)
@@ -12,8 +12,9 @@
 
   SUBROUTINE xios(set_domaingroup_attr)  &
-    ( domaingroup_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-    , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-    , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-    , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domaingroup_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+    , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -23,6 +24,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
       INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
@@ -32,4 +36,6 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
       INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
@@ -38,6 +44,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_1d(:)
@@ -60,16 +68,18 @@
       (domaingroup_id,domaingroup_hdl)
       CALL xios(set_domaingroup_attr_hdl_)   &
-      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-      , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-      , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-      , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+      , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(set_domaingroup_attr)
 
   SUBROUTINE xios(set_domaingroup_attr_hdl)  &
-    ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-    , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-    , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-    , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+    , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -78,6 +88,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: data_dim
       INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index(:)
@@ -87,4 +100,6 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_ni
       INTEGER  , OPTIONAL, INTENT(IN) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
@@ -93,6 +108,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_1d(:)
@@ -113,17 +130,19 @@
 
       CALL xios(set_domaingroup_attr_hdl_)  &
-      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-      , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-      , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-      , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+      , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(set_domaingroup_attr_hdl)
 
   SUBROUTINE xios(set_domaingroup_attr_hdl_)   &
-    ( domaingroup_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lon_1d_, bounds_lon_2d_, data_dim_  &
-    , data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_ni_, data_nj_, domain_ref_  &
-    , group_ref_, i_index_, ibegin_, j_index_, jbegin_, latvalue_1d_, latvalue_2d_, long_name_, lonvalue_1d_  &
-    , lonvalue_2d_, mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_  &
-    , type_ )
+    ( domaingroup_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lat_name_, bounds_lon_1d_, bounds_lon_2d_  &
+    , bounds_lon_name_, comment_, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_  &
+    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, group_ref_, i_index_, ibegin_, j_index_  &
+    , jbegin_, lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_  &
+    , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_, type_  &
+     )
 
     IMPLICIT NONE
@@ -132,6 +151,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lat_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_lon_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_lon_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_dim_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_i_index_(:)
@@ -141,4 +163,6 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: data_ni_
       INTEGER  , OPTIONAL, INTENT(IN) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_i_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: dim_j_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: domain_ref_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
@@ -147,6 +171,8 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: j_index_(:)
       INTEGER  , OPTIONAL, INTENT(IN) :: jbegin_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_1d_(:)
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: latvalue_2d_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: lon_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: lonvalue_1d_(:)
@@ -181,4 +207,9 @@
       ENDIF
 
+      IF (PRESENT(bounds_lat_name_)) THEN
+        CALL cxios_set_domaingroup_bounds_lat_name &
+      (domaingroup_hdl%daddr, bounds_lat_name_, len(bounds_lat_name_))
+      ENDIF
+
       IF (PRESENT(bounds_lon_1d_)) THEN
         CALL cxios_set_domaingroup_bounds_lon_1d &
@@ -191,4 +222,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_lon_name_)) THEN
+        CALL cxios_set_domaingroup_bounds_lon_name &
+      (domaingroup_hdl%daddr, bounds_lon_name_, len(bounds_lon_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_domaingroup_comment &
+      (domaingroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_dim_)) THEN
         CALL cxios_set_domaingroup_data_dim &
@@ -226,4 +267,14 @@
       ENDIF
 
+      IF (PRESENT(dim_i_name_)) THEN
+        CALL cxios_set_domaingroup_dim_i_name &
+      (domaingroup_hdl%daddr, dim_i_name_, len(dim_i_name_))
+      ENDIF
+
+      IF (PRESENT(dim_j_name_)) THEN
+        CALL cxios_set_domaingroup_dim_j_name &
+      (domaingroup_hdl%daddr, dim_j_name_, len(dim_j_name_))
+      ENDIF
+
       IF (PRESENT(domain_ref_)) THEN
         CALL cxios_set_domaingroup_domain_ref &
@@ -256,4 +307,9 @@
       ENDIF
 
+      IF (PRESENT(lat_name_)) THEN
+        CALL cxios_set_domaingroup_lat_name &
+      (domaingroup_hdl%daddr, lat_name_, len(lat_name_))
+      ENDIF
+
       IF (PRESENT(latvalue_1d_)) THEN
         CALL cxios_set_domaingroup_latvalue_1d &
@@ -264,4 +320,9 @@
         CALL cxios_set_domaingroup_latvalue_2d &
       (domaingroup_hdl%daddr, latvalue_2d_, SHAPE(latvalue_2d_))
+      ENDIF
+
+      IF (PRESENT(lon_name_)) THEN
+        CALL cxios_set_domaingroup_lon_name &
+      (domaingroup_hdl%daddr, lon_name_, len(lon_name_))
       ENDIF
 
@@ -343,8 +404,9 @@
 
   SUBROUTINE xios(get_domaingroup_attr)  &
-    ( domaingroup_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-    , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-    , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-    , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domaingroup_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+    , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -354,6 +416,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
@@ -363,4 +428,6 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
@@ -369,6 +436,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_1d(:)
@@ -391,16 +460,18 @@
       (domaingroup_id,domaingroup_hdl)
       CALL xios(get_domaingroup_attr_hdl_)   &
-      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-      , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-      , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-      , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+      , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(get_domaingroup_attr)
 
   SUBROUTINE xios(get_domaingroup_attr_hdl)  &
-    ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-    , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-    , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-    , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+    , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -409,6 +480,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_1d(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_2d(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index(:)
@@ -418,4 +492,6 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_i_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_j_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
@@ -424,6 +500,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: j_index(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lat_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_1d(:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_2d(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lon_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_1d(:)
@@ -444,17 +522,19 @@
 
       CALL xios(get_domaingroup_attr_hdl_)  &
-      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-      , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-      , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-      , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+      , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(get_domaingroup_attr_hdl)
 
   SUBROUTINE xios(get_domaingroup_attr_hdl_)   &
-    ( domaingroup_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lon_1d_, bounds_lon_2d_, data_dim_  &
-    , data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_ni_, data_nj_, domain_ref_  &
-    , group_ref_, i_index_, ibegin_, j_index_, jbegin_, latvalue_1d_, latvalue_2d_, long_name_, lonvalue_1d_  &
-    , lonvalue_2d_, mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_  &
-    , type_ )
+    ( domaingroup_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lat_name_, bounds_lon_1d_, bounds_lon_2d_  &
+    , bounds_lon_name_, comment_, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_  &
+    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, group_ref_, i_index_, ibegin_, j_index_  &
+    , jbegin_, lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_  &
+    , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_, type_  &
+     )
 
     IMPLICIT NONE
@@ -463,6 +543,9 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lat_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_1d_(:,:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_lon_2d_(:,:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_lon_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_dim_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_i_index_(:)
@@ -472,4 +555,6 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_ni_
       INTEGER  , OPTIONAL, INTENT(OUT) :: data_nj_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_i_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: dim_j_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: domain_ref_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
@@ -478,6 +563,8 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: j_index_(:)
       INTEGER  , OPTIONAL, INTENT(OUT) :: jbegin_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lat_name_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_1d_(:)
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: latvalue_2d_(:,:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: lon_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: lonvalue_1d_(:)
@@ -512,4 +599,9 @@
       ENDIF
 
+      IF (PRESENT(bounds_lat_name_)) THEN
+        CALL cxios_get_domaingroup_bounds_lat_name &
+      (domaingroup_hdl%daddr, bounds_lat_name_, len(bounds_lat_name_))
+      ENDIF
+
       IF (PRESENT(bounds_lon_1d_)) THEN
         CALL cxios_get_domaingroup_bounds_lon_1d &
@@ -522,4 +614,14 @@
       ENDIF
 
+      IF (PRESENT(bounds_lon_name_)) THEN
+        CALL cxios_get_domaingroup_bounds_lon_name &
+      (domaingroup_hdl%daddr, bounds_lon_name_, len(bounds_lon_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_domaingroup_comment &
+      (domaingroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(data_dim_)) THEN
         CALL cxios_get_domaingroup_data_dim &
@@ -557,4 +659,14 @@
       ENDIF
 
+      IF (PRESENT(dim_i_name_)) THEN
+        CALL cxios_get_domaingroup_dim_i_name &
+      (domaingroup_hdl%daddr, dim_i_name_, len(dim_i_name_))
+      ENDIF
+
+      IF (PRESENT(dim_j_name_)) THEN
+        CALL cxios_get_domaingroup_dim_j_name &
+      (domaingroup_hdl%daddr, dim_j_name_, len(dim_j_name_))
+      ENDIF
+
       IF (PRESENT(domain_ref_)) THEN
         CALL cxios_get_domaingroup_domain_ref &
@@ -587,4 +699,9 @@
       ENDIF
 
+      IF (PRESENT(lat_name_)) THEN
+        CALL cxios_get_domaingroup_lat_name &
+      (domaingroup_hdl%daddr, lat_name_, len(lat_name_))
+      ENDIF
+
       IF (PRESENT(latvalue_1d_)) THEN
         CALL cxios_get_domaingroup_latvalue_1d &
@@ -595,4 +712,9 @@
         CALL cxios_get_domaingroup_latvalue_2d &
       (domaingroup_hdl%daddr, latvalue_2d_, SHAPE(latvalue_2d_))
+      ENDIF
+
+      IF (PRESENT(lon_name_)) THEN
+        CALL cxios_get_domaingroup_lon_name &
+      (domaingroup_hdl%daddr, lon_name_, len(lon_name_))
       ENDIF
 
@@ -674,8 +796,9 @@
 
   SUBROUTINE xios(is_defined_domaingroup_attr)  &
-    ( domaingroup_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-    , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-    , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-    , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domaingroup_id, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+    , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -688,8 +811,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lat_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lon_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim
       LOGICAL(KIND=C_BOOL) :: data_dim_tmp
@@ -706,4 +835,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj
       LOGICAL(KIND=C_BOOL) :: data_nj_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name
+      LOGICAL(KIND=C_BOOL) :: dim_i_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name
+      LOGICAL(KIND=C_BOOL) :: dim_j_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref
       LOGICAL(KIND=C_BOOL) :: domain_ref_tmp
@@ -718,8 +851,12 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin
       LOGICAL(KIND=C_BOOL) :: jbegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name
+      LOGICAL(KIND=C_BOOL) :: lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d
       LOGICAL(KIND=C_BOOL) :: latvalue_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d
       LOGICAL(KIND=C_BOOL) :: latvalue_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name
+      LOGICAL(KIND=C_BOOL) :: lon_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -754,16 +891,18 @@
       (domaingroup_id,domaingroup_hdl)
       CALL xios(is_defined_domaingroup_attr_hdl_)   &
-      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-      , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-      , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-      , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+      , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(is_defined_domaingroup_attr)
 
   SUBROUTINE xios(is_defined_domaingroup_attr_hdl)  &
-    ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-    , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-    , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-    , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+    ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+    , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+    , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+    , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+    , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
     IMPLICIT NONE
@@ -775,8 +914,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lat_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d
       LOGICAL(KIND=C_BOOL) :: bounds_lon_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name
+      LOGICAL(KIND=C_BOOL) :: bounds_lon_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim
       LOGICAL(KIND=C_BOOL) :: data_dim_tmp
@@ -793,4 +938,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj
       LOGICAL(KIND=C_BOOL) :: data_nj_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name
+      LOGICAL(KIND=C_BOOL) :: dim_i_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name
+      LOGICAL(KIND=C_BOOL) :: dim_j_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref
       LOGICAL(KIND=C_BOOL) :: domain_ref_tmp
@@ -805,8 +954,12 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin
       LOGICAL(KIND=C_BOOL) :: jbegin_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name
+      LOGICAL(KIND=C_BOOL) :: lat_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d
       LOGICAL(KIND=C_BOOL) :: latvalue_1d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d
       LOGICAL(KIND=C_BOOL) :: latvalue_2d_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name
+      LOGICAL(KIND=C_BOOL) :: lon_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
@@ -839,17 +992,19 @@
 
       CALL xios(is_defined_domaingroup_attr_hdl_)  &
-      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lon_1d, bounds_lon_2d, data_dim  &
-      , data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni, data_nj, domain_ref, group_ref  &
-      , i_index, ibegin, j_index, jbegin, latvalue_1d, latvalue_2d, long_name, lonvalue_1d, lonvalue_2d  &
-      , mask_1d, mask_2d, name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
+      ( domaingroup_hdl, area, bounds_lat_1d, bounds_lat_2d, bounds_lat_name, bounds_lon_1d, bounds_lon_2d  &
+      , bounds_lon_name, comment, data_dim, data_i_index, data_ibegin, data_j_index, data_jbegin, data_ni  &
+      , data_nj, dim_i_name, dim_j_name, domain_ref, group_ref, i_index, ibegin, j_index, jbegin, lat_name  &
+      , latvalue_1d, latvalue_2d, lon_name, long_name, lonvalue_1d, lonvalue_2d, mask_1d, mask_2d  &
+      , name, ni, ni_glo, nj, nj_glo, nvertex, prec, standard_name, type )
 
   END SUBROUTINE xios(is_defined_domaingroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_domaingroup_attr_hdl_)   &
-    ( domaingroup_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lon_1d_, bounds_lon_2d_, data_dim_  &
-    , data_i_index_, data_ibegin_, data_j_index_, data_jbegin_, data_ni_, data_nj_, domain_ref_  &
-    , group_ref_, i_index_, ibegin_, j_index_, jbegin_, latvalue_1d_, latvalue_2d_, long_name_, lonvalue_1d_  &
-    , lonvalue_2d_, mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_  &
-    , type_ )
+    ( domaingroup_hdl, area_, bounds_lat_1d_, bounds_lat_2d_, bounds_lat_name_, bounds_lon_1d_, bounds_lon_2d_  &
+    , bounds_lon_name_, comment_, data_dim_, data_i_index_, data_ibegin_, data_j_index_, data_jbegin_  &
+    , data_ni_, data_nj_, dim_i_name_, dim_j_name_, domain_ref_, group_ref_, i_index_, ibegin_, j_index_  &
+    , jbegin_, lat_name_, latvalue_1d_, latvalue_2d_, lon_name_, long_name_, lonvalue_1d_, lonvalue_2d_  &
+    , mask_1d_, mask_2d_, name_, ni_, ni_glo_, nj_, nj_glo_, nvertex_, prec_, standard_name_, type_  &
+     )
 
     IMPLICIT NONE
@@ -861,8 +1016,14 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_2d_
       LOGICAL(KIND=C_BOOL) :: bounds_lat_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lat_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_lat_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_1d_
       LOGICAL(KIND=C_BOOL) :: bounds_lon_1d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_2d_
       LOGICAL(KIND=C_BOOL) :: bounds_lon_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_lon_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_lon_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_dim_
       LOGICAL(KIND=C_BOOL) :: data_dim__tmp
@@ -879,4 +1040,8 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: data_nj_
       LOGICAL(KIND=C_BOOL) :: data_nj__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_i_name_
+      LOGICAL(KIND=C_BOOL) :: dim_i_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: dim_j_name_
+      LOGICAL(KIND=C_BOOL) :: dim_j_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: domain_ref_
       LOGICAL(KIND=C_BOOL) :: domain_ref__tmp
@@ -891,8 +1056,12 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: jbegin_
       LOGICAL(KIND=C_BOOL) :: jbegin__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lat_name_
+      LOGICAL(KIND=C_BOOL) :: lat_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_1d_
       LOGICAL(KIND=C_BOOL) :: latvalue_1d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: latvalue_2d_
       LOGICAL(KIND=C_BOOL) :: latvalue_2d__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: lon_name_
+      LOGICAL(KIND=C_BOOL) :: lon_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
@@ -942,4 +1111,10 @@
       ENDIF
 
+      IF (PRESENT(bounds_lat_name_)) THEN
+        bounds_lat_name__tmp = cxios_is_defined_domaingroup_bounds_lat_name &
+      (domaingroup_hdl%daddr)
+        bounds_lat_name_ = bounds_lat_name__tmp
+      ENDIF
+
       IF (PRESENT(bounds_lon_1d_)) THEN
         bounds_lon_1d__tmp = cxios_is_defined_domaingroup_bounds_lon_1d &
@@ -954,4 +1129,16 @@
       ENDIF
 
+      IF (PRESENT(bounds_lon_name_)) THEN
+        bounds_lon_name__tmp = cxios_is_defined_domaingroup_bounds_lon_name &
+      (domaingroup_hdl%daddr)
+        bounds_lon_name_ = bounds_lon_name__tmp
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_domaingroup_comment &
+      (domaingroup_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(data_dim_)) THEN
         data_dim__tmp = cxios_is_defined_domaingroup_data_dim &
@@ -996,4 +1183,16 @@
       ENDIF
 
+      IF (PRESENT(dim_i_name_)) THEN
+        dim_i_name__tmp = cxios_is_defined_domaingroup_dim_i_name &
+      (domaingroup_hdl%daddr)
+        dim_i_name_ = dim_i_name__tmp
+      ENDIF
+
+      IF (PRESENT(dim_j_name_)) THEN
+        dim_j_name__tmp = cxios_is_defined_domaingroup_dim_j_name &
+      (domaingroup_hdl%daddr)
+        dim_j_name_ = dim_j_name__tmp
+      ENDIF
+
       IF (PRESENT(domain_ref_)) THEN
         domain_ref__tmp = cxios_is_defined_domaingroup_domain_ref &
@@ -1032,4 +1231,10 @@
       ENDIF
 
+      IF (PRESENT(lat_name_)) THEN
+        lat_name__tmp = cxios_is_defined_domaingroup_lat_name &
+      (domaingroup_hdl%daddr)
+        lat_name_ = lat_name__tmp
+      ENDIF
+
       IF (PRESENT(latvalue_1d_)) THEN
         latvalue_1d__tmp = cxios_is_defined_domaingroup_latvalue_1d &
@@ -1044,4 +1249,10 @@
       ENDIF
 
+      IF (PRESENT(lon_name_)) THEN
+        lon_name__tmp = cxios_is_defined_domaingroup_lon_name &
+      (domaingroup_hdl%daddr)
+        lon_name_ = lon_name__tmp
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         long_name__tmp = cxios_is_defined_domaingroup_long_name &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/iduplicate_scalar_to_axis_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/iduplicate_scalar_to_axis_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/iduplicate_scalar_to_axis_attr.F90	(revision 1545)
@@ -0,0 +1,112 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE iduplicate_scalar_to_axis_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE iduplicate_scalar_to_axis
+  USE duplicate_scalar_to_axis_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_duplicate_scalar_to_axis_attr)  &
+    ( duplicate_scalar_to_axis_id )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis))  :: duplicate_scalar_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::duplicate_scalar_to_axis_id
+
+      CALL xios(get_duplicate_scalar_to_axis_handle) &
+      (duplicate_scalar_to_axis_id,duplicate_scalar_to_axis_hdl)
+      CALL xios(set_duplicate_scalar_to_axis_attr_hdl_)   &
+      ( duplicate_scalar_to_axis_hdl )
+
+  END SUBROUTINE xios(set_duplicate_scalar_to_axis_attr)
+
+  SUBROUTINE xios(set_duplicate_scalar_to_axis_attr_hdl)  &
+    ( duplicate_scalar_to_axis_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(IN) :: duplicate_scalar_to_axis_hdl
+
+      CALL xios(set_duplicate_scalar_to_axis_attr_hdl_)  &
+      ( duplicate_scalar_to_axis_hdl )
+
+  END SUBROUTINE xios(set_duplicate_scalar_to_axis_attr_hdl)
+
+  SUBROUTINE xios(set_duplicate_scalar_to_axis_attr_hdl_)   &
+    ( duplicate_scalar_to_axis_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(IN) :: duplicate_scalar_to_axis_hdl
+
+  END SUBROUTINE xios(set_duplicate_scalar_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(get_duplicate_scalar_to_axis_attr)  &
+    ( duplicate_scalar_to_axis_id )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis))  :: duplicate_scalar_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::duplicate_scalar_to_axis_id
+
+      CALL xios(get_duplicate_scalar_to_axis_handle) &
+      (duplicate_scalar_to_axis_id,duplicate_scalar_to_axis_hdl)
+      CALL xios(get_duplicate_scalar_to_axis_attr_hdl_)   &
+      ( duplicate_scalar_to_axis_hdl )
+
+  END SUBROUTINE xios(get_duplicate_scalar_to_axis_attr)
+
+  SUBROUTINE xios(get_duplicate_scalar_to_axis_attr_hdl)  &
+    ( duplicate_scalar_to_axis_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(IN) :: duplicate_scalar_to_axis_hdl
+
+      CALL xios(get_duplicate_scalar_to_axis_attr_hdl_)  &
+      ( duplicate_scalar_to_axis_hdl )
+
+  END SUBROUTINE xios(get_duplicate_scalar_to_axis_attr_hdl)
+
+  SUBROUTINE xios(get_duplicate_scalar_to_axis_attr_hdl_)   &
+    ( duplicate_scalar_to_axis_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(IN) :: duplicate_scalar_to_axis_hdl
+
+  END SUBROUTINE xios(get_duplicate_scalar_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_duplicate_scalar_to_axis_attr)  &
+    ( duplicate_scalar_to_axis_id )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis))  :: duplicate_scalar_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::duplicate_scalar_to_axis_id
+
+      CALL xios(get_duplicate_scalar_to_axis_handle) &
+      (duplicate_scalar_to_axis_id,duplicate_scalar_to_axis_hdl)
+      CALL xios(is_defined_duplicate_scalar_to_axis_attr_hdl_)   &
+      ( duplicate_scalar_to_axis_hdl )
+
+  END SUBROUTINE xios(is_defined_duplicate_scalar_to_axis_attr)
+
+  SUBROUTINE xios(is_defined_duplicate_scalar_to_axis_attr_hdl)  &
+    ( duplicate_scalar_to_axis_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(IN) :: duplicate_scalar_to_axis_hdl
+
+      CALL xios(is_defined_duplicate_scalar_to_axis_attr_hdl_)  &
+      ( duplicate_scalar_to_axis_hdl )
+
+  END SUBROUTINE xios(is_defined_duplicate_scalar_to_axis_attr_hdl)
+
+  SUBROUTINE xios(is_defined_duplicate_scalar_to_axis_attr_hdl_)   &
+    ( duplicate_scalar_to_axis_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(duplicate_scalar_to_axis)) , INTENT(IN) :: duplicate_scalar_to_axis_hdl
+
+  END SUBROUTINE xios(is_defined_duplicate_scalar_to_axis_attr_hdl_)
+
+END MODULE iduplicate_scalar_to_axis_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ifield_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ifield_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ifield_attr.F90	(revision 1545)
@@ -12,9 +12,9 @@
 
   SUBROUTINE xios(set_field_attr)  &
-    ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+    , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+    , valid_max, valid_min )
 
     IMPLICIT NONE
@@ -27,4 +27,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
@@ -62,18 +63,18 @@
       (field_id,field_hdl)
       CALL xios(set_field_attr_hdl_)   &
-      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+      , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+      , valid_max, valid_min )
 
   END SUBROUTINE xios(set_field_attr)
 
   SUBROUTINE xios(set_field_attr_hdl)  &
-    ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+    , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+    , valid_max, valid_min )
 
     IMPLICIT NONE
@@ -85,4 +86,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
@@ -118,18 +120,18 @@
 
       CALL xios(set_field_attr_hdl_)  &
-      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+      , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+      , valid_max, valid_min )
 
   END SUBROUTINE xios(set_field_attr_hdl)
 
   SUBROUTINE xios(set_field_attr_hdl_)   &
-    ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_, compression_level_  &
-    , default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_  &
-    , freq_op_, grid_path_, grid_ref_, indexed_output_, level_, long_name_, name_, operation_, prec_  &
-    , read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_, unit_  &
-    , valid_max_, valid_min_ )
+    ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_, comment_  &
+    , compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_  &
+    , freq_offset_, freq_op_, grid_path_, grid_ref_, indexed_output_, level_, long_name_, name_  &
+    , operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_  &
+    , unit_, valid_max_, valid_min_ )
 
     IMPLICIT NONE
@@ -141,4 +143,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: check_if_active_
       LOGICAL (KIND=C_BOOL) :: check_if_active__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value_
@@ -199,4 +202,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_field_comment &
+      (field_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_set_field_compression_level &
@@ -337,9 +345,9 @@
 
   SUBROUTINE xios(get_field_attr)  &
-    ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+    , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+    , valid_max, valid_min )
 
     IMPLICIT NONE
@@ -352,4 +360,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
@@ -387,18 +396,18 @@
       (field_id,field_hdl)
       CALL xios(get_field_attr_hdl_)   &
-      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+      , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+      , valid_max, valid_min )
 
   END SUBROUTINE xios(get_field_attr)
 
   SUBROUTINE xios(get_field_attr_hdl)  &
-    ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+    , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+    , valid_max, valid_min )
 
     IMPLICIT NONE
@@ -410,4 +419,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
@@ -443,18 +453,18 @@
 
       CALL xios(get_field_attr_hdl_)  &
-      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+      , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+      , valid_max, valid_min )
 
   END SUBROUTINE xios(get_field_attr_hdl)
 
   SUBROUTINE xios(get_field_attr_hdl_)   &
-    ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_, compression_level_  &
-    , default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_  &
-    , freq_op_, grid_path_, grid_ref_, indexed_output_, level_, long_name_, name_, operation_, prec_  &
-    , read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_, unit_  &
-    , valid_max_, valid_min_ )
+    ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_, comment_  &
+    , compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_  &
+    , freq_offset_, freq_op_, grid_path_, grid_ref_, indexed_output_, level_, long_name_, name_  &
+    , operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_  &
+    , unit_, valid_max_, valid_min_ )
 
     IMPLICIT NONE
@@ -466,4 +476,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: check_if_active_
       LOGICAL (KIND=C_BOOL) :: check_if_active__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value_
@@ -524,4 +535,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_field_comment &
+      (field_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_get_field_compression_level &
@@ -662,9 +678,9 @@
 
   SUBROUTINE xios(is_defined_field_attr)  &
-    ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( field_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+    , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+    , valid_max, valid_min )
 
     IMPLICIT NONE
@@ -681,4 +697,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL(KIND=C_BOOL) :: check_if_active_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -737,18 +755,18 @@
       (field_id,field_hdl)
       CALL xios(is_defined_field_attr_hdl_)   &
-      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+      , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+      , valid_max, valid_min )
 
   END SUBROUTINE xios(is_defined_field_attr)
 
   SUBROUTINE xios(is_defined_field_attr_hdl)  &
-    ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+    , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+    , valid_max, valid_min )
 
     IMPLICIT NONE
@@ -764,4 +782,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL(KIND=C_BOOL) :: check_if_active_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -818,18 +838,18 @@
 
       CALL xios(is_defined_field_attr_hdl_)  &
-      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( field_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, indexed_output, level, long_name, name, operation  &
+      , prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit  &
+      , valid_max, valid_min )
 
   END SUBROUTINE xios(is_defined_field_attr_hdl)
 
   SUBROUTINE xios(is_defined_field_attr_hdl_)   &
-    ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_, compression_level_  &
-    , default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_, freq_offset_  &
-    , freq_op_, grid_path_, grid_ref_, indexed_output_, level_, long_name_, name_, operation_, prec_  &
-    , read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_, unit_  &
-    , valid_max_, valid_min_ )
+    ( field_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_, comment_  &
+    , compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_  &
+    , freq_offset_, freq_op_, grid_path_, grid_ref_, indexed_output_, level_, long_name_, name_  &
+    , operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_, ts_split_freq_  &
+    , unit_, valid_max_, valid_min_ )
 
     IMPLICIT NONE
@@ -845,4 +865,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active_
       LOGICAL(KIND=C_BOOL) :: check_if_active__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_
       LOGICAL(KIND=C_BOOL) :: compression_level__tmp
@@ -928,4 +950,10 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_field_comment &
+      (field_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         compression_level__tmp = cxios_is_defined_field_compression_level &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ifieldgroup_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ifieldgroup_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ifieldgroup_attr.F90	(revision 1545)
@@ -12,9 +12,9 @@
 
   SUBROUTINE xios(set_fieldgroup_attr)  &
-    ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+    , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+    , unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -27,4 +27,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
@@ -63,18 +64,18 @@
       (fieldgroup_id,fieldgroup_hdl)
       CALL xios(set_fieldgroup_attr_hdl_)   &
-      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+      , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+      , unit, valid_max, valid_min )
 
   END SUBROUTINE xios(set_fieldgroup_attr)
 
   SUBROUTINE xios(set_fieldgroup_attr_hdl)  &
-    ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+    , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+    , unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -86,4 +87,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value
@@ -120,9 +122,9 @@
 
       CALL xios(set_fieldgroup_attr_hdl_)  &
-      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+      , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+      , unit, valid_max, valid_min )
 
   END SUBROUTINE xios(set_fieldgroup_attr_hdl)
@@ -130,8 +132,8 @@
   SUBROUTINE xios(set_fieldgroup_attr_hdl_)   &
     ( fieldgroup_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_  &
-    , compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_  &
-    , freq_offset_, freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_  &
-    , name_, operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_  &
-    , ts_split_freq_, unit_, valid_max_, valid_min_ )
+    , comment_, compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_  &
+    , expr_, field_ref_, freq_offset_, freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_  &
+    , level_, long_name_, name_, operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_  &
+    , ts_enabled_, ts_split_freq_, unit_, valid_max_, valid_min_ )
 
     IMPLICIT NONE
@@ -143,4 +145,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: check_if_active_
       LOGICAL (KIND=C_BOOL) :: check_if_active__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level_
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: default_value_
@@ -202,4 +205,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_fieldgroup_comment &
+      (fieldgroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_set_fieldgroup_compression_level &
@@ -345,9 +353,9 @@
 
   SUBROUTINE xios(get_fieldgroup_attr)  &
-    ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+    , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+    , unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -360,4 +368,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
@@ -396,18 +405,18 @@
       (fieldgroup_id,fieldgroup_hdl)
       CALL xios(get_fieldgroup_attr_hdl_)   &
-      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+      , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+      , unit, valid_max, valid_min )
 
   END SUBROUTINE xios(get_fieldgroup_attr)
 
   SUBROUTINE xios(get_fieldgroup_attr_hdl)  &
-    ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+    , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+    , unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -419,4 +428,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL (KIND=C_BOOL) :: check_if_active_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value
@@ -453,9 +463,9 @@
 
       CALL xios(get_fieldgroup_attr_hdl_)  &
-      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+      , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+      , unit, valid_max, valid_min )
 
   END SUBROUTINE xios(get_fieldgroup_attr_hdl)
@@ -463,8 +473,8 @@
   SUBROUTINE xios(get_fieldgroup_attr_hdl_)   &
     ( fieldgroup_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_  &
-    , compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_  &
-    , freq_offset_, freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_  &
-    , name_, operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_  &
-    , ts_split_freq_, unit_, valid_max_, valid_min_ )
+    , comment_, compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_  &
+    , expr_, field_ref_, freq_offset_, freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_  &
+    , level_, long_name_, name_, operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_  &
+    , ts_enabled_, ts_split_freq_, unit_, valid_max_, valid_min_ )
 
     IMPLICIT NONE
@@ -476,4 +486,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: check_if_active_
       LOGICAL (KIND=C_BOOL) :: check_if_active__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level_
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: default_value_
@@ -535,4 +546,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_fieldgroup_comment &
+      (fieldgroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_get_fieldgroup_compression_level &
@@ -678,9 +694,9 @@
 
   SUBROUTINE xios(is_defined_fieldgroup_attr)  &
-    ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( fieldgroup_id, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+    , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+    , unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -697,4 +713,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL(KIND=C_BOOL) :: check_if_active_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -755,18 +773,18 @@
       (fieldgroup_id,fieldgroup_hdl)
       CALL xios(is_defined_fieldgroup_attr_hdl_)   &
-      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+      , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+      , unit, valid_max, valid_min )
 
   END SUBROUTINE xios(is_defined_fieldgroup_attr)
 
   SUBROUTINE xios(is_defined_fieldgroup_attr_hdl)  &
-    ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-    , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-    , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-    , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-     )
+    ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+    , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+    , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+    , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+    , unit, valid_max, valid_min )
 
     IMPLICIT NONE
@@ -782,4 +800,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active
       LOGICAL(KIND=C_BOOL) :: check_if_active_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -838,9 +858,9 @@
 
       CALL xios(is_defined_fieldgroup_attr_hdl_)  &
-      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, compression_level  &
-      , default_value, detect_missing_value, domain_ref, enabled, expr, field_ref, freq_offset, freq_op  &
-      , grid_path, grid_ref, group_ref, indexed_output, level, long_name, name, operation, prec, read_access  &
-      , scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq, unit, valid_max, valid_min  &
-       )
+      ( fieldgroup_hdl, add_offset, axis_ref, cell_methods, cell_methods_mode, check_if_active, comment  &
+      , compression_level, default_value, detect_missing_value, domain_ref, enabled, expr, field_ref  &
+      , freq_offset, freq_op, grid_path, grid_ref, group_ref, indexed_output, level, long_name, name  &
+      , operation, prec, read_access, scalar_ref, scale_factor, standard_name, ts_enabled, ts_split_freq  &
+      , unit, valid_max, valid_min )
 
   END SUBROUTINE xios(is_defined_fieldgroup_attr_hdl)
@@ -848,8 +868,8 @@
   SUBROUTINE xios(is_defined_fieldgroup_attr_hdl_)   &
     ( fieldgroup_hdl, add_offset_, axis_ref_, cell_methods_, cell_methods_mode_, check_if_active_  &
-    , compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_, expr_, field_ref_  &
-    , freq_offset_, freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_, level_, long_name_  &
-    , name_, operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_, ts_enabled_  &
-    , ts_split_freq_, unit_, valid_max_, valid_min_ )
+    , comment_, compression_level_, default_value_, detect_missing_value_, domain_ref_, enabled_  &
+    , expr_, field_ref_, freq_offset_, freq_op_, grid_path_, grid_ref_, group_ref_, indexed_output_  &
+    , level_, long_name_, name_, operation_, prec_, read_access_, scalar_ref_, scale_factor_, standard_name_  &
+    , ts_enabled_, ts_split_freq_, unit_, valid_max_, valid_min_ )
 
     IMPLICIT NONE
@@ -865,4 +885,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: check_if_active_
       LOGICAL(KIND=C_BOOL) :: check_if_active__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_
       LOGICAL(KIND=C_BOOL) :: compression_level__tmp
@@ -950,4 +972,10 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_fieldgroup_comment &
+      (fieldgroup_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         compression_level__tmp = cxios_is_defined_fieldgroup_compression_level &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ifile_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ifile_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ifile_attr.F90	(revision 1545)
@@ -12,8 +12,9 @@
 
   SUBROUTINE xios(set_file_attr)  &
-    ( file_id, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-    , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+    ( file_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+    , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+    , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+    , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -22,4 +23,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: convention
@@ -38,7 +40,12 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(IN) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter
@@ -56,16 +63,18 @@
       (file_id,file_hdl)
       CALL xios(set_file_attr_hdl_)   &
-      ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-      , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-      , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+      ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+      , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+      , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+      , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+      , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(set_file_attr)
 
   SUBROUTINE xios(set_file_attr_hdl)  &
-    ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-    , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+    ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+    , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+    , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+    , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -73,4 +82,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: convention
@@ -89,7 +99,12 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(IN) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter
@@ -105,17 +120,18 @@
 
       CALL xios(set_file_attr_hdl_)  &
-      ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-      , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-      , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+      ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+      , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+      , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+      , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+      , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(set_file_attr_hdl)
 
   SUBROUTINE xios(set_file_attr_hdl_)   &
-    ( file_hdl, append_, compression_level_, convention_, convention_str_, cyclic_, description_  &
+    ( file_hdl, append_, comment_, compression_level_, convention_, convention_str_, cyclic_, description_  &
     , enabled_, format_, min_digits_, mode_, name_, name_suffix_, output_freq_, output_level_, par_access_  &
-    , record_offset_, split_freq_, split_freq_format_, sync_freq_, time_counter_, time_counter_name_  &
-    , time_stamp_format_, time_stamp_name_, time_units_, timeseries_, ts_prefix_, type_, uuid_format_  &
-    , uuid_name_ )
+    , read_metadata_par_, record_offset_, split_end_offset_, split_freq_, split_freq_format_, split_last_date_  &
+    , split_start_offset_, sync_freq_, time_counter_, time_counter_name_, time_stamp_format_, time_stamp_name_  &
+    , time_units_, timeseries_, ts_prefix_, type_, uuid_format_, uuid_name_ )
 
     IMPLICIT NONE
@@ -123,4 +139,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: append_
       LOGICAL (KIND=C_BOOL) :: append__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: convention_
@@ -139,7 +156,12 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: output_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: read_metadata_par_
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par__tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: record_offset_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_end_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_last_date_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_start_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: sync_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_
@@ -160,4 +182,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_file_comment &
+      (file_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_set_file_compression_level &
@@ -232,4 +259,10 @@
       ENDIF
 
+      IF (PRESENT(read_metadata_par_)) THEN
+        read_metadata_par__tmp = read_metadata_par_
+        CALL cxios_set_file_read_metadata_par &
+      (file_hdl%daddr, read_metadata_par__tmp)
+      ENDIF
+
       IF (PRESENT(record_offset_)) THEN
         CALL cxios_set_file_record_offset &
@@ -237,4 +270,9 @@
       ENDIF
 
+      IF (PRESENT(split_end_offset_)) THEN
+        CALL cxios_set_file_split_end_offset &
+      (file_hdl%daddr, split_end_offset_)
+      ENDIF
+
       IF (PRESENT(split_freq_)) THEN
         CALL cxios_set_file_split_freq &
@@ -247,4 +285,14 @@
       ENDIF
 
+      IF (PRESENT(split_last_date_)) THEN
+        CALL cxios_set_file_split_last_date &
+      (file_hdl%daddr, split_last_date_, len(split_last_date_))
+      ENDIF
+
+      IF (PRESENT(split_start_offset_)) THEN
+        CALL cxios_set_file_split_start_offset &
+      (file_hdl%daddr, split_start_offset_)
+      ENDIF
+
       IF (PRESENT(sync_freq_)) THEN
         CALL cxios_set_file_sync_freq &
@@ -305,8 +353,9 @@
 
   SUBROUTINE xios(get_file_attr)  &
-    ( file_id, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-    , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+    ( file_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+    , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+    , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+    , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -315,4 +364,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: convention
@@ -331,7 +381,12 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter
@@ -349,16 +404,18 @@
       (file_id,file_hdl)
       CALL xios(get_file_attr_hdl_)   &
-      ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-      , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-      , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+      ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+      , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+      , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+      , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+      , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(get_file_attr)
 
   SUBROUTINE xios(get_file_attr_hdl)  &
-    ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-    , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+    ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+    , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+    , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+    , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -366,4 +423,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: convention
@@ -382,7 +440,12 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter
@@ -398,17 +461,18 @@
 
       CALL xios(get_file_attr_hdl_)  &
-      ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-      , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-      , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+      ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+      , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+      , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+      , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+      , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(get_file_attr_hdl)
 
   SUBROUTINE xios(get_file_attr_hdl_)   &
-    ( file_hdl, append_, compression_level_, convention_, convention_str_, cyclic_, description_  &
+    ( file_hdl, append_, comment_, compression_level_, convention_, convention_str_, cyclic_, description_  &
     , enabled_, format_, min_digits_, mode_, name_, name_suffix_, output_freq_, output_level_, par_access_  &
-    , record_offset_, split_freq_, split_freq_format_, sync_freq_, time_counter_, time_counter_name_  &
-    , time_stamp_format_, time_stamp_name_, time_units_, timeseries_, ts_prefix_, type_, uuid_format_  &
-    , uuid_name_ )
+    , read_metadata_par_, record_offset_, split_end_offset_, split_freq_, split_freq_format_, split_last_date_  &
+    , split_start_offset_, sync_freq_, time_counter_, time_counter_name_, time_stamp_format_, time_stamp_name_  &
+    , time_units_, timeseries_, ts_prefix_, type_, uuid_format_, uuid_name_ )
 
     IMPLICIT NONE
@@ -416,4 +480,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: append_
       LOGICAL (KIND=C_BOOL) :: append__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: convention_
@@ -432,7 +497,12 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: output_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: read_metadata_par_
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par__tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: record_offset_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_end_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_last_date_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_start_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: sync_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_
@@ -453,4 +523,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_file_comment &
+      (file_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_get_file_compression_level &
@@ -525,4 +600,10 @@
       ENDIF
 
+      IF (PRESENT(read_metadata_par_)) THEN
+        CALL cxios_get_file_read_metadata_par &
+      (file_hdl%daddr, read_metadata_par__tmp)
+        read_metadata_par_ = read_metadata_par__tmp
+      ENDIF
+
       IF (PRESENT(record_offset_)) THEN
         CALL cxios_get_file_record_offset &
@@ -530,4 +611,9 @@
       ENDIF
 
+      IF (PRESENT(split_end_offset_)) THEN
+        CALL cxios_get_file_split_end_offset &
+      (file_hdl%daddr, split_end_offset_)
+      ENDIF
+
       IF (PRESENT(split_freq_)) THEN
         CALL cxios_get_file_split_freq &
@@ -540,4 +626,14 @@
       ENDIF
 
+      IF (PRESENT(split_last_date_)) THEN
+        CALL cxios_get_file_split_last_date &
+      (file_hdl%daddr, split_last_date_, len(split_last_date_))
+      ENDIF
+
+      IF (PRESENT(split_start_offset_)) THEN
+        CALL cxios_get_file_split_start_offset &
+      (file_hdl%daddr, split_start_offset_)
+      ENDIF
+
       IF (PRESENT(sync_freq_)) THEN
         CALL cxios_get_file_sync_freq &
@@ -598,8 +694,9 @@
 
   SUBROUTINE xios(is_defined_file_attr)  &
-    ( file_id, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-    , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+    ( file_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+    , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+    , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+    , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -608,4 +705,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: append
       LOGICAL(KIND=C_BOOL) :: append_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -636,10 +735,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: par_access
       LOGICAL(KIND=C_BOOL) :: par_access_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL(KIND=C_BOOL) :: read_metadata_par_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: record_offset
       LOGICAL(KIND=C_BOOL) :: record_offset_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_end_offset
+      LOGICAL(KIND=C_BOOL) :: split_end_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq
       LOGICAL(KIND=C_BOOL) :: split_freq_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format
       LOGICAL(KIND=C_BOOL) :: split_freq_format_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_last_date
+      LOGICAL(KIND=C_BOOL) :: split_last_date_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_start_offset
+      LOGICAL(KIND=C_BOOL) :: split_start_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq
       LOGICAL(KIND=C_BOOL) :: sync_freq_tmp
@@ -668,16 +775,18 @@
       (file_id,file_hdl)
       CALL xios(is_defined_file_attr_hdl_)   &
-      ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-      , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-      , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+      ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+      , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+      , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+      , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+      , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(is_defined_file_attr)
 
   SUBROUTINE xios(is_defined_file_attr_hdl)  &
-    ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-    , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+    ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+    , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+    , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+    , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -685,4 +794,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: append
       LOGICAL(KIND=C_BOOL) :: append_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -713,10 +824,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: par_access
       LOGICAL(KIND=C_BOOL) :: par_access_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL(KIND=C_BOOL) :: read_metadata_par_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: record_offset
       LOGICAL(KIND=C_BOOL) :: record_offset_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_end_offset
+      LOGICAL(KIND=C_BOOL) :: split_end_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq
       LOGICAL(KIND=C_BOOL) :: split_freq_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format
       LOGICAL(KIND=C_BOOL) :: split_freq_format_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_last_date
+      LOGICAL(KIND=C_BOOL) :: split_last_date_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_start_offset
+      LOGICAL(KIND=C_BOOL) :: split_start_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq
       LOGICAL(KIND=C_BOOL) :: sync_freq_tmp
@@ -743,17 +862,18 @@
 
       CALL xios(is_defined_file_attr_hdl_)  &
-      ( file_hdl, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-      , format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access, record_offset  &
-      , split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
-      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
+      ( file_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
+      , enabled, format, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
+      , read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format, split_last_date  &
+      , split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format, time_stamp_name  &
+      , time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(is_defined_file_attr_hdl)
 
   SUBROUTINE xios(is_defined_file_attr_hdl_)   &
-    ( file_hdl, append_, compression_level_, convention_, convention_str_, cyclic_, description_  &
+    ( file_hdl, append_, comment_, compression_level_, convention_, convention_str_, cyclic_, description_  &
     , enabled_, format_, min_digits_, mode_, name_, name_suffix_, output_freq_, output_level_, par_access_  &
-    , record_offset_, split_freq_, split_freq_format_, sync_freq_, time_counter_, time_counter_name_  &
-    , time_stamp_format_, time_stamp_name_, time_units_, timeseries_, ts_prefix_, type_, uuid_format_  &
-    , uuid_name_ )
+    , read_metadata_par_, record_offset_, split_end_offset_, split_freq_, split_freq_format_, split_last_date_  &
+    , split_start_offset_, sync_freq_, time_counter_, time_counter_name_, time_stamp_format_, time_stamp_name_  &
+    , time_units_, timeseries_, ts_prefix_, type_, uuid_format_, uuid_name_ )
 
     IMPLICIT NONE
@@ -761,4 +881,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: append_
       LOGICAL(KIND=C_BOOL) :: append__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_
       LOGICAL(KIND=C_BOOL) :: compression_level__tmp
@@ -789,10 +911,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: par_access_
       LOGICAL(KIND=C_BOOL) :: par_access__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_metadata_par_
+      LOGICAL(KIND=C_BOOL) :: read_metadata_par__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: record_offset_
       LOGICAL(KIND=C_BOOL) :: record_offset__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_end_offset_
+      LOGICAL(KIND=C_BOOL) :: split_end_offset__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_
       LOGICAL(KIND=C_BOOL) :: split_freq__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format_
       LOGICAL(KIND=C_BOOL) :: split_freq_format__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_last_date_
+      LOGICAL(KIND=C_BOOL) :: split_last_date__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_start_offset_
+      LOGICAL(KIND=C_BOOL) :: split_start_offset__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq_
       LOGICAL(KIND=C_BOOL) :: sync_freq__tmp
@@ -824,4 +954,10 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_file_comment &
+      (file_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         compression_level__tmp = cxios_is_defined_file_compression_level &
@@ -908,4 +1044,10 @@
       ENDIF
 
+      IF (PRESENT(read_metadata_par_)) THEN
+        read_metadata_par__tmp = cxios_is_defined_file_read_metadata_par &
+      (file_hdl%daddr)
+        read_metadata_par_ = read_metadata_par__tmp
+      ENDIF
+
       IF (PRESENT(record_offset_)) THEN
         record_offset__tmp = cxios_is_defined_file_record_offset &
@@ -914,4 +1056,10 @@
       ENDIF
 
+      IF (PRESENT(split_end_offset_)) THEN
+        split_end_offset__tmp = cxios_is_defined_file_split_end_offset &
+      (file_hdl%daddr)
+        split_end_offset_ = split_end_offset__tmp
+      ENDIF
+
       IF (PRESENT(split_freq_)) THEN
         split_freq__tmp = cxios_is_defined_file_split_freq &
@@ -926,4 +1074,16 @@
       ENDIF
 
+      IF (PRESENT(split_last_date_)) THEN
+        split_last_date__tmp = cxios_is_defined_file_split_last_date &
+      (file_hdl%daddr)
+        split_last_date_ = split_last_date__tmp
+      ENDIF
+
+      IF (PRESENT(split_start_offset_)) THEN
+        split_start_offset__tmp = cxios_is_defined_file_split_start_offset &
+      (file_hdl%daddr)
+        split_start_offset_ = split_start_offset__tmp
+      ENDIF
+
       IF (PRESENT(sync_freq_)) THEN
         sync_freq__tmp = cxios_is_defined_file_sync_freq &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ifilegroup_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ifilegroup_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ifilegroup_attr.F90	(revision 1545)
@@ -12,7 +12,8 @@
 
   SUBROUTINE xios(set_filegroup_attr)  &
-    ( filegroup_id, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
-    , record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+    ( filegroup_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
+    , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+    , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
     , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
@@ -22,4 +23,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: convention
@@ -39,7 +41,12 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(IN) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter
@@ -57,18 +64,18 @@
       (filegroup_id,filegroup_hdl)
       CALL xios(set_filegroup_attr_hdl_)   &
-      ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+      ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
       , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-      , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-      , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-       )
+      , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+      , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(set_filegroup_attr)
 
   SUBROUTINE xios(set_filegroup_attr_hdl)  &
-    ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+    ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
     , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-    , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-    , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-     )
+    , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+    , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -76,4 +83,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: convention
@@ -93,7 +101,12 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(IN) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter
@@ -109,16 +122,17 @@
 
       CALL xios(set_filegroup_attr_hdl_)  &
-      ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+      ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
       , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-      , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-      , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-       )
+      , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+      , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(set_filegroup_attr_hdl)
 
   SUBROUTINE xios(set_filegroup_attr_hdl_)   &
-    ( filegroup_hdl, append_, compression_level_, convention_, convention_str_, cyclic_, description_  &
-    , enabled_, format_, group_ref_, min_digits_, mode_, name_, name_suffix_, output_freq_, output_level_  &
-    , par_access_, record_offset_, split_freq_, split_freq_format_, sync_freq_, time_counter_, time_counter_name_  &
+    ( filegroup_hdl, append_, comment_, compression_level_, convention_, convention_str_, cyclic_  &
+    , description_, enabled_, format_, group_ref_, min_digits_, mode_, name_, name_suffix_, output_freq_  &
+    , output_level_, par_access_, read_metadata_par_, record_offset_, split_end_offset_, split_freq_  &
+    , split_freq_format_, split_last_date_, split_start_offset_, sync_freq_, time_counter_, time_counter_name_  &
     , time_stamp_format_, time_stamp_name_, time_units_, timeseries_, ts_prefix_, type_, uuid_format_  &
     , uuid_name_ )
@@ -128,4 +142,5 @@
       LOGICAL  , OPTIONAL, INTENT(IN) :: append_
       LOGICAL (KIND=C_BOOL) :: append__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       INTEGER  , OPTIONAL, INTENT(IN) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: convention_
@@ -145,7 +160,12 @@
       INTEGER  , OPTIONAL, INTENT(IN) :: output_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: par_access_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: read_metadata_par_
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par__tmp
       INTEGER  , OPTIONAL, INTENT(IN) :: record_offset_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_end_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_freq_format_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: split_last_date_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: split_start_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(IN) :: sync_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: time_counter_
@@ -166,4 +186,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_filegroup_comment &
+      (filegroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_set_filegroup_compression_level &
@@ -243,4 +268,10 @@
       ENDIF
 
+      IF (PRESENT(read_metadata_par_)) THEN
+        read_metadata_par__tmp = read_metadata_par_
+        CALL cxios_set_filegroup_read_metadata_par &
+      (filegroup_hdl%daddr, read_metadata_par__tmp)
+      ENDIF
+
       IF (PRESENT(record_offset_)) THEN
         CALL cxios_set_filegroup_record_offset &
@@ -248,4 +279,9 @@
       ENDIF
 
+      IF (PRESENT(split_end_offset_)) THEN
+        CALL cxios_set_filegroup_split_end_offset &
+      (filegroup_hdl%daddr, split_end_offset_)
+      ENDIF
+
       IF (PRESENT(split_freq_)) THEN
         CALL cxios_set_filegroup_split_freq &
@@ -258,4 +294,14 @@
       ENDIF
 
+      IF (PRESENT(split_last_date_)) THEN
+        CALL cxios_set_filegroup_split_last_date &
+      (filegroup_hdl%daddr, split_last_date_, len(split_last_date_))
+      ENDIF
+
+      IF (PRESENT(split_start_offset_)) THEN
+        CALL cxios_set_filegroup_split_start_offset &
+      (filegroup_hdl%daddr, split_start_offset_)
+      ENDIF
+
       IF (PRESENT(sync_freq_)) THEN
         CALL cxios_set_filegroup_sync_freq &
@@ -316,7 +362,8 @@
 
   SUBROUTINE xios(get_filegroup_attr)  &
-    ( filegroup_id, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
-    , record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+    ( filegroup_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
+    , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+    , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
     , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
@@ -326,4 +373,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: convention
@@ -343,7 +391,12 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter
@@ -361,18 +414,18 @@
       (filegroup_id,filegroup_hdl)
       CALL xios(get_filegroup_attr_hdl_)   &
-      ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+      ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
       , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-      , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-      , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-       )
+      , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+      , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(get_filegroup_attr)
 
   SUBROUTINE xios(get_filegroup_attr_hdl)  &
-    ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+    ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
     , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-    , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-    , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-     )
+    , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+    , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -380,4 +433,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: append
       LOGICAL (KIND=C_BOOL) :: append_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: convention
@@ -397,7 +451,12 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: output_level
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par_tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: record_offset
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_end_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_last_date
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_start_offset
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: sync_freq
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter
@@ -413,16 +472,17 @@
 
       CALL xios(get_filegroup_attr_hdl_)  &
-      ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+      ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
       , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-      , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-      , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-       )
+      , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+      , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(get_filegroup_attr_hdl)
 
   SUBROUTINE xios(get_filegroup_attr_hdl_)   &
-    ( filegroup_hdl, append_, compression_level_, convention_, convention_str_, cyclic_, description_  &
-    , enabled_, format_, group_ref_, min_digits_, mode_, name_, name_suffix_, output_freq_, output_level_  &
-    , par_access_, record_offset_, split_freq_, split_freq_format_, sync_freq_, time_counter_, time_counter_name_  &
+    ( filegroup_hdl, append_, comment_, compression_level_, convention_, convention_str_, cyclic_  &
+    , description_, enabled_, format_, group_ref_, min_digits_, mode_, name_, name_suffix_, output_freq_  &
+    , output_level_, par_access_, read_metadata_par_, record_offset_, split_end_offset_, split_freq_  &
+    , split_freq_format_, split_last_date_, split_start_offset_, sync_freq_, time_counter_, time_counter_name_  &
     , time_stamp_format_, time_stamp_name_, time_units_, timeseries_, ts_prefix_, type_, uuid_format_  &
     , uuid_name_ )
@@ -432,4 +492,5 @@
       LOGICAL  , OPTIONAL, INTENT(OUT) :: append_
       LOGICAL (KIND=C_BOOL) :: append__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       INTEGER  , OPTIONAL, INTENT(OUT) :: compression_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: convention_
@@ -449,7 +510,12 @@
       INTEGER  , OPTIONAL, INTENT(OUT) :: output_level_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: par_access_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: read_metadata_par_
+      LOGICAL (KIND=C_BOOL) :: read_metadata_par__tmp
       INTEGER  , OPTIONAL, INTENT(OUT) :: record_offset_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_end_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_freq_format_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: split_last_date_
+      TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: split_start_offset_
       TYPE(txios(duration))  , OPTIONAL, INTENT(OUT) :: sync_freq_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: time_counter_
@@ -470,4 +536,9 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_filegroup_comment &
+      (filegroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         CALL cxios_get_filegroup_compression_level &
@@ -547,4 +618,10 @@
       ENDIF
 
+      IF (PRESENT(read_metadata_par_)) THEN
+        CALL cxios_get_filegroup_read_metadata_par &
+      (filegroup_hdl%daddr, read_metadata_par__tmp)
+        read_metadata_par_ = read_metadata_par__tmp
+      ENDIF
+
       IF (PRESENT(record_offset_)) THEN
         CALL cxios_get_filegroup_record_offset &
@@ -552,4 +629,9 @@
       ENDIF
 
+      IF (PRESENT(split_end_offset_)) THEN
+        CALL cxios_get_filegroup_split_end_offset &
+      (filegroup_hdl%daddr, split_end_offset_)
+      ENDIF
+
       IF (PRESENT(split_freq_)) THEN
         CALL cxios_get_filegroup_split_freq &
@@ -562,4 +644,14 @@
       ENDIF
 
+      IF (PRESENT(split_last_date_)) THEN
+        CALL cxios_get_filegroup_split_last_date &
+      (filegroup_hdl%daddr, split_last_date_, len(split_last_date_))
+      ENDIF
+
+      IF (PRESENT(split_start_offset_)) THEN
+        CALL cxios_get_filegroup_split_start_offset &
+      (filegroup_hdl%daddr, split_start_offset_)
+      ENDIF
+
       IF (PRESENT(sync_freq_)) THEN
         CALL cxios_get_filegroup_sync_freq &
@@ -620,7 +712,8 @@
 
   SUBROUTINE xios(is_defined_filegroup_attr)  &
-    ( filegroup_id, append, compression_level, convention, convention_str, cyclic, description, enabled  &
-    , format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level, par_access  &
-    , record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+    ( filegroup_id, append, comment, compression_level, convention, convention_str, cyclic, description  &
+    , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
+    , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+    , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
     , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
@@ -630,4 +723,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: append
       LOGICAL(KIND=C_BOOL) :: append_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -660,10 +755,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: par_access
       LOGICAL(KIND=C_BOOL) :: par_access_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL(KIND=C_BOOL) :: read_metadata_par_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: record_offset
       LOGICAL(KIND=C_BOOL) :: record_offset_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_end_offset
+      LOGICAL(KIND=C_BOOL) :: split_end_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq
       LOGICAL(KIND=C_BOOL) :: split_freq_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format
       LOGICAL(KIND=C_BOOL) :: split_freq_format_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_last_date
+      LOGICAL(KIND=C_BOOL) :: split_last_date_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_start_offset
+      LOGICAL(KIND=C_BOOL) :: split_start_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq
       LOGICAL(KIND=C_BOOL) :: sync_freq_tmp
@@ -692,18 +795,18 @@
       (filegroup_id,filegroup_hdl)
       CALL xios(is_defined_filegroup_attr_hdl_)   &
-      ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+      ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
       , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-      , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-      , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-       )
+      , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+      , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(is_defined_filegroup_attr)
 
   SUBROUTINE xios(is_defined_filegroup_attr_hdl)  &
-    ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+    ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
     , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-    , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-    , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-     )
+    , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+    , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+    , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
     IMPLICIT NONE
@@ -711,4 +814,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: append
       LOGICAL(KIND=C_BOOL) :: append_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level
       LOGICAL(KIND=C_BOOL) :: compression_level_tmp
@@ -741,10 +846,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: par_access
       LOGICAL(KIND=C_BOOL) :: par_access_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_metadata_par
+      LOGICAL(KIND=C_BOOL) :: read_metadata_par_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: record_offset
       LOGICAL(KIND=C_BOOL) :: record_offset_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_end_offset
+      LOGICAL(KIND=C_BOOL) :: split_end_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq
       LOGICAL(KIND=C_BOOL) :: split_freq_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format
       LOGICAL(KIND=C_BOOL) :: split_freq_format_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_last_date
+      LOGICAL(KIND=C_BOOL) :: split_last_date_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_start_offset
+      LOGICAL(KIND=C_BOOL) :: split_start_offset_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq
       LOGICAL(KIND=C_BOOL) :: sync_freq_tmp
@@ -771,16 +884,17 @@
 
       CALL xios(is_defined_filegroup_attr_hdl_)  &
-      ( filegroup_hdl, append, compression_level, convention, convention_str, cyclic, description  &
+      ( filegroup_hdl, append, comment, compression_level, convention, convention_str, cyclic, description  &
       , enabled, format, group_ref, min_digits, mode, name, name_suffix, output_freq, output_level  &
-      , par_access, record_offset, split_freq, split_freq_format, sync_freq, time_counter, time_counter_name  &
-      , time_stamp_format, time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name  &
-       )
+      , par_access, read_metadata_par, record_offset, split_end_offset, split_freq, split_freq_format  &
+      , split_last_date, split_start_offset, sync_freq, time_counter, time_counter_name, time_stamp_format  &
+      , time_stamp_name, time_units, timeseries, ts_prefix, type, uuid_format, uuid_name )
 
   END SUBROUTINE xios(is_defined_filegroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_filegroup_attr_hdl_)   &
-    ( filegroup_hdl, append_, compression_level_, convention_, convention_str_, cyclic_, description_  &
-    , enabled_, format_, group_ref_, min_digits_, mode_, name_, name_suffix_, output_freq_, output_level_  &
-    , par_access_, record_offset_, split_freq_, split_freq_format_, sync_freq_, time_counter_, time_counter_name_  &
+    ( filegroup_hdl, append_, comment_, compression_level_, convention_, convention_str_, cyclic_  &
+    , description_, enabled_, format_, group_ref_, min_digits_, mode_, name_, name_suffix_, output_freq_  &
+    , output_level_, par_access_, read_metadata_par_, record_offset_, split_end_offset_, split_freq_  &
+    , split_freq_format_, split_last_date_, split_start_offset_, sync_freq_, time_counter_, time_counter_name_  &
     , time_stamp_format_, time_stamp_name_, time_units_, timeseries_, ts_prefix_, type_, uuid_format_  &
     , uuid_name_ )
@@ -790,4 +904,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: append_
       LOGICAL(KIND=C_BOOL) :: append__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: compression_level_
       LOGICAL(KIND=C_BOOL) :: compression_level__tmp
@@ -820,10 +936,18 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: par_access_
       LOGICAL(KIND=C_BOOL) :: par_access__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_metadata_par_
+      LOGICAL(KIND=C_BOOL) :: read_metadata_par__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: record_offset_
       LOGICAL(KIND=C_BOOL) :: record_offset__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_end_offset_
+      LOGICAL(KIND=C_BOOL) :: split_end_offset__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_
       LOGICAL(KIND=C_BOOL) :: split_freq__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: split_freq_format_
       LOGICAL(KIND=C_BOOL) :: split_freq_format__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_last_date_
+      LOGICAL(KIND=C_BOOL) :: split_last_date__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: split_start_offset_
+      LOGICAL(KIND=C_BOOL) :: split_start_offset__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: sync_freq_
       LOGICAL(KIND=C_BOOL) :: sync_freq__tmp
@@ -855,4 +979,10 @@
       ENDIF
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_filegroup_comment &
+      (filegroup_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(compression_level_)) THEN
         compression_level__tmp = cxios_is_defined_filegroup_compression_level &
@@ -945,4 +1075,10 @@
       ENDIF
 
+      IF (PRESENT(read_metadata_par_)) THEN
+        read_metadata_par__tmp = cxios_is_defined_filegroup_read_metadata_par &
+      (filegroup_hdl%daddr)
+        read_metadata_par_ = read_metadata_par__tmp
+      ENDIF
+
       IF (PRESENT(record_offset_)) THEN
         record_offset__tmp = cxios_is_defined_filegroup_record_offset &
@@ -951,4 +1087,10 @@
       ENDIF
 
+      IF (PRESENT(split_end_offset_)) THEN
+        split_end_offset__tmp = cxios_is_defined_filegroup_split_end_offset &
+      (filegroup_hdl%daddr)
+        split_end_offset_ = split_end_offset__tmp
+      ENDIF
+
       IF (PRESENT(split_freq_)) THEN
         split_freq__tmp = cxios_is_defined_filegroup_split_freq &
@@ -963,4 +1105,16 @@
       ENDIF
 
+      IF (PRESENT(split_last_date_)) THEN
+        split_last_date__tmp = cxios_is_defined_filegroup_split_last_date &
+      (filegroup_hdl%daddr)
+        split_last_date_ = split_last_date__tmp
+      ENDIF
+
+      IF (PRESENT(split_start_offset_)) THEN
+        split_start_offset__tmp = cxios_is_defined_filegroup_split_start_offset &
+      (filegroup_hdl%daddr)
+        split_start_offset_ = split_start_offset__tmp
+      ENDIF
+
       IF (PRESENT(sync_freq_)) THEN
         sync_freq__tmp = cxios_is_defined_filegroup_sync_freq &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/igrid_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/igrid_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/igrid_attr.F90	(revision 1545)
@@ -12,11 +12,14 @@
 
   SUBROUTINE xios(set_grid_attr)  &
-    ( grid_id, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-     )
+    ( grid_id, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+    , mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid))  :: grid_hdl
       CHARACTER(LEN=*), INTENT(IN) ::grid_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -38,16 +41,19 @@
       (grid_id,grid_hdl)
       CALL xios(set_grid_attr_hdl_)   &
-      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-       )
+      ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+      , mask_7d, name )
 
   END SUBROUTINE xios(set_grid_attr)
 
   SUBROUTINE xios(set_grid_attr_hdl)  &
-    ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-     )
+    ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+    , mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -67,16 +73,19 @@
 
       CALL xios(set_grid_attr_hdl_)  &
-      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-       )
+      ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+      , mask_7d, name )
 
   END SUBROUTINE xios(set_grid_attr_hdl)
 
   SUBROUTINE xios(set_grid_attr_hdl_)   &
-    ( grid_hdl, description_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_, mask_6d_, mask_7d_  &
-    , name_ )
+    ( grid_hdl, comment_, description_, mask_0d_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_  &
+    , mask_6d_, mask_7d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_0d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d__tmp(:)
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d_(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
@@ -95,7 +104,19 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_grid_comment &
+      (grid_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(description_)) THEN
         CALL cxios_set_grid_description &
       (grid_hdl%daddr, description_, len(description_))
+      ENDIF
+
+      IF (PRESENT(mask_0d_)) THEN
+        ALLOCATE(mask_0d__tmp(SIZE(mask_0d_,1)))
+        mask_0d__tmp = mask_0d_
+        CALL cxios_set_grid_mask_0d &
+      (grid_hdl%daddr, mask_0d__tmp, SHAPE(mask_0d_))
       ENDIF
 
@@ -162,11 +183,14 @@
 
   SUBROUTINE xios(get_grid_attr)  &
-    ( grid_id, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-     )
+    ( grid_id, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+    , mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid))  :: grid_hdl
       CHARACTER(LEN=*), INTENT(IN) ::grid_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -188,16 +212,19 @@
       (grid_id,grid_hdl)
       CALL xios(get_grid_attr_hdl_)   &
-      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-       )
+      ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+      , mask_7d, name )
 
   END SUBROUTINE xios(get_grid_attr)
 
   SUBROUTINE xios(get_grid_attr_hdl)  &
-    ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-     )
+    ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+    , mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -217,16 +244,19 @@
 
       CALL xios(get_grid_attr_hdl_)  &
-      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-       )
+      ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+      , mask_7d, name )
 
   END SUBROUTINE xios(get_grid_attr_hdl)
 
   SUBROUTINE xios(get_grid_attr_hdl_)   &
-    ( grid_hdl, description_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_, mask_6d_, mask_7d_  &
-    , name_ )
+    ( grid_hdl, comment_, description_, mask_0d_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_  &
+    , mask_6d_, mask_7d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_0d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d__tmp(:)
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d_(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
@@ -245,7 +275,19 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_grid_comment &
+      (grid_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(description_)) THEN
         CALL cxios_get_grid_description &
       (grid_hdl%daddr, description_, len(description_))
+      ENDIF
+
+      IF (PRESENT(mask_0d_)) THEN
+        ALLOCATE(mask_0d__tmp(SIZE(mask_0d_,1)))
+        CALL cxios_get_grid_mask_0d &
+      (grid_hdl%daddr, mask_0d__tmp, SHAPE(mask_0d_))
+        mask_0d_ = mask_0d__tmp
       ENDIF
 
@@ -312,12 +354,16 @@
 
   SUBROUTINE xios(is_defined_grid_attr)  &
-    ( grid_id, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-     )
+    ( grid_id, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+    , mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid))  :: grid_hdl
       CHARACTER(LEN=*), INTENT(IN) ::grid_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: description
       LOGICAL(KIND=C_BOOL) :: description_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_0d
+      LOGICAL(KIND=C_BOOL) :: mask_0d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
       LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
@@ -340,17 +386,21 @@
       (grid_id,grid_hdl)
       CALL xios(is_defined_grid_attr_hdl_)   &
-      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-       )
+      ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+      , mask_7d, name )
 
   END SUBROUTINE xios(is_defined_grid_attr)
 
   SUBROUTINE xios(is_defined_grid_attr_hdl)  &
-    ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-     )
+    ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+    , mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: description
       LOGICAL(KIND=C_BOOL) :: description_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_0d
+      LOGICAL(KIND=C_BOOL) :: mask_0d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
       LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
@@ -371,17 +421,21 @@
 
       CALL xios(is_defined_grid_attr_hdl_)  &
-      ( grid_hdl, description, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d, mask_7d, name  &
-       )
+      ( grid_hdl, comment, description, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
+      , mask_7d, name )
 
   END SUBROUTINE xios(is_defined_grid_attr_hdl)
 
   SUBROUTINE xios(is_defined_grid_attr_hdl_)   &
-    ( grid_hdl, description_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_, mask_6d_, mask_7d_  &
-    , name_ )
+    ( grid_hdl, comment_, description_, mask_0d_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_  &
+    , mask_6d_, mask_7d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(grid)) , INTENT(IN) :: grid_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: description_
       LOGICAL(KIND=C_BOOL) :: description__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_0d_
+      LOGICAL(KIND=C_BOOL) :: mask_0d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d_
       LOGICAL(KIND=C_BOOL) :: mask_1d__tmp
@@ -401,4 +455,10 @@
       LOGICAL(KIND=C_BOOL) :: name__tmp
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_grid_comment &
+      (grid_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(description_)) THEN
         description__tmp = cxios_is_defined_grid_description &
@@ -407,4 +467,10 @@
       ENDIF
 
+      IF (PRESENT(mask_0d_)) THEN
+        mask_0d__tmp = cxios_is_defined_grid_mask_0d &
+      (grid_hdl%daddr)
+        mask_0d_ = mask_0d__tmp
+      ENDIF
+
       IF (PRESENT(mask_1d_)) THEN
         mask_1d__tmp = cxios_is_defined_grid_mask_1d &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/igridgroup_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/igridgroup_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/igridgroup_attr.F90	(revision 1545)
@@ -12,12 +12,15 @@
 
   SUBROUTINE xios(set_gridgroup_attr)  &
-    ( gridgroup_id, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-    , mask_7d, name )
+    ( gridgroup_id, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+    , mask_5d, mask_6d, mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup))  :: gridgroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -39,17 +42,20 @@
       (gridgroup_id,gridgroup_hdl)
       CALL xios(set_gridgroup_attr_hdl_)   &
-      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-      , mask_7d, name )
+      ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+      , mask_5d, mask_6d, mask_7d, name )
 
   END SUBROUTINE xios(set_gridgroup_attr)
 
   SUBROUTINE xios(set_gridgroup_attr_hdl)  &
-    ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-    , mask_7d, name )
+    ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+    , mask_5d, mask_6d, mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -69,17 +75,20 @@
 
       CALL xios(set_gridgroup_attr_hdl_)  &
-      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-      , mask_7d, name )
+      ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+      , mask_5d, mask_6d, mask_7d, name )
 
   END SUBROUTINE xios(set_gridgroup_attr_hdl)
 
   SUBROUTINE xios(set_gridgroup_attr_hdl_)   &
-    ( gridgroup_hdl, description_, group_ref_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_  &
-    , mask_6d_, mask_7d_, name_ )
+    ( gridgroup_hdl, comment_, description_, group_ref_, mask_0d_, mask_1d_, mask_2d_, mask_3d_  &
+    , mask_4d_, mask_5d_, mask_6d_, mask_7d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: description_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: mask_0d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d__tmp(:)
       LOGICAL  , OPTIONAL, INTENT(IN) :: mask_1d_(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
@@ -98,4 +107,9 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_gridgroup_comment &
+      (gridgroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(description_)) THEN
         CALL cxios_set_gridgroup_description &
@@ -106,4 +120,11 @@
         CALL cxios_set_gridgroup_group_ref &
       (gridgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+
+      IF (PRESENT(mask_0d_)) THEN
+        ALLOCATE(mask_0d__tmp(SIZE(mask_0d_,1)))
+        mask_0d__tmp = mask_0d_
+        CALL cxios_set_gridgroup_mask_0d &
+      (gridgroup_hdl%daddr, mask_0d__tmp, SHAPE(mask_0d_))
       ENDIF
 
@@ -170,12 +191,15 @@
 
   SUBROUTINE xios(get_gridgroup_attr)  &
-    ( gridgroup_id, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-    , mask_7d, name )
+    ( gridgroup_id, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+    , mask_5d, mask_6d, mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup))  :: gridgroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -197,17 +221,20 @@
       (gridgroup_id,gridgroup_hdl)
       CALL xios(get_gridgroup_attr_hdl_)   &
-      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-      , mask_7d, name )
+      ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+      , mask_5d, mask_6d, mask_7d, name )
 
   END SUBROUTINE xios(get_gridgroup_attr)
 
   SUBROUTINE xios(get_gridgroup_attr_hdl)  &
-    ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-    , mask_7d, name )
+    ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+    , mask_5d, mask_6d, mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_0d(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d_tmp(:)
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d_tmp(:)
@@ -227,17 +254,20 @@
 
       CALL xios(get_gridgroup_attr_hdl_)  &
-      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-      , mask_7d, name )
+      ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+      , mask_5d, mask_6d, mask_7d, name )
 
   END SUBROUTINE xios(get_gridgroup_attr_hdl)
 
   SUBROUTINE xios(get_gridgroup_attr_hdl_)   &
-    ( gridgroup_hdl, description_, group_ref_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_  &
-    , mask_6d_, mask_7d_, name_ )
+    ( gridgroup_hdl, comment_, description_, group_ref_, mask_0d_, mask_1d_, mask_2d_, mask_3d_  &
+    , mask_4d_, mask_5d_, mask_6d_, mask_7d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: description_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_0d_(:)
+      LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_0d__tmp(:)
       LOGICAL  , OPTIONAL, INTENT(OUT) :: mask_1d_(:)
       LOGICAL (KIND=C_BOOL) , ALLOCATABLE :: mask_1d__tmp(:)
@@ -256,4 +286,9 @@
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
 
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_gridgroup_comment &
+      (gridgroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(description_)) THEN
         CALL cxios_get_gridgroup_description &
@@ -264,4 +299,11 @@
         CALL cxios_get_gridgroup_group_ref &
       (gridgroup_hdl%daddr, group_ref_, len(group_ref_))
+      ENDIF
+
+      IF (PRESENT(mask_0d_)) THEN
+        ALLOCATE(mask_0d__tmp(SIZE(mask_0d_,1)))
+        CALL cxios_get_gridgroup_mask_0d &
+      (gridgroup_hdl%daddr, mask_0d__tmp, SHAPE(mask_0d_))
+        mask_0d_ = mask_0d__tmp
       ENDIF
 
@@ -328,14 +370,18 @@
 
   SUBROUTINE xios(is_defined_gridgroup_attr)  &
-    ( gridgroup_id, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-    , mask_7d, name )
+    ( gridgroup_id, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+    , mask_5d, mask_6d, mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup))  :: gridgroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::gridgroup_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: description
       LOGICAL(KIND=C_BOOL) :: description_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_0d
+      LOGICAL(KIND=C_BOOL) :: mask_0d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
       LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
@@ -358,19 +404,23 @@
       (gridgroup_id,gridgroup_hdl)
       CALL xios(is_defined_gridgroup_attr_hdl_)   &
-      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-      , mask_7d, name )
+      ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+      , mask_5d, mask_6d, mask_7d, name )
 
   END SUBROUTINE xios(is_defined_gridgroup_attr)
 
   SUBROUTINE xios(is_defined_gridgroup_attr_hdl)  &
-    ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-    , mask_7d, name )
+    ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+    , mask_5d, mask_6d, mask_7d, name )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: description
       LOGICAL(KIND=C_BOOL) :: description_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_0d
+      LOGICAL(KIND=C_BOOL) :: mask_0d_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d
       LOGICAL(KIND=C_BOOL) :: mask_1d_tmp
@@ -391,19 +441,23 @@
 
       CALL xios(is_defined_gridgroup_attr_hdl_)  &
-      ( gridgroup_hdl, description, group_ref, mask_1d, mask_2d, mask_3d, mask_4d, mask_5d, mask_6d  &
-      , mask_7d, name )
+      ( gridgroup_hdl, comment, description, group_ref, mask_0d, mask_1d, mask_2d, mask_3d, mask_4d  &
+      , mask_5d, mask_6d, mask_7d, name )
 
   END SUBROUTINE xios(is_defined_gridgroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_gridgroup_attr_hdl_)   &
-    ( gridgroup_hdl, description_, group_ref_, mask_1d_, mask_2d_, mask_3d_, mask_4d_, mask_5d_  &
-    , mask_6d_, mask_7d_, name_ )
+    ( gridgroup_hdl, comment_, description_, group_ref_, mask_0d_, mask_1d_, mask_2d_, mask_3d_  &
+    , mask_4d_, mask_5d_, mask_6d_, mask_7d_, name_ )
 
     IMPLICIT NONE
       TYPE(txios(gridgroup)) , INTENT(IN) :: gridgroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: description_
       LOGICAL(KIND=C_BOOL) :: description__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
       LOGICAL(KIND=C_BOOL) :: group_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: mask_0d_
+      LOGICAL(KIND=C_BOOL) :: mask_0d__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mask_1d_
       LOGICAL(KIND=C_BOOL) :: mask_1d__tmp
@@ -423,4 +477,10 @@
       LOGICAL(KIND=C_BOOL) :: name__tmp
 
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_gridgroup_comment &
+      (gridgroup_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(description_)) THEN
         description__tmp = cxios_is_defined_gridgroup_description &
@@ -435,4 +495,10 @@
       ENDIF
 
+      IF (PRESENT(mask_0d_)) THEN
+        mask_0d__tmp = cxios_is_defined_gridgroup_mask_0d &
+      (gridgroup_hdl%daddr)
+        mask_0d_ = mask_0d__tmp
+      ENDIF
+
       IF (PRESENT(mask_1d_)) THEN
         mask_1d__tmp = cxios_is_defined_gridgroup_mask_1d &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/iinterpolate_domain_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/iinterpolate_domain_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/iinterpolate_domain_attr.F90	(revision 1545)
@@ -12,13 +12,17 @@
 
   SUBROUTINE xios(set_interpolate_domain_attr)  &
-    ( interpolate_domain_id, mode, order, quantity, renormalize, weight_filename, write_weight )
+    ( interpolate_domain_id, detect_missing_value, mode, order, quantity, read_write_convention  &
+    , renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
       TYPE(txios(interpolate_domain))  :: interpolate_domain_hdl
       CHARACTER(LEN=*), INTENT(IN) ::interpolate_domain_id
+      LOGICAL  , OPTIONAL, INTENT(IN) :: detect_missing_value
+      LOGICAL (KIND=C_BOOL) :: detect_missing_value_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: mode
       INTEGER  , OPTIONAL, INTENT(IN) :: order
       LOGICAL  , OPTIONAL, INTENT(IN) :: quantity
       LOGICAL (KIND=C_BOOL) :: quantity_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: read_write_convention
       LOGICAL  , OPTIONAL, INTENT(IN) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
@@ -30,19 +34,22 @@
       (interpolate_domain_id,interpolate_domain_hdl)
       CALL xios(set_interpolate_domain_attr_hdl_)   &
-      ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-       )
+      ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+      , renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(set_interpolate_domain_attr)
 
   SUBROUTINE xios(set_interpolate_domain_attr_hdl)  &
-    ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-     )
-
-    IMPLICIT NONE
-      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+    ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+    , renormalize, weight_filename, write_weight )
+
+    IMPLICIT NONE
+      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: detect_missing_value
+      LOGICAL (KIND=C_BOOL) :: detect_missing_value_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: mode
       INTEGER  , OPTIONAL, INTENT(IN) :: order
       LOGICAL  , OPTIONAL, INTENT(IN) :: quantity
       LOGICAL (KIND=C_BOOL) :: quantity_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: read_write_convention
       LOGICAL  , OPTIONAL, INTENT(IN) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
@@ -52,19 +59,22 @@
 
       CALL xios(set_interpolate_domain_attr_hdl_)  &
-      ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-       )
+      ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+      , renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(set_interpolate_domain_attr_hdl)
 
   SUBROUTINE xios(set_interpolate_domain_attr_hdl_)   &
-    ( interpolate_domain_hdl, mode_, order_, quantity_, renormalize_, weight_filename_, write_weight_  &
-     )
-
-    IMPLICIT NONE
-      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+    ( interpolate_domain_hdl, detect_missing_value_, mode_, order_, quantity_, read_write_convention_  &
+    , renormalize_, weight_filename_, write_weight_ )
+
+    IMPLICIT NONE
+      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: detect_missing_value_
+      LOGICAL (KIND=C_BOOL) :: detect_missing_value__tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: mode_
       INTEGER  , OPTIONAL, INTENT(IN) :: order_
       LOGICAL  , OPTIONAL, INTENT(IN) :: quantity_
       LOGICAL (KIND=C_BOOL) :: quantity__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: read_write_convention_
       LOGICAL  , OPTIONAL, INTENT(IN) :: renormalize_
       LOGICAL (KIND=C_BOOL) :: renormalize__tmp
@@ -73,4 +83,10 @@
       LOGICAL (KIND=C_BOOL) :: write_weight__tmp
 
+      IF (PRESENT(detect_missing_value_)) THEN
+        detect_missing_value__tmp = detect_missing_value_
+        CALL cxios_set_interpolate_domain_detect_missing_value &
+      (interpolate_domain_hdl%daddr, detect_missing_value__tmp)
+      ENDIF
+
       IF (PRESENT(mode_)) THEN
         CALL cxios_set_interpolate_domain_mode &
@@ -89,4 +105,9 @@
       ENDIF
 
+      IF (PRESENT(read_write_convention_)) THEN
+        CALL cxios_set_interpolate_domain_read_write_convention &
+      (interpolate_domain_hdl%daddr, read_write_convention_, len(read_write_convention_))
+      ENDIF
+
       IF (PRESENT(renormalize_)) THEN
         renormalize__tmp = renormalize_
@@ -109,13 +130,17 @@
 
   SUBROUTINE xios(get_interpolate_domain_attr)  &
-    ( interpolate_domain_id, mode, order, quantity, renormalize, weight_filename, write_weight )
+    ( interpolate_domain_id, detect_missing_value, mode, order, quantity, read_write_convention  &
+    , renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
       TYPE(txios(interpolate_domain))  :: interpolate_domain_hdl
       CHARACTER(LEN=*), INTENT(IN) ::interpolate_domain_id
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: detect_missing_value
+      LOGICAL (KIND=C_BOOL) :: detect_missing_value_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: mode
       INTEGER  , OPTIONAL, INTENT(OUT) :: order
       LOGICAL  , OPTIONAL, INTENT(OUT) :: quantity
       LOGICAL (KIND=C_BOOL) :: quantity_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: read_write_convention
       LOGICAL  , OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
@@ -127,19 +152,22 @@
       (interpolate_domain_id,interpolate_domain_hdl)
       CALL xios(get_interpolate_domain_attr_hdl_)   &
-      ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-       )
+      ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+      , renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(get_interpolate_domain_attr)
 
   SUBROUTINE xios(get_interpolate_domain_attr_hdl)  &
-    ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-     )
-
-    IMPLICIT NONE
-      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+    ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+    , renormalize, weight_filename, write_weight )
+
+    IMPLICIT NONE
+      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: detect_missing_value
+      LOGICAL (KIND=C_BOOL) :: detect_missing_value_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: mode
       INTEGER  , OPTIONAL, INTENT(OUT) :: order
       LOGICAL  , OPTIONAL, INTENT(OUT) :: quantity
       LOGICAL (KIND=C_BOOL) :: quantity_tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: read_write_convention
       LOGICAL  , OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL (KIND=C_BOOL) :: renormalize_tmp
@@ -149,19 +177,22 @@
 
       CALL xios(get_interpolate_domain_attr_hdl_)  &
-      ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-       )
+      ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+      , renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(get_interpolate_domain_attr_hdl)
 
   SUBROUTINE xios(get_interpolate_domain_attr_hdl_)   &
-    ( interpolate_domain_hdl, mode_, order_, quantity_, renormalize_, weight_filename_, write_weight_  &
-     )
-
-    IMPLICIT NONE
-      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+    ( interpolate_domain_hdl, detect_missing_value_, mode_, order_, quantity_, read_write_convention_  &
+    , renormalize_, weight_filename_, write_weight_ )
+
+    IMPLICIT NONE
+      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: detect_missing_value_
+      LOGICAL (KIND=C_BOOL) :: detect_missing_value__tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: mode_
       INTEGER  , OPTIONAL, INTENT(OUT) :: order_
       LOGICAL  , OPTIONAL, INTENT(OUT) :: quantity_
       LOGICAL (KIND=C_BOOL) :: quantity__tmp
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: read_write_convention_
       LOGICAL  , OPTIONAL, INTENT(OUT) :: renormalize_
       LOGICAL (KIND=C_BOOL) :: renormalize__tmp
@@ -170,4 +201,10 @@
       LOGICAL (KIND=C_BOOL) :: write_weight__tmp
 
+      IF (PRESENT(detect_missing_value_)) THEN
+        CALL cxios_get_interpolate_domain_detect_missing_value &
+      (interpolate_domain_hdl%daddr, detect_missing_value__tmp)
+        detect_missing_value_ = detect_missing_value__tmp
+      ENDIF
+
       IF (PRESENT(mode_)) THEN
         CALL cxios_get_interpolate_domain_mode &
@@ -186,4 +223,9 @@
       ENDIF
 
+      IF (PRESENT(read_write_convention_)) THEN
+        CALL cxios_get_interpolate_domain_read_write_convention &
+      (interpolate_domain_hdl%daddr, read_write_convention_, len(read_write_convention_))
+      ENDIF
+
       IF (PRESENT(renormalize_)) THEN
         CALL cxios_get_interpolate_domain_renormalize &
@@ -206,9 +248,12 @@
 
   SUBROUTINE xios(is_defined_interpolate_domain_attr)  &
-    ( interpolate_domain_id, mode, order, quantity, renormalize, weight_filename, write_weight )
+    ( interpolate_domain_id, detect_missing_value, mode, order, quantity, read_write_convention  &
+    , renormalize, weight_filename, write_weight )
 
     IMPLICIT NONE
       TYPE(txios(interpolate_domain))  :: interpolate_domain_hdl
       CHARACTER(LEN=*), INTENT(IN) ::interpolate_domain_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: detect_missing_value
+      LOGICAL(KIND=C_BOOL) :: detect_missing_value_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mode
       LOGICAL(KIND=C_BOOL) :: mode_tmp
@@ -217,4 +262,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: quantity
       LOGICAL(KIND=C_BOOL) :: quantity_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_write_convention
+      LOGICAL(KIND=C_BOOL) :: read_write_convention_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL(KIND=C_BOOL) :: renormalize_tmp
@@ -227,15 +274,17 @@
       (interpolate_domain_id,interpolate_domain_hdl)
       CALL xios(is_defined_interpolate_domain_attr_hdl_)   &
-      ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-       )
+      ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+      , renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(is_defined_interpolate_domain_attr)
 
   SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl)  &
-    ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-     )
-
-    IMPLICIT NONE
-      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+    ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+    , renormalize, weight_filename, write_weight )
+
+    IMPLICIT NONE
+      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: detect_missing_value
+      LOGICAL(KIND=C_BOOL) :: detect_missing_value_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mode
       LOGICAL(KIND=C_BOOL) :: mode_tmp
@@ -244,4 +293,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: quantity
       LOGICAL(KIND=C_BOOL) :: quantity_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_write_convention
+      LOGICAL(KIND=C_BOOL) :: read_write_convention_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: renormalize
       LOGICAL(KIND=C_BOOL) :: renormalize_tmp
@@ -252,15 +303,17 @@
 
       CALL xios(is_defined_interpolate_domain_attr_hdl_)  &
-      ( interpolate_domain_hdl, mode, order, quantity, renormalize, weight_filename, write_weight  &
-       )
+      ( interpolate_domain_hdl, detect_missing_value, mode, order, quantity, read_write_convention  &
+      , renormalize, weight_filename, write_weight )
 
   END SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl)
 
   SUBROUTINE xios(is_defined_interpolate_domain_attr_hdl_)   &
-    ( interpolate_domain_hdl, mode_, order_, quantity_, renormalize_, weight_filename_, write_weight_  &
-     )
-
-    IMPLICIT NONE
-      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+    ( interpolate_domain_hdl, detect_missing_value_, mode_, order_, quantity_, read_write_convention_  &
+    , renormalize_, weight_filename_, write_weight_ )
+
+    IMPLICIT NONE
+      TYPE(txios(interpolate_domain)) , INTENT(IN) :: interpolate_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: detect_missing_value_
+      LOGICAL(KIND=C_BOOL) :: detect_missing_value__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: mode_
       LOGICAL(KIND=C_BOOL) :: mode__tmp
@@ -269,4 +322,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: quantity_
       LOGICAL(KIND=C_BOOL) :: quantity__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: read_write_convention_
+      LOGICAL(KIND=C_BOOL) :: read_write_convention__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: renormalize_
       LOGICAL(KIND=C_BOOL) :: renormalize__tmp
@@ -276,4 +331,10 @@
       LOGICAL(KIND=C_BOOL) :: write_weight__tmp
 
+      IF (PRESENT(detect_missing_value_)) THEN
+        detect_missing_value__tmp = cxios_is_defined_interpolate_domain_detect_missing_value &
+      (interpolate_domain_hdl%daddr)
+        detect_missing_value_ = detect_missing_value__tmp
+      ENDIF
+
       IF (PRESENT(mode_)) THEN
         mode__tmp = cxios_is_defined_interpolate_domain_mode &
@@ -294,4 +355,10 @@
       ENDIF
 
+      IF (PRESENT(read_write_convention_)) THEN
+        read_write_convention__tmp = cxios_is_defined_interpolate_domain_read_write_convention &
+      (interpolate_domain_hdl%daddr)
+        read_write_convention_ = read_write_convention__tmp
+      ENDIF
+
       IF (PRESENT(renormalize_)) THEN
         renormalize__tmp = cxios_is_defined_interpolate_domain_renormalize &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/interpolate_domain_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/interpolate_domain_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/interpolate_domain_interface_attr.F90	(revision 1545)
@@ -9,4 +9,23 @@
   INTERFACE
     ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_interpolate_domain_detect_missing_value(interpolate_domain_hdl, detect_missing_value) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: detect_missing_value
+    END SUBROUTINE cxios_set_interpolate_domain_detect_missing_value
+
+    SUBROUTINE cxios_get_interpolate_domain_detect_missing_value(interpolate_domain_hdl, detect_missing_value) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      LOGICAL (KIND=C_BOOL)             :: detect_missing_value
+    END SUBROUTINE cxios_get_interpolate_domain_detect_missing_value
+
+    FUNCTION cxios_is_defined_interpolate_domain_detect_missing_value(interpolate_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_interpolate_domain_detect_missing_value
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+    END FUNCTION cxios_is_defined_interpolate_domain_detect_missing_value
+
 
     SUBROUTINE cxios_set_interpolate_domain_mode(interpolate_domain_hdl, mode, mode_size) BIND(C)
@@ -67,4 +86,25 @@
       INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
     END FUNCTION cxios_is_defined_interpolate_domain_quantity
+
+
+    SUBROUTINE cxios_set_interpolate_domain_read_write_convention(interpolate_domain_hdl, read_write_convention, read_write_convention_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: read_write_convention
+      INTEGER  (kind = C_INT)     , VALUE        :: read_write_convention_size
+    END SUBROUTINE cxios_set_interpolate_domain_read_write_convention
+
+    SUBROUTINE cxios_get_interpolate_domain_read_write_convention(interpolate_domain_hdl, read_write_convention, read_write_convention_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: read_write_convention
+      INTEGER  (kind = C_INT)     , VALUE        :: read_write_convention_size
+    END SUBROUTINE cxios_get_interpolate_domain_read_write_convention
+
+    FUNCTION cxios_is_defined_interpolate_domain_read_write_convention(interpolate_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_interpolate_domain_read_write_convention
+      INTEGER (kind = C_INTPTR_T), VALUE :: interpolate_domain_hdl
+    END FUNCTION cxios_is_defined_interpolate_domain_read_write_convention
 
 
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_axis_to_axis_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_axis_to_axis_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_axis_to_axis_attr.F90	(revision 1545)
@@ -0,0 +1,140 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ireduce_axis_to_axis_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ireduce_axis_to_axis
+  USE reduce_axis_to_axis_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_reduce_axis_to_axis_attr)  &
+    ( reduce_axis_to_axis_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis))  :: reduce_axis_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_axis_to_axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(get_reduce_axis_to_axis_handle) &
+      (reduce_axis_to_axis_id,reduce_axis_to_axis_hdl)
+      CALL xios(set_reduce_axis_to_axis_attr_hdl_)   &
+      ( reduce_axis_to_axis_hdl, operation )
+
+  END SUBROUTINE xios(set_reduce_axis_to_axis_attr)
+
+  SUBROUTINE xios(set_reduce_axis_to_axis_attr_hdl)  &
+    ( reduce_axis_to_axis_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(IN) :: reduce_axis_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(set_reduce_axis_to_axis_attr_hdl_)  &
+      ( reduce_axis_to_axis_hdl, operation )
+
+  END SUBROUTINE xios(set_reduce_axis_to_axis_attr_hdl)
+
+  SUBROUTINE xios(set_reduce_axis_to_axis_attr_hdl_)   &
+    ( reduce_axis_to_axis_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(IN) :: reduce_axis_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_set_reduce_axis_to_axis_operation &
+      (reduce_axis_to_axis_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(set_reduce_axis_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(get_reduce_axis_to_axis_attr)  &
+    ( reduce_axis_to_axis_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis))  :: reduce_axis_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_axis_to_axis_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_axis_to_axis_handle) &
+      (reduce_axis_to_axis_id,reduce_axis_to_axis_hdl)
+      CALL xios(get_reduce_axis_to_axis_attr_hdl_)   &
+      ( reduce_axis_to_axis_hdl, operation )
+
+  END SUBROUTINE xios(get_reduce_axis_to_axis_attr)
+
+  SUBROUTINE xios(get_reduce_axis_to_axis_attr_hdl)  &
+    ( reduce_axis_to_axis_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(IN) :: reduce_axis_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_axis_to_axis_attr_hdl_)  &
+      ( reduce_axis_to_axis_hdl, operation )
+
+  END SUBROUTINE xios(get_reduce_axis_to_axis_attr_hdl)
+
+  SUBROUTINE xios(get_reduce_axis_to_axis_attr_hdl_)   &
+    ( reduce_axis_to_axis_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(IN) :: reduce_axis_to_axis_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_get_reduce_axis_to_axis_operation &
+      (reduce_axis_to_axis_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(get_reduce_axis_to_axis_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_reduce_axis_to_axis_attr)  &
+    ( reduce_axis_to_axis_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis))  :: reduce_axis_to_axis_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_axis_to_axis_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(get_reduce_axis_to_axis_handle) &
+      (reduce_axis_to_axis_id,reduce_axis_to_axis_hdl)
+      CALL xios(is_defined_reduce_axis_to_axis_attr_hdl_)   &
+      ( reduce_axis_to_axis_hdl, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_axis_to_axis_attr)
+
+  SUBROUTINE xios(is_defined_reduce_axis_to_axis_attr_hdl)  &
+    ( reduce_axis_to_axis_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(IN) :: reduce_axis_to_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(is_defined_reduce_axis_to_axis_attr_hdl_)  &
+      ( reduce_axis_to_axis_hdl, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_axis_to_axis_attr_hdl)
+
+  SUBROUTINE xios(is_defined_reduce_axis_to_axis_attr_hdl_)   &
+    ( reduce_axis_to_axis_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_axis_to_axis)) , INTENT(IN) :: reduce_axis_to_axis_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation_
+      LOGICAL(KIND=C_BOOL) :: operation__tmp
+
+      IF (PRESENT(operation_)) THEN
+        operation__tmp = cxios_is_defined_reduce_axis_to_axis_operation &
+      (reduce_axis_to_axis_hdl%daddr)
+        operation_ = operation__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_reduce_axis_to_axis_attr_hdl_)
+
+END MODULE ireduce_axis_to_axis_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_domain_to_axis_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_domain_to_axis_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_domain_to_axis_attr.F90	(revision 1545)
@@ -12,5 +12,5 @@
 
   SUBROUTINE xios(set_reduce_domain_to_axis_attr)  &
-    ( reduce_domain_to_axis_id, direction, operation )
+    ( reduce_domain_to_axis_id, direction, local, operation )
 
     IMPLICIT NONE
@@ -18,4 +18,6 @@
       CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_axis_id
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction
+      LOGICAL  , OPTIONAL, INTENT(IN) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
 
@@ -23,27 +25,31 @@
       (reduce_domain_to_axis_id,reduce_domain_to_axis_hdl)
       CALL xios(set_reduce_domain_to_axis_attr_hdl_)   &
-      ( reduce_domain_to_axis_hdl, direction, operation )
+      ( reduce_domain_to_axis_hdl, direction, local, operation )
 
   END SUBROUTINE xios(set_reduce_domain_to_axis_attr)
 
   SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl)  &
-    ( reduce_domain_to_axis_hdl, direction, operation )
+    ( reduce_domain_to_axis_hdl, direction, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction
+      LOGICAL  , OPTIONAL, INTENT(IN) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
 
       CALL xios(set_reduce_domain_to_axis_attr_hdl_)  &
-      ( reduce_domain_to_axis_hdl, direction, operation )
+      ( reduce_domain_to_axis_hdl, direction, local, operation )
 
   END SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl)
 
   SUBROUTINE xios(set_reduce_domain_to_axis_attr_hdl_)   &
-    ( reduce_domain_to_axis_hdl, direction_, operation_ )
+    ( reduce_domain_to_axis_hdl, direction_, local_, operation_ )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: direction_
+      LOGICAL  , OPTIONAL, INTENT(IN) :: local_
+      LOGICAL (KIND=C_BOOL) :: local__tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
 
@@ -53,4 +59,10 @@
       ENDIF
 
+      IF (PRESENT(local_)) THEN
+        local__tmp = local_
+        CALL cxios_set_reduce_domain_to_axis_local &
+      (reduce_domain_to_axis_hdl%daddr, local__tmp)
+      ENDIF
+
       IF (PRESENT(operation_)) THEN
         CALL cxios_set_reduce_domain_to_axis_operation &
@@ -61,5 +73,5 @@
 
   SUBROUTINE xios(get_reduce_domain_to_axis_attr)  &
-    ( reduce_domain_to_axis_id, direction, operation )
+    ( reduce_domain_to_axis_id, direction, local, operation )
 
     IMPLICIT NONE
@@ -67,4 +79,6 @@
       CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_axis_id
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
 
@@ -72,27 +86,31 @@
       (reduce_domain_to_axis_id,reduce_domain_to_axis_hdl)
       CALL xios(get_reduce_domain_to_axis_attr_hdl_)   &
-      ( reduce_domain_to_axis_hdl, direction, operation )
+      ( reduce_domain_to_axis_hdl, direction, local, operation )
 
   END SUBROUTINE xios(get_reduce_domain_to_axis_attr)
 
   SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl)  &
-    ( reduce_domain_to_axis_hdl, direction, operation )
+    ( reduce_domain_to_axis_hdl, direction, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
 
       CALL xios(get_reduce_domain_to_axis_attr_hdl_)  &
-      ( reduce_domain_to_axis_hdl, direction, operation )
+      ( reduce_domain_to_axis_hdl, direction, local, operation )
 
   END SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl)
 
   SUBROUTINE xios(get_reduce_domain_to_axis_attr_hdl_)   &
-    ( reduce_domain_to_axis_hdl, direction_, operation_ )
+    ( reduce_domain_to_axis_hdl, direction_, local_, operation_ )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_axis)) , INTENT(IN) :: reduce_domain_to_axis_hdl
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: direction_
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: local_
+      LOGICAL (KIND=C_BOOL) :: local__tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
 
@@ -102,4 +120,10 @@
       ENDIF
 
+      IF (PRESENT(local_)) THEN
+        CALL cxios_get_reduce_domain_to_axis_local &
+      (reduce_domain_to_axis_hdl%daddr, local__tmp)
+        local_ = local__tmp
+      ENDIF
+
       IF (PRESENT(operation_)) THEN
         CALL cxios_get_reduce_domain_to_axis_operation &
@@ -110,5 +134,5 @@
 
   SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr)  &
-    ( reduce_domain_to_axis_id, direction, operation )
+    ( reduce_domain_to_axis_id, direction, local, operation )
 
     IMPLICIT NONE
@@ -117,4 +141,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: direction
       LOGICAL(KIND=C_BOOL) :: direction_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: local
+      LOGICAL(KIND=C_BOOL) :: local_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: operation
       LOGICAL(KIND=C_BOOL) :: operation_tmp
@@ -123,10 +149,10 @@
       (reduce_domain_to_axis_id,reduce_domain_to_axis_hdl)
       CALL xios(is_defined_reduce_domain_to_axis_attr_hdl_)   &
-      ( reduce_domain_to_axis_hdl, direction, operation )
+      ( reduce_domain_to_axis_hdl, direction, local, operation )
 
   END SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr)
 
   SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl)  &
-    ( reduce_domain_to_axis_hdl, direction, operation )
+    ( reduce_domain_to_axis_hdl, direction, local, operation )
 
     IMPLICIT NONE
@@ -134,14 +160,16 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: direction
       LOGICAL(KIND=C_BOOL) :: direction_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: local
+      LOGICAL(KIND=C_BOOL) :: local_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: operation
       LOGICAL(KIND=C_BOOL) :: operation_tmp
 
       CALL xios(is_defined_reduce_domain_to_axis_attr_hdl_)  &
-      ( reduce_domain_to_axis_hdl, direction, operation )
+      ( reduce_domain_to_axis_hdl, direction, local, operation )
 
   END SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl)
 
   SUBROUTINE xios(is_defined_reduce_domain_to_axis_attr_hdl_)   &
-    ( reduce_domain_to_axis_hdl, direction_, operation_ )
+    ( reduce_domain_to_axis_hdl, direction_, local_, operation_ )
 
     IMPLICIT NONE
@@ -149,4 +177,6 @@
       LOGICAL, OPTIONAL, INTENT(OUT) :: direction_
       LOGICAL(KIND=C_BOOL) :: direction__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: local_
+      LOGICAL(KIND=C_BOOL) :: local__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: operation_
       LOGICAL(KIND=C_BOOL) :: operation__tmp
@@ -158,4 +188,10 @@
       ENDIF
 
+      IF (PRESENT(local_)) THEN
+        local__tmp = cxios_is_defined_reduce_domain_to_axis_local &
+      (reduce_domain_to_axis_hdl%daddr)
+        local_ = local__tmp
+      ENDIF
+
       IF (PRESENT(operation_)) THEN
         operation__tmp = cxios_is_defined_reduce_domain_to_axis_operation &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_domain_to_scalar_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_domain_to_scalar_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_domain_to_scalar_attr.F90	(revision 1545)
@@ -12,9 +12,11 @@
 
   SUBROUTINE xios(set_reduce_domain_to_scalar_attr)  &
-    ( reduce_domain_to_scalar_id, operation )
+    ( reduce_domain_to_scalar_id, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar))  :: reduce_domain_to_scalar_hdl
       CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_scalar_id
+      LOGICAL  , OPTIONAL, INTENT(IN) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
 
@@ -22,26 +24,36 @@
       (reduce_domain_to_scalar_id,reduce_domain_to_scalar_hdl)
       CALL xios(set_reduce_domain_to_scalar_attr_hdl_)   &
-      ( reduce_domain_to_scalar_hdl, operation )
+      ( reduce_domain_to_scalar_hdl, local, operation )
 
   END SUBROUTINE xios(set_reduce_domain_to_scalar_attr)
 
   SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl)  &
-    ( reduce_domain_to_scalar_hdl, operation )
+    ( reduce_domain_to_scalar_hdl, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
 
       CALL xios(set_reduce_domain_to_scalar_attr_hdl_)  &
-      ( reduce_domain_to_scalar_hdl, operation )
+      ( reduce_domain_to_scalar_hdl, local, operation )
 
   END SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl)
 
   SUBROUTINE xios(set_reduce_domain_to_scalar_attr_hdl_)   &
-    ( reduce_domain_to_scalar_hdl, operation_ )
+    ( reduce_domain_to_scalar_hdl, local_, operation_ )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: local_
+      LOGICAL (KIND=C_BOOL) :: local__tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+
+      IF (PRESENT(local_)) THEN
+        local__tmp = local_
+        CALL cxios_set_reduce_domain_to_scalar_local &
+      (reduce_domain_to_scalar_hdl%daddr, local__tmp)
+      ENDIF
 
       IF (PRESENT(operation_)) THEN
@@ -53,9 +65,11 @@
 
   SUBROUTINE xios(get_reduce_domain_to_scalar_attr)  &
-    ( reduce_domain_to_scalar_id, operation )
+    ( reduce_domain_to_scalar_id, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar))  :: reduce_domain_to_scalar_hdl
       CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_scalar_id
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
 
@@ -63,26 +77,36 @@
       (reduce_domain_to_scalar_id,reduce_domain_to_scalar_hdl)
       CALL xios(get_reduce_domain_to_scalar_attr_hdl_)   &
-      ( reduce_domain_to_scalar_hdl, operation )
+      ( reduce_domain_to_scalar_hdl, local, operation )
 
   END SUBROUTINE xios(get_reduce_domain_to_scalar_attr)
 
   SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl)  &
-    ( reduce_domain_to_scalar_hdl, operation )
+    ( reduce_domain_to_scalar_hdl, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: local
+      LOGICAL (KIND=C_BOOL) :: local_tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
 
       CALL xios(get_reduce_domain_to_scalar_attr_hdl_)  &
-      ( reduce_domain_to_scalar_hdl, operation )
+      ( reduce_domain_to_scalar_hdl, local, operation )
 
   END SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl)
 
   SUBROUTINE xios(get_reduce_domain_to_scalar_attr_hdl_)   &
-    ( reduce_domain_to_scalar_hdl, operation_ )
+    ( reduce_domain_to_scalar_hdl, local_, operation_ )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: local_
+      LOGICAL (KIND=C_BOOL) :: local__tmp
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+
+      IF (PRESENT(local_)) THEN
+        CALL cxios_get_reduce_domain_to_scalar_local &
+      (reduce_domain_to_scalar_hdl%daddr, local__tmp)
+        local_ = local__tmp
+      ENDIF
 
       IF (PRESENT(operation_)) THEN
@@ -94,9 +118,11 @@
 
   SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr)  &
-    ( reduce_domain_to_scalar_id, operation )
+    ( reduce_domain_to_scalar_id, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar))  :: reduce_domain_to_scalar_hdl
       CHARACTER(LEN=*), INTENT(IN) ::reduce_domain_to_scalar_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: local
+      LOGICAL(KIND=C_BOOL) :: local_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: operation
       LOGICAL(KIND=C_BOOL) :: operation_tmp
@@ -105,28 +131,38 @@
       (reduce_domain_to_scalar_id,reduce_domain_to_scalar_hdl)
       CALL xios(is_defined_reduce_domain_to_scalar_attr_hdl_)   &
-      ( reduce_domain_to_scalar_hdl, operation )
+      ( reduce_domain_to_scalar_hdl, local, operation )
 
   END SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr)
 
   SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl)  &
-    ( reduce_domain_to_scalar_hdl, operation )
+    ( reduce_domain_to_scalar_hdl, local, operation )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: local
+      LOGICAL(KIND=C_BOOL) :: local_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: operation
       LOGICAL(KIND=C_BOOL) :: operation_tmp
 
       CALL xios(is_defined_reduce_domain_to_scalar_attr_hdl_)  &
-      ( reduce_domain_to_scalar_hdl, operation )
+      ( reduce_domain_to_scalar_hdl, local, operation )
 
   END SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl)
 
   SUBROUTINE xios(is_defined_reduce_domain_to_scalar_attr_hdl_)   &
-    ( reduce_domain_to_scalar_hdl, operation_ )
+    ( reduce_domain_to_scalar_hdl, local_, operation_ )
 
     IMPLICIT NONE
       TYPE(txios(reduce_domain_to_scalar)) , INTENT(IN) :: reduce_domain_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: local_
+      LOGICAL(KIND=C_BOOL) :: local__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: operation_
       LOGICAL(KIND=C_BOOL) :: operation__tmp
+
+      IF (PRESENT(local_)) THEN
+        local__tmp = cxios_is_defined_reduce_domain_to_scalar_local &
+      (reduce_domain_to_scalar_hdl%daddr)
+        local_ = local__tmp
+      ENDIF
 
       IF (PRESENT(operation_)) THEN
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_scalar_to_scalar_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_scalar_to_scalar_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ireduce_scalar_to_scalar_attr.F90	(revision 1545)
@@ -0,0 +1,140 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ireduce_scalar_to_scalar_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ireduce_scalar_to_scalar
+  USE reduce_scalar_to_scalar_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_reduce_scalar_to_scalar_attr)  &
+    ( reduce_scalar_to_scalar_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar))  :: reduce_scalar_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_scalar_to_scalar_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(get_reduce_scalar_to_scalar_handle) &
+      (reduce_scalar_to_scalar_id,reduce_scalar_to_scalar_hdl)
+      CALL xios(set_reduce_scalar_to_scalar_attr_hdl_)   &
+      ( reduce_scalar_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(set_reduce_scalar_to_scalar_attr)
+
+  SUBROUTINE xios(set_reduce_scalar_to_scalar_attr_hdl)  &
+    ( reduce_scalar_to_scalar_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(IN) :: reduce_scalar_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation
+
+      CALL xios(set_reduce_scalar_to_scalar_attr_hdl_)  &
+      ( reduce_scalar_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(set_reduce_scalar_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(set_reduce_scalar_to_scalar_attr_hdl_)   &
+    ( reduce_scalar_to_scalar_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(IN) :: reduce_scalar_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: operation_
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_set_reduce_scalar_to_scalar_operation &
+      (reduce_scalar_to_scalar_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(set_reduce_scalar_to_scalar_attr_hdl_)
+
+  SUBROUTINE xios(get_reduce_scalar_to_scalar_attr)  &
+    ( reduce_scalar_to_scalar_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar))  :: reduce_scalar_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_scalar_to_scalar_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_scalar_to_scalar_handle) &
+      (reduce_scalar_to_scalar_id,reduce_scalar_to_scalar_hdl)
+      CALL xios(get_reduce_scalar_to_scalar_attr_hdl_)   &
+      ( reduce_scalar_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(get_reduce_scalar_to_scalar_attr)
+
+  SUBROUTINE xios(get_reduce_scalar_to_scalar_attr_hdl)  &
+    ( reduce_scalar_to_scalar_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(IN) :: reduce_scalar_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation
+
+      CALL xios(get_reduce_scalar_to_scalar_attr_hdl_)  &
+      ( reduce_scalar_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(get_reduce_scalar_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(get_reduce_scalar_to_scalar_attr_hdl_)   &
+    ( reduce_scalar_to_scalar_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(IN) :: reduce_scalar_to_scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: operation_
+
+      IF (PRESENT(operation_)) THEN
+        CALL cxios_get_reduce_scalar_to_scalar_operation &
+      (reduce_scalar_to_scalar_hdl%daddr, operation_, len(operation_))
+      ENDIF
+
+  END SUBROUTINE xios(get_reduce_scalar_to_scalar_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_reduce_scalar_to_scalar_attr)  &
+    ( reduce_scalar_to_scalar_id, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar))  :: reduce_scalar_to_scalar_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reduce_scalar_to_scalar_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(get_reduce_scalar_to_scalar_handle) &
+      (reduce_scalar_to_scalar_id,reduce_scalar_to_scalar_hdl)
+      CALL xios(is_defined_reduce_scalar_to_scalar_attr_hdl_)   &
+      ( reduce_scalar_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_scalar_to_scalar_attr)
+
+  SUBROUTINE xios(is_defined_reduce_scalar_to_scalar_attr_hdl)  &
+    ( reduce_scalar_to_scalar_hdl, operation )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(IN) :: reduce_scalar_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation
+      LOGICAL(KIND=C_BOOL) :: operation_tmp
+
+      CALL xios(is_defined_reduce_scalar_to_scalar_attr_hdl_)  &
+      ( reduce_scalar_to_scalar_hdl, operation )
+
+  END SUBROUTINE xios(is_defined_reduce_scalar_to_scalar_attr_hdl)
+
+  SUBROUTINE xios(is_defined_reduce_scalar_to_scalar_attr_hdl_)   &
+    ( reduce_scalar_to_scalar_hdl, operation_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reduce_scalar_to_scalar)) , INTENT(IN) :: reduce_scalar_to_scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: operation_
+      LOGICAL(KIND=C_BOOL) :: operation__tmp
+
+      IF (PRESENT(operation_)) THEN
+        operation__tmp = cxios_is_defined_reduce_scalar_to_scalar_operation &
+      (reduce_scalar_to_scalar_hdl%daddr)
+        operation_ = operation__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_reduce_scalar_to_scalar_attr_hdl_)
+
+END MODULE ireduce_scalar_to_scalar_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/ireorder_domain_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/ireorder_domain_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/ireorder_domain_attr.F90	(revision 1545)
@@ -0,0 +1,232 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE ireorder_domain_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE ireorder_domain
+  USE reorder_domain_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_reorder_domain_attr)  &
+    ( reorder_domain_id, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain))  :: reorder_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reorder_domain_id
+      LOGICAL  , OPTIONAL, INTENT(IN) :: invert_lat
+      LOGICAL (KIND=C_BOOL) :: invert_lat_tmp
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: max_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: min_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: shift_lon_fraction
+
+      CALL xios(get_reorder_domain_handle) &
+      (reorder_domain_id,reorder_domain_hdl)
+      CALL xios(set_reorder_domain_attr_hdl_)   &
+      ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+  END SUBROUTINE xios(set_reorder_domain_attr)
+
+  SUBROUTINE xios(set_reorder_domain_attr_hdl)  &
+    ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain)) , INTENT(IN) :: reorder_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: invert_lat
+      LOGICAL (KIND=C_BOOL) :: invert_lat_tmp
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: max_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: min_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: shift_lon_fraction
+
+      CALL xios(set_reorder_domain_attr_hdl_)  &
+      ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+  END SUBROUTINE xios(set_reorder_domain_attr_hdl)
+
+  SUBROUTINE xios(set_reorder_domain_attr_hdl_)   &
+    ( reorder_domain_hdl, invert_lat_, max_lon_, min_lon_, shift_lon_fraction_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain)) , INTENT(IN) :: reorder_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(IN) :: invert_lat_
+      LOGICAL (KIND=C_BOOL) :: invert_lat__tmp
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: max_lon_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: min_lon_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: shift_lon_fraction_
+
+      IF (PRESENT(invert_lat_)) THEN
+        invert_lat__tmp = invert_lat_
+        CALL cxios_set_reorder_domain_invert_lat &
+      (reorder_domain_hdl%daddr, invert_lat__tmp)
+      ENDIF
+
+      IF (PRESENT(max_lon_)) THEN
+        CALL cxios_set_reorder_domain_max_lon &
+      (reorder_domain_hdl%daddr, max_lon_)
+      ENDIF
+
+      IF (PRESENT(min_lon_)) THEN
+        CALL cxios_set_reorder_domain_min_lon &
+      (reorder_domain_hdl%daddr, min_lon_)
+      ENDIF
+
+      IF (PRESENT(shift_lon_fraction_)) THEN
+        CALL cxios_set_reorder_domain_shift_lon_fraction &
+      (reorder_domain_hdl%daddr, shift_lon_fraction_)
+      ENDIF
+
+  END SUBROUTINE xios(set_reorder_domain_attr_hdl_)
+
+  SUBROUTINE xios(get_reorder_domain_attr)  &
+    ( reorder_domain_id, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain))  :: reorder_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reorder_domain_id
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: invert_lat
+      LOGICAL (KIND=C_BOOL) :: invert_lat_tmp
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: max_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: min_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: shift_lon_fraction
+
+      CALL xios(get_reorder_domain_handle) &
+      (reorder_domain_id,reorder_domain_hdl)
+      CALL xios(get_reorder_domain_attr_hdl_)   &
+      ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+  END SUBROUTINE xios(get_reorder_domain_attr)
+
+  SUBROUTINE xios(get_reorder_domain_attr_hdl)  &
+    ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain)) , INTENT(IN) :: reorder_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: invert_lat
+      LOGICAL (KIND=C_BOOL) :: invert_lat_tmp
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: max_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: min_lon
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: shift_lon_fraction
+
+      CALL xios(get_reorder_domain_attr_hdl_)  &
+      ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+  END SUBROUTINE xios(get_reorder_domain_attr_hdl)
+
+  SUBROUTINE xios(get_reorder_domain_attr_hdl_)   &
+    ( reorder_domain_hdl, invert_lat_, max_lon_, min_lon_, shift_lon_fraction_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain)) , INTENT(IN) :: reorder_domain_hdl
+      LOGICAL  , OPTIONAL, INTENT(OUT) :: invert_lat_
+      LOGICAL (KIND=C_BOOL) :: invert_lat__tmp
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: max_lon_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: min_lon_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: shift_lon_fraction_
+
+      IF (PRESENT(invert_lat_)) THEN
+        CALL cxios_get_reorder_domain_invert_lat &
+      (reorder_domain_hdl%daddr, invert_lat__tmp)
+        invert_lat_ = invert_lat__tmp
+      ENDIF
+
+      IF (PRESENT(max_lon_)) THEN
+        CALL cxios_get_reorder_domain_max_lon &
+      (reorder_domain_hdl%daddr, max_lon_)
+      ENDIF
+
+      IF (PRESENT(min_lon_)) THEN
+        CALL cxios_get_reorder_domain_min_lon &
+      (reorder_domain_hdl%daddr, min_lon_)
+      ENDIF
+
+      IF (PRESENT(shift_lon_fraction_)) THEN
+        CALL cxios_get_reorder_domain_shift_lon_fraction &
+      (reorder_domain_hdl%daddr, shift_lon_fraction_)
+      ENDIF
+
+  END SUBROUTINE xios(get_reorder_domain_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_reorder_domain_attr)  &
+    ( reorder_domain_id, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain))  :: reorder_domain_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::reorder_domain_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: invert_lat
+      LOGICAL(KIND=C_BOOL) :: invert_lat_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: max_lon
+      LOGICAL(KIND=C_BOOL) :: max_lon_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: min_lon
+      LOGICAL(KIND=C_BOOL) :: min_lon_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: shift_lon_fraction
+      LOGICAL(KIND=C_BOOL) :: shift_lon_fraction_tmp
+
+      CALL xios(get_reorder_domain_handle) &
+      (reorder_domain_id,reorder_domain_hdl)
+      CALL xios(is_defined_reorder_domain_attr_hdl_)   &
+      ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+  END SUBROUTINE xios(is_defined_reorder_domain_attr)
+
+  SUBROUTINE xios(is_defined_reorder_domain_attr_hdl)  &
+    ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain)) , INTENT(IN) :: reorder_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: invert_lat
+      LOGICAL(KIND=C_BOOL) :: invert_lat_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: max_lon
+      LOGICAL(KIND=C_BOOL) :: max_lon_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: min_lon
+      LOGICAL(KIND=C_BOOL) :: min_lon_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: shift_lon_fraction
+      LOGICAL(KIND=C_BOOL) :: shift_lon_fraction_tmp
+
+      CALL xios(is_defined_reorder_domain_attr_hdl_)  &
+      ( reorder_domain_hdl, invert_lat, max_lon, min_lon, shift_lon_fraction )
+
+  END SUBROUTINE xios(is_defined_reorder_domain_attr_hdl)
+
+  SUBROUTINE xios(is_defined_reorder_domain_attr_hdl_)   &
+    ( reorder_domain_hdl, invert_lat_, max_lon_, min_lon_, shift_lon_fraction_ )
+
+    IMPLICIT NONE
+      TYPE(txios(reorder_domain)) , INTENT(IN) :: reorder_domain_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: invert_lat_
+      LOGICAL(KIND=C_BOOL) :: invert_lat__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: max_lon_
+      LOGICAL(KIND=C_BOOL) :: max_lon__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: min_lon_
+      LOGICAL(KIND=C_BOOL) :: min_lon__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: shift_lon_fraction_
+      LOGICAL(KIND=C_BOOL) :: shift_lon_fraction__tmp
+
+      IF (PRESENT(invert_lat_)) THEN
+        invert_lat__tmp = cxios_is_defined_reorder_domain_invert_lat &
+      (reorder_domain_hdl%daddr)
+        invert_lat_ = invert_lat__tmp
+      ENDIF
+
+      IF (PRESENT(max_lon_)) THEN
+        max_lon__tmp = cxios_is_defined_reorder_domain_max_lon &
+      (reorder_domain_hdl%daddr)
+        max_lon_ = max_lon__tmp
+      ENDIF
+
+      IF (PRESENT(min_lon_)) THEN
+        min_lon__tmp = cxios_is_defined_reorder_domain_min_lon &
+      (reorder_domain_hdl%daddr)
+        min_lon_ = min_lon__tmp
+      ENDIF
+
+      IF (PRESENT(shift_lon_fraction_)) THEN
+        shift_lon_fraction__tmp = cxios_is_defined_reorder_domain_shift_lon_fraction &
+      (reorder_domain_hdl%daddr)
+        shift_lon_fraction_ = shift_lon_fraction__tmp
+      ENDIF
+
+  END SUBROUTINE xios(is_defined_reorder_domain_attr_hdl_)
+
+END MODULE ireorder_domain_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/iscalar_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/iscalar_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/iscalar_attr.F90	(revision 1545)
@@ -12,11 +12,18 @@
 
   SUBROUTINE xios(set_scalar_attr)  &
-    ( scalar_id, long_name, name, prec, scalar_ref, standard_name, unit, value )
+    ( scalar_id, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+    , scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalar))  :: scalar_hdl
       CHARACTER(LEN=*), INTENT(IN) ::scalar_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: positive
       INTEGER  , OPTIONAL, INTENT(IN) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: scalar_ref
@@ -28,15 +35,23 @@
       (scalar_id,scalar_hdl)
       CALL xios(set_scalar_attr_hdl_)   &
-      ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
+      ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+      , scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(set_scalar_attr)
 
   SUBROUTINE xios(set_scalar_attr_hdl)  &
-    ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
-
-    IMPLICIT NONE
-      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+    ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+    , scalar_ref, standard_name, unit, value )
+
+    IMPLICIT NONE
+      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: positive
       INTEGER  , OPTIONAL, INTENT(IN) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: scalar_ref
@@ -46,15 +61,23 @@
 
       CALL xios(set_scalar_attr_hdl_)  &
-      ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
+      ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+      , scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(set_scalar_attr_hdl)
 
   SUBROUTINE xios(set_scalar_attr_hdl_)   &
-    ( scalar_hdl, long_name_, name_, prec_, scalar_ref_, standard_name_, unit_, value_ )
-
-    IMPLICIT NONE
-      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+    ( scalar_hdl, axis_type_, bounds_, bounds_name_, comment_, label_, long_name_, name_, positive_  &
+    , prec_, scalar_ref_, standard_name_, unit_, value_ )
+
+    IMPLICIT NONE
+      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: label_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: positive_
       INTEGER  , OPTIONAL, INTENT(IN) :: prec_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: scalar_ref_
@@ -63,4 +86,29 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value_
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_set_scalar_axis_type &
+      (scalar_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_set_scalar_bounds &
+      (scalar_hdl%daddr, bounds_, SHAPE(bounds_))
+      ENDIF
+
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_set_scalar_bounds_name &
+      (scalar_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_scalar_comment &
+      (scalar_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
+      IF (PRESENT(label_)) THEN
+        CALL cxios_set_scalar_label &
+      (scalar_hdl%daddr, label_, len(label_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_set_scalar_long_name &
@@ -73,4 +121,9 @@
       ENDIF
 
+      IF (PRESENT(positive_)) THEN
+        CALL cxios_set_scalar_positive &
+      (scalar_hdl%daddr, positive_, len(positive_))
+      ENDIF
+
       IF (PRESENT(prec_)) THEN
         CALL cxios_set_scalar_prec &
@@ -101,11 +154,18 @@
 
   SUBROUTINE xios(get_scalar_attr)  &
-    ( scalar_id, long_name, name, prec, scalar_ref, standard_name, unit, value )
+    ( scalar_id, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+    , scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalar))  :: scalar_hdl
       CHARACTER(LEN=*), INTENT(IN) ::scalar_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: positive
       INTEGER  , OPTIONAL, INTENT(OUT) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: scalar_ref
@@ -117,15 +177,23 @@
       (scalar_id,scalar_hdl)
       CALL xios(get_scalar_attr_hdl_)   &
-      ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
+      ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+      , scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(get_scalar_attr)
 
   SUBROUTINE xios(get_scalar_attr_hdl)  &
-    ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
-
-    IMPLICIT NONE
-      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+    ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+    , scalar_ref, standard_name, unit, value )
+
+    IMPLICIT NONE
+      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: positive
       INTEGER  , OPTIONAL, INTENT(OUT) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: scalar_ref
@@ -135,15 +203,23 @@
 
       CALL xios(get_scalar_attr_hdl_)  &
-      ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
+      ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+      , scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(get_scalar_attr_hdl)
 
   SUBROUTINE xios(get_scalar_attr_hdl_)   &
-    ( scalar_hdl, long_name_, name_, prec_, scalar_ref_, standard_name_, unit_, value_ )
-
-    IMPLICIT NONE
-      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+    ( scalar_hdl, axis_type_, bounds_, bounds_name_, comment_, label_, long_name_, name_, positive_  &
+    , prec_, scalar_ref_, standard_name_, unit_, value_ )
+
+    IMPLICIT NONE
+      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: label_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: positive_
       INTEGER  , OPTIONAL, INTENT(OUT) :: prec_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: scalar_ref_
@@ -152,4 +228,29 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value_
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_get_scalar_axis_type &
+      (scalar_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_get_scalar_bounds &
+      (scalar_hdl%daddr, bounds_, SHAPE(bounds_))
+      ENDIF
+
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_get_scalar_bounds_name &
+      (scalar_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_scalar_comment &
+      (scalar_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
+      IF (PRESENT(label_)) THEN
+        CALL cxios_get_scalar_label &
+      (scalar_hdl%daddr, label_, len(label_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_get_scalar_long_name &
@@ -162,4 +263,9 @@
       ENDIF
 
+      IF (PRESENT(positive_)) THEN
+        CALL cxios_get_scalar_positive &
+      (scalar_hdl%daddr, positive_, len(positive_))
+      ENDIF
+
       IF (PRESENT(prec_)) THEN
         CALL cxios_get_scalar_prec &
@@ -190,13 +296,26 @@
 
   SUBROUTINE xios(is_defined_scalar_attr)  &
-    ( scalar_id, long_name, name, prec, scalar_ref, standard_name, unit, value )
+    ( scalar_id, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+    , scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalar))  :: scalar_hdl
       CHARACTER(LEN=*), INTENT(IN) ::scalar_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: label
+      LOGICAL(KIND=C_BOOL) :: label_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: positive
+      LOGICAL(KIND=C_BOOL) :: positive_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: prec
       LOGICAL(KIND=C_BOOL) :: prec_tmp
@@ -213,17 +332,31 @@
       (scalar_id,scalar_hdl)
       CALL xios(is_defined_scalar_attr_hdl_)   &
-      ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
+      ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+      , scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(is_defined_scalar_attr)
 
   SUBROUTINE xios(is_defined_scalar_attr_hdl)  &
-    ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
-
-    IMPLICIT NONE
-      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+    ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+    , scalar_ref, standard_name, unit, value )
+
+    IMPLICIT NONE
+      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: label
+      LOGICAL(KIND=C_BOOL) :: label_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: positive
+      LOGICAL(KIND=C_BOOL) :: positive_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: prec
       LOGICAL(KIND=C_BOOL) :: prec_tmp
@@ -238,17 +371,31 @@
 
       CALL xios(is_defined_scalar_attr_hdl_)  &
-      ( scalar_hdl, long_name, name, prec, scalar_ref, standard_name, unit, value )
+      ( scalar_hdl, axis_type, bounds, bounds_name, comment, label, long_name, name, positive, prec  &
+      , scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(is_defined_scalar_attr_hdl)
 
   SUBROUTINE xios(is_defined_scalar_attr_hdl_)   &
-    ( scalar_hdl, long_name_, name_, prec_, scalar_ref_, standard_name_, unit_, value_ )
-
-    IMPLICIT NONE
-      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+    ( scalar_hdl, axis_type_, bounds_, bounds_name_, comment_, label_, long_name_, name_, positive_  &
+    , prec_, scalar_ref_, standard_name_, unit_, value_ )
+
+    IMPLICIT NONE
+      TYPE(txios(scalar)) , INTENT(IN) :: scalar_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type_
+      LOGICAL(KIND=C_BOOL) :: axis_type__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
+      LOGICAL(KIND=C_BOOL) :: bounds__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: label_
+      LOGICAL(KIND=C_BOOL) :: label__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name_
       LOGICAL(KIND=C_BOOL) :: name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: positive_
+      LOGICAL(KIND=C_BOOL) :: positive__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: prec_
       LOGICAL(KIND=C_BOOL) :: prec__tmp
@@ -262,4 +409,34 @@
       LOGICAL(KIND=C_BOOL) :: value__tmp
 
+      IF (PRESENT(axis_type_)) THEN
+        axis_type__tmp = cxios_is_defined_scalar_axis_type &
+      (scalar_hdl%daddr)
+        axis_type_ = axis_type__tmp
+      ENDIF
+
+      IF (PRESENT(bounds_)) THEN
+        bounds__tmp = cxios_is_defined_scalar_bounds &
+      (scalar_hdl%daddr)
+        bounds_ = bounds__tmp
+      ENDIF
+
+      IF (PRESENT(bounds_name_)) THEN
+        bounds_name__tmp = cxios_is_defined_scalar_bounds_name &
+      (scalar_hdl%daddr)
+        bounds_name_ = bounds_name__tmp
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_scalar_comment &
+      (scalar_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
+      IF (PRESENT(label_)) THEN
+        label__tmp = cxios_is_defined_scalar_label &
+      (scalar_hdl%daddr)
+        label_ = label__tmp
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         long_name__tmp = cxios_is_defined_scalar_long_name &
@@ -274,4 +451,10 @@
       ENDIF
 
+      IF (PRESENT(positive_)) THEN
+        positive__tmp = cxios_is_defined_scalar_positive &
+      (scalar_hdl%daddr)
+        positive_ = positive__tmp
+      ENDIF
+
       IF (PRESENT(prec_)) THEN
         prec__tmp = cxios_is_defined_scalar_prec &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/iscalargroup_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/iscalargroup_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/iscalargroup_attr.F90	(revision 1545)
@@ -12,12 +12,19 @@
 
   SUBROUTINE xios(set_scalargroup_attr)  &
-    ( scalargroup_id, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value )
+    ( scalargroup_id, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+    , positive, prec, scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup))  :: scalargroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::scalargroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: positive
       INTEGER  , OPTIONAL, INTENT(IN) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: scalar_ref
@@ -29,18 +36,24 @@
       (scalargroup_id,scalargroup_hdl)
       CALL xios(set_scalargroup_attr_hdl_)   &
-      ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-       )
+      ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+      , positive, prec, scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(set_scalargroup_attr)
 
   SUBROUTINE xios(set_scalargroup_attr_hdl)  &
-    ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-     )
+    ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+    , positive, prec, scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup)) , INTENT(IN) :: scalargroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: positive
       INTEGER  , OPTIONAL, INTENT(IN) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: scalar_ref
@@ -50,18 +63,24 @@
 
       CALL xios(set_scalargroup_attr_hdl_)  &
-      ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-       )
+      ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+      , positive, prec, scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(set_scalargroup_attr_hdl)
 
   SUBROUTINE xios(set_scalargroup_attr_hdl_)   &
-    ( scalargroup_hdl, group_ref_, long_name_, name_, prec_, scalar_ref_, standard_name_, unit_  &
-    , value_ )
+    ( scalargroup_hdl, axis_type_, bounds_, bounds_name_, comment_, group_ref_, label_, long_name_  &
+    , name_, positive_, prec_, scalar_ref_, standard_name_, unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup)) , INTENT(IN) :: scalargroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: axis_type_
+      REAL (KIND=8) , OPTIONAL, INTENT(IN) :: bounds_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: comment_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: label_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: long_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: positive_
       INTEGER  , OPTIONAL, INTENT(IN) :: prec_
       CHARACTER(len = *) , OPTIONAL, INTENT(IN) :: scalar_ref_
@@ -70,4 +89,24 @@
       REAL (KIND=8) , OPTIONAL, INTENT(IN) :: value_
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_set_scalargroup_axis_type &
+      (scalargroup_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_set_scalargroup_bounds &
+      (scalargroup_hdl%daddr, bounds_, SHAPE(bounds_))
+      ENDIF
+
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_set_scalargroup_bounds_name &
+      (scalargroup_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_set_scalargroup_comment &
+      (scalargroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(group_ref_)) THEN
         CALL cxios_set_scalargroup_group_ref &
@@ -75,4 +114,9 @@
       ENDIF
 
+      IF (PRESENT(label_)) THEN
+        CALL cxios_set_scalargroup_label &
+      (scalargroup_hdl%daddr, label_, len(label_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_set_scalargroup_long_name &
@@ -85,4 +129,9 @@
       ENDIF
 
+      IF (PRESENT(positive_)) THEN
+        CALL cxios_set_scalargroup_positive &
+      (scalargroup_hdl%daddr, positive_, len(positive_))
+      ENDIF
+
       IF (PRESENT(prec_)) THEN
         CALL cxios_set_scalargroup_prec &
@@ -113,12 +162,19 @@
 
   SUBROUTINE xios(get_scalargroup_attr)  &
-    ( scalargroup_id, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value )
+    ( scalargroup_id, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+    , positive, prec, scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup))  :: scalargroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::scalargroup_id
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: positive
       INTEGER  , OPTIONAL, INTENT(OUT) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: scalar_ref
@@ -130,18 +186,24 @@
       (scalargroup_id,scalargroup_hdl)
       CALL xios(get_scalargroup_attr_hdl_)   &
-      ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-       )
+      ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+      , positive, prec, scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(get_scalargroup_attr)
 
   SUBROUTINE xios(get_scalargroup_attr_hdl)  &
-    ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-     )
+    ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+    , positive, prec, scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup)) , INTENT(IN) :: scalargroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: label
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: positive
       INTEGER  , OPTIONAL, INTENT(OUT) :: prec
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: scalar_ref
@@ -151,18 +213,24 @@
 
       CALL xios(get_scalargroup_attr_hdl_)  &
-      ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-       )
+      ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+      , positive, prec, scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(get_scalargroup_attr_hdl)
 
   SUBROUTINE xios(get_scalargroup_attr_hdl_)   &
-    ( scalargroup_hdl, group_ref_, long_name_, name_, prec_, scalar_ref_, standard_name_, unit_  &
-    , value_ )
+    ( scalargroup_hdl, axis_type_, bounds_, bounds_name_, comment_, group_ref_, label_, long_name_  &
+    , name_, positive_, prec_, scalar_ref_, standard_name_, unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup)) , INTENT(IN) :: scalargroup_hdl
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: axis_type_
+      REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: bounds_(:)
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: bounds_name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: comment_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: group_ref_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: label_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: long_name_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: name_
+      CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: positive_
       INTEGER  , OPTIONAL, INTENT(OUT) :: prec_
       CHARACTER(len = *) , OPTIONAL, INTENT(OUT) :: scalar_ref_
@@ -171,4 +239,24 @@
       REAL (KIND=8) , OPTIONAL, INTENT(OUT) :: value_
 
+      IF (PRESENT(axis_type_)) THEN
+        CALL cxios_get_scalargroup_axis_type &
+      (scalargroup_hdl%daddr, axis_type_, len(axis_type_))
+      ENDIF
+
+      IF (PRESENT(bounds_)) THEN
+        CALL cxios_get_scalargroup_bounds &
+      (scalargroup_hdl%daddr, bounds_, SHAPE(bounds_))
+      ENDIF
+
+      IF (PRESENT(bounds_name_)) THEN
+        CALL cxios_get_scalargroup_bounds_name &
+      (scalargroup_hdl%daddr, bounds_name_, len(bounds_name_))
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        CALL cxios_get_scalargroup_comment &
+      (scalargroup_hdl%daddr, comment_, len(comment_))
+      ENDIF
+
       IF (PRESENT(group_ref_)) THEN
         CALL cxios_get_scalargroup_group_ref &
@@ -176,4 +264,9 @@
       ENDIF
 
+      IF (PRESENT(label_)) THEN
+        CALL cxios_get_scalargroup_label &
+      (scalargroup_hdl%daddr, label_, len(label_))
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         CALL cxios_get_scalargroup_long_name &
@@ -186,4 +279,9 @@
       ENDIF
 
+      IF (PRESENT(positive_)) THEN
+        CALL cxios_get_scalargroup_positive &
+      (scalargroup_hdl%daddr, positive_, len(positive_))
+      ENDIF
+
       IF (PRESENT(prec_)) THEN
         CALL cxios_get_scalargroup_prec &
@@ -214,15 +312,28 @@
 
   SUBROUTINE xios(is_defined_scalargroup_attr)  &
-    ( scalargroup_id, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value )
+    ( scalargroup_id, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+    , positive, prec, scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup))  :: scalargroup_hdl
       CHARACTER(LEN=*), INTENT(IN) ::scalargroup_id
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: label
+      LOGICAL(KIND=C_BOOL) :: label_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: positive
+      LOGICAL(KIND=C_BOOL) :: positive_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: prec
       LOGICAL(KIND=C_BOOL) :: prec_tmp
@@ -239,21 +350,33 @@
       (scalargroup_id,scalargroup_hdl)
       CALL xios(is_defined_scalargroup_attr_hdl_)   &
-      ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-       )
+      ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+      , positive, prec, scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(is_defined_scalargroup_attr)
 
   SUBROUTINE xios(is_defined_scalargroup_attr_hdl)  &
-    ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-     )
+    ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+    , positive, prec, scalar_ref, standard_name, unit, value )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup)) , INTENT(IN) :: scalargroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type
+      LOGICAL(KIND=C_BOOL) :: axis_type_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds
+      LOGICAL(KIND=C_BOOL) :: bounds_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name
+      LOGICAL(KIND=C_BOOL) :: bounds_name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment
+      LOGICAL(KIND=C_BOOL) :: comment_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref
       LOGICAL(KIND=C_BOOL) :: group_ref_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: label
+      LOGICAL(KIND=C_BOOL) :: label_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name
       LOGICAL(KIND=C_BOOL) :: long_name_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name
       LOGICAL(KIND=C_BOOL) :: name_tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: positive
+      LOGICAL(KIND=C_BOOL) :: positive_tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: prec
       LOGICAL(KIND=C_BOOL) :: prec_tmp
@@ -268,21 +391,33 @@
 
       CALL xios(is_defined_scalargroup_attr_hdl_)  &
-      ( scalargroup_hdl, group_ref, long_name, name, prec, scalar_ref, standard_name, unit, value  &
-       )
+      ( scalargroup_hdl, axis_type, bounds, bounds_name, comment, group_ref, label, long_name, name  &
+      , positive, prec, scalar_ref, standard_name, unit, value )
 
   END SUBROUTINE xios(is_defined_scalargroup_attr_hdl)
 
   SUBROUTINE xios(is_defined_scalargroup_attr_hdl_)   &
-    ( scalargroup_hdl, group_ref_, long_name_, name_, prec_, scalar_ref_, standard_name_, unit_  &
-    , value_ )
+    ( scalargroup_hdl, axis_type_, bounds_, bounds_name_, comment_, group_ref_, label_, long_name_  &
+    , name_, positive_, prec_, scalar_ref_, standard_name_, unit_, value_ )
 
     IMPLICIT NONE
       TYPE(txios(scalargroup)) , INTENT(IN) :: scalargroup_hdl
+      LOGICAL, OPTIONAL, INTENT(OUT) :: axis_type_
+      LOGICAL(KIND=C_BOOL) :: axis_type__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_
+      LOGICAL(KIND=C_BOOL) :: bounds__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: bounds_name_
+      LOGICAL(KIND=C_BOOL) :: bounds_name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: comment_
+      LOGICAL(KIND=C_BOOL) :: comment__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: group_ref_
       LOGICAL(KIND=C_BOOL) :: group_ref__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: label_
+      LOGICAL(KIND=C_BOOL) :: label__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: long_name_
       LOGICAL(KIND=C_BOOL) :: long_name__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: name_
       LOGICAL(KIND=C_BOOL) :: name__tmp
+      LOGICAL, OPTIONAL, INTENT(OUT) :: positive_
+      LOGICAL(KIND=C_BOOL) :: positive__tmp
       LOGICAL, OPTIONAL, INTENT(OUT) :: prec_
       LOGICAL(KIND=C_BOOL) :: prec__tmp
@@ -296,4 +431,28 @@
       LOGICAL(KIND=C_BOOL) :: value__tmp
 
+      IF (PRESENT(axis_type_)) THEN
+        axis_type__tmp = cxios_is_defined_scalargroup_axis_type &
+      (scalargroup_hdl%daddr)
+        axis_type_ = axis_type__tmp
+      ENDIF
+
+      IF (PRESENT(bounds_)) THEN
+        bounds__tmp = cxios_is_defined_scalargroup_bounds &
+      (scalargroup_hdl%daddr)
+        bounds_ = bounds__tmp
+      ENDIF
+
+      IF (PRESENT(bounds_name_)) THEN
+        bounds_name__tmp = cxios_is_defined_scalargroup_bounds_name &
+      (scalargroup_hdl%daddr)
+        bounds_name_ = bounds_name__tmp
+      ENDIF
+
+      IF (PRESENT(comment_)) THEN
+        comment__tmp = cxios_is_defined_scalargroup_comment &
+      (scalargroup_hdl%daddr)
+        comment_ = comment__tmp
+      ENDIF
+
       IF (PRESENT(group_ref_)) THEN
         group_ref__tmp = cxios_is_defined_scalargroup_group_ref &
@@ -302,4 +461,10 @@
       ENDIF
 
+      IF (PRESENT(label_)) THEN
+        label__tmp = cxios_is_defined_scalargroup_label &
+      (scalargroup_hdl%daddr)
+        label_ = label__tmp
+      ENDIF
+
       IF (PRESENT(long_name_)) THEN
         long_name__tmp = cxios_is_defined_scalargroup_long_name &
@@ -314,4 +479,10 @@
       ENDIF
 
+      IF (PRESENT(positive_)) THEN
+        positive__tmp = cxios_is_defined_scalargroup_positive &
+      (scalargroup_hdl%daddr)
+        positive_ = positive__tmp
+      ENDIF
+
       IF (PRESENT(prec_)) THEN
         prec__tmp = cxios_is_defined_scalargroup_prec &
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/itemporal_splitting_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/itemporal_splitting_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/itemporal_splitting_attr.F90	(revision 1545)
@@ -0,0 +1,112 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "xios_fortran_prefix.hpp"
+
+MODULE itemporal_splitting_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+  USE itemporal_splitting
+  USE temporal_splitting_interface_attr
+
+CONTAINS
+
+  SUBROUTINE xios(set_temporal_splitting_attr)  &
+    ( temporal_splitting_id )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting))  :: temporal_splitting_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::temporal_splitting_id
+
+      CALL xios(get_temporal_splitting_handle) &
+      (temporal_splitting_id,temporal_splitting_hdl)
+      CALL xios(set_temporal_splitting_attr_hdl_)   &
+      ( temporal_splitting_hdl )
+
+  END SUBROUTINE xios(set_temporal_splitting_attr)
+
+  SUBROUTINE xios(set_temporal_splitting_attr_hdl)  &
+    ( temporal_splitting_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting)) , INTENT(IN) :: temporal_splitting_hdl
+
+      CALL xios(set_temporal_splitting_attr_hdl_)  &
+      ( temporal_splitting_hdl )
+
+  END SUBROUTINE xios(set_temporal_splitting_attr_hdl)
+
+  SUBROUTINE xios(set_temporal_splitting_attr_hdl_)   &
+    ( temporal_splitting_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting)) , INTENT(IN) :: temporal_splitting_hdl
+
+  END SUBROUTINE xios(set_temporal_splitting_attr_hdl_)
+
+  SUBROUTINE xios(get_temporal_splitting_attr)  &
+    ( temporal_splitting_id )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting))  :: temporal_splitting_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::temporal_splitting_id
+
+      CALL xios(get_temporal_splitting_handle) &
+      (temporal_splitting_id,temporal_splitting_hdl)
+      CALL xios(get_temporal_splitting_attr_hdl_)   &
+      ( temporal_splitting_hdl )
+
+  END SUBROUTINE xios(get_temporal_splitting_attr)
+
+  SUBROUTINE xios(get_temporal_splitting_attr_hdl)  &
+    ( temporal_splitting_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting)) , INTENT(IN) :: temporal_splitting_hdl
+
+      CALL xios(get_temporal_splitting_attr_hdl_)  &
+      ( temporal_splitting_hdl )
+
+  END SUBROUTINE xios(get_temporal_splitting_attr_hdl)
+
+  SUBROUTINE xios(get_temporal_splitting_attr_hdl_)   &
+    ( temporal_splitting_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting)) , INTENT(IN) :: temporal_splitting_hdl
+
+  END SUBROUTINE xios(get_temporal_splitting_attr_hdl_)
+
+  SUBROUTINE xios(is_defined_temporal_splitting_attr)  &
+    ( temporal_splitting_id )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting))  :: temporal_splitting_hdl
+      CHARACTER(LEN=*), INTENT(IN) ::temporal_splitting_id
+
+      CALL xios(get_temporal_splitting_handle) &
+      (temporal_splitting_id,temporal_splitting_hdl)
+      CALL xios(is_defined_temporal_splitting_attr_hdl_)   &
+      ( temporal_splitting_hdl )
+
+  END SUBROUTINE xios(is_defined_temporal_splitting_attr)
+
+  SUBROUTINE xios(is_defined_temporal_splitting_attr_hdl)  &
+    ( temporal_splitting_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting)) , INTENT(IN) :: temporal_splitting_hdl
+
+      CALL xios(is_defined_temporal_splitting_attr_hdl_)  &
+      ( temporal_splitting_hdl )
+
+  END SUBROUTINE xios(is_defined_temporal_splitting_attr_hdl)
+
+  SUBROUTINE xios(is_defined_temporal_splitting_attr_hdl_)   &
+    ( temporal_splitting_hdl )
+
+    IMPLICIT NONE
+      TYPE(txios(temporal_splitting)) , INTENT(IN) :: temporal_splitting_hdl
+
+  END SUBROUTINE xios(is_defined_temporal_splitting_attr_hdl_)
+
+END MODULE itemporal_splitting_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_axis_to_axis_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_axis_to_axis_interface_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_axis_to_axis_interface_attr.F90	(revision 1545)
@@ -0,0 +1,34 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE reduce_axis_to_axis_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_reduce_axis_to_axis_operation(reduce_axis_to_axis_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_axis_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_set_reduce_axis_to_axis_operation
+
+    SUBROUTINE cxios_get_reduce_axis_to_axis_operation(reduce_axis_to_axis_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_axis_to_axis_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_get_reduce_axis_to_axis_operation
+
+    FUNCTION cxios_is_defined_reduce_axis_to_axis_operation(reduce_axis_to_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_axis_to_axis_operation
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_axis_to_axis_hdl
+    END FUNCTION cxios_is_defined_reduce_axis_to_axis_operation
+
+  END INTERFACE
+
+END MODULE reduce_axis_to_axis_interface_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_domain_to_axis_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_domain_to_axis_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_domain_to_axis_interface_attr.F90	(revision 1545)
@@ -31,4 +31,23 @@
 
 
+    SUBROUTINE cxios_set_reduce_domain_to_axis_local(reduce_domain_to_axis_hdl, local) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: local
+    END SUBROUTINE cxios_set_reduce_domain_to_axis_local
+
+    SUBROUTINE cxios_get_reduce_domain_to_axis_local(reduce_domain_to_axis_hdl, local) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+      LOGICAL (KIND=C_BOOL)             :: local
+    END SUBROUTINE cxios_get_reduce_domain_to_axis_local
+
+    FUNCTION cxios_is_defined_reduce_domain_to_axis_local(reduce_domain_to_axis_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_domain_to_axis_local
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_axis_hdl
+    END FUNCTION cxios_is_defined_reduce_domain_to_axis_local
+
+
     SUBROUTINE cxios_set_reduce_domain_to_axis_operation(reduce_domain_to_axis_hdl, operation, operation_size) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_domain_to_scalar_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_domain_to_scalar_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_domain_to_scalar_interface_attr.F90	(revision 1545)
@@ -9,4 +9,23 @@
   INTERFACE
     ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_reduce_domain_to_scalar_local(reduce_domain_to_scalar_hdl, local) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_scalar_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: local
+    END SUBROUTINE cxios_set_reduce_domain_to_scalar_local
+
+    SUBROUTINE cxios_get_reduce_domain_to_scalar_local(reduce_domain_to_scalar_hdl, local) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_scalar_hdl
+      LOGICAL (KIND=C_BOOL)             :: local
+    END SUBROUTINE cxios_get_reduce_domain_to_scalar_local
+
+    FUNCTION cxios_is_defined_reduce_domain_to_scalar_local(reduce_domain_to_scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_domain_to_scalar_local
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_domain_to_scalar_hdl
+    END FUNCTION cxios_is_defined_reduce_domain_to_scalar_local
+
 
     SUBROUTINE cxios_set_reduce_domain_to_scalar_operation(reduce_domain_to_scalar_hdl, operation, operation_size) BIND(C)
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_scalar_to_scalar_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_scalar_to_scalar_interface_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/reduce_scalar_to_scalar_interface_attr.F90	(revision 1545)
@@ -0,0 +1,34 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE reduce_scalar_to_scalar_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_scalar_to_scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_set_reduce_scalar_to_scalar_operation
+
+    SUBROUTINE cxios_get_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_hdl, operation, operation_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_scalar_to_scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: operation
+      INTEGER  (kind = C_INT)     , VALUE        :: operation_size
+    END SUBROUTINE cxios_get_reduce_scalar_to_scalar_operation
+
+    FUNCTION cxios_is_defined_reduce_scalar_to_scalar_operation(reduce_scalar_to_scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reduce_scalar_to_scalar_operation
+      INTEGER (kind = C_INTPTR_T), VALUE :: reduce_scalar_to_scalar_hdl
+    END FUNCTION cxios_is_defined_reduce_scalar_to_scalar_operation
+
+  END INTERFACE
+
+END MODULE reduce_scalar_to_scalar_interface_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/reorder_domain_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/reorder_domain_interface_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/reorder_domain_interface_attr.F90	(revision 1545)
@@ -0,0 +1,89 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE reorder_domain_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+
+    SUBROUTINE cxios_set_reorder_domain_invert_lat(reorder_domain_hdl, invert_lat) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      LOGICAL (KIND=C_BOOL)      , VALUE :: invert_lat
+    END SUBROUTINE cxios_set_reorder_domain_invert_lat
+
+    SUBROUTINE cxios_get_reorder_domain_invert_lat(reorder_domain_hdl, invert_lat) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      LOGICAL (KIND=C_BOOL)             :: invert_lat
+    END SUBROUTINE cxios_get_reorder_domain_invert_lat
+
+    FUNCTION cxios_is_defined_reorder_domain_invert_lat(reorder_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reorder_domain_invert_lat
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+    END FUNCTION cxios_is_defined_reorder_domain_invert_lat
+
+
+    SUBROUTINE cxios_set_reorder_domain_max_lon(reorder_domain_hdl, max_lon) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      REAL (KIND=C_DOUBLE)      , VALUE :: max_lon
+    END SUBROUTINE cxios_set_reorder_domain_max_lon
+
+    SUBROUTINE cxios_get_reorder_domain_max_lon(reorder_domain_hdl, max_lon) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      REAL (KIND=C_DOUBLE)             :: max_lon
+    END SUBROUTINE cxios_get_reorder_domain_max_lon
+
+    FUNCTION cxios_is_defined_reorder_domain_max_lon(reorder_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reorder_domain_max_lon
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+    END FUNCTION cxios_is_defined_reorder_domain_max_lon
+
+
+    SUBROUTINE cxios_set_reorder_domain_min_lon(reorder_domain_hdl, min_lon) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      REAL (KIND=C_DOUBLE)      , VALUE :: min_lon
+    END SUBROUTINE cxios_set_reorder_domain_min_lon
+
+    SUBROUTINE cxios_get_reorder_domain_min_lon(reorder_domain_hdl, min_lon) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      REAL (KIND=C_DOUBLE)             :: min_lon
+    END SUBROUTINE cxios_get_reorder_domain_min_lon
+
+    FUNCTION cxios_is_defined_reorder_domain_min_lon(reorder_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reorder_domain_min_lon
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+    END FUNCTION cxios_is_defined_reorder_domain_min_lon
+
+
+    SUBROUTINE cxios_set_reorder_domain_shift_lon_fraction(reorder_domain_hdl, shift_lon_fraction) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      REAL (KIND=C_DOUBLE)      , VALUE :: shift_lon_fraction
+    END SUBROUTINE cxios_set_reorder_domain_shift_lon_fraction
+
+    SUBROUTINE cxios_get_reorder_domain_shift_lon_fraction(reorder_domain_hdl, shift_lon_fraction) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+      REAL (KIND=C_DOUBLE)             :: shift_lon_fraction
+    END SUBROUTINE cxios_get_reorder_domain_shift_lon_fraction
+
+    FUNCTION cxios_is_defined_reorder_domain_shift_lon_fraction(reorder_domain_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_reorder_domain_shift_lon_fraction
+      INTEGER (kind = C_INTPTR_T), VALUE :: reorder_domain_hdl
+    END FUNCTION cxios_is_defined_reorder_domain_shift_lon_fraction
+
+  END INTERFACE
+
+END MODULE reorder_domain_interface_attr
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/scalar_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/scalar_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/scalar_interface_attr.F90	(revision 1545)
@@ -10,4 +10,109 @@
     ! Do not call directly / interface FORTRAN 2003 <-> C99
 
+    SUBROUTINE cxios_set_scalar_axis_type(scalar_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_set_scalar_axis_type
+
+    SUBROUTINE cxios_get_scalar_axis_type(scalar_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_get_scalar_axis_type
+
+    FUNCTION cxios_is_defined_scalar_axis_type(scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalar_axis_type
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+    END FUNCTION cxios_is_defined_scalar_axis_type
+
+
+    SUBROUTINE cxios_set_scalar_bounds(scalar_hdl, bounds, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: scalar_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_set_scalar_bounds
+
+    SUBROUTINE cxios_get_scalar_bounds(scalar_hdl, bounds, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: scalar_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_get_scalar_bounds
+
+    FUNCTION cxios_is_defined_scalar_bounds(scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalar_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+    END FUNCTION cxios_is_defined_scalar_bounds
+
+
+    SUBROUTINE cxios_set_scalar_bounds_name(scalar_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_set_scalar_bounds_name
+
+    SUBROUTINE cxios_get_scalar_bounds_name(scalar_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_get_scalar_bounds_name
+
+    FUNCTION cxios_is_defined_scalar_bounds_name(scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalar_bounds_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+    END FUNCTION cxios_is_defined_scalar_bounds_name
+
+
+    SUBROUTINE cxios_set_scalar_comment(scalar_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_scalar_comment
+
+    SUBROUTINE cxios_get_scalar_comment(scalar_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_scalar_comment
+
+    FUNCTION cxios_is_defined_scalar_comment(scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalar_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+    END FUNCTION cxios_is_defined_scalar_comment
+
+
+    SUBROUTINE cxios_set_scalar_label(scalar_hdl, label, label_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: label
+      INTEGER  (kind = C_INT)     , VALUE        :: label_size
+    END SUBROUTINE cxios_set_scalar_label
+
+    SUBROUTINE cxios_get_scalar_label(scalar_hdl, label, label_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: label
+      INTEGER  (kind = C_INT)     , VALUE        :: label_size
+    END SUBROUTINE cxios_get_scalar_label
+
+    FUNCTION cxios_is_defined_scalar_label(scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalar_label
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+    END FUNCTION cxios_is_defined_scalar_label
+
+
     SUBROUTINE cxios_set_scalar_long_name(scalar_hdl, long_name, long_name_size) BIND(C)
       USE ISO_C_BINDING
@@ -52,4 +157,25 @@
 
 
+    SUBROUTINE cxios_set_scalar_positive(scalar_hdl, positive, positive_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: positive
+      INTEGER  (kind = C_INT)     , VALUE        :: positive_size
+    END SUBROUTINE cxios_set_scalar_positive
+
+    SUBROUTINE cxios_get_scalar_positive(scalar_hdl, positive, positive_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: positive
+      INTEGER  (kind = C_INT)     , VALUE        :: positive_size
+    END SUBROUTINE cxios_get_scalar_positive
+
+    FUNCTION cxios_is_defined_scalar_positive(scalar_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalar_positive
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalar_hdl
+    END FUNCTION cxios_is_defined_scalar_positive
+
+
     SUBROUTINE cxios_set_scalar_prec(scalar_hdl, prec) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/scalargroup_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/scalargroup_interface_attr.F90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/scalargroup_interface_attr.F90	(revision 1545)
@@ -10,4 +10,88 @@
     ! Do not call directly / interface FORTRAN 2003 <-> C99
 
+    SUBROUTINE cxios_set_scalargroup_axis_type(scalargroup_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_set_scalargroup_axis_type
+
+    SUBROUTINE cxios_get_scalargroup_axis_type(scalargroup_hdl, axis_type, axis_type_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: axis_type
+      INTEGER  (kind = C_INT)     , VALUE        :: axis_type_size
+    END SUBROUTINE cxios_get_scalargroup_axis_type
+
+    FUNCTION cxios_is_defined_scalargroup_axis_type(scalargroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalargroup_axis_type
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+    END FUNCTION cxios_is_defined_scalargroup_axis_type
+
+
+    SUBROUTINE cxios_set_scalargroup_bounds(scalargroup_hdl, bounds, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: scalargroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_set_scalargroup_bounds
+
+    SUBROUTINE cxios_get_scalargroup_bounds(scalargroup_hdl, bounds, extent) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE       :: scalargroup_hdl
+      REAL (KIND=C_DOUBLE)     , DIMENSION(*) :: bounds
+      INTEGER (kind = C_INT), DIMENSION(*)     :: extent
+    END SUBROUTINE cxios_get_scalargroup_bounds
+
+    FUNCTION cxios_is_defined_scalargroup_bounds(scalargroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalargroup_bounds
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+    END FUNCTION cxios_is_defined_scalargroup_bounds
+
+
+    SUBROUTINE cxios_set_scalargroup_bounds_name(scalargroup_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_set_scalargroup_bounds_name
+
+    SUBROUTINE cxios_get_scalargroup_bounds_name(scalargroup_hdl, bounds_name, bounds_name_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: bounds_name
+      INTEGER  (kind = C_INT)     , VALUE        :: bounds_name_size
+    END SUBROUTINE cxios_get_scalargroup_bounds_name
+
+    FUNCTION cxios_is_defined_scalargroup_bounds_name(scalargroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalargroup_bounds_name
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+    END FUNCTION cxios_is_defined_scalargroup_bounds_name
+
+
+    SUBROUTINE cxios_set_scalargroup_comment(scalargroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_set_scalargroup_comment
+
+    SUBROUTINE cxios_get_scalargroup_comment(scalargroup_hdl, comment, comment_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: comment
+      INTEGER  (kind = C_INT)     , VALUE        :: comment_size
+    END SUBROUTINE cxios_get_scalargroup_comment
+
+    FUNCTION cxios_is_defined_scalargroup_comment(scalargroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalargroup_comment
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+    END FUNCTION cxios_is_defined_scalargroup_comment
+
+
     SUBROUTINE cxios_set_scalargroup_group_ref(scalargroup_hdl, group_ref, group_ref_size) BIND(C)
       USE ISO_C_BINDING
@@ -31,4 +115,25 @@
 
 
+    SUBROUTINE cxios_set_scalargroup_label(scalargroup_hdl, label, label_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: label
+      INTEGER  (kind = C_INT)     , VALUE        :: label_size
+    END SUBROUTINE cxios_set_scalargroup_label
+
+    SUBROUTINE cxios_get_scalargroup_label(scalargroup_hdl, label, label_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: label
+      INTEGER  (kind = C_INT)     , VALUE        :: label_size
+    END SUBROUTINE cxios_get_scalargroup_label
+
+    FUNCTION cxios_is_defined_scalargroup_label(scalargroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalargroup_label
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+    END FUNCTION cxios_is_defined_scalargroup_label
+
+
     SUBROUTINE cxios_set_scalargroup_long_name(scalargroup_hdl, long_name, long_name_size) BIND(C)
       USE ISO_C_BINDING
@@ -73,4 +178,25 @@
 
 
+    SUBROUTINE cxios_set_scalargroup_positive(scalargroup_hdl, positive, positive_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: positive
+      INTEGER  (kind = C_INT)     , VALUE        :: positive_size
+    END SUBROUTINE cxios_set_scalargroup_positive
+
+    SUBROUTINE cxios_get_scalargroup_positive(scalargroup_hdl, positive, positive_size) BIND(C)
+      USE ISO_C_BINDING
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+      CHARACTER(kind = C_CHAR)    , DIMENSION(*) :: positive
+      INTEGER  (kind = C_INT)     , VALUE        :: positive_size
+    END SUBROUTINE cxios_get_scalargroup_positive
+
+    FUNCTION cxios_is_defined_scalargroup_positive(scalargroup_hdl) BIND(C)
+      USE ISO_C_BINDING
+      LOGICAL(kind=C_BOOL) :: cxios_is_defined_scalargroup_positive
+      INTEGER (kind = C_INTPTR_T), VALUE :: scalargroup_hdl
+    END FUNCTION cxios_is_defined_scalargroup_positive
+
+
     SUBROUTINE cxios_set_scalargroup_prec(scalargroup_hdl, prec) BIND(C)
       USE ISO_C_BINDING
Index: XIOS/dev/branch_openmp/src/interface/fortran_attr/temporal_splitting_interface_attr.F90
===================================================================
--- XIOS/dev/branch_openmp/src/interface/fortran_attr/temporal_splitting_interface_attr.F90	(revision 1545)
+++ XIOS/dev/branch_openmp/src/interface/fortran_attr/temporal_splitting_interface_attr.F90	(revision 1545)
@@ -0,0 +1,13 @@
+! * ************************************************************************** *
+! *               Interface auto generated - do not modify                     *
+! * ************************************************************************** *
+#include "../fortran/xios_fortran_prefix.hpp"
+
+MODULE temporal_splitting_interface_attr
+  USE, INTRINSIC :: ISO_C_BINDING
+
+  INTERFACE
+    ! Do not call directly / interface FORTRAN 2003 <-> C99
+  END INTERFACE
+
+END MODULE temporal_splitting_interface_attr
Index: XIOS/dev/branch_openmp/src/io/inetcdf4.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/inetcdf4.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/inetcdf4.cpp	(revision 1545)
@@ -7,5 +7,4 @@
 namespace xios
 {
-  //CINetCDF4::CINetCDF4(const StdString& filename, const ep_lib::MPI_Comm* comm /*= NULL*/, bool multifile /*= true*/, const StdString& timeCounterName /*= "time_counter"*/)
   CINetCDF4::CINetCDF4(const StdString& filename, const ep_lib::MPI_Comm* comm /*= NULL*/, bool multifile /*= true*/,
                        bool readMetaDataPar /*= false*/, const StdString& timeCounterName /*= "time_counter"*/)
@@ -19,7 +18,5 @@
         comm = NULL;
     }
-    //mpi = comm && !multifile;
     mpi = comm && !multifile && readMetaDataPar;
-    //ep_lib::MPI_Info info_null = MPI_INFO_NULL;
 
     // The file format will be detected automatically by NetCDF, it is safe to always set NC_MPIIO
@@ -496,25 +493,4 @@
   }
 
-/*
-  bool CINetCDF4::isRectilinear(const StdString& name, const CVarPath* const path)
-  {
-    std::list<StdString> varCoords = this->getCoordinatesIdList(name, path);
-    std::list<StdString>::const_iterator it = varCoords.begin(), end = varCoords.end();
-    for (; it != end; it++)
-    {
-      const StdString& coord = *it;
-      if (this->hasVariable(coord, path) && !this->isTemporal(coord, path))
-      {
-        std::map<StdString, StdSize> dimvar = this->getDimensions(&coord, path);
-        if ((dimvar.size() == 1) && (dimvar.find(coord) != dimvar.end()))
-          continue;
-        else
-          return false;
-      }
-    }
-    return true;
-  }
-*/
-
   bool CINetCDF4::isRectilinear(const StdString& name, const CVarPath* const path)
   {
@@ -559,5 +535,4 @@
     return (varDims1D.size() == 2);
   }
-
 
   bool CINetCDF4::isCurvilinear(const StdString& name, const CVarPath* const path)
@@ -833,10 +808,11 @@
   bool CINetCDF4::isLonOrLat(const StdString& varname, const CVarPath* const path)
   {
-  if (this->hasAttribute(CCFKeywords::XIOS_CF_units, &varname, path))
-  {
-    StdString unit = this->getAttributeValue(CCFKeywords::XIOS_CF_units, &varname, path);
-    return (CCFConvention::XIOS_CF_Latitude_units.end() != CCFConvention::XIOS_CF_Latitude_units.find(unit)
-            || CCFConvention::XIOS_CF_Longitude_units.end() != CCFConvention::XIOS_CF_Longitude_units.find(unit));
-    }
+    if (this->hasAttribute(CCFKeywords::XIOS_CF_units, &varname, path))
+    {
+      StdString unit = this->getAttributeValue(CCFKeywords::XIOS_CF_units, &varname, path);
+      return      (CCFConvention::XIOS_CF_Latitude_units.end() != CCFConvention::XIOS_CF_Latitude_units.find(unit)
+                || CCFConvention::XIOS_CF_Longitude_units.end() != CCFConvention::XIOS_CF_Longitude_units.find(unit));
+    }
+    else return false ;
   }
 
Index: XIOS/dev/branch_openmp/src/io/inetcdf4.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/inetcdf4.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/inetcdf4.hpp	(revision 1545)
@@ -24,5 +24,5 @@
       CINetCDF4(const StdString& filename, const ep_lib::MPI_Comm* comm = NULL, bool multifile = true,
                 bool readMetaDataPar = false, const StdString& timeCounterName = "time_counter");
-                //const StdString& timeCounterName = "time_counter");
+
       CINetCDF4(const CINetCDF4& inetcdf4);       // Not implemented.
       CINetCDF4(const CINetCDF4* const inetcdf4); // Not implemented.
Index: XIOS/dev/branch_openmp/src/io/nc4_data_input.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/nc4_data_input.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/nc4_data_input.cpp	(revision 1545)
@@ -10,10 +10,8 @@
 namespace xios
 {
-  //CNc4DataInput::CNc4DataInput(const StdString& filename, ep_lib::MPI_Comm comm_file, bool multifile, bool isCollective /*= true*/, const StdString& timeCounterName /*= "time_counter"*/)
   CNc4DataInput::CNc4DataInput(const StdString& filename, ep_lib::MPI_Comm comm_file, bool multifile, bool isCollective /*= true*/,
                                bool readMetaDataPar /*= false*/, bool ugridConvention /*= false*/, const StdString& timeCounterName /*= "time_counter"*/)
     : SuperClass()
     , SuperClassWriter(filename, &comm_file, multifile, readMetaDataPar, timeCounterName)
-    //, SuperClassWriter(filename, &comm_file, multifile, timeCounterName)
     , comm_file(comm_file)
     , filename(filename)
@@ -410,5 +408,4 @@
 //      int nbVertex = this->getNbVertex(fieldId);
       int nbVertex = (ugridConvention) ? domain->nvertex : this->getNbVertex(fieldId);
-      
       if (!domain->nvertex.isEmpty() && (domain->nvertex != nbVertex))
       {
Index: XIOS/dev/branch_openmp/src/io/nc4_data_input.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/nc4_data_input.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/nc4_data_input.hpp	(revision 1545)
@@ -26,5 +26,4 @@
     CNc4DataInput(const StdString& filename, ep_lib::MPI_Comm comm_file, bool multifile, bool isCollective = true,
                   bool readMetaDataPar = false, bool ugridConvention = false, const StdString& timeCounterName = "time_counter");
-                  //const StdString& timeCounterName = "time_counter");
     CNc4DataInput(const CNc4DataInput& dataInput);       // Not implemented.
     CNc4DataInput(const CNc4DataInput* const dataInput); // Not implemented.
Index: XIOS/dev/branch_openmp/src/io/nc4_data_output.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/nc4_data_output.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/nc4_data_output.cpp	(revision 1545)
@@ -557,4 +557,12 @@
 
       if (domain->IsWritten(this->filename)) return;
+
+      StdString domid = domain->getDomainOutputName();
+
+      // The first domain for the same mesh that will be written is that with the highest value of nvertex.
+      // Thus the entire mesh connectivity will be generated at once.
+      if (isWrittenDomain(domid)) return ;
+      else setWrittenDomain(domid);
+
       domain->checkAttributes();
       if (domain->isEmpty())
@@ -567,5 +575,4 @@
 
       std::vector<StdString> dim0;
-      StdString domid = domain->getDomainOutputName();
       StdString domainName = domain->name;
       domain->assignMesh(domainName, domain->nvertex);
@@ -593,13 +600,10 @@
 
       if (!SuperClassWriter::dimExist(dimTwo)) SuperClassWriter::addDimension(dimTwo, 2);
-      if (!isWrittenDomain(domid))
-      {
-        dim0.clear();
-        SuperClassWriter::addVariable(domainName, NC_INT, dim0, compressionLevel);
-        SuperClassWriter::addAttribute("cf_role", StdString("mesh_topology"), &domainName);
-        SuperClassWriter::addAttribute("long_name", StdString("Topology data of 2D unstructured mesh"), &domainName);
-        SuperClassWriter::addAttribute("topology_dimension", 2, &domainName);
-        SuperClassWriter::addAttribute("node_coordinates", node_x + " " + node_y, &domainName);
-      }
+      dim0.clear();
+      SuperClassWriter::addVariable(domainName, NC_INT, dim0, compressionLevel);
+      SuperClassWriter::addAttribute("cf_role", StdString("mesh_topology"), &domainName);
+      SuperClassWriter::addAttribute("long_name", StdString("Topology data of 2D unstructured mesh"), &domainName);
+      SuperClassWriter::addAttribute("topology_dimension", 2, &domainName);
+      SuperClassWriter::addAttribute("node_coordinates", node_x + " " + node_y, &domainName);
 
       try
@@ -773,155 +777,103 @@
             std::vector<StdSize> countFaceConctv(2) ;
 
-            if (!isWrittenDomain(domid))
+            if (domain->nvertex == 1)
             {
-              if (domain->nvertex == 1)
-              {
-                if (domain->isEmpty())
-                 {
-                   startNodes[0]=0 ;
-                   countNodes[0]=0 ;
-                 }
-                 else
-                 {
-                   startNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                   countNodes[0] = domain->zoom_ni ;
-                 }
-
-                SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes);
-                SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes);
-              }
-              else if (domain->nvertex == 2)
-              {
-                if (domain->isEmpty())
-                 {
-                  startEdges[0]=0 ;
-                  countEdges[0]=0 ;
-                  startNodes[0]=0 ;
-                  countNodes[0]=0 ;
-                  startEdgeNodes[0]=0;
-                  startEdgeNodes[1]=0;
-                  countEdgeNodes[0]=0;
-                  countEdgeNodes[1]=0;
-
-                 }
-                 else
-                 {
-                   startEdges[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                   countEdges[0] = domain->zoom_ni;
-                   startNodes[0] = domain->mesh->node_start;
-                   countNodes[0] = domain->mesh->node_count;
-                   startEdgeNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                   startEdgeNodes[1] = 0;
-                   countEdgeNodes[0] = domain->zoom_ni;
-                   countEdgeNodes[1] = 2;
-                 }
-                SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes);
-                SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes);
-                SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges);
-                SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges);
-                SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes);
-              }
-              else
-              {
-                if (domain->isEmpty())
-                 {
-                   startFaces[0] = 0 ;
-                   countFaces[0] = 0 ;
-                   startNodes[0] = 0;
-                   countNodes[0] = 0;
-                   startEdges[0] = 0;
-                   countEdges[0] = 0;
-                   startEdgeFaces[0] = 0;
-                   startEdgeFaces[1] = 0;
-                   countEdgeFaces[0] = 0;
-                   countEdgeFaces[1] = 0;
-                   startFaceConctv[0] = 0;
-                   startFaceConctv[1] = 0;
-                   countFaceConctv[0] = 0;
-                   countFaceConctv[1] = 0;
-                 }
-                 else
-                 {
-                   startFaces[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                   countFaces[0] = domain->zoom_ni ;
-                   startNodes[0] = domain->mesh->node_start;
-                   countNodes[0] = domain->mesh->node_count;
-                   startEdges[0] = domain->mesh->edge_start;
-                   countEdges[0] = domain->mesh->edge_count;
-                   startEdgeNodes[0] = domain->mesh->edge_start;
-                   startEdgeNodes[1] = 0;
-                   countEdgeNodes[0] = domain->mesh->edge_count;
-                   countEdgeNodes[1]= 2;
-                   startEdgeFaces[0] = domain->mesh->edge_start;
-                   startEdgeFaces[1]= 0;
-                   countEdgeFaces[0] = domain->mesh->edge_count;
-                   countEdgeFaces[1]= 2;
-                   startFaceConctv[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                   startFaceConctv[1] = 0; 
-                   countFaceConctv[0] = domain->zoom_ni;
-                   countFaceConctv[1] = domain->nvertex;
-                 }
-                SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes);
-                SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes);
-                SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges);
-                SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges);
-                SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes);
-                SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0, &startFaces, &countFaces);
-                SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0, &startFaces, &countFaces);
-                SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes, isCollective, 0, &startFaceConctv, &countFaceConctv);
-                SuperClassWriter::writeData(domain->mesh->face_edges, face_edges, isCollective, 0, &startFaceConctv, &countFaceConctv);
-                SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces, isCollective, 0, &startEdgeFaces, &countEdgeFaces);
-                SuperClassWriter::writeData(domain->mesh->face_faces, face_faces, isCollective, 0, &startFaceConctv, &countFaceConctv);
-              }
-              setWrittenDomain(domid);
-            } // !isWrittenDomain
+              if (domain->isEmpty())
+               {
+                 startNodes[0]=0 ;
+                 countNodes[0]=0 ;
+               }
+               else
+               {
+                 startNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
+                 countNodes[0] = domain->zoom_ni ;
+               }
+
+              SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes);
+              SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes);
+            }
+            else if (domain->nvertex == 2)
+            {
+              if (domain->isEmpty())
+               {
+                startEdges[0]=0 ;
+                countEdges[0]=0 ;
+                startNodes[0]=0 ;
+                countNodes[0]=0 ;
+                startEdgeNodes[0]=0;
+                startEdgeNodes[1]=0;
+                countEdgeNodes[0]=0;
+                countEdgeNodes[1]=0;
+
+               }
+               else
+               {
+                 startEdges[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
+                 countEdges[0] = domain->zoom_ni;
+                 startNodes[0] = domain->mesh->node_start;
+                 countNodes[0] = domain->mesh->node_count;
+                 startEdgeNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
+                 startEdgeNodes[1] = 0;
+                 countEdgeNodes[0] = domain->zoom_ni;
+                 countEdgeNodes[1] = 2;
+               }
+              SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes);
+              SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes);
+              SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges);
+              SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges);
+              SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes);
+            }
             else
             {
-              if (domain->nvertex == 2)
-              {
-                startEdges[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                countEdges[0] = domain->zoom_ni;
-                startEdgeNodes[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                startEdgeNodes[1] = 0;
-                countEdgeNodes[0] = domain->zoom_ni;
-                countEdgeNodes[1]= 2;
-                SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges);
-                SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges);
-                SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes);
-              }  
-              if (domain->nvertex > 2)
-              {
-
-                if (!domain->mesh->edgesAreWritten)
-                {
-                  startEdges[0] = domain->mesh->edge_start;
-                  countEdges[0] = domain->mesh->edge_count;
-                  startEdgeNodes[0] = domain->mesh->edge_start;
-                  startEdgeNodes[1] = 0;
-                  countEdgeNodes[0] = domain->mesh->edge_count;
-                  countEdgeNodes[1]= 2;
-                  SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges);
-                  SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges);
-                  SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes);
-                }
-                startFaces[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                countFaces[0] = domain->zoom_ni;
-                startEdgeFaces[0] = domain->mesh->edge_start;
-                startEdgeFaces[1]= 0;
-                countEdgeFaces[0] = domain->mesh->edge_count;
-                countEdgeFaces[1]= 2;
-                startFaceConctv[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
-                startFaceConctv[1] = 0;
-                countFaceConctv[0] = domain->zoom_ni;
-                countFaceConctv[1] = domain->nvertex;
-                SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0, &startFaces, &countFaces);
-                SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0, &startFaces, &countFaces);
-                SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes, isCollective, 0, &startFaceConctv, &countFaceConctv);
-                SuperClassWriter::writeData(domain->mesh->face_edges, face_edges, isCollective, 0, &startFaceConctv, &countFaceConctv);
-                SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces, isCollective, 0, &startEdgeFaces, &countEdgeFaces);
-                SuperClassWriter::writeData(domain->mesh->face_faces, face_faces, isCollective, 0, &startFaceConctv, &countFaceConctv);
-              }
-            }// isWrittenDomain
-
+              if (domain->isEmpty())
+               {
+                 startFaces[0] = 0 ;
+                 countFaces[0] = 0 ;
+                 startNodes[0] = 0;
+                 countNodes[0] = 0;
+                 startEdges[0] = 0;
+                 countEdges[0] = 0;
+                 startEdgeFaces[0] = 0;
+                 startEdgeFaces[1] = 0;
+                 countEdgeFaces[0] = 0;
+                 countEdgeFaces[1] = 0;
+                 startFaceConctv[0] = 0;
+                 startFaceConctv[1] = 0;
+                 countFaceConctv[0] = 0;
+                 countFaceConctv[1] = 0;
+               }
+               else
+               {
+                 startFaces[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
+                 countFaces[0] = domain->zoom_ni ;
+                 startNodes[0] = domain->mesh->node_start;
+                 countNodes[0] = domain->mesh->node_count;
+                 startEdges[0] = domain->mesh->edge_start;
+                 countEdges[0] = domain->mesh->edge_count;
+                 startEdgeNodes[0] = domain->mesh->edge_start;
+                 startEdgeNodes[1] = 0;
+                 countEdgeNodes[0] = domain->mesh->edge_count;
+                 countEdgeNodes[1]= 2;
+                 startEdgeFaces[0] = domain->mesh->edge_start;
+                 startEdgeFaces[1]= 0;
+                 countEdgeFaces[0] = domain->mesh->edge_count;
+                 countEdgeFaces[1]= 2;
+                 startFaceConctv[0] = domain->zoom_ibegin-domain->global_zoom_ibegin;
+                 startFaceConctv[1] = 0;
+                 countFaceConctv[0] = domain->zoom_ni;
+                 countFaceConctv[1] = domain->nvertex;
+               }
+              SuperClassWriter::writeData(domain->mesh->node_lat, node_y, isCollective, 0, &startNodes, &countNodes);
+              SuperClassWriter::writeData(domain->mesh->node_lon, node_x, isCollective, 0, &startNodes, &countNodes);
+              SuperClassWriter::writeData(domain->mesh->edge_lat, edge_y, isCollective, 0, &startEdges, &countEdges);
+              SuperClassWriter::writeData(domain->mesh->edge_lon, edge_x, isCollective, 0, &startEdges, &countEdges);
+              SuperClassWriter::writeData(domain->mesh->edge_nodes, edge_nodes, isCollective, 0, &startEdgeNodes, &countEdgeNodes);
+              SuperClassWriter::writeData(domain->mesh->face_lat, face_y, isCollective, 0, &startFaces, &countFaces);
+              SuperClassWriter::writeData(domain->mesh->face_lon, face_x, isCollective, 0, &startFaces, &countFaces);
+              SuperClassWriter::writeData(domain->mesh->face_nodes, face_nodes, isCollective, 0, &startFaceConctv, &countFaceConctv);
+              SuperClassWriter::writeData(domain->mesh->face_edges, face_edges, isCollective, 0, &startFaceConctv, &countFaceConctv);
+              SuperClassWriter::writeData(domain->mesh->edge_faces, edge_faces, isCollective, 0, &startEdgeFaces, &countEdgeFaces);
+              SuperClassWriter::writeData(domain->mesh->face_faces, face_faces, isCollective, 0, &startFaceConctv, &countFaceConctv);
+            }
             SuperClassWriter::definition_start();
 
@@ -1231,6 +1183,6 @@
         axis->computeWrittenCompressedIndex(comm_file);
        
-        int zoom_size  = (MULTI_FILE == SuperClass::type) ? axis->zoom_n
-                                                          : axis->global_zoom_n;
+        int zoom_size  = (MULTI_FILE == SuperClass::type) ? axis->zoom_n.getValue()
+                                                          : axis->global_zoom_n.getValue();
 
         int zoom_count = axis->zoom_n;                                                 
@@ -2745,5 +2697,5 @@
       void CNc4DataOutput::writeTimeAxis_
                   (CField*    field,
-                   const boost::shared_ptr<CCalendar> cal)
+                   const std::shared_ptr<CCalendar> cal)
       {
          StdOStringStream oss;
@@ -2968,5 +2920,5 @@
            msg.append(e.what());
            ERROR("CNc4DataOutput::writeTimeAxis_ (CField*    field, \
-                  const boost::shared_ptr<CCalendar> cal)", << msg);
+                  const std::shared_ptr<CCalendar> cal)", << msg);
          }
       }
Index: XIOS/dev/branch_openmp/src/io/nc4_data_output.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/nc4_data_output.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/nc4_data_output.hpp	(revision 1545)
@@ -62,5 +62,5 @@
             virtual void syncFile_      (void);
             virtual void writeTimeAxis_ (CField* field,
-                                         const boost::shared_ptr<CCalendar> cal);
+                                         const std::shared_ptr<CCalendar> cal);
 
          protected :
Index: XIOS/dev/branch_openmp/src/io/netCdfInterface.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/netCdfInterface.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/netCdfInterface.hpp	(revision 1545)
@@ -17,5 +17,5 @@
 #endif
 
-//#include "mpi.hpp"
+
 #include "netcdf.hpp"
 
Index: XIOS/dev/branch_openmp/src/io/netCdfInterface_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/netCdfInterface_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/netCdfInterface_impl.hpp	(revision 1545)
@@ -85,6 +85,5 @@
   int CNetCdfInterface::getVaraType(int ncid, int varId, const StdSize* start, const StdSize* count, T* data)
   {
-    int status;
-    status = ncGetVaraType(ncid, varId, start, count, data);
+    int status = ncGetVaraType(ncid, varId, start, count, data);
     if (NC_NOERR != status)
     {
Index: XIOS/dev/branch_openmp/src/io/onetcdf4.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/onetcdf4.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/onetcdf4.cpp	(revision 1545)
@@ -49,5 +49,4 @@
          }
          wmpi = comm && !multifile;
-         ep_lib::MPI_Info info_null;
 
          if (wmpi)
@@ -59,5 +58,5 @@
             CTimer::get("Files : create").resume();
             if (wmpi)
-               CNetCdfInterface::createPar(filename, mode, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(info_null), this->ncidp);
+               CNetCdfInterface::createPar(filename, mode, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(MPI_INFO_NULL), this->ncidp);
             else
                CNetCdfInterface::create(filename, mode, this->ncidp);
@@ -71,5 +70,5 @@
             CTimer::get("Files : open").resume();
             if (wmpi)
-               CNetCdfInterface::openPar(filename, mode, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(info_null), this->ncidp);
+               CNetCdfInterface::openPar(filename, mode, to_mpi_comm((*comm)->mpi_comm), to_mpi_info(MPI_INFO_NULL), this->ncidp);
             else
                CNetCdfInterface::open(filename, mode, this->ncidp);
Index: XIOS/dev/branch_openmp/src/io/onetcdf4.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/io/onetcdf4.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/io/onetcdf4.hpp	(revision 1545)
@@ -8,5 +8,4 @@
 #include "data_output.hpp"
 #include "array_new.hpp"
-//#include "mpi.hpp"
 #include "netcdf.hpp"
 
Index: XIOS/dev/branch_openmp/src/node/axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/axis.cpp	(revision 1545)
@@ -22,11 +22,9 @@
    CAxis::CAxis(void)
       : CObjectTemplate<CAxis>()
-      , CAxisAttributes(), isChecked(false), relFiles()
-      , areClientAttributesChecked_(false)
+      , CAxisAttributes(), isChecked(false), relFiles(), areClientAttributesChecked_(false)
       , isClientAfterTransformationChecked(false)
       , hasBounds(false), isCompressible_(false)
       , numberWrittenIndexes_(), totalNumberWrittenIndexes_(), offsetWrittenIndexes_()
-      , transformationMap_()
-      , hasValue(false), hasLabel(false)
+      , transformationMap_(), hasValue(false), hasLabel(false)
       , computedWrittenIndex_(false)
       , clients()
@@ -36,11 +34,9 @@
    CAxis::CAxis(const StdString & id)
       : CObjectTemplate<CAxis>(id)
-      , CAxisAttributes(), isChecked(false), relFiles()
-      , areClientAttributesChecked_(false)
+      , CAxisAttributes(), isChecked(false), relFiles(), areClientAttributesChecked_(false)
       , isClientAfterTransformationChecked(false)
       , hasBounds(false), isCompressible_(false)
       , numberWrittenIndexes_(), totalNumberWrittenIndexes_(), offsetWrittenIndexes_()
-      , transformationMap_()
-      , hasValue(false), hasLabel(false)
+      , transformationMap_(), hasValue(false), hasLabel(false)
       , computedWrittenIndex_(false)
       , clients()
@@ -166,8 +162,7 @@
      return compressedIndexToWriteOnServer[writtenSize];
    }
-
    //----------------------------------------------------------------
 
-      /*!
+   /*!
     * Compute the minimum buffer size required to send the attributes to the server(s).
     *
@@ -182,5 +177,5 @@
 //     bool isNonDistributed = (n_glo == n);
      bool isDistributed = (orderPositionInGrid == CServerDistributionDescription::defaultDistributedDimension(globalDim.size(), distType))
-                         || (index.numElements() != n_glo);
+    		                 || (index.numElements() != n_glo);
 
      if (client->isServerLeader())
@@ -221,5 +216,5 @@
      {
        // size estimation for sendDistributedValue
-       boost::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client->serverSize].end();
+       std::unordered_map<int, vector<size_t> >::const_iterator it, ite = indSrv_[client->serverSize].end();
        for (it = indSrv_[client->serverSize].begin(); it != ite; ++it)
        {
@@ -474,6 +469,6 @@
      }
   }
-  
-  /*!
+
+   /*!
      Check attributes on client side (This name is still adequate???)
    */
@@ -528,5 +523,5 @@
    }
 
-   /*!
+  /*!
     Send attributes from one client to other clients
     \param[in] globalDim global dimension of grid which contains this axis
@@ -642,10 +637,9 @@
 
         std::vector<int> serverZeroIndex;
-        serverZeroIndex = serverDescription.computeServerGlobalIndexInRange(std::make_pair<size_t,size_t>(indexBegin, indexEnd), 0);      
+        serverZeroIndex = serverDescription.computeServerGlobalIndexInRange(std::make_pair<size_t&,size_t&>(indexBegin, indexEnd), 0);
 
         std::list<int> serverZeroIndexLeader;
         std::list<int> serverZeroIndexNotLeader; 
         CContextClient::computeLeader(client->clientRank, client->clientSize, serverZeroIndex.size(), serverZeroIndexLeader, serverZeroIndexNotLeader);
-
         for (std::list<int>::iterator it = serverZeroIndexLeader.begin(); it != serverZeroIndexLeader.end(); ++it)
           *it = serverZeroIndex[*it];
@@ -713,5 +707,5 @@
     // we need to compute the local index on the server from its corresponding global index
     size_t nbWritten = 0, indGlo;      
-    boost::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
+    std::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
                                                         ite = globalLocalIndexMap_.end(), it;          
     CArray<size_t,1>::const_iterator itSrvb = writtenGlobalIndex.begin(),
@@ -745,5 +739,5 @@
     {
       nbWritten = 0;
-      boost::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
+      std::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
                                                           ite = globalLocalIndexMap_.end(), it;
       for (int i = 0; i < zoom_index.numElements(); ++i)
@@ -789,10 +783,10 @@
       CDistributionServer srvDist(server->intraCommSize, nBegin, nSize, nBeginGlobal, nGlob); 
       const CArray<size_t,1>& writtenGlobalIndex  = srvDist.getGlobalIndex();
-      boost::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
+      std::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
                                                           ite = globalLocalIndexMap_.end(), it;   
 
       CArray<size_t,1>::const_iterator itSrvb = writtenGlobalIndex.begin(),
                                        itSrve = writtenGlobalIndex.end(), itSrv;
-      boost::unordered_map<size_t,size_t> localGlobalIndexMap;
+      std::unordered_map<size_t,size_t> localGlobalIndexMap;
       for (itSrv = itSrvb; itSrv != itSrve; ++itSrv)
       {
@@ -968,6 +962,6 @@
     std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
-  {
-    CContextClient* client = *it;
+    {
+      CContextClient* client = *it;
 
       CEventClient event(getType(), EVENT_ID_NON_DISTRIBUTED_ATTRIBUTES);
@@ -1083,5 +1077,5 @@
   }
 
-/*
+  /*
     Send attributes of axis from a group of client to other group of clients/servers 
     on supposing that these attributes are distributed among the clients of the sending group
@@ -1116,5 +1110,5 @@
       }
 
-      boost::unordered_map<int, std::vector<size_t> >::const_iterator it, iteMap;
+      std::unordered_map<int, std::vector<size_t> >::const_iterator it, iteMap;
       iteMap = indSrv_[nbServer].end();
       for (int k = 0; k < connectedServerRank_[nbServer].size(); ++k)
Index: XIOS/dev/branch_openmp/src/node/axis.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/axis.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/axis.hpp	(revision 1545)
@@ -168,7 +168,7 @@
          bool isCompressible_;
          std::map<int, map<int,int> > nbSenders; // Mapping of number of communicating client to a server
-         std::map<int, boost::unordered_map<int, vector<size_t> > > indSrv_; // Global index of each client sent to server
+         std::map<int, std::unordered_map<int, vector<size_t> > > indSrv_; // Global index of each client sent to server
          // std::map<int, vector<int> > indWrittenSrv_; // Global written index of each client sent to server
-         boost::unordered_map<size_t,size_t> globalLocalIndexMap_;
+         std::unordered_map<size_t,size_t> globalLocalIndexMap_;
          std::vector<int> indexesToWrite;
          std::map<int,int> numberWrittenIndexes_, totalNumberWrittenIndexes_, offsetWrittenIndexes_;
Index: XIOS/dev/branch_openmp/src/node/calendar_wrapper.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/calendar_wrapper.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/calendar_wrapper.cpp	(revision 1545)
@@ -32,5 +32,5 @@
   \return the calendar
   */
-  boost::shared_ptr<CCalendar> CCalendarWrapper::getCalendar(bool checkValid /*= false*/) const
+  std::shared_ptr<CCalendar> CCalendarWrapper::getCalendar(bool checkValid /*= false*/) const
   {
     if (checkValid && !this->calendar)
@@ -92,5 +92,5 @@
 #define DECLARE_CALENDAR(MType, eType)                                     \
       if (type.getValue() == type_attr::eType)                             \
-        calendar = boost::shared_ptr<CCalendar>(new C##MType##Calendar());
+        calendar = std::shared_ptr<CCalendar>(new C##MType##Calendar());
 #include "calendar_type.conf"
 #undef DECLARE_CALENDAR
@@ -111,5 +111,5 @@
                 << "Both leap_year_drift and leap_year_month attributes are mandatory if you wish to use leap_year_drift_offset attribute.");
 
-        boost::shared_ptr<CUserDefinedCalendar> userDefinedCalendar;
+        std::shared_ptr<CUserDefinedCalendar> userDefinedCalendar;
         if (year_length.isEmpty())
           userDefinedCalendar.reset(new CUserDefinedCalendar(day_length.getValue(), month_lengths.getValue()));
Index: XIOS/dev/branch_openmp/src/node/calendar_wrapper.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/calendar_wrapper.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/calendar_wrapper.hpp	(revision 1545)
@@ -67,5 +67,5 @@
     public :
       /// Accesseurs ///
-      boost::shared_ptr<CCalendar> getCalendar(bool checkValid = false) const;
+      std::shared_ptr<CCalendar> getCalendar(bool checkValid = false) const;
 
       const CDate& getInitDate() const;
@@ -78,5 +78,5 @@
     private:
       // Calendar of context
-      boost::shared_ptr<CCalendar> calendar;
+      std::shared_ptr<CCalendar> calendar;
 
   }; // class CCalendarWrapper
Index: XIOS/dev/branch_openmp/src/node/context.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/context.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/context.cpp	(revision 1545)
@@ -25,7 +25,7 @@
 namespace xios {
 
-  boost::shared_ptr<CContextGroup> * CContext::root_ptr = 0;
-
-   /// ////////////////////// Dfinitions ////////////////////// ///
+  std::shared_ptr<CContextGroup> * CContext::root_ptr = 0;
+
+   /// ////////////////////// DÃ©finitions ////////////////////// ///
 
    CContext::CContext(void)
@@ -68,5 +68,5 @@
    CContextGroup* CContext::getRoot(void)
    {
-      if(root_ptr == 0) root_ptr = new boost::shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName()));
+      if(root_ptr == 0) root_ptr = new std::shared_ptr<CContextGroup>(new CContextGroup(xml::CXMLNode::GetRootName()));
       return root_ptr->get();
    }
@@ -78,5 +78,5 @@
    \return Calendar
    */
-   boost::shared_ptr<CCalendar> CContext::getCalendar(void) const
+   std::shared_ptr<CCalendar> CContext::getCalendar(void) const
    {
       return (this->calendar);
@@ -89,5 +89,5 @@
    \param[in] newCalendar new calendar
    */
-   void CContext::setCalendar(boost::shared_ptr<CCalendar> newCalendar)
+   void CContext::setCalendar(std::shared_ptr<CCalendar> newCalendar)
    {
       this->calendar = newCalendar;
@@ -191,5 +191,5 @@
       if (!this->hasChild())
       {
-         //oss << "<!-- No definition -->" << std::endl; // fait planter l'incrmentation
+         //oss << "<!-- No definition -->" << std::endl; // fait planter l'incrÃ©mentation
       }
       else
@@ -257,9 +257,6 @@
      
 
-     
-      //if (CServer::serverLevel == 0)
-      if (CServer::serverLevel != 1)
-      // initClient is called by client
-      {
+     if (CServer::serverLevel != 1) // initClient is called by client
+     {
        client = new CContextClient(this, intraComm, interComm, cxtServer);
        if (cxtServer) // Attached mode
@@ -291,7 +288,6 @@
        server = new CContextServer(this, intraCommServer, interCommServer);
      }
-     //else if(CServer::serverLevel == 1)
-     else
-     // initClient is called by primary server
+
+     else // initClient is called by primary server
      {
        clientPrimServer.push_back(new CContextClient(this, intraComm, interComm));
@@ -861,9 +857,9 @@
    void CContext::solveAllInheritance(bool apply)
    {
-     // Rsolution des hritages descendants (cd des hritages de groupes)
+     // RÃ©solution des hÃ©ritages descendants (cÃ d des hÃ©ritages de groupes)
      // pour chacun des contextes.
       solveDescInheritance(apply);
 
-     // Rsolution des hritages par rfrence au niveau des fichiers.
+     // RÃ©solution des hÃ©ritages par rÃ©fÃ©rence au niveau des fichiers.
       const vector<CFile*> allFiles=CFile::getAll();
       const vector<CGrid*> allGrids= CGrid::getAll();
@@ -889,7 +885,7 @@
 
       for (unsigned int i = 0; i < allFiles.size(); i++)
-         if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est dfini.
+         if (!allFiles[i]->enabled.isEmpty()) // Si l'attribut 'enabled' est dÃ©fini.
          {
-            if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fix  vrai.
+            if (allFiles[i]->enabled.getValue()) // Si l'attribut 'enabled' est fixÃ© Ã  vrai.
             {
               if (allFiles[i]->output_freq.isEmpty())
@@ -928,5 +924,5 @@
 
       if (enabledFiles.size() == 0)
-         DEBUG(<<"Aucun fichier ne va tre sorti dans le contexte nomm \""
+         DEBUG(<<"Aucun fichier ne va Ãªtre sorti dans le contexte nommÃ© \""
                << getId() << "\" !");
 
@@ -1434,5 +1430,5 @@
      idServer_ = this->getId();
      idServer_ += "_server_";
-     idServer_ += boost::lexical_cast<string>(i);
+     idServer_ += std::to_string(static_cast<unsigned long long>(i));
      return idServer_;
    }
@@ -1472,5 +1468,5 @@
       if (hasClient && !hasServer) prepareTimeseries();
 
-      //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers  sortir.
+      //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers Ã  sortir.
       findEnabledFiles();
       findEnabledWriteModeFiles();
Index: XIOS/dev/branch_openmp/src/node/context.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/context.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/context.hpp	(revision 1545)
@@ -9,10 +9,7 @@
 
 #include "declare_group.hpp"
-//#include "context_client.hpp"
-//#include "context_server.hpp"
 #include "data_output.hpp"
 #include "garbage_collector.hpp"
 #include "registry.hpp"
-//#include "mpi.hpp"
 
 
@@ -84,8 +81,8 @@
 
          /// Mutateurs ///
-         void setCalendar(boost::shared_ptr<CCalendar> newCalendar);
+         void setCalendar(std::shared_ptr<CCalendar> newCalendar);
 
          /// Accesseurs ///
-         boost::shared_ptr<CCalendar>      getCalendar(void) const;
+         std::shared_ptr<CCalendar>      getCalendar(void) const;
 
       public :
@@ -228,5 +225,5 @@
       public :
          // Calendar of context
-         boost::shared_ptr<CCalendar>   calendar;
+         std::shared_ptr<CCalendar>   calendar;
 
          // List of all enabled files (files on which fields are written or read)
@@ -242,5 +239,5 @@
 
          // Context root
-         static boost::shared_ptr<CContextGroup> *root_ptr;
+         static std::shared_ptr<CContextGroup> *root_ptr;
          #pragma omp threadprivate(root_ptr)
 
Index: XIOS/dev/branch_openmp/src/node/domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/domain.cpp	(revision 1545)
@@ -68,5 +68,4 @@
    }
 
-
    std::map<StdString, ETranformationType> *CDomain::transformationMapList_ptr = 0;
 
@@ -163,10 +162,10 @@
      }
 
-     boost::unordered_map<int, vector<size_t> >::const_iterator itIndexEnd = indSrv_[client->serverSize].end();
+     std::unordered_map<int, vector<size_t> >::const_iterator itIndexEnd = indSrv_[client->serverSize].end();
      // std::map<int, std::vector<int> >::const_iterator itWrittenIndexEnd = indWrittenSrv_.end();
      for (size_t k = 0; k < connectedServerRank_[client->serverSize].size(); ++k)
      {
        int rank = connectedServerRank_[client->serverSize][k];
-       boost::unordered_map<int, std::vector<size_t> >::const_iterator it = indSrv_[client->serverSize].find(rank);
+       std::unordered_map<int, std::vector<size_t> >::const_iterator it = indSrv_[client->serverSize].find(rank);
        size_t idxCount = (it != itIndexEnd) ? it->second.size() : 0;
 
@@ -1510,5 +1509,5 @@
          ERROR("CDomain::checkBounds(void)",
                << "Since 'bounds_lat_2d' is defined, 'latvalue_2d' must be defined too." << std::endl);
-      
+
        // In case of reading UGRID bounds values are not required
        hasBounds = (!bounds_lat_1d.isEmpty() || !bounds_lat_2d.isEmpty() );
@@ -1814,9 +1813,9 @@
              int iend = ibegin + ni -1;
              int jend = jbegin + nj -1;
-             zoom_ibegin = global_zoom_ibegin > ibegin ? global_zoom_ibegin : ibegin;
+             zoom_ibegin = global_zoom_ibegin > ibegin ? global_zoom_ibegin.getValue() : ibegin;
              int zoom_iend  = global_zoom_iend < iend ? zoom_iend : iend ;
              zoom_ni     = zoom_iend-zoom_ibegin+1 ;
 
-             zoom_jbegin = global_zoom_jbegin > jbegin ? global_zoom_jbegin : jbegin ;
+             zoom_jbegin = global_zoom_jbegin > jbegin ? global_zoom_jbegin.getValue() : jbegin ;
              int zoom_jend   = global_zoom_jend < jend ? zoom_jend : jend;
              zoom_nj     = zoom_jend-zoom_jbegin+1;
@@ -1851,6 +1850,6 @@
            CServerDistributionDescription serverDescription(nGlobDomain, nbServer);
            std::vector<int> serverZeroIndex;
-           if (isUnstructed_) serverZeroIndex = serverDescription.computeServerGlobalIndexInRange(std::make_pair<size_t,size_t>(indexBegin, indexEnd), 0);
-           else serverZeroIndex = serverDescription.computeServerGlobalIndexInRange(std::make_pair<size_t,size_t>(indexBegin, indexEnd), 1);
+           if (isUnstructed_) serverZeroIndex = serverDescription.computeServerGlobalIndexInRange(std::make_pair<size_t&,size_t&>(indexBegin, indexEnd), 0);
+           else serverZeroIndex = serverDescription.computeServerGlobalIndexInRange(std::make_pair<size_t&,size_t&>(indexBegin, indexEnd), 1);
 
            std::list<int> serverZeroIndexLeader;
@@ -1909,5 +1908,5 @@
 
       size_t nbWritten = 0, indGlo;      
-      boost::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
+      std::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
                                                           ite = globalLocalIndexMap_.end(), it;          
       CArray<size_t,1>::const_iterator itSrvb = writtenGlobalIndex.begin(),
@@ -1941,49 +1940,4 @@
         }
       }
-      
-      // if (isCompressible())
-      // {
-      //   nbWritten = 0;
-      //   boost::unordered_map<size_t,size_t> localGlobalIndexMap;
-      //   for (itSrv = itSrvb; itSrv != itSrve; ++itSrv)
-      //   {
-      //     indGlo = *itSrv;
-      //     if (ite != globalLocalIndexMap_.find(indGlo))
-      //     {
-      //       localGlobalIndexMap[localIndexToWriteOnServer(nbWritten)] = indGlo;
-      //       ++nbWritten;
-      //     }                 
-      //   }
-
-      //   nbWritten = 0;
-      //   for (int idx = 0; idx < data_i_index.numElements(); ++idx)
-      //   {
-      //     if (localGlobalIndexMap.end() != localGlobalIndexMap.find(data_i_index(idx)))
-      //     {
-      //       ++nbWritten;
-      //     }
-      //   }
-
-      //   compressedIndexToWriteOnServer.resize(nbWritten);
-      //   nbWritten = 0;
-      //   for (int idx = 0; idx < data_i_index.numElements(); ++idx)
-      //   {
-      //     if (localGlobalIndexMap.end() != localGlobalIndexMap.find(data_i_index(idx)))
-      //     {
-      //       compressedIndexToWriteOnServer(nbWritten) = localGlobalIndexMap[data_i_index(idx)];
-      //       ++nbWritten;
-      //     }
-      //   }
-
-      //   numberWrittenIndexes_ = nbWritten;
-      //   if (isDistributed())
-      //   {            
-      //     ep_lib::MPI_Allreduce(&numberWrittenIndexes_, &totalNumberWrittenIndexes_, 1, MPI_INT, MPI_SUM, server->intraComm);
-      //     ep_lib::MPI_Scan(&numberWrittenIndexes_, &offsetWrittenIndexes_, 1, MPI_INT, MPI_SUM, server->intraComm);
-      //     offsetWrittenIndexes_ -= numberWrittenIndexes_;
-      //   }
-      //   else
-      //     totalNumberWrittenIndexes_ = numberWrittenIndexes_;
-      // }      
    }
 
@@ -2009,9 +1963,9 @@
       const CArray<size_t,1>& writtenGlobalIndex  = srvDist.getGlobalIndex();
 
-      boost::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
+      std::unordered_map<size_t,size_t>::const_iterator itb = globalLocalIndexMap_.begin(),
                                                           ite = globalLocalIndexMap_.end(), it;   
       CArray<size_t,1>::const_iterator itSrvb = writtenGlobalIndex.begin(),
                                        itSrve = writtenGlobalIndex.end(), itSrv;
-      boost::unordered_map<size_t,size_t> localGlobalIndexMap;
+      std::unordered_map<size_t,size_t> localGlobalIndexMap;
       for (itSrv = itSrvb; itSrv != itSrve; ++itSrv)
       {
@@ -2089,5 +2043,5 @@
       list<CArray<int,1> > list_indZoom, list_writtenInd, list_indGlob;
 
-      boost::unordered_map<int, vector<size_t> >::const_iterator itIndex, iteIndex;
+      std::unordered_map<int, vector<size_t> >::const_iterator itIndex, iteIndex;
       iteIndex = indSrv_[serverSize].end();
       for (int k = 0; k < connectedServerRank_[serverSize].size(); ++k)
@@ -2190,5 +2144,5 @@
       list<CArray<bool,1> > list_mask;
 
-      boost::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
+      std::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
       iteMap = indSrv_[serverSize].end();
       for (int k = 0; k < connectedServerRank_[serverSize].size(); ++k)
@@ -2237,5 +2191,5 @@
       list<CArray<double,1> > list_area;
 
-      boost::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
+      std::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
       iteMap = indSrv_[serverSize].end();
       for (int k = 0; k < connectedServerRank_[serverSize].size(); ++k)
@@ -2288,5 +2242,5 @@
       list<CArray<double,2> > list_boundslon, list_boundslat;
 
-      boost::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
+      std::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
       iteMap = indSrv_[serverSize].end();
       for (int k = 0; k < connectedServerRank_[serverSize].size(); ++k)
@@ -2405,5 +2359,5 @@
       }
 
-      boost::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
+      std::unordered_map<int, vector<size_t> >::const_iterator it, iteMap;
       iteMap = indSrv_[serverSize].end();
       for (int k = 0; k < connectedServerRank_[serverSize].size(); ++k)
@@ -2607,9 +2561,9 @@
     int zoom_jend_glob = global_zoom_jbegin + global_zoom_nj - 1;
 
-    zoom_ibegin.setValue(global_zoom_ibegin > ibegin ? global_zoom_ibegin : ibegin);
+    zoom_ibegin.setValue(global_zoom_ibegin > ibegin ? global_zoom_ibegin.getValue() : ibegin);
     int zoom_iend = zoom_iend_glob < iend ? zoom_iend_glob : iend ;
     zoom_ni.setValue(zoom_iend-zoom_ibegin+1);
 
-    zoom_jbegin.setValue(global_zoom_jbegin > jbegin ? global_zoom_jbegin : jbegin);
+    zoom_jbegin.setValue(global_zoom_jbegin > jbegin ? global_zoom_jbegin.getValue() : jbegin);
     int zoom_jend = zoom_jend_glob < jend ? zoom_jend_glob : jend ;
     zoom_nj.setValue(zoom_jend-zoom_jbegin+1);
@@ -2670,6 +2624,6 @@
   
     if (nbMaskInd != globalLocalIndexMap_.size())
-      info (0) << "If the domain " << this->getDomainOutputName() <<" does not have overlapped region between processes."
-               << "Something must be wrong with mask index "<< std::endl;
+      info (0) << "If domain " << this->getDomainOutputName() <<" does not have overlapped regions between processes "
+               << "something must be wrong with mask index "<< std::endl;
 
     nbMaskInd = globalLocalIndexMap_.size();
@@ -2746,6 +2700,6 @@
     
       if (nbLonInd != globalLocalIndexMap_.size())
-        info (0) << "If the domain " << this->getDomainOutputName() <<" does not have overlapped region between processes."
-                 << "Something must be wrong with longitude index "<< std::endl;
+        info (0) << "If domain " << this->getDomainOutputName() <<" does not have overlapped regions between processes "
+                 << "something must be wrong with longitude index "<< std::endl;
 
       nbLonInd = globalLocalIndexMap_.size();
@@ -2830,6 +2784,6 @@
     
       if (nbLatInd != globalLocalIndexMap_.size())
-        info (0) << "If the domain " << this->getDomainOutputName() <<" does not have overlapped region between processes."
-                << "Something must be wrong with latitude index "<< std::endl;
+        info (0) << "If domain " << this->getDomainOutputName() <<" does not have overlapped regions between processes "
+                << "something must be wrong with latitude index "<< std::endl;
 
       nbLatInd = globalLocalIndexMap_.size();
@@ -2912,6 +2866,6 @@
 
       if (nbAreaInd != globalLocalIndexMap_.size())
-        info (0) << "If the domain " << this->getDomainOutputName() <<" does not have overlapped region between processes."
-                 << "Something must be wrong with area index "<< std::endl;
+        info (0) << "If domain " << this->getDomainOutputName() <<" does not have overlapped regions between processes "
+                 << "something must be wrong with area index "<< std::endl;
 
       nbAreaInd = globalLocalIndexMap_.size();
Index: XIOS/dev/branch_openmp/src/node/domain.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/domain.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/domain.hpp	(revision 1545)
@@ -216,5 +216,5 @@
 
 /** Global index of each client sent to server: map<serverSize, map<serverRank, indexes>> */
-         std::map<int, boost::unordered_map<int, vector<size_t> > > indSrv_;
+         std::map<int, std::unordered_map<int, vector<size_t> > > indSrv_;
          // std::map<CContextClient*, std::map<int, vector<int> > > indWrittenSrv_; // Global written index of each client sent to server
          std::vector<int> indexesToWrite;
@@ -230,5 +230,5 @@
          TransMapTypes transformationMap_;         
          bool isUnstructed_;
-         boost::unordered_map<size_t,size_t> globalLocalIndexMap_;
+         std::unordered_map<size_t,size_t> globalLocalIndexMap_;
        
        private:
Index: XIOS/dev/branch_openmp/src/node/field.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/field.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/field.cpp	(revision 1545)
@@ -219,5 +219,5 @@
       // Gather all data from different clients      
       recvDataSrv.resize(storeClient.numElements());
-      recvFoperationSrv = boost::shared_ptr<func::CFunctor>(new func::CInstant(recvDataSrv));
+      recvFoperationSrv = std::shared_ptr<func::CFunctor>(new func::CInstant(recvDataSrv));
     }
 
@@ -505,5 +505,4 @@
     if (!nstepMaxRead)
     {
-       //MPI_Allreduce(MPI_IN_PLACE, &nstepMax, 1, MPI_INT, MPI_MAX, context->server->intraComm);
        MPI_Allreduce(&nstepMax, &nstepMax, 1, MPI_INT, MPI_MAX, context->server->intraComm);
        nstepMaxRead = true;
@@ -720,5 +719,5 @@
    //----------------------------------------------------------------
 
-   boost::shared_ptr<COutputPin> CField::getInstantDataFilter()
+   std::shared_ptr<COutputPin> CField::getInstantDataFilter()
    {
      return instantDataFilter;
@@ -988,5 +987,5 @@
               << "An operation must be defined for field \"" << getId() << "\".");
 
-      boost::shared_ptr<func::CFunctor> functor;
+      std::shared_ptr<func::CFunctor> functor;
       CArray<double, 1> dummyData;
 
@@ -1031,5 +1030,5 @@
      {
         if (!instantDataFilter)
-          instantDataFilter = clientSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid,true));
+          instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid,true));
 
 
@@ -1039,5 +1038,5 @@
          if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write))
          {
-           fileServerWriterFilter = boost::shared_ptr<CFileServerWriterFilter>(new CFileServerWriterFilter(gc, this));
+           fileServerWriterFilter = std::shared_ptr<CFileServerWriterFilter>(new CFileServerWriterFilter(gc, this));
            instantDataFilter->connectOutput(fileServerWriterFilter, 0);
          }
@@ -1047,5 +1046,5 @@
      {
        if (!instantDataFilter)
-         instantDataFilter = clientSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true));
+         instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true));
 
              // If the field data is to be read by the client or/and written to a file
@@ -1054,5 +1053,5 @@
          if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write))
          {
-           fileWriterFilter = boost::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this));
+           fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this));
            instantDataFilter->connectOutput(fileWriterFilter, 0);
          }
@@ -1068,5 +1067,5 @@
          {
            boost::scoped_ptr<IFilterExprNode> expr(parseExpr(getExpression() + '\0'));
-           boost::shared_ptr<COutputPin> filter = expr->reduce(gc, *this);
+           std::shared_ptr<COutputPin> filter = expr->reduce(gc, *this);
 
            // Check if a spatial transformation is needed
@@ -1077,5 +1076,5 @@
              if (grid && grid != gridRef && grid->hasTransform())
              {
-                 std::pair<boost::shared_ptr<CFilter>, boost::shared_ptr<CFilter> > filters = CSpatialTransformFilter::buildFilterGraph(gc, gridRef, grid, detectMissingValues, defaultValue); 
+                 std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = CSpatialTransformFilter::buildFilterGraph(gc, gridRef, grid, detectMissingValues, defaultValue); 
 
                filter->connectOutput(filters.first, 0);
@@ -1093,5 +1092,5 @@
          {
            checkTimeAttributes();
-           instantDataFilter = serverSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, freq_offset, true,
+           instantDataFilter = serverSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, freq_offset, true,
                                                                                                        detectMissingValues, defaultValue));
          }
@@ -1099,5 +1098,5 @@
          {
             if (check_if_active.isEmpty()) check_if_active = false; 
-            instantDataFilter = clientSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, false, NoneDu, false,
+            instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, false, NoneDu, false,
                                                                                                         detectMissingValues, defaultValue));
          }
@@ -1109,5 +1108,5 @@
          if (!read_access.isEmpty() && read_access)
          {
-           storeFilter = boost::shared_ptr<CStoreFilter>(new CStoreFilter(gc, CContext::getCurrent(), grid,
+           storeFilter = std::shared_ptr<CStoreFilter>(new CStoreFilter(gc, CContext::getCurrent(), grid,
                                                                           detectMissingValues, defaultValue));
            instantDataFilter->connectOutput(storeFilter, 0);
@@ -1116,5 +1115,5 @@
          if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write))
          {
-           fileWriterFilter = boost::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this));
+           fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this));
            getTemporalDataFilter(gc, file->output_freq)->connectOutput(fileWriterFilter, 0);
          }
@@ -1130,5 +1129,5 @@
     * \return the output pin corresponding to the field reference
     */
-   boost::shared_ptr<COutputPin> CField::getFieldReference(CGarbageCollector& gc)
+   std::shared_ptr<COutputPin> CField::getFieldReference(CGarbageCollector& gc)
    {
      if (instantDataFilter || field_ref.isEmpty())
@@ -1139,5 +1138,5 @@
      fieldRef->buildFilterGraph(gc, false);
 
-     std::pair<boost::shared_ptr<CFilter>, boost::shared_ptr<CFilter> > filters;
+     std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters;
      // Check if a spatial transformation is needed
      if (grid && grid != fieldRef->grid && grid->hasTransform())
@@ -1148,5 +1147,5 @@
      }
      else
-       filters.first = filters.second = boost::shared_ptr<CFilter>(new CPassThroughFilter(gc));
+       filters.first = filters.second = std::shared_ptr<CFilter>(new CPassThroughFilter(gc));
 
      fieldRef->getInstantDataFilter()->connectOutput(filters.first, 0);
@@ -1164,5 +1163,5 @@
     * \return the output pin corresponding to a self reference
     */
-   boost::shared_ptr<COutputPin> CField::getSelfReference(CGarbageCollector& gc)
+   std::shared_ptr<COutputPin> CField::getSelfReference(CGarbageCollector& gc)
    {
      if (instantDataFilter || !hasExpression())
@@ -1180,5 +1179,5 @@
          {
            checkTimeAttributes();
-           serverSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, freq_offset, true,
+           serverSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, freq_offset, true,
                                                                                    detectMissingValues, defaultValue));
          }
@@ -1197,5 +1196,5 @@
          {
            if (check_if_active.isEmpty()) check_if_active = false;
-           clientSourceFilter = boost::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, NoneDu, false,
+           clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, true, NoneDu, false,
                                                                                    detectMissingValues, defaultValue));
          }
@@ -1217,7 +1216,7 @@
     * \return the output pin corresponding to the requested temporal filter
     */
-   boost::shared_ptr<COutputPin> CField::getTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq)
-   {
-     std::map<CDuration, boost::shared_ptr<COutputPin> >::iterator it = temporalDataFilters.find(outFreq);
+   std::shared_ptr<COutputPin> CField::getTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq)
+   {
+     std::map<CDuration, std::shared_ptr<COutputPin> >::iterator it = temporalDataFilters.find(outFreq);
 
      if (it == temporalDataFilters.end())
@@ -1230,5 +1229,5 @@
 
        const bool detectMissingValues = (!detect_missing_value.isEmpty()  && detect_missing_value == true);
-       boost::shared_ptr<CTemporalFilter> temporalFilter(new CTemporalFilter(gc, operation,
+       std::shared_ptr<CTemporalFilter> temporalFilter(new CTemporalFilter(gc, operation,
                                                                              CContext::getCurrent()->getCalendar()->getInitDate(),
                                                                              freq_op, freq_offset, outFreq, detectMissingValues));
@@ -1251,5 +1250,5 @@
     */
    
-   boost::shared_ptr<COutputPin> CField::getSelfTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq)
+   std::shared_ptr<COutputPin> CField::getSelfTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq)
    {
      if (instantDataFilter || !hasExpression())
@@ -1268,5 +1267,5 @@
 
        const bool detectMissingValues = (!detect_missing_value.isEmpty() && detect_missing_value == true);
-       boost::shared_ptr<CTemporalFilter> temporalFilter(new CTemporalFilter(gc, operation,
+       std::shared_ptr<CTemporalFilter> temporalFilter(new CTemporalFilter(gc, operation,
                                                                              CContext::getCurrent()->getCalendar()->getInitDate(),
                                                                              freq_op, freq_offset, outFreq, detectMissingValues));
@@ -1319,4 +1318,9 @@
         std::vector<CScalar*> vecScalar;
         std::vector<int> axisDomainOrderTmp;
+
+        std::vector<CDomain*> vecDomRef;
+        std::vector<CAxis*> vecAxisRef;
+        std::vector<CScalar*> vecScalarRef;
+
         
         if (!domain_ref.isEmpty())
@@ -1326,9 +1330,10 @@
           {
             vecDom.push_back(CDomain::get(domain_ref));
+            vecDomRef.push_back(CDomain::createDomain());
+            vecDomRef.back()->domain_ref=domain_ref;
             axisDomainOrderTmp.push_back(2);
           }
-          else
-            ERROR("CField::solveGridReference(void)",
-                  << "Invalid reference to domain '" << domain_ref.getValue() << "'.");
+          else  ERROR("CField::solveGridReference(void)",
+                      << "Invalid reference to domain '" << domain_ref.getValue() << "'.");
         }
 
@@ -1338,9 +1343,10 @@
           {
             vecAxis.push_back(CAxis::get(axis_ref));
+            vecAxisRef.push_back(CAxis::createAxis());
+            vecAxisRef.back()->axis_ref=axis_ref;
             axisDomainOrderTmp.push_back(1);
           }
-          else
-            ERROR("CField::solveGridReference(void)",
-                  << "Invalid reference to axis '" << axis_ref.getValue() << "'.");
+          else  ERROR("CField::solveGridReference(void)",
+                      << "Invalid reference to axis '" << axis_ref.getValue() << "'.");
         }
 
@@ -1350,9 +1356,10 @@
           {
             vecScalar.push_back(CScalar::get(scalar_ref));
+            vecScalarRef.push_back(CScalar::createScalar());
+            vecScalarRef.back()->scalar_ref=scalar_ref;
             axisDomainOrderTmp.push_back(0);
           }
-          else
-            ERROR("CField::solveGridReference(void)",
-                  << "Invalid reference to scalar '" << scalar_ref.getValue() << "'.");
+          else ERROR("CField::solveGridReference(void)",
+                     << "Invalid reference to scalar '" << scalar_ref.getValue() << "'.");
         }
         
@@ -1365,16 +1372,12 @@
         // Warning: the gridId shouldn't be set as the grid_ref since it could be inherited
         StdString gridId = CGrid::generateId(vecDom, vecAxis, vecScalar,axisDomainOrder);
-        if (CGrid::has(gridId))
-          this->grid = CGrid::get(gridId);
-        else
-          this->grid = CGrid::createGrid(gridId, vecDom, vecAxis, vecScalar,axisDomainOrder);
+        if (CGrid::has(gridId)) this->grid = CGrid::get(gridId);
+        else  this->grid = CGrid::createGrid(gridId, vecDomRef, vecAxisRef, vecScalarRef,axisDomainOrder);
       }
       else
       {
-        if (CGrid::has(grid_ref))
-          this->grid = CGrid::get(grid_ref);
-        else
-          ERROR("CField::solveGridReference(void)",
-                << "Invalid reference to grid '" << grid_ref.getValue() << "'.");
+        if (CGrid::has(grid_ref)) this->grid = CGrid::get(grid_ref);
+        else  ERROR("CField::solveGridReference(void)",
+                     << "Invalid reference to grid '" << grid_ref.getValue() << "'.");
       }
    }
@@ -1621,4 +1624,21 @@
    }
 
+
+   /*!
+    * Send all Attributes to server. This method is overloaded, since only grid_ref attribute
+    * must be sent to server and not domain_ref/axis_ref/scalar_ref. 
+    */
+    
+   void CField::sendAllAttributesToServer(CContextClient* client)
+   {
+     if (grid_ref.isEmpty())
+     {
+       grid_ref=grid->getId() ;
+       SuperClass::sendAllAttributesToServer(client) ;
+       grid_ref.reset();
+     }
+     else SuperClass::sendAllAttributesToServer(client) ;
+   }
+    
    void CField::sendAddVariable(const string& id, CContextClient* client)
    {
@@ -1670,5 +1690,5 @@
      bool isFieldRead  = file && !file->mode.isEmpty() && file->mode == CFile::mode_attr::read;
      bool isFieldWrite = file && ( file->mode.isEmpty() ||  file->mode == CFile::mode_attr::write);
-     if (isFieldRead && operation.getValue() != "instant")
+     if (isFieldRead && !(operation.getValue() == "instant" || operation.getValue() == "once") )     
        ERROR("void CField::checkTimeAttributes(void)",
              << "Unsupported operation for field '" << getFieldOutputName() << "'." << std::endl
Index: XIOS/dev/branch_openmp/src/node/field.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/field.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/field.hpp	(revision 1545)
@@ -92,5 +92,5 @@
          template <int N> void getData(CArray<double, N>& _data) const;
 
-         boost::shared_ptr<COutputPin> getInstantDataFilter();
+         std::shared_ptr<COutputPin> getInstantDataFilter();
 
          /// Mutateur ///
@@ -143,8 +143,8 @@
          
          
-         boost::shared_ptr<COutputPin> getFieldReference(CGarbageCollector& gc);
-         boost::shared_ptr<COutputPin> getSelfReference(CGarbageCollector& gc);
-         boost::shared_ptr<COutputPin> getTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq);
-         boost::shared_ptr<COutputPin> getSelfTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq);
+         std::shared_ptr<COutputPin> getFieldReference(CGarbageCollector& gc);
+         std::shared_ptr<COutputPin> getSelfReference(CGarbageCollector& gc);
+         std::shared_ptr<COutputPin> getTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq);
+         std::shared_ptr<COutputPin> getSelfTemporalDataFilter(CGarbageCollector& gc, CDuration outFreq);
 
 //         virtual void fromBinary(StdIStream& is);
@@ -161,4 +161,5 @@
         template <int N> void setData(const CArray<double, N>& _data);
         static bool dispatchEvent(CEventServer& event);
+        void sendAllAttributesToServer(CContextClient* client) ; 
         void sendUpdateData(const CArray<double,1>& data);
         void sendUpdateData(const CArray<double,1>& data, CContextClient* client);
@@ -225,10 +226,10 @@
          bool mustAutoTrigger;
 
-         map<int,boost::shared_ptr<func::CFunctor> > foperation_srv;
+         map<int,std::shared_ptr<func::CFunctor> > foperation_srv;
 
          // map<int, CArray<double,1> > data_srv;
          CArray<double,1> recvDataSrv;
          
-         boost::shared_ptr<func::CFunctor> recvFoperationSrv;
+         std::shared_ptr<func::CFunctor> recvFoperationSrv;
          string content;
 
@@ -257,19 +258,19 @@
 
          //! The output pin of the filter providing the instant data for the field
-         boost::shared_ptr<COutputPin> instantDataFilter;
+         std::shared_ptr<COutputPin> instantDataFilter;
          //! The output pin of the filters providing the result of the field's temporal operation
-         std::map<CDuration, boost::shared_ptr<COutputPin>, DurationFakeLessComparator> temporalDataFilters;
+         std::map<CDuration, std::shared_ptr<COutputPin>, DurationFakeLessComparator> temporalDataFilters;
          //! The output pin of the filter providing the instant data for self references
-         boost::shared_ptr<COutputPin> selfReferenceFilter;
+         std::shared_ptr<COutputPin> selfReferenceFilter;
          //! The source filter for data provided by the client
-         boost::shared_ptr<CSourceFilter> clientSourceFilter;
+         std::shared_ptr<CSourceFilter> clientSourceFilter;
          //! The source filter for data provided by the server
-         boost::shared_ptr<CSourceFilter> serverSourceFilter;
+         std::shared_ptr<CSourceFilter> serverSourceFilter;
          //! The terminal filter which stores the instant data
-         boost::shared_ptr<CStoreFilter> storeFilter;
+         std::shared_ptr<CStoreFilter> storeFilter;
          //! The terminal filter which writes the data to file
-         boost::shared_ptr<CFileWriterFilter> fileWriterFilter;
+         std::shared_ptr<CFileWriterFilter> fileWriterFilter;
          //! The terminal filter which writes data to file
-         boost::shared_ptr<CFileServerWriterFilter> fileServerWriterFilter;
+         std::shared_ptr<CFileServerWriterFilter> fileServerWriterFilter;
    }; // class CField
 
Index: XIOS/dev/branch_openmp/src/node/file.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/file.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/file.cpp	(revision 1545)
@@ -25,5 +25,5 @@
    CFile::CFile(void)
       : CObjectTemplate<CFile>(), CFileAttributes()
-      , vFieldGroup(), data_out(), enabledFields()
+      , vFieldGroup(), data_out(), enabledFields(), fileComm(MPI_COMM_NULL)
       , isOpen(false), read_client(0), checkRead(false), allZoneEmpty(false)
    {
@@ -34,5 +34,5 @@
    CFile::CFile(const StdString & id)
       : CObjectTemplate<CFile>(id), CFileAttributes()
-      , vFieldGroup(), data_out(), enabledFields()
+      , vFieldGroup(), data_out(), enabledFields(), fileComm(MPI_COMM_NULL)
       , isOpen(false), read_client(0), checkRead(false), allZoneEmpty(false)
     {
@@ -64,5 +64,5 @@
    \return data writer object.
    */
-   boost::shared_ptr<CDataOutput> CFile::getDataOutput(void) const
+   std::shared_ptr<CDataOutput> CFile::getDataOutput(void) const
    {
       return data_out;
@@ -75,5 +75,5 @@
    \return data reader object.
    */
-   boost::shared_ptr<CDataInput> CFile::getDataInput(void) const
+   std::shared_ptr<CDataInput> CFile::getDataInput(void) const
    {
       return data_in;
@@ -479,9 +479,11 @@
            if (split_freq_format.isEmpty())
            {
-             if (split_freq.getValue().second != 0) splitFormat = "%y%mo%d%h%mi%s";
-             else if (split_freq.getValue().minute != 0) splitFormat = "%y%mo%d%h%mi";
-             else if (split_freq.getValue().hour != 0) splitFormat = "%y%mo%d%h";
-             else if (split_freq.getValue().day != 0) splitFormat = "%y%mo%d";
-             else if (split_freq.getValue().month != 0) splitFormat = "%y%mo";
+             CDuration splitFreq = split_freq.getValue();
+             splitFreq.solveTimeStep(*CContext::getCurrent()->getCalendar());
+             if (splitFreq.second != 0) splitFormat = "%y%mo%d%h%mi%s";
+             else if (splitFreq.minute != 0) splitFormat = "%y%mo%d%h%mi";
+             else if (splitFreq.hour != 0) splitFormat = "%y%mo%d%h";
+             else if (splitFreq.day != 0) splitFormat = "%y%mo%d";
+             else if (splitFreq.month != 0) splitFormat = "%y%mo";
              else splitFormat = "%y";
            }
@@ -543,9 +545,11 @@
          if (isOpen) data_out->closeFile();
 
-        data_out = boost::shared_ptr<CDataOutput>(new CNc4DataOutput(this, oss.str(), append, useClassicFormat, useCFConvention,
+        data_out = std::shared_ptr<CDataOutput>(new CNc4DataOutput(this, oss.str(), append, useClassicFormat, useCFConvention,
                                                               fileComm, multifile, isCollective, time_counter_name));
         isOpen = true;
 
         data_out->writeFile(CFile::get(this));
+
+        if (!useCFConvention) sortEnabledFieldsForUgrid();
 
         // Do not recreate the file structure if opening an existing file
@@ -611,9 +615,11 @@
         if (split_freq_format.isEmpty())
         {
-          if (split_freq.getValue().second != 0) splitFormat = "%y%mo%d%h%mi%s";
-          else if (split_freq.getValue().minute != 0) splitFormat = "%y%mo%d%h%mi";
-          else if (split_freq.getValue().hour != 0) splitFormat = "%y%mo%d%h";
-          else if (split_freq.getValue().day != 0) splitFormat = "%y%mo%d";
-          else if (split_freq.getValue().month != 0) splitFormat = "%y%mo";
+          CDuration splitFreq = split_freq.getValue();
+          splitFreq.solveTimeStep(*CContext::getCurrent()->getCalendar());
+          if (splitFreq.second != 0) splitFormat = "%y%mo%d%h%mi%s";
+          else if (splitFreq.minute != 0) splitFormat = "%y%mo%d%h%mi";
+          else if (splitFreq.hour != 0) splitFormat = "%y%mo%d%h";
+          else if (splitFreq.day != 0) splitFormat = "%y%mo%d";
+          else if (splitFreq.month != 0) splitFormat = "%y%mo";
           else splitFormat = "%y";
         }
@@ -657,16 +663,13 @@
 
       bool isCollective = par_access.isEmpty() || par_access == par_access_attr::collective;
-      bool  readMetaDataPar = true;
+      bool readMetaDataPar = true;
       if (!context->hasServer) readMetaDataPar = (read_metadata_par.isEmpty()) ? false : read_metadata_par;
-      
+
       if (isOpen) data_out->closeFile();
-      //if (time_counter_name.isEmpty()) data_in = boost::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), readComm, multifile, isCollective));
-      //else data_in = boost::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), readComm, multifile, isCollective, time_counter_name));
       bool ugridConvention = !convention.isEmpty() ? (convention == convention_attr::UGRID) : false;
       if (time_counter_name.isEmpty())
-        data_in = boost::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), readComm, multifile, isCollective, readMetaDataPar, ugridConvention));
+        data_in = std::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), readComm, multifile, isCollective, readMetaDataPar, ugridConvention));
       else
-        data_in = boost::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), readComm, multifile, isCollective, readMetaDataPar, ugridConvention, time_counter_name));
-
+        data_in = std::shared_ptr<CDataInput>(new CNc4DataInput(oss.str(), readComm, multifile, isCollective, readMetaDataPar, ugridConvention, time_counter_name));
       isOpen = true;
     }
@@ -813,4 +816,58 @@
    }
 
+   /*!
+   \brief Sorting domains with the same name (= describing the same mesh) in the decreasing order of nvertex for UGRID files.
+   This insures that the domain with the highest nvertex is written first and thus all known mesh connectivity is generated at once by this domain.
+   */
+   void CFile::sortEnabledFieldsForUgrid()
+   {
+     int size = this->enabledFields.size();
+     std::vector<int> domainNvertices;
+     std::vector<StdString> domainNames;
+
+     for (int i = 0; i < size; ++i)
+     {
+       std::vector<CDomain*> domain = this->enabledFields[i]->getRelGrid()->getDomains();
+       if (domain.size() != 1)
+       {
+         ERROR("void CFile::sortEnabledFieldsForUgrid()",
+               "A domain, and only one, should be defined for grid "<< this->enabledFields[i]->getRelGrid()->getId() << ".");
+       }
+       StdString domainName = domain[0]->getDomainOutputName();
+       int nvertex;
+       if (domain[0]->nvertex.isEmpty())
+       {
+         ERROR("void CFile::sortEnabledFieldsForUgrid()",
+               "Attributes nvertex must be defined for domain "<< domain[0]->getDomainOutputName() << ".");
+       }
+       else
+         nvertex = domain[0]->nvertex;
+
+       for (int j = 0; j < i; ++j)
+       {
+         if (domainName == domainNames[j] && nvertex > domainNvertices[j])
+         {
+           CField* tmpSwap = this->enabledFields[j];
+           this->enabledFields[j] = this->enabledFields[i];
+           this->enabledFields[i] = tmpSwap;
+           domainNames.push_back(domainNames[j]);
+           domainNames[j] = domainName;
+           domainNvertices.push_back(domainNvertices[j]);
+           domainNvertices[j] = nvertex;
+         }
+         else
+         {
+           domainNames.push_back(domainName);
+           domainNvertices.push_back(nvertex);
+         }
+       }
+       if (i==0)
+       {
+         domainNames.push_back(domainName);
+         domainNvertices.push_back(nvertex);
+       }
+     }
+   }
+
    void CFile::sendGridOfEnabledFields()
    { 
Index: XIOS/dev/branch_openmp/src/node/file.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/file.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/file.hpp	(revision 1545)
@@ -13,5 +13,5 @@
 #include "attribute_enum_impl.hpp"
 #include "context_client.hpp"
-//#include "mpi.hpp"
+
 
 namespace xios {
@@ -72,6 +72,6 @@
          /// Accesseurs ///
          const StdString getFileOutputName(void) const;
-         boost::shared_ptr<CDataOutput> getDataOutput(void) const;
-         boost::shared_ptr<CDataInput> getDataInput(void) const;
+         std::shared_ptr<CDataOutput> getDataOutput(void) const;
+         std::shared_ptr<CDataInput> getDataInput(void) const;
          CFieldGroup* getVirtualFieldGroup(void) const;
          CVariableGroup* getVirtualVariableGroup(void) const;
@@ -119,5 +119,7 @@
          void checkGridOfEnabledFields();
          void sendGridOfEnabledFields();
-         void sendGridComponentOfEnabledFields();   
+         void sendGridComponentOfEnabledFields();
+
+         void sortEnabledFieldsForUgrid();
 
          // Add component into file
@@ -185,6 +187,6 @@
          CFieldGroup* vFieldGroup;
          CVariableGroup* vVariableGroup;
-         boost::shared_ptr<CDataOutput> data_out;
-         boost::shared_ptr<CDataInput> data_in;
+         std::shared_ptr<CDataOutput> data_out;
+         std::shared_ptr<CDataInput> data_in;
          std::vector<CField*> enabledFields;
 
Index: XIOS/dev/branch_openmp/src/node/grid.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/grid.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/grid.cpp	(revision 1545)
@@ -783,5 +783,5 @@
 
          // Compute mapping between client and server
-         std::vector<boost::unordered_map<size_t,std::vector<int> > > indexServerOnElement;
+         std::vector<std::unordered_map<size_t,std::vector<int> > > indexServerOnElement;
          CServerDistributionDescription serverDistributionDescription(getGlobalDimension(), client->serverSize);
          std::vector<int> serverZeroIndex = serverDistributionDescription.computeServerGlobalByElement(indexServerOnElement,
@@ -889,5 +889,5 @@
       \param [out] globalIndexOnServer global index of grid and its corresponding rank of server.
    */
-   void CGrid::computeIndexByElement(const std::vector<boost::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
+   void CGrid::computeIndexByElement(const std::vector<std::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
                                      const CContextClient* client,
                                      CClientServerMapping::GlobalIndexMap& globalIndexOnServer)
@@ -942,5 +942,5 @@
 
      std::vector<std::vector<bool> > elementOnServer(nbElement, std::vector<bool>(serverSize, false));
-     std::vector<boost::unordered_map<int,std::vector<size_t> > > globalElementIndexOnServer(nbElement);
+     std::vector<std::unordered_map<int,std::vector<size_t> > > globalElementIndexOnServer(nbElement);
      CArray<int,1> nbIndexOnServer(serverSize); // Number of distributed global index held by each client for each server
      // Number of temporary distributed global index held by each client for each server
@@ -950,5 +950,5 @@
      {
        nbIndexOnServer = 0;
-       const boost::unordered_map<size_t,std::vector<int> >& indexServerElement = indexServerOnElement[idx];
+       const std::unordered_map<size_t,std::vector<int> >& indexServerElement = indexServerOnElement[idx];
        const CArray<size_t,1>& globalIndexElementOnClient = globalIndexElement[idx];
        CClientClientDHTInt clientClientDHT(indexServerElement, client->intraComm);
Index: XIOS/dev/branch_openmp/src/node/grid.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/grid.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/grid.hpp	(revision 1545)
@@ -288,5 +288,5 @@
         void checkAttributesAfterTransformation();
         void setTransformationAlgorithms();
-        void computeIndexByElement(const std::vector<boost::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
+        void computeIndexByElement(const std::vector<std::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
                                    const CContextClient* client,
                                    CClientServerMapping::GlobalIndexMap& globalIndexOnServer);
Index: XIOS/dev/branch_openmp/src/node/mesh.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/mesh.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/mesh.cpp	(revision 1545)
@@ -7,4 +7,5 @@
 #include "mesh.hpp"
 using namespace ep_lib;
+#include <boost/functional/hash.hpp>
 
 namespace xios {
@@ -32,7 +33,4 @@
   }
 
-  //std::map <StdString, CMesh> CMesh::meshList = std::map <StdString, CMesh>();
-  //std::map <StdString, vector<int> > CMesh::domainList = std::map <StdString, vector<int> >();
-
   std::map <StdString, CMesh> *CMesh::meshList_ptr = 0;
   std::map <StdString, vector<int> > *CMesh::domainList_ptr = 0;
@@ -50,22 +48,16 @@
     if(CMesh::meshList_ptr == NULL)   CMesh::meshList_ptr   = new std::map <StdString, CMesh>();
 
-    //CMesh::domainList[meshName].push_back(nvertex);
     CMesh::domainList_ptr->at(meshName).push_back(nvertex);
 
-    //if ( CMesh::meshList.begin() != CMesh::meshList.end() )
     if ( CMesh::meshList_ptr->begin() != CMesh::meshList_ptr->end() )
     {
-      //for (std::map<StdString, CMesh>::iterator it=CMesh::meshList.begin(); it!=CMesh::meshList.end(); ++it)
       for (std::map<StdString, CMesh>::iterator it=CMesh::meshList_ptr->begin(); it!=CMesh::meshList_ptr->end(); ++it)
       {
         if (it->first == meshName)
-          //return &meshList[meshName];
           return &meshList_ptr->at(meshName);
         else
         {
           CMesh newMesh;
-          //CMesh::meshList.insert( make_pair(meshName, newMesh) );
           CMesh::meshList_ptr->insert( make_pair(meshName, newMesh) );
-          //return &meshList[meshName];
           return &meshList_ptr->at(meshName);
         }
@@ -75,7 +67,5 @@
     {
       CMesh newMesh;
-      //CMesh::meshList.insert( make_pair(meshName, newMesh) );
       CMesh::meshList_ptr->insert( make_pair(meshName, newMesh) );
-      //return &meshList[meshName];
       return &meshList_ptr->at(meshName);
     }
@@ -151,80 +141,4 @@
     }
 
-
-///----------------------------------------------------------------
-/*!
- * \fn size_t CMesh::nodeIndex (double lon, double lat)
- * Returns its index if a node exists; otherwise adds the node and returns -1.
- * Precision check is implemented with two hash values for each dimension, longitude and latitude.
- * \param [in] lon Node longitude in degrees.
- * \param [in] lat Node latitude in degrees ranged from 0 to 360.
- * \return node index if a node exists; -1 otherwise
- */
-  size_t CMesh::nodeIndex (double lon, double lat)
-  {
-    double minBoundLon = 0. ;
-    double maxBoundLon = 360. ;
-    double minBoundLat = -90 ;
-    double maxBoundLat = 90 ;
-    double prec=1e-11 ;
-    double precLon=prec ;
-    double precLat=prec ;
-
-    size_t maxsize_t=numeric_limits<size_t>::max() ;
-    if ( (maxBoundLon-minBoundLon)/maxsize_t > precLon) precLon=(maxBoundLon-minBoundLon)/maxsize_t ;
-    if ( (maxBoundLat-minBoundLat)/maxsize_t > precLat) precLat=(maxBoundLat-minBoundLat)/maxsize_t ;
-
-    size_t iMinLon=0 ;
-    size_t iMaxLon=(maxBoundLon-minBoundLon)/precLon ;
-    size_t iMinLat=0 ;
-    size_t iMaxLat=(maxBoundLat-minBoundLat)/precLat ;
-
-    size_t hash0,hash1,hash2,hash3 ;
-    size_t lon0,lon1,lat0,lat1 ;
-
-    lon0=(lon-minBoundLon)/precLon ;
-    if ( ((lon0+1)*precLon + lon0*precLon)/2 > lon-minBoundLon)
-    {
-      if (lon0==iMinLon) lon1=iMaxLon ;
-      else lon1=lon0-1 ;
-    }
-    else
-    {
-      if (lon0==iMaxLon) lon1=iMinLon ;
-      else lon1=lon0+1 ;
-    }
-
-    lat0=(lat-minBoundLat)/precLat ;
-    if ( ((lat0+1)*precLat + lat0*precLat)/2 > lat-minBoundLat)
-    {
-      if (lat0==iMinLat) lat1=lat0 ;
-      else lat1=lat0-1 ;
-    }
-    else
-    {
-      if (lat0==iMaxLat) lat1=lat0 ;
-      else lat1=lat0+1 ;
-    }
-
-    hash0=hashPair(lon0,lat0) ;
-    hash1=hashPair(lon0,lat1) ;
-    hash2=hashPair(lon1,lat0) ;
-    hash3=hashPair(lon1,lat1) ;
-
-    boost::unordered_map<size_t, size_t>::iterator end = hashed_map_nodes.end() ;
-    size_t mapSize = hashed_map_nodes.size();
-    if (hashed_map_nodes.find(hash0)==end && hashed_map_nodes.find(hash1)==end && hashed_map_nodes.find(hash2)==end && hashed_map_nodes.find(hash3)==end)
-    {
-      hashed_map_nodes[hash0] = mapSize ;
-      hashed_map_nodes[hash1] = mapSize + 1;
-      hashed_map_nodes[hash2] = mapSize + 2;
-      hashed_map_nodes[hash3] = mapSize + 3;
-      return -1;
-    }
-    else
-      return ( (hashed_map_nodes[hash0]+1) / 4 );
-
-  } // nodeIndex()
-
 ///----------------------------------------------------------------
 /*!
@@ -313,181 +227,4 @@
  * \param [in] bounds_lat Array of boundary latitudes. Its size depends on the element type.
  */
-  void CMesh::createMesh(const CArray<double, 1>& lonvalue, const CArray<double, 1>& latvalue,
-            const CArray<double, 2>& bounds_lon, const CArray<double, 2>& bounds_lat)
-  {
-    int nvertex = (bounds_lon.numElements() == 0) ? 1 : bounds_lon.rows();
-
-    if (nvertex == 1)
-    {
-      nbNodes_ = lonvalue.numElements();
-      node_lon.resizeAndPreserve(nbNodes_);
-      node_lat.resizeAndPreserve(nbNodes_);
-      for (int nn = 0; nn < nbNodes_; ++nn)
-      {
-        if (map_nodes.find(make_pair (lonvalue(nn), latvalue(nn))) == map_nodes.end())
-        {
-          map_nodes[make_pair (lonvalue(nn), latvalue(nn))] = nn ;
-          node_lon(nn) = lonvalue(nn);
-          node_lat(nn) = latvalue(nn);
-        }
-      }
-    }
-    else if (nvertex == 2)
-    {
-      nbEdges_ = bounds_lon.shape()[1];
-
-      // Create nodes and edge_node connectivity
-      node_lon.resizeAndPreserve(nbEdges_*nvertex); // Max possible number of nodes
-      node_lat.resizeAndPreserve(nbEdges_*nvertex);
-      edge_nodes.resizeAndPreserve(nvertex, nbEdges_);
-
-      for (int ne = 0; ne < nbEdges_; ++ne)
-      {
-        for (int nv = 0; nv < nvertex; ++nv)
-        {
-          if (map_nodes.find(make_pair (bounds_lon(nv, ne), bounds_lat(nv ,ne))) == map_nodes.end())
-          {
-            map_nodes[make_pair (bounds_lon(nv, ne), bounds_lat(nv, ne))] = nbNodes_ ;
-            edge_nodes(nv,ne) = nbNodes_ ;
-            node_lon(nbNodes_) = bounds_lon(nv, ne);
-            node_lat(nbNodes_) = bounds_lat(nv, ne);
-            ++nbNodes_ ;
-          }
-          else
-            edge_nodes(nv,ne) = map_nodes[make_pair (bounds_lon(nv, ne), bounds_lat(nv ,ne))];
-        }
-      }
-      node_lon.resizeAndPreserve(nbNodes_);
-      node_lat.resizeAndPreserve(nbNodes_);
-
-      // Create edges
-      edge_lon.resizeAndPreserve(nbEdges_);
-      edge_lat.resizeAndPreserve(nbEdges_);
-
-      for (int ne = 0; ne < nbEdges_; ++ne)
-      {
-        if (map_edges.find(make_ordered_pair (edge_nodes(0,ne), edge_nodes(1,ne))) == map_edges.end())
-        {
-          map_edges[make_ordered_pair ( edge_nodes(0,ne), edge_nodes(1,ne) )] = ne ;
-          edge_lon(ne) = lonvalue(ne);
-          edge_lat(ne) = latvalue(ne);
-        }
-
-      }
-      edgesAreWritten = true;
-    }
-    else
-    {
-      nbFaces_ = bounds_lon.shape()[1];
-  
-      // Create nodes and face_node connectivity
-      node_lon.resizeAndPreserve(nbFaces_*nvertex);  // Max possible number of nodes
-      node_lat.resizeAndPreserve(nbFaces_*nvertex);
-      face_nodes.resize(nvertex, nbFaces_);
-  
-      for (int nf = 0; nf < nbFaces_; ++nf)
-      {
-        for (int nv = 0; nv < nvertex; ++nv)
-        {
-          if (map_nodes.find(make_pair (bounds_lon(nv, nf), bounds_lat(nv ,nf))) == map_nodes.end())
-          {
-            map_nodes[make_pair (bounds_lon(nv, nf), bounds_lat(nv, nf))] = nbNodes_ ;
-            face_nodes(nv,nf) = nbNodes_ ;
-            node_lon(nbNodes_) = bounds_lon(nv, nf);
-            node_lat(nbNodes_) = bounds_lat(nv ,nf);
-            ++nbNodes_ ;
-          }
-          else
-          {
-            face_nodes(nv,nf) = map_nodes[make_pair (bounds_lon(nv, nf), bounds_lat(nv ,nf))];
-          }
-        }
-      }
-      node_lon.resizeAndPreserve(nbNodes_);
-      node_lat.resizeAndPreserve(nbNodes_);
-  
-      // Create edges and edge_nodes connectivity
-      edge_lon.resizeAndPreserve(nbFaces_*nvertex); // Max possible number of edges
-      edge_lat.resizeAndPreserve(nbFaces_*nvertex);
-      edge_nodes.resizeAndPreserve(2, nbFaces_*nvertex);
-      edge_faces.resize(2, nbFaces_*nvertex);
-      face_edges.resize(nvertex, nbFaces_);
-      face_faces.resize(nvertex, nbFaces_);
-
-      vector<int> countEdges(nbFaces_*nvertex);   // needed in case if edges have been already generated
-      vector<int> countFaces(nbFaces_);
-      countEdges.assign(nbFaces_*nvertex, 0);
-      countFaces.assign(nbFaces_, 0);
-      int edge;
-      for (int nf = 0; nf < nbFaces_; ++nf)
-      {
-        for (int nv1 = 0; nv1 < nvertex; ++nv1)
-        {
-          int nv = 0;
-          int nv2 = (nv1 < nvertex -1 ) ? (nv1 + 1) : (nv1 + 1 - nvertex); // cyclic rotation
-          if (map_edges.find(make_ordered_pair (face_nodes(nv1,nf), face_nodes(nv2,nf))) == map_edges.end())
-          {
-            map_edges[make_ordered_pair (face_nodes(nv1,nf), face_nodes(nv2,nf))] = nbEdges_ ;
-            face_edges(nv1,nf) = map_edges[make_ordered_pair (face_nodes(nv1,nf), face_nodes(nv2,nf))];
-            edge_faces(0,nbEdges_) = nf;
-            edge_faces(1,nbEdges_) = -999;
-            face_faces(nv1,nf) = 999999;
-            edge_nodes(Range::all(),nbEdges_) = face_nodes(nv1,nf), face_nodes(nv2,nf);
-            edge_lon(nbEdges_) = ( abs( node_lon(face_nodes(nv1,nf)) - node_lon(face_nodes(nv2,nf))) < 180.) ?
-                        (( node_lon(face_nodes(nv1,nf)) + node_lon(face_nodes(nv2,nf))) * 0.5) :
-                        (( node_lon(face_nodes(nv1,nf)) + node_lon(face_nodes(nv2,nf))) * 0.5 -180.);
-            edge_lat(nbEdges_) = ( node_lat(face_nodes(nv1,nf)) + node_lat(face_nodes(nv2,nf)) ) * 0.5;
-            ++nbEdges_;
-          }
-          else
-          {
-            edge = map_edges[make_ordered_pair (face_nodes(nv1,nf), face_nodes(nv2,nf))];
-            face_edges(nv1,nf) = edge;
-            if (edgesAreWritten)
-            {
-              edge_faces(countEdges[edge], edge) = nf;
-              if (countEdges[edge]==0)
-              {
-                face_faces(nv1,nf) = 999999;
-              }
-              else
-              {
-                int face1 = nf; // = edge_faces(1,edge)
-                int face2 = edge_faces(0,edge);
-                face_faces(countFaces[face1], face1) =  face2;
-                face_faces(countFaces[face2], face2) =  face1;
-                ++(countFaces[face1]);
-                ++(countFaces[face2]);
-              }
-            }
-            else
-            {
-              edge_faces(1,edge) = nf;
-              int face1 = nf; // = edge_faces(1,edge)
-              int face2 = edge_faces(0,edge);
-              face_faces(countFaces[face1], face1) =  face2;
-              face_faces(countFaces[face2], face2) =  face1;
-              ++(countFaces[face1]);
-              ++(countFaces[face2]);
-            }
-            ++(countEdges[edge]);
-          }
-        }
-      }
-      edge_nodes.resizeAndPreserve(2, nbEdges_);
-      edge_faces.resizeAndPreserve(2, nbEdges_);
-      edge_lon.resizeAndPreserve(nbEdges_);
-      edge_lat.resizeAndPreserve(nbEdges_);
-
-      // Create faces
-      face_lon.resize(nbFaces_);
-      face_lat.resize(nbFaces_);
-      face_lon = lonvalue;
-      face_lat = latvalue;
-      facesAreWritten = true;
-
-    } // nvertex > 2
-    
-  } // createMesh()
 
 ///----------------------------------------------------------------
@@ -547,6 +284,6 @@
 
       // For determining the global edge index
-      size_t nbEdgesOnProc = nbEdges_;
-      size_t nbEdgesAccum;
+      unsigned long nbEdgesOnProc = nbEdges_;
+      unsigned long nbEdgesAccum;
       MPI_Scan(&nbEdgesOnProc, &nbEdgesAccum, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
       nbEdgesAccum -= nbEdges_;
@@ -677,6 +414,6 @@
          // Maps modified in this step:
          // nodeIdx2Idx = <idx, idxGlo>
-         int nodeCount = nodeIdx2Idx.size();
-         int nodeStart, nbNodes;
+         unsigned long nodeCount = nodeIdx2Idx.size();
+         unsigned long nodeStart, nbNodes;
          MPI_Scan(&nodeCount, &nodeStart, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
          int nNodes = nodeStart;
@@ -770,6 +507,6 @@
 
       // For determining the global face index
-      size_t nbFacesOnProc = nbFaces_;
-      size_t nbFacesAccum;
+      unsigned long nbFacesOnProc = nbFaces_;
+      unsigned long nbFacesAccum;
       MPI_Scan(&nbFacesOnProc, &nbFacesAccum, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
       nbFacesAccum -= nbFaces_;
@@ -895,5 +632,5 @@
         }
 
-        int edgeStart, nbEdges;
+        unsigned long edgeStart, nbEdges;
         MPI_Scan(&edgeCount, &edgeStart, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
         int nEdges = edgeStart;
@@ -1115,6 +852,6 @@
         }
 
-        int edgeCount = edgeIdx2Idx.size();
-        int edgeStart, nbEdges;
+        unsigned long edgeCount = edgeIdx2Idx.size();
+        unsigned long edgeStart, nbEdges;
         MPI_Scan(&edgeCount, &edgeStart, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
         int nEdges = edgeStart;
@@ -1385,6 +1122,6 @@
         // Maps modified in this step:
         // nodeIdx2Idx = <idx, idxGlo>
-        int nodeCount = nodeIdx2Idx.size();
-        int nodeStart, nbNodes;
+        unsigned long nodeCount = nodeIdx2Idx.size();
+        unsigned long nodeStart, nbNodes;
         MPI_Scan(&nodeCount, &nodeStart, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
         int nNodes = nodeStart;
@@ -1505,6 +1242,6 @@
         }
 
-        int edgeCount = edgeIdx2Idx.size();
-        int edgeStart, nbEdges;
+        unsigned long edgeCount = edgeIdx2Idx.size();
+        unsigned long edgeStart, nbEdges;
         MPI_Scan(&edgeCount, &edgeStart, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm);
         int nEdges = edgeStart;
@@ -2103,5 +1840,5 @@
 
     // faceToFaces connectivity
-    boost::unordered_map <int, int> mapFaces;  // mapFaces = < hash(face1, face2), hash> (the mapped value is irrelevant)
+    std::unordered_map <int, int> mapFaces;  // mapFaces = < hash(face1, face2), hash> (the mapped value is irrelevant)
     int maxNb = 20;                            // some assumption on the max possible number of neighboring cells
     faceToFaces.resize(maxNb, nbFaces);
@@ -2160,5 +1897,5 @@
     CArray<double, 2> faceToNodes (nvertex, nbFaces);
 
-    boost::unordered_map <pair<double,double>, int> mapNodes;
+    std::unordered_map <pairDouble, int, boost::hash<pairDouble> > mapNodes;
 
     for (int nf = 0; nf < nbFaces; ++nf)
@@ -2176,5 +1913,5 @@
 
     // faceToFaces connectivity
-    boost::unordered_map <pair<int,int>, int> mapEdges;
+    std::unordered_map <pairInt, int, boost::hash<pairInt> > mapEdges;
     faceToFaces.resize(nvertex, nbFaces);
     CArray<int, 2> edgeToFaces(2, nbFaces*nvertex); // max possible
Index: XIOS/dev/branch_openmp/src/node/mesh.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/mesh.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/mesh.hpp	(revision 1545)
@@ -76,4 +76,7 @@
     private:
 
+      typedef std::pair<double, double> pairDouble;
+      typedef std::pair<int, int> pairInt;
+
       int nbNodes_;
       int nbEdges_;
@@ -93,9 +96,4 @@
       vector<size_t> createHashes (const double, const double);
 
-      size_t nodeIndex (double, double);                           // redundant in parallel version with epsilon precision
-      boost::unordered_map <size_t, size_t> hashed_map_nodes;      // redundant in parallel version with epsilon precision
-      boost::unordered_map <pair<double,double>, int> map_nodes;   // redundant in parallel version with epsilon precision
-      boost::unordered_map <pair<int,int>, int> map_edges;         // redundant in parallel version with epsilon precision
-
   }; 
 
Index: XIOS/dev/branch_openmp/src/node/scalar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/scalar.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/scalar.cpp	(revision 1545)
@@ -27,7 +27,7 @@
    { /* Ne rien faire de plus */ }
 
-   //std::map<StdString, ETranformationType> CScalar::transformationMapList_ = std::map<StdString, ETranformationType>();
+
    std::map<StdString, ETranformationType> *CScalar::transformationMapList_ptr = 0;
-   //bool CScalar::dummyTransformationMapList_ = CScalar::initializeTransformationMap(CScalar::transformationMapList_);
+
    bool CScalar::initializeTransformationMap(std::map<StdString, ETranformationType>& m)
    {
@@ -175,8 +175,6 @@
 
         nodeElementName = node.getElementName();
-        //std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it;
         if(CScalar::transformationMapList_ptr == 0) initializeTransformationMap();
         std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_ptr->end(), it;
-        //it = transformationMapList_.find(nodeElementName);
         it = transformationMapList_ptr->find(nodeElementName);
         if (ite != it)
Index: XIOS/dev/branch_openmp/src/node/transformation.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/node/transformation.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/node/transformation.hpp	(revision 1545)
@@ -35,5 +35,4 @@
       typedef std::map<ETranformationType, CreateTransformationCallBack> CallBackMap;
       static CallBackMap* transformationCreationCallBacks_;
-      //#pragma omp threadprivate(transformationCreationCallBacks_)
 
       static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn);
Index: XIOS/dev/branch_openmp/src/object_factory.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_factory.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/object_factory.hpp	(revision 1545)
@@ -2,6 +2,5 @@
 #define __XIOS_CObjectFactory__
 
-/// boost headers ///
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 /// XIOS headers ///
@@ -24,11 +23,11 @@
 
          template <typename U>
-            static  boost::shared_ptr<U> GetObject(const StdString & id);
+            static  std::shared_ptr<U> GetObject(const StdString & id);
 
          template <typename U>
-            static  boost::shared_ptr<U> GetObject(const StdString& context,const StdString & id);
+            static  std::shared_ptr<U> GetObject(const StdString& context,const StdString & id);
 
          template <typename U>
-            static  boost::shared_ptr<U> GetObject(const U * const object);
+            static  std::shared_ptr<U> GetObject(const U * const object);
 
          template <typename U>
@@ -38,7 +37,6 @@
 
          template <typename U>
-            static  const std::vector<boost::shared_ptr<U> > &
+            static  const std::vector<std::shared_ptr<U> > &
                GetObjectVector(const StdString & context);
-               //GetObjectVector(const StdString & context = CObjectFactory::GetCurrentContextId());
 
          /// Tests ///
@@ -51,5 +49,5 @@
          /// Instanciateur ///
          template <typename U>
-            static  boost::shared_ptr<U> CreateObject(const StdString & id = StdString(""));
+            static  std::shared_ptr<U> CreateObject(const StdString & id = StdString(""));
 
          template <typename U> static const StdString& GetUIdBase(void);
Index: XIOS/dev/branch_openmp/src/object_factory_decl.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_factory_decl.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/object_factory_decl.cpp	(revision 1545)
@@ -5,13 +5,13 @@
 {
 #define macro(U) \
-  template boost::shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& id);  \
-  template boost::shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& context,const StdString& id); \
-  template boost::shared_ptr<U> CObjectFactory::GetObject<U>(const U* const object); \
+  template std::shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& id);  \
+  template std::shared_ptr<U> CObjectFactory::GetObject<U>(const StdString& context,const StdString& id); \
+  template std::shared_ptr<U> CObjectFactory::GetObject<U>(const U* const object); \
   template int CObjectFactory::GetObjectNum<U>(void); \
   template int CObjectFactory::GetObjectIdNum<U>(void); \
-  template const std::vector<boost::shared_ptr<U> >& CObjectFactory::GetObjectVector<U>(const StdString& context ); \
+  template const std::vector<std::shared_ptr<U> >& CObjectFactory::GetObjectVector<U>(const StdString& context ); \
   template bool CObjectFactory::HasObject<U>(const StdString& id); \
   template bool CObjectFactory::HasObject<U>(const StdString& context,const StdString& id); \
-  template boost::shared_ptr<U> CObjectFactory::CreateObject<U>(const StdString& id ); \
+  template std::shared_ptr<U> CObjectFactory::CreateObject<U>(const StdString& id ); \
   template const StdString& CObjectFactory::GetUIdBase<U>(void); \
   template StdString CObjectFactory::GenUId<U>(void); \
Index: XIOS/dev/branch_openmp/src/object_factory_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_factory_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/object_factory_impl.hpp	(revision 1545)
@@ -13,5 +13,4 @@
          ERROR("CObjectFactory::GetObjectNum(void)",
                << "please define current context id !");
-      //return (U::AllVectObj[CObjectFactory::CurrContext].size());
       if(U::AllVectObj_ptr == NULL) return 0;
       return (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr].size();
@@ -24,5 +23,4 @@
          ERROR("CObjectFactory::GetObjectIdNum(void)",
                << "please define current context id !");
-      //return (U::AllMapObj[CObjectFactory::CurrContext].size());
       if(U::AllMapObj_ptr == NULL) return 0;
       return (*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr].size();
@@ -35,6 +33,4 @@
          ERROR("CObjectFactory::HasObject(const StdString & id)",
                << "[ id = " << id << " ] please define current context id !");
-      //return (U::AllMapObj[CObjectFactory::CurrContext].find(id) !=
-      //        U::AllMapObj[CObjectFactory::CurrContext].end());
       if(U::AllMapObj_ptr  == NULL)  return false;
       return ((*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr].find(id) !=
@@ -46,7 +42,4 @@
       bool CObjectFactory::HasObject(const StdString & context, const StdString & id)
    {
-
-      // if (U::AllMapObj.find(context) == U::AllMapObj.end()) return false ;
-      // else return (U::AllMapObj[context].find(id) !=  U::AllMapObj[context].end());
       if(U::AllMapObj_ptr  == NULL) return false;
 
@@ -56,19 +49,18 @@
 
    template <typename U>
-      boost::shared_ptr<U> CObjectFactory::GetObject(const U * const object)
+      std::shared_ptr<U> CObjectFactory::GetObject(const U * const object)
    {
-      if(U::AllVectObj_ptr == NULL) return (boost::shared_ptr<U>());
+      if(U::AllVectObj_ptr == NULL) return (std::shared_ptr<U>());
       if (CurrContext_ptr->size() == 0)
          ERROR("CObjectFactory::GetObject(const U * const object)",
                << "please define current context id !");
-      //std::vector<boost::shared_ptr<U> > & vect = U::AllVectObj[CObjectFactory::CurrContext];
-      std::vector<boost::shared_ptr<U> > & vect = (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr];
+      std::vector<std::shared_ptr<U> > & vect = (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr];
 
-      typename std::vector<boost::shared_ptr<U> >::const_iterator
+      typename std::vector<std::shared_ptr<U> >::const_iterator
          it = vect.begin(), end = vect.end();
 
       for (; it != end; it++)
       {
-         boost::shared_ptr<U> ptr = *it;
+         std::shared_ptr<U> ptr = *it;
          if (ptr.get() == object)
             return (ptr);
@@ -78,11 +70,11 @@
                << "[type = " << U::GetName() << ", adress = " << object << "] "
                << "object was not found.");
-      return (boost::shared_ptr<U>()); // jamais atteint
+      return (std::shared_ptr<U>()); // jamais atteint
    }
 
    template <typename U>
-      boost::shared_ptr<U> CObjectFactory::GetObject(const StdString & id)
+      std::shared_ptr<U> CObjectFactory::GetObject(const StdString & id)
    {
-      if(U::AllMapObj_ptr  == NULL) return (boost::shared_ptr<U>());
+      if(U::AllMapObj_ptr  == NULL) return (std::shared_ptr<U>());
       if (CurrContext_ptr->size() == 0)
          ERROR("CObjectFactory::GetObject(const StdString & id)",
@@ -92,19 +84,11 @@
                << "[ id = " << id << ", U = " << U::GetName() << " ] "
                << "object was not found.");
-
-      //cout<<"CObjectFactory::GetObject(const StdString & id)[ id = " << id << ", U = " << U::GetName() << " ] "<<endl;
-      if(id == "src_domain_regular_read")
-      {
-         //cout<<"match"<<endl;
-      }
-
-      //return (U::AllMapObj[CObjectFactory::CurrContext][id]);
       return (*U::AllMapObj_ptr)[*CObjectFactory::CurrContext_ptr][id];
    }
 
    template <typename U>
-      boost::shared_ptr<U> CObjectFactory::GetObject(const StdString & context, const StdString & id)
+      std::shared_ptr<U> CObjectFactory::GetObject(const StdString & context, const StdString & id)
    {
-      if(U::AllMapObj_ptr  == NULL) return (boost::shared_ptr<U>());
+      if(U::AllMapObj_ptr  == NULL) return (std::shared_ptr<U>());
 
       if (!CObjectFactory::HasObject<U>(context,id))
@@ -112,20 +96,12 @@
                << "[ id = " << id << ", U = " << U::GetName() <<", context = "<<context<< " ] "
                << "object was not found.");
-
-      //cout<<"CObjectFactory::GetObject(const StdString & context, const StdString & id)[ id = " << id << ", U = " << U::GetName() << " ] "<<endl;
-      if(id == "src_domain_regular_read")
-      {
-         //cout<<"match"<<endl;
-         boost::shared_ptr<U> value;
-      }
-      //return (U::AllMapObj[context][id]);
       return (*U::AllMapObj_ptr)[context][id];
    }
 
    template <typename U>
-   boost::shared_ptr<U> CObjectFactory::CreateObject(const StdString& id)
+   std::shared_ptr<U> CObjectFactory::CreateObject(const StdString& id)
    {
-      if(U::AllVectObj_ptr == NULL) U::AllVectObj_ptr = new xios_map<StdString, std::vector<boost::shared_ptr<U> > >;
-      if(U::AllMapObj_ptr  == NULL) U::AllMapObj_ptr  = new xios_map<StdString, xios_map<StdString, boost::shared_ptr<U> > >;
+      if(U::AllVectObj_ptr == NULL) U::AllVectObj_ptr = new xios_map<StdString, std::vector<std::shared_ptr<U> > >;
+      if(U::AllMapObj_ptr  == NULL) U::AllMapObj_ptr  = new xios_map<StdString, xios_map<StdString, std::shared_ptr<U> > >;
 
       if (CurrContext_ptr->empty())
@@ -139,12 +115,8 @@
       else
       {
-         boost::shared_ptr<U> value(new U(id.empty() ? CObjectFactory::GenUId<U>() : id));
-
-         //U::AllVectObj[CObjectFactory::CurrContext].insert(U::AllVectObj[CObjectFactory::CurrContext].end(), value);
-         //U::AllMapObj[CObjectFactory::CurrContext].insert(std::make_pair(value->getId(), value));
+         std::shared_ptr<U> value(new U(id.empty() ? CObjectFactory::GenUId<U>() : id));
 
          (*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr].insert((*U::AllVectObj_ptr)[*CObjectFactory::CurrContext_ptr].end(), value);
          (*U::AllMapObj_ptr) [*CObjectFactory::CurrContext_ptr].insert(std::make_pair(value->getId(), value));
-         //cout<<"CObjectFactory::CreateObject(const StdString& id) [ id = " << id << " ]" <<endl;
 
          return value;
@@ -153,8 +125,7 @@
 
    template <typename U>
-      const std::vector<boost::shared_ptr<U> > &
+      const std::vector<std::shared_ptr<U> > &
          CObjectFactory::GetObjectVector(const StdString & context)
    {
-      //return (U::AllVectObj[context]);
       return (*U::AllVectObj_ptr)[context];
    }
Index: XIOS/dev/branch_openmp/src/object_template.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_template.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/object_template.hpp	(revision 1545)
@@ -71,5 +71,5 @@
 
          /// Accesseur statique ///
-         static std::vector<boost::shared_ptr<DerivedType> > &
+         static std::vector<std::shared_ptr<DerivedType> > &
             GetAllVectobject(const StdString & contextId);
 
@@ -83,6 +83,6 @@
          static T* get(const string& contextId, const string& id) ;
          T* get(void) ;
-         boost::shared_ptr<T> getShared(void) ;
-         static boost::shared_ptr<T> getShared(const T* ptr) ;
+         std::shared_ptr<T> getShared(void) ;
+         static std::shared_ptr<T> getShared(const T* ptr) ;
 
          static T* create(const string& id=string("")) ;
@@ -108,8 +108,8 @@
          static xios_map<StdString,
                 xios_map<StdString,
-                boost::shared_ptr<DerivedType> > > *AllMapObj_ptr;
+                std::shared_ptr<DerivedType> > > *AllMapObj_ptr;
          #pragma omp threadprivate(AllMapObj_ptr)
          static xios_map<StdString,
-                std::vector<boost::shared_ptr<DerivedType> > > *AllVectObj_ptr;
+                std::vector<std::shared_ptr<DerivedType> > > *AllVectObj_ptr;
          #pragma omp threadprivate(AllVectObj_ptr)
 
Index: XIOS/dev/branch_openmp/src/object_template_impl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/object_template_impl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/object_template_impl.hpp	(revision 1545)
@@ -24,14 +24,11 @@
       xios_map<StdString,
       xios_map<StdString,
-      //boost::shared_ptr<T> > > CObjectTemplate<T>::AllMapObj;
-      boost::shared_ptr<T> > > *CObjectTemplate<T>::AllMapObj_ptr = 0;
+      std::shared_ptr<T> > > *CObjectTemplate<T>::AllMapObj_ptr = 0;
 
    template <class T>
       xios_map<StdString,
-      //std::vector<boost::shared_ptr<T> > > CObjectTemplate<T>::AllVectObj;
-      std::vector<boost::shared_ptr<T> > > *CObjectTemplate<T>::AllVectObj_ptr = 0;
-
-   template <class T>
-      //xios_map<StdString,long int> CObjectTemplate<T>::GenId;
+      std::vector<std::shared_ptr<T> > > *CObjectTemplate<T>::AllVectObj_ptr = 0;
+
+   template <class T>
       xios_map<StdString,long int> *CObjectTemplate<T>::GenId_ptr = 0;
 
@@ -66,9 +63,8 @@
 
    template <class T>
-      std::vector<boost::shared_ptr<T> > &
+      std::vector<std::shared_ptr<T> > &
          CObjectTemplate<T>::GetAllVectobject(const StdString & contextId)
    {
-      //return (CObjectTemplate<T>::AllVectObj[contextId]);
-    return (CObjectTemplate<T>::AllVectObj_ptr->at(contextId));
+     return (CObjectTemplate<T>::AllVectObj_ptr->at(contextId));
    }
 
@@ -416,5 +412,5 @@
 
    template <typename T>
-   boost::shared_ptr<T> CObjectTemplate<T>::getShared(const T* ptr)
+   std::shared_ptr<T> CObjectTemplate<T>::getShared(const T* ptr)
    {
      return CObjectFactory::GetObject<T>(ptr);
@@ -422,5 +418,5 @@
 
    template <typename T>
-   boost::shared_ptr<T> CObjectTemplate<T>::getShared(void)
+   std::shared_ptr<T> CObjectTemplate<T>::getShared(void)
    {
      return CObjectFactory::GetObject<T>((T*)this);
@@ -430,11 +426,8 @@
    const vector<T*> CObjectTemplate<T>::getAll()
    {
-     int tmp_rank;
-     MPI_Comm_rank(MPI_COMM_WORLD, &tmp_rank);
-     if(tmp_rank==7) printf("getCurrentContextid() = %s\n", CObjectFactory::GetCurrentContextId());
-     const vector< boost::shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(CObjectFactory::GetCurrentContextId());
+     const vector< std::shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(CObjectFactory::GetCurrentContextId());
      vector<T*> vect;
 
-     typename vector<boost::shared_ptr<T> >::const_iterator it;
+     typename vector<std::shared_ptr<T> >::const_iterator it;
      for(it=shared_vect.begin();it!=shared_vect.end();++it) vect.push_back(it->get());
      return vect;
@@ -444,8 +437,8 @@
    const vector<T*> CObjectTemplate<T>::getAll(const string & id)
    {
-     const vector< boost::shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(id);
+     const vector< std::shared_ptr<T> >& shared_vect= CObjectFactory::GetObjectVector<T>(id);
      vector<T*> vect;
 
-     typename vector<boost::shared_ptr<T> >::const_iterator it;
+     typename vector<std::shared_ptr<T> >::const_iterator it;
      for(it=shared_vect.begin();it!=shared_vect.end();++it) vect.push_back(it->get());
      return vect;
@@ -482,5 +475,5 @@
      oss << iendl;
      oss << "#include <boost/multi_array.hpp>" << iendl;
-     oss << "#include <boost/shared_ptr.hpp>" << iendl;
+     oss << "#include <boostXXX/shared_ptr.hpp>" << iendl;
      oss << "#include \"xios.hpp\"" << iendl;
      oss << "#include \"attribute_template.hpp\"" << iendl;
Index: XIOS/dev/branch_openmp/src/parse_expr/filter_expr_node.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/parse_expr/filter_expr_node.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/parse_expr/filter_expr_node.cpp	(revision 1545)
@@ -11,7 +11,7 @@
   { /* Nothing to do */ }
 
-  boost::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<COutputPin> outputPin;
+  std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<COutputPin> outputPin;
 
     if (fieldId == "this")
@@ -21,5 +21,5 @@
       CField* field = CField::get(fieldId);
       if (field == &thisField)
-        ERROR("boost::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
+        ERROR("std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
               << "The field " << fieldId << " has an invalid reference to itself. "
               << "Use the keyword \"this\" if you want to reference the input data sent to this field.");
@@ -29,5 +29,5 @@
     }
     else
-      ERROR("boost::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
+      ERROR("std::shared_ptr<COutputPin> CFilterFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
             << "The field " << fieldId << " does not exist.");
 
@@ -39,7 +39,7 @@
   { /* Nothing to do */ }
 
-  boost::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<COutputPin> outputPin;
+  std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<COutputPin> outputPin;
 
     if (fieldId == "this")
@@ -49,5 +49,5 @@
       CField* field = CField::get(fieldId);
       if (field == &thisField)
-        ERROR("boost::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
+        ERROR("std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
               << "The field " << fieldId << " has an invalid reference to itself. "
               << "Use the keyword \"this\" if you want to reference the input data sent to this field.");
@@ -57,5 +57,5 @@
     }
     else
-      ERROR("boost::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
+      ERROR("std::shared_ptr<COutputPin> CFilterTemporalFieldExprNode::reduce(CGarbageCollector& gc, CField& thisField) const",
             << "The field " << fieldId << " does not exist.");
 
@@ -72,7 +72,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterUnaryOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CUnaryArithmeticFilter> filter(new CUnaryArithmeticFilter(gc, opId));
+  std::shared_ptr<COutputPin> CFilterUnaryOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CUnaryArithmeticFilter> filter(new CUnaryArithmeticFilter(gc, opId));
     child->reduce(gc, thisField)->connectOutput(filter, 0);
     return filter;
@@ -89,7 +89,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CScalarFieldArithmeticFilter> filter(new CScalarFieldArithmeticFilter(gc, opId, child1->reduce()));
+  std::shared_ptr<COutputPin> CFilterScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CScalarFieldArithmeticFilter> filter(new CScalarFieldArithmeticFilter(gc, opId, child1->reduce()));
     child2->reduce(gc, thisField)->connectOutput(filter, 0);
     return filter;
@@ -106,7 +106,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CFieldScalarArithmeticFilter> filter(new CFieldScalarArithmeticFilter(gc, opId, child2->reduce()));
+  std::shared_ptr<COutputPin> CFilterFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CFieldScalarArithmeticFilter> filter(new CFieldScalarArithmeticFilter(gc, opId, child2->reduce()));
     child1->reduce(gc, thisField)->connectOutput(filter, 0);
     return filter;
@@ -123,7 +123,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CFieldFieldArithmeticFilter> filter(new CFieldFieldArithmeticFilter(gc, opId));
+  std::shared_ptr<COutputPin> CFilterFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CFieldFieldArithmeticFilter> filter(new CFieldFieldArithmeticFilter(gc, opId));
     child1->reduce(gc, thisField)->connectOutput(filter, 0);
     child2->reduce(gc, thisField)->connectOutput(filter, 1);
@@ -145,7 +145,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CScalarScalarFieldArithmeticFilter> filter(new CScalarScalarFieldArithmeticFilter(gc, opId, child1->reduce(),child2->reduce()));
+  std::shared_ptr<COutputPin> CFilterScalarScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CScalarScalarFieldArithmeticFilter> filter(new CScalarScalarFieldArithmeticFilter(gc, opId, child1->reduce(),child2->reduce()));
     child3->reduce(gc, thisField)->connectOutput(filter, 0);
     return filter;
@@ -164,7 +164,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CScalarFieldScalarArithmeticFilter> filter(new CScalarFieldScalarArithmeticFilter(gc, opId, child1->reduce(),child3->reduce()));
+  std::shared_ptr<COutputPin> CFilterScalarFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CScalarFieldScalarArithmeticFilter> filter(new CScalarFieldScalarArithmeticFilter(gc, opId, child1->reduce(),child3->reduce()));
     child2->reduce(gc, thisField)->connectOutput(filter, 0);
     return filter;
@@ -183,7 +183,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CScalarFieldFieldArithmeticFilter> filter(new CScalarFieldFieldArithmeticFilter(gc, opId, child1->reduce()));
+  std::shared_ptr<COutputPin> CFilterScalarFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CScalarFieldFieldArithmeticFilter> filter(new CScalarFieldFieldArithmeticFilter(gc, opId, child1->reduce()));
     child2->reduce(gc, thisField)->connectOutput(filter, 0);
     child3->reduce(gc, thisField)->connectOutput(filter, 1);
@@ -204,7 +204,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CFieldScalarScalarArithmeticFilter> filter(new CFieldScalarScalarArithmeticFilter(gc, opId, child2->reduce(),child3->reduce()));
+  std::shared_ptr<COutputPin> CFilterFieldScalarScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CFieldScalarScalarArithmeticFilter> filter(new CFieldScalarScalarArithmeticFilter(gc, opId, child2->reduce(),child3->reduce()));
     child1->reduce(gc, thisField)->connectOutput(filter, 0);
     return filter;
@@ -224,7 +224,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CFieldScalarFieldArithmeticFilter> filter(new CFieldScalarFieldArithmeticFilter(gc, opId, child2->reduce()));
+  std::shared_ptr<COutputPin> CFilterFieldScalarFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CFieldScalarFieldArithmeticFilter> filter(new CFieldScalarFieldArithmeticFilter(gc, opId, child2->reduce()));
     child1->reduce(gc, thisField)->connectOutput(filter, 0);
     child3->reduce(gc, thisField)->connectOutput(filter, 1);
@@ -245,7 +245,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CFieldFieldScalarArithmeticFilter> filter(new CFieldFieldScalarArithmeticFilter(gc, opId, child3->reduce()));
+  std::shared_ptr<COutputPin> CFilterFieldFieldScalarOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CFieldFieldScalarArithmeticFilter> filter(new CFieldFieldScalarArithmeticFilter(gc, opId, child3->reduce()));
     child1->reduce(gc, thisField)->connectOutput(filter, 0);
     child2->reduce(gc, thisField)->connectOutput(filter, 1);
@@ -265,7 +265,7 @@
   }
 
-  boost::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
-  {
-    boost::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId));
+  std::shared_ptr<COutputPin> CFilterFieldFieldFieldOpExprNode::reduce(CGarbageCollector& gc, CField& thisField) const
+  {
+    std::shared_ptr<CFieldFieldFieldArithmeticFilter> filter(new CFieldFieldFieldArithmeticFilter(gc, opId));
     child1->reduce(gc, thisField)->connectOutput(filter, 0);
     child2->reduce(gc, thisField)->connectOutput(filter, 1);
Index: XIOS/dev/branch_openmp/src/parse_expr/filter_expr_node.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/parse_expr/filter_expr_node.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/parse_expr/filter_expr_node.hpp	(revision 1545)
@@ -3,5 +3,4 @@
 
 #include <string>
-#include <boost/shared_ptr.hpp>
 #include <boost/smart_ptr/scoped_ptr.hpp>
 #include "scalar_expr_node.hpp"
@@ -26,5 +25,5 @@
      * \return the output pin of the filter producing the result of the expression 
      */
-    virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const = 0;
+    virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const = 0;
   };
 
@@ -43,5 +42,5 @@
       CFilterFieldExprNode(const std::string& fieldId);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -64,5 +63,5 @@
       CFilterTemporalFieldExprNode(const std::string& fieldId);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -87,5 +86,5 @@
       CFilterUnaryOpExprNode(const std::string& opId, IFilterExprNode* child);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -112,5 +111,5 @@
       CFilterScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -138,5 +137,5 @@
       CFilterFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -163,5 +162,5 @@
       CFilterFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -191,5 +190,5 @@
       CFilterScalarScalarFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -220,5 +219,5 @@
       CFilterScalarFieldScalarOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -249,5 +248,5 @@
       CFilterScalarFieldFieldOpExprNode(IScalarExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -279,5 +278,5 @@
       CFilterFieldScalarScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IScalarExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -308,5 +307,5 @@
       CFilterFieldScalarFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IScalarExprNode* child2, IFilterExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -336,5 +335,5 @@
       CFilterFieldFieldScalarOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IScalarExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
@@ -365,5 +364,5 @@
       CFilterFieldFieldFieldOpExprNode(IFilterExprNode* child1, const std::string& opId, IFilterExprNode* child2, IFilterExprNode* child3);
 
-      virtual boost::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
+      virtual std::shared_ptr<COutputPin> reduce(CGarbageCollector& gc, CField& thisField) const;
 
     private:
Index: XIOS/dev/branch_openmp/src/parse_expr/operator_expr.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/parse_expr/operator_expr.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/parse_expr/operator_expr.hpp	(revision 1545)
@@ -254,4 +254,5 @@
     static inline double div_ss(double x, double y)   { return x / y; }
     static inline double pow_ss(double x, double y)   { return std::pow(x,y); }
+
     static inline double eq_ss(double x, double y) // specific check for NaN
     {
@@ -350,5 +351,4 @@
       else return Array<double,1>(x == y); 
     }
-
     static inline CArray<double,1> lt_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x < y); }
     static inline CArray<double,1> gt_sf(double x, const CArray<double,1>& y)    { return Array<double,1>(x > y); }
@@ -367,7 +367,4 @@
       else return Array<double,1>(x != y);
     }
-
-
-
     static inline double cond_sss(double x, double y, double z)   { return (x==0) ? z : y ; }
 
Index: XIOS/dev/branch_openmp/src/server.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/server.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/server.cpp	(revision 1545)
@@ -39,5 +39,4 @@
  * \fn void CServer::initialize(void)
  * Creates intraComm for each possible type of servers (classical, primary or secondary).
- * (For now the assumption is that there is one proc per secondary server pool.)
  * Creates interComm and stores them into the following lists:
  *   classical server -- interCommLeft
@@ -111,8 +110,9 @@
           else
           {
+            if (CXios::nbPoolsServer2 == 0) CXios::nbPoolsServer2 = reqNbProc;
             int firstSndSrvRank = srvRanks.size()*(100.-CXios::ratioServer2)/100. ;
             int poolLeader = firstSndSrvRank;
 //*********** (1) Comment out the line below to set one process per pool
-//            sndServerGlobalRanks.push_back(srvRanks[poolLeader]);
+            sndServerGlobalRanks.push_back(srvRanks[poolLeader]);
             int nbPools = CXios::nbPoolsServer2;
             if ( nbPools > reqNbProc || nbPools < 1)
@@ -140,8 +140,8 @@
                 }
 //*********** (2) Comment out the two lines below to set one process per pool
-//                if (poolLeader < srvRanks.size())
-//                  sndServerGlobalRanks.push_back(srvRanks[poolLeader]);
+                if (poolLeader < srvRanks.size())
+                  sndServerGlobalRanks.push_back(srvRanks[poolLeader]);
 //*********** (3) Uncomment the line below to set one process per pool
-                sndServerGlobalRanks.push_back(srvRanks[i]);
+//                sndServerGlobalRanks.push_back(srvRanks[i]);
               }
               else
@@ -189,4 +189,6 @@
               MPI_Comm_size(intraComm,&intraCommSize) ;
               MPI_Comm_rank(intraComm,&intraCommRank) ;
+
+              MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ;
               #pragma omp critical (_output)
               {
@@ -195,5 +197,5 @@
               }
 
-              MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ;
+              
               interCommLeft.push_back(newComm) ;
             }
@@ -213,4 +215,6 @@
               MPI_Comm_size(intraComm, &intraCommSize) ;
               MPI_Comm_rank(intraComm, &intraCommRank) ;
+              
+              MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ;
               #pragma omp critical (_output)
               {
@@ -218,5 +222,5 @@
                        <<" intraCommRank :"<<intraCommRank<<"  clientLeader "<< clientLeader<<endl ;
               }
-              MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 0, &newComm) ;
+
               interCommLeft.push_back(newComm) ;
             }
@@ -228,4 +232,6 @@
             MPI_Comm_size(intraComm, &intraCommSize) ;
             MPI_Comm_rank(intraComm, &intraCommRank) ;
+
+            MPI_Intercomm_create(intraComm, 0, CXios::globalComm, sndServerGlobalRanks[i], 1, &newComm) ;
             #pragma omp critical (_output)
             {
@@ -233,5 +239,5 @@
                 <<" intraCommRank :"<<intraCommRank<<"  clientLeader "<< sndServerGlobalRanks[i]<<endl ;
             }
-            MPI_Intercomm_create(intraComm, 0, CXios::globalComm, sndServerGlobalRanks[i], 1, &newComm) ;
+
             interCommRight.push_back(newComm) ;
           }
@@ -244,4 +250,6 @@
           MPI_Comm_size(intraComm, &intraCommSize) ;
           MPI_Comm_rank(intraComm, &intraCommRank) ;
+
+          MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 1, &newComm) ;
           #pragma omp critical (_output)
           {
@@ -250,5 +258,4 @@
           }
 
-          MPI_Intercomm_create(intraComm, 0, CXios::globalComm, clientLeader, 1, &newComm) ;
           interCommLeft.push_back(newComm) ;
         }
@@ -654,10 +661,7 @@
        if (flag==true)
        {
-         int my_count;
          counts.push_back(0);
          MPI_Get_count(&status,MPI_CHAR,&(counts.back())) ;
          buffers.push_back(new char[counts.back()]) ;
-         //requests.push_back(request);
-         //MPI_Irecv((void*)(buffers.back()),counts.back(),MPI_CHAR,root,2,intraComm,&(requests.back())) ;
          MPI_Irecv((void*)(buffers.back()),counts.back(),MPI_CHAR,root,2,intraComm,&request) ;
          requests.push_back(request);
@@ -817,5 +821,5 @@
       if (!fb->is_open())
         ERROR("void CServer::openStream(const StdString& fileName, const StdString& ext, std::filebuf* fb)",
-              << std::endl << "Can not open <" << fileNameClient << "> file to write the server log(s).");
+              << std::endl << "Can not open <" << fileNameClient.str() << "> file to write the server log(s).");
     }
 
Index: XIOS/dev/branch_openmp/src/server_distribution_description.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/server_distribution_description.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/server_distribution_description.cpp	(revision 1545)
@@ -196,5 +196,5 @@
   \param [in] positionDimensionDistributed dimension of server on which we make the cut.
 */
-std::vector<int> CServerDistributionDescription::computeServerGlobalByElement(std::vector<boost::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
+std::vector<int> CServerDistributionDescription::computeServerGlobalByElement(std::vector<std::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
                                                                               int clientRank,
                                                                               int clientSize,
@@ -510,5 +510,5 @@
   Get global index calculated by computeServerGlobalIndexInRange
 */
-const boost::unordered_map<size_t,int>& CServerDistributionDescription::getGlobalIndexRange() const
+const std::unordered_map<size_t,int>& CServerDistributionDescription::getGlobalIndexRange() const
 {
   return globalIndex_;
Index: XIOS/dev/branch_openmp/src/server_distribution_description.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/server_distribution_description.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/server_distribution_description.hpp	(revision 1545)
@@ -13,5 +13,5 @@
 #include "xios_spl.hpp"
 #include "array_new.hpp"
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 
 namespace xios
@@ -39,5 +39,5 @@
     void computeServerDistribution(bool doComputeGlobalIndex = false, int positionDimensionDistributed = 1);
     std::vector<int> computeServerGlobalIndexInRange(const std::pair<size_t, size_t>& indexBeginEnd, int positionDimensionDistributed = 1);
-    std::vector<int> computeServerGlobalByElement(std::vector<boost::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
+    std::vector<int> computeServerGlobalByElement(std::vector<std::unordered_map<size_t,std::vector<int> > >& indexServerOnElement,
                                                   int rank,
                                                   int clientSize,
@@ -48,5 +48,5 @@
     std::vector<std::vector<int> > getServerDimensionSizes() const;
     const std::vector<CArray<size_t,1> >& getGlobalIndex() const;
-    const boost::unordered_map<size_t,int>& getGlobalIndexRange() const;
+    const std::unordered_map<size_t,int>& getGlobalIndexRange() const;
     int getDimensionDistributed();
 
@@ -73,5 +73,5 @@
 
     //!< In case we need only global index of one server with specific rank
-    boost::unordered_map<size_t,int> globalIndex_;
+    std::unordered_map<size_t,int> globalIndex_;
 
     //!< Type of distribution on server side
Index: XIOS/dev/branch_openmp/src/timer.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/timer.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/timer.cpp	(revision 1545)
@@ -10,5 +10,4 @@
 namespace xios
 {
-  //std::map<std::string,CTimer> CTimer::allTimer;
   std::map<std::string,CTimer> *CTimer::allTimer_ptr = 0;
   
@@ -58,11 +57,9 @@
     if(allTimer_ptr == NULL) allTimer_ptr = new std::map<std::string,CTimer>;
 
-    //std::map<std::string,CTimer>::iterator it = allTimer.find(name);
     std::map<std::string,CTimer>::iterator it = allTimer_ptr->find(name);
-    //if (it == allTimer.end())
+
     if (it == allTimer_ptr->end())
       it = allTimer_ptr->insert(std::make_pair(name, CTimer(name))).first;
 
-      //it = allTimer.insert(std::make_pair(name, CTimer(name))).first;
     return it->second;
   }
@@ -72,5 +69,5 @@
     std::ostringstream strOut ;
     if(allTimer_ptr == 0) allTimer_ptr = new std::map<std::string,CTimer>;
-    //for(std::map<std::string,CTimer>::iterator it=allTimer.begin();it!=allTimer.end();++it)
+
     for(std::map<std::string,CTimer>::iterator it=allTimer_ptr->begin();it!=allTimer_ptr->end();++it)
       strOut<<"Timer : "<<it->first<<"    -->   cumulated time : "<<it->second.getCumulatedTime()<<std::endl ;
Index: XIOS/dev/branch_openmp/src/timer.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/timer.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/timer.hpp	(revision 1545)
@@ -20,5 +20,4 @@
       void reset(void);
       double getCumulatedTime(void);
-      //static std::map<std::string,CTimer> allTimer;
       static std::map<std::string,CTimer> *allTimer_ptr;
       #pragma omp threadprivate(allTimer_ptr)
Index: XIOS/dev/branch_openmp/src/transformation/Functions/reduction.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/Functions/reduction.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/Functions/reduction.hpp	(revision 1545)
@@ -23,5 +23,4 @@
 {
 public:
-  //static std::map<StdString,EReductionType> ReductionOperations;
   static std::map<StdString,EReductionType> *ReductionOperations_ptr;
   #pragma omp threadprivate(ReductionOperations_ptr)
Index: XIOS/dev/branch_openmp/src/transformation/axis_algorithm_extract_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/axis_algorithm_extract_domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/axis_algorithm_extract_domain.cpp	(revision 1545)
@@ -13,5 +13,4 @@
 #include "grid.hpp"
 #include "grid_transformation_factory_impl.hpp"
-//#include "reduction.hpp"
 
 namespace xios {
Index: XIOS/dev/branch_openmp/src/transformation/axis_algorithm_inverse.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/axis_algorithm_inverse.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/axis_algorithm_inverse.cpp	(revision 1545)
@@ -109,5 +109,5 @@
   }
 
-  typedef boost::unordered_map<size_t, std::vector<double> > GlobalIndexMapFromSrcToDest;
+  typedef std::unordered_map<size_t, std::vector<double> > GlobalIndexMapFromSrcToDest;
   GlobalIndexMapFromSrcToDest globalIndexMapFromSrcToDest;
   TransformationIndexMap& transMap = this->transformationMapping_[0];
@@ -127,5 +127,5 @@
   dhtIndexProcRank.computeIndexInfoMapping(globalSrcIndex);
   CClientClientDHTInt::Index2VectorInfoTypeMap& computedGlobalIndexOnProc = dhtIndexProcRank.getInfoIndexMap();
-  boost::unordered_map<int, std::vector<size_t> > globalSrcIndexSendToProc;
+  std::unordered_map<int, std::vector<size_t> > globalSrcIndexSendToProc;
   for (int idx = 0; idx < localIndex; ++idx)
   {
@@ -138,5 +138,5 @@
   }
 
-  boost::unordered_map<int, std::vector<size_t> >::const_iterator itbIndex = globalSrcIndexSendToProc.begin(), itIndex,
+  std::unordered_map<int, std::vector<size_t> >::const_iterator itbIndex = globalSrcIndexSendToProc.begin(), itIndex,
                                                                   iteIndex = globalSrcIndexSendToProc.end();
   std::map<int,int> sendRankSizeMap,recvRankSizeMap;
@@ -176,6 +176,6 @@
   std::vector<MPI_Request> requests;
   std::vector<MPI_Status> status;
-  boost::unordered_map<int, unsigned long* > recvGlobalIndexSrc;
-  boost::unordered_map<int, double* > sendValueToDest;
+  std::unordered_map<int, unsigned long* > recvGlobalIndexSrc;
+  std::unordered_map<int, double* > sendValueToDest;
   for (std::map<int,int>::const_iterator itRecv = recvRankSizeMap.begin(); itRecv != recvRankSizeMap.end(); ++itRecv)
   {
@@ -189,6 +189,6 @@
   }
 
-  boost::unordered_map<int, unsigned long* > sendGlobalIndexSrc;
-  boost::unordered_map<int, double* > recvValueFromSrc;
+  std::unordered_map<int, unsigned long* > sendGlobalIndexSrc;
+  std::unordered_map<int, double* > recvValueFromSrc;
   for (itIndex = itbIndex; itIndex != iteIndex; ++itIndex)
   {
@@ -272,10 +272,10 @@
   delete [] recvSizeBuff;
 
-  boost::unordered_map<int, double* >::const_iterator itChar;
+  std::unordered_map<int, double* >::const_iterator itChar;
   for (itChar = sendValueToDest.begin(); itChar != sendValueToDest.end(); ++itChar)
     delete [] itChar->second;
   for (itChar = recvValueFromSrc.begin(); itChar != recvValueFromSrc.end(); ++itChar)
     delete [] itChar->second;
-  boost::unordered_map<int, unsigned long* >::const_iterator itLong;
+  std::unordered_map<int, unsigned long* >::const_iterator itLong;
   for (itLong = sendGlobalIndexSrc.begin(); itLong != sendGlobalIndexSrc.end(); ++itLong)
     delete [] itLong->second;
Index: XIOS/dev/branch_openmp/src/transformation/axis_algorithm_reduce_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/axis_algorithm_reduce_axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/axis_algorithm_reduce_axis.cpp	(revision 1545)
@@ -12,5 +12,4 @@
 #include "grid.hpp"
 #include "grid_transformation_factory_impl.hpp"
-//#include "reduction.hpp"
 
 namespace xios {
@@ -72,5 +71,5 @@
     CReductionAlgorithm::initReductionOperation();
   }
-  //reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]);
+
   reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations_ptr->at(op));
 }
Index: XIOS/dev/branch_openmp/src/transformation/axis_algorithm_reduce_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/axis_algorithm_reduce_domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/axis_algorithm_reduce_domain.cpp	(revision 1545)
@@ -13,5 +13,5 @@
 #include "grid.hpp"
 #include "grid_transformation_factory_impl.hpp"
-//#include "reduction.hpp"
+
 
 namespace xios {
@@ -74,5 +74,4 @@
     CReductionAlgorithm::initReductionOperation();
   }
-  //reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]);
   reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations_ptr->at(op));
   local = algo->local ;
Index: XIOS/dev/branch_openmp/src/transformation/domain_algorithm_interpolate.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/domain_algorithm_interpolate.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/domain_algorithm_interpolate.cpp	(revision 1545)
@@ -8,5 +8,5 @@
  */
 #include "domain_algorithm_interpolate.hpp"
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 #include "context.hpp"
 #include "context_client.hpp"
@@ -406,11 +406,7 @@
   CContext* context = CContext::getCurrent();
   CContextClient* client=context->client;
-  //int mykey;
-  //ep_lib::MPI_Comm_rank(client->intraComm, &mykey);
 
   ep_lib::MPI_Comm poleComme = MPI_COMM_NULL;
   ep_lib::MPI_Comm_split(client->intraComm, interMapValuePole.empty() ? 0 : 1, 0, &poleComme);
-  //ep_lib::MPI_Comm_split(client->intraComm, interMapValuePole.empty() ? 0 : 1, mykey, &poleComme);
-  //if (!poleComme.is_null())
   if (poleComme!=MPI_COMM_NULL)
   {
@@ -540,5 +536,5 @@
   TransformationWeightMap& transWeight = this->transformationWeight_[0];
 
-  boost::unordered_map<size_t,int> globalIndexOfDomainDest;
+  std::unordered_map<size_t,int> globalIndexOfDomainDest;
   int ni = domainDest_->ni.getValue();
   int nj = domainDest_->nj.getValue();
@@ -816,6 +812,5 @@
   WriteNetCdf *netCdfWriter;
 
-//  #pragma omp barrier
-//  #pragma omp master
+
   MPI_Barrier_local(client->intraComm);
   if(my_rank_loc==0)
@@ -843,5 +838,5 @@
   }
   
-//  #pragma omp barrier
+
   MPI_Barrier_local(client->intraComm);
   
@@ -863,6 +858,5 @@
   MPI_Barrier_local(client->intraComm);
   
-//  #pragma omp barrier
-  cout<<"end write weight info"<< endl;
+
 }
 
@@ -953,5 +947,5 @@
        renormalizationFactor=1 ;
      }
-     
+
     if (firstPass)
     {
@@ -969,5 +963,6 @@
       else
       {
-        dataOut(localIndex[idx].first) += *(dataInput + idx) * localIndex[idx].second;   
+        dataOut(localIndex[idx].first) += *(dataInput + idx) * localIndex[idx].second;
+        allMissing(localIndex[idx].first) = allMissing(localIndex[idx].first) && false; // Reset flag to indicate not all data source are nan
       }
     }
@@ -999,7 +994,7 @@
       if (renormalizationFactor.numElements()>0) dataOut/=renormalizationFactor ; // In some case, process doesn't received any data for interpolation (mask)
                                                                                  // so renormalizationFactor is not initialized
-    }    
-  }
-}
-
-}
+    }
+  }
+}
+
+}
Index: XIOS/dev/branch_openmp/src/transformation/generic_algorithm_transformation.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/generic_algorithm_transformation.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/generic_algorithm_transformation.cpp	(revision 1545)
@@ -51,4 +51,5 @@
       }
     }
+
   }
   else
@@ -164,5 +165,5 @@
   int nbClient = client->clientSize;
 
-  typedef boost::unordered_map<int, std::vector<std::pair<int,double> > > SrcToDstMap;
+  typedef std::unordered_map<int, std::vector<std::pair<int,double> > > SrcToDstMap;
   int idx;
 
@@ -286,5 +287,5 @@
         if (idx != elementPositionInGrid)
         {
-          boost::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
+          std::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
                                                                    ite = globalElementIndexOnProc_[idx].end();
           for (it = itb; it != ite; ++it) it->second.resize(1);
@@ -300,5 +301,5 @@
         if (idx != elementPositionInGrid)
         {
-          boost::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
+          std::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
                                                                    ite = globalElementIndexOnProc_[idx].end();
           for (it = itb; it != ite; ++it) procOfNonTransformedElements_.insert(it->first);
@@ -358,5 +359,5 @@
           set<int> tmpSet ; 
           procList.swap(tmpSet) ;
-          boost::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
+          std::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
                                                                    ite = globalElementIndexOnProc_[idx].end();
           for (it = itb; it != ite; ++it)
@@ -394,5 +395,5 @@
 
     // Build mapping between global source element index and global destination element index.
-    boost::unordered_map<int,std::vector<size_t> >().swap(globalElementIndexOnProc_[elementPositionInGrid]);
+    std::unordered_map<int,std::vector<size_t> >().swap(globalElementIndexOnProc_[elementPositionInGrid]);
     std::set<int> tmpCounter;
     itTransWeight = itbTransWeight;
@@ -425,5 +426,5 @@
         if (idx != elementPositionInGrid)
         {
-          boost::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
+          std::unordered_map<int,std::vector<size_t> >::iterator itb = globalElementIndexOnProc_[idx].begin(), it,
                                                                    ite = globalElementIndexOnProc_[idx].end();
           for (it = itb; it != ite; ++it) it->second[0] = transPos(idxTrans);
@@ -455,8 +456,8 @@
 void CGenericAlgorithmTransformation::computeGlobalGridIndexMapping(int elementPositionInGrid,
                                                                    const std::vector<int>& srcRank,
-                                                                   boost::unordered_map<int, std::vector<std::pair<int,double> > >& src2DstMap,
+                                                                   std::unordered_map<int, std::vector<std::pair<int,double> > >& src2DstMap,
                                                                    CGrid* gridSrc,
                                                                    CGrid* gridDst,
-                                                                   std::vector<boost::unordered_map<int,std::vector<size_t> > >& globalElementIndexOnProc,
+                                                                   std::vector<std::unordered_map<int,std::vector<size_t> > >& globalElementIndexOnProc,
                                                                    SourceDestinationIndexMap& globaIndexWeightFromSrcToDst)
 {
@@ -614,5 +615,5 @@
  
       SourceDestinationIndexMap::iterator rankIt,rankIte ;
-      boost::unordered_map<size_t, std::vector<std::pair<size_t,double> > >::iterator globalSrcIndexIt, globalSrcIndexIte ;
+      std::unordered_map<size_t, std::vector<std::pair<size_t,double> > >::iterator globalSrcIndexIt, globalSrcIndexIte ;
       std::vector<std::pair<size_t,double> >::iterator vectIt,vectIte ;
    
@@ -652,5 +653,5 @@
                                                                  CScalar* scalarSrc,
                                                                  CArray<size_t,1>& destGlobalIndexPositionInGrid,
-                                                                 boost::unordered_map<int,std::vector<size_t> >& globalScalarIndexOnProc)
+                                                                 std::unordered_map<int,std::vector<size_t> >& globalScalarIndexOnProc)
 {
   CContext* context = CContext::getCurrent();
@@ -676,5 +677,5 @@
                                                                CAxis* axisSrc,
                                                                CArray<size_t,1>& destGlobalIndexPositionInGrid,
-                                                               boost::unordered_map<int,std::vector<size_t> >& globalAxisIndexOnProc)
+                                                               std::unordered_map<int,std::vector<size_t> >& globalAxisIndexOnProc)
 {
   CContext* context = CContext::getCurrent();
@@ -745,5 +746,5 @@
                                                                  CDomain* domainSrc,
                                                                  CArray<size_t,1>& destGlobalIndexPositionInGrid,
-                                                                 boost::unordered_map<int,std::vector<size_t> >& globalDomainIndexOnProc)
+                                                                 std::unordered_map<int,std::vector<size_t> >& globalDomainIndexOnProc)
 {
   CContext* context = CContext::getCurrent();
Index: XIOS/dev/branch_openmp/src/transformation/generic_algorithm_transformation.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/generic_algorithm_transformation.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/generic_algorithm_transformation.hpp	(revision 1545)
@@ -38,12 +38,12 @@
 public:
   // Mapping between global index map of DESTINATION and its local index with pair of global index of SOURCE and weights
-  typedef boost::unordered_map<int, boost::unordered_map<size_t, std::vector<std::pair<size_t,double> > > > SourceDestinationIndexMap;
+  typedef std::unordered_map<int, std::unordered_map<size_t, std::vector<std::pair<size_t,double> > > > SourceDestinationIndexMap;
 
 protected:
-  typedef boost::unordered_map<size_t,int> GlobalLocalMap;
+  typedef std::unordered_map<size_t,int> GlobalLocalMap;
 protected:
-  typedef boost::unordered_map<int, std::vector<int> > TransformationIndexMap;
-  typedef boost::unordered_map<int, std::vector<double> > TransformationWeightMap;
-  typedef boost::unordered_map<int, std::vector<int> > TransformationPositionMap;
+  typedef std::unordered_map<int, std::vector<int> > TransformationIndexMap;
+  typedef std::unordered_map<int, std::vector<double> > TransformationWeightMap;
+  typedef std::unordered_map<int, std::vector<int> > TransformationPositionMap;
 
 public:
@@ -108,8 +108,8 @@
   void computeGlobalGridIndexMapping(int elementPositionInGrid,
                                      const std::vector<int>& srcRank,
-                                     boost::unordered_map<int, std::vector<std::pair<int,double> > >& src2DstMap,
+                                     std::unordered_map<int, std::vector<std::pair<int,double> > >& src2DstMap,
                                      CGrid* gridDst,
                                      CGrid* gridSrc,
-                                     std::vector<boost::unordered_map<int,std::vector<size_t> > >& globalElementIndexOnProc,
+                                     std::vector<std::unordered_map<int,std::vector<size_t> > >& globalElementIndexOnProc,
                                      SourceDestinationIndexMap& globaIndexWeightFromSrcToDst);
 
@@ -117,15 +117,15 @@
                                   CDomain* domainSrc,
                                   CArray<size_t,1>& destGlobalIndexPositionInGrid,
-                                  boost::unordered_map<int,std::vector<size_t> >& globalDomainIndexOnProc);
+                                  std::unordered_map<int,std::vector<size_t> >& globalDomainIndexOnProc);
 
   void computeExchangeAxisIndex(CAxis* axisDst,
                                 CAxis* axisSrc,
                                 CArray<size_t,1>& destGlobalIndexPositionInGrid,
-                                boost::unordered_map<int,std::vector<size_t> >& globalAxisIndexOnProc);
+                                std::unordered_map<int,std::vector<size_t> >& globalAxisIndexOnProc);
 
   void computeExchangeScalarIndex(CScalar* scalarDst,
                                   CScalar* scalarSrc,
                                   CArray<size_t,1>& destGlobalIndexPositionInGrid,
-                                  boost::unordered_map<int,std::vector<size_t> >& globalScalarIndexOnProc);
+                                  std::unordered_map<int,std::vector<size_t> >& globalScalarIndexOnProc);
 
   void computePositionElements(CGrid* dst, CGrid* src);
@@ -151,5 +151,5 @@
   std::set<StdSize> indexElementSrc_;
 
-  std::vector<boost::unordered_map<int,std::vector<size_t> > > globalElementIndexOnProc_;
+  std::vector<std::unordered_map<int,std::vector<size_t> > > globalElementIndexOnProc_;
 
   std::vector<int> procContainSrcElementIdx_;  // List of processes containing source index of transformed elements
Index: XIOS/dev/branch_openmp/src/transformation/grid_transformation.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/grid_transformation.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/grid_transformation.cpp	(revision 1545)
@@ -15,5 +15,5 @@
 #include "mpi_tag.hpp"
 #include "grid.hpp"
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 #include "timer.hpp"
 
@@ -479,5 +479,5 @@
   SourceDestinationIndexMap::const_iterator itbIndex = globaIndexWeightFromSrcToDst.begin(),
                                             iteIndex = globaIndexWeightFromSrcToDst.end(), itIndex;
-  typedef boost::unordered_map<size_t, std::vector<std::pair<size_t,double> > > SendIndexMap;
+  typedef std::unordered_map<size_t, std::vector<std::pair<size_t,double> > > SendIndexMap;
   std::map<int,int> sendRankSizeMap,recvRankSizeMap;
   int connectedClient = globaIndexWeightFromSrcToDst.size();
@@ -522,6 +522,6 @@
   std::vector<ep_lib::MPI_Request> requests(recvRankSizeMap.size()*2 + globaIndexWeightFromSrcToDst.size()*2);
   std::vector<ep_lib::MPI_Status> status;
-  boost::unordered_map<int, unsigned char* > recvMaskDst;
-  boost::unordered_map<int, unsigned long* > recvGlobalIndexSrc;
+  std::unordered_map<int, unsigned char* > recvMaskDst;
+  std::unordered_map<int, unsigned long* > recvGlobalIndexSrc;
   int requests_position = 0;
   for (std::map<int,int>::const_iterator itRecv = recvRankSizeMap.begin(); itRecv != recvRankSizeMap.end(); ++itRecv)
@@ -536,8 +536,8 @@
   }
 
-  boost::unordered_map<int, CArray<size_t,1> > globalIndexDst;
-  boost::unordered_map<int, CArray<double,1> > weightDst;
-  boost::unordered_map<int, unsigned char* > sendMaskDst;
-  boost::unordered_map<int, unsigned long* > sendGlobalIndexSrc;
+  std::unordered_map<int, CArray<size_t,1> > globalIndexDst;
+  std::unordered_map<int, CArray<double,1> > weightDst;
+  std::unordered_map<int, unsigned char* > sendMaskDst;
+  std::unordered_map<int, unsigned long* > sendGlobalIndexSrc;
   for (itIndex = itbIndex; itIndex != iteIndex; ++itIndex)
   {
@@ -666,10 +666,10 @@
   delete [] recvSizeBuff;
 
-  boost::unordered_map<int, unsigned char* >::const_iterator itChar;
+  std::unordered_map<int, unsigned char* >::const_iterator itChar;
   for (itChar = sendMaskDst.begin(); itChar != sendMaskDst.end(); ++itChar)
     delete [] itChar->second;
   for (itChar = recvMaskDst.begin(); itChar != recvMaskDst.end(); ++itChar)
     delete [] itChar->second;
-  boost::unordered_map<int, unsigned long* >::const_iterator itLong;
+  std::unordered_map<int, unsigned long* >::const_iterator itLong;
   for (itLong = sendGlobalIndexSrc.begin(); itLong != sendGlobalIndexSrc.end(); ++itLong)
     delete [] itLong->second;
Index: XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_extract_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_extract_axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_extract_axis.cpp	(revision 1545)
@@ -14,5 +14,5 @@
 #include "grid_transformation_factory_impl.hpp"
 
-//#include "reduction.hpp"
+
 
 namespace xios {
Index: XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_axis.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_axis.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_axis.cpp	(revision 1545)
@@ -13,5 +13,5 @@
 #include "grid.hpp"
 #include "grid_transformation_factory_impl.hpp"
-//#include "reduction.hpp"
+
 
 
Index: XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_domain.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_domain.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_domain.cpp	(revision 1545)
@@ -14,5 +14,4 @@
 #include "grid_transformation_factory_impl.hpp"
 
-//#include "reduction.hpp"
 
 namespace xios {
@@ -75,6 +74,4 @@
     CReductionAlgorithm::initReductionOperation();
   }
-
-  //if (CReductionAlgorithm::ReductionOperations.end() == CReductionAlgorithm::ReductionOperations.find(op))
   if (CReductionAlgorithm::ReductionOperations_ptr->end() == CReductionAlgorithm::ReductionOperations_ptr->find(op))
     ERROR("CScalarAlgorithmReduceDomain::CScalarAlgorithmReduceDomain(CDomain* domainDestination, CDomain* domainSource, CReduceDomainToScalar* algo)",
@@ -83,5 +80,4 @@
        << "Scalar destination " << scalarDestination->getId());
 
-  //reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]);
   reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations_ptr->at(op));
   local = algo->local ;
Index: XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_scalar.cpp
===================================================================
--- XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_scalar.cpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/transformation/scalar_algorithm_reduce_scalar.cpp	(revision 1545)
@@ -9,5 +9,5 @@
 #include "grid.hpp"
 #include "grid_transformation_factory_impl.hpp"
-//#include "reduction.hpp"
+
 
 
@@ -76,5 +76,4 @@
   }
   
-  //if (CReductionAlgorithm::ReductionOperations.end() == CReductionAlgorithm::ReductionOperations.find(op))
   if (CReductionAlgorithm::ReductionOperations_ptr->end() == CReductionAlgorithm::ReductionOperations_ptr->find(op))
     ERROR("CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar* scalarDestination, CScalar* scalarSource, CReduceScalarToScalar* algo)",
@@ -82,6 +81,5 @@
        << "Scalar source " <<scalarSource->getId() << std::endl
        << "Scalar destination " << scalarDestination->getId());
-  
-  //reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]);
+
   reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations_ptr->at(op));
 }
Index: XIOS/dev/branch_openmp/src/xios.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/xios.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/xios.hpp	(revision 1545)
@@ -6,10 +6,10 @@
 /// XIOS headers ///
 #include "data_output.hpp"
-//#include "nc4_data_output.hpp"
+
 
 
 using namespace xios;
-//using namespace xios::xml;
-//using namespace xios::func;
+
+
 
 #endif //__XIOS__
Index: XIOS/dev/branch_openmp/src/xios_server.f90
===================================================================
--- XIOS/dev/branch_openmp/src/xios_server.f90	(revision 1544)
+++ XIOS/dev/branch_openmp/src/xios_server.f90	(revision 1545)
@@ -4,6 +4,5 @@
   INCLUDE "mpif.h"
   INTEGER :: ierr
-
-    
+  
     CALL xios_init_server
     
Index: XIOS/dev/branch_openmp/src/xios_spl.hpp
===================================================================
--- XIOS/dev/branch_openmp/src/xios_spl.hpp	(revision 1544)
+++ XIOS/dev/branch_openmp/src/xios_spl.hpp	(revision 1545)
@@ -6,4 +6,6 @@
 #include <string>
 #include <algorithm>
+#include <unordered_map>
+#include <memory>
 
 // standard C
@@ -28,6 +30,4 @@
 
 /// boost headers ///
-#include <boost/unordered_map.hpp>
-#include <boost/shared_ptr.hpp>
 #include <boost/cast.hpp>
 /// Map ///
@@ -58,5 +58,5 @@
 #include "log.hpp"
 using namespace std;
-//using namespace boost ;
+using namespace boost ;
 
 
